├── .gitattributes ├── .gitignore ├── Cargo.lock ├── Cargo.toml ├── LICENSE.txt ├── README.md ├── index.html ├── jsconfig.json ├── package-lock.json ├── package.json ├── public └── vite.svg ├── src ├── App.svelte ├── app.css ├── assets │ └── svelte.svg ├── lib │ ├── About.svelte │ ├── Common.svelte │ ├── Counter.svelte │ ├── Footer.svelte │ ├── Home.svelte │ ├── Login.svelte │ ├── Nav.svelte │ ├── Secret.svelte │ └── store.js ├── main.js ├── main.rs └── vite-env.d.ts ├── svelte.config.js └── vite.config.js /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | public/build 12 | dist 13 | dist-ssr 14 | *.local 15 | 16 | # Editor directories and files 17 | .vs/* 18 | .vscode/* 19 | target/* 20 | !.vscode/extensions.json 21 | .idea 22 | .DS_Store 23 | *.suo 24 | *.ntvs* 25 | *.njsproj 26 | *.sln 27 | *.sw? 28 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "aead" 7 | version = "0.5.2" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" 10 | dependencies = [ 11 | "crypto-common", 12 | "generic-array", 13 | ] 14 | 15 | [[package]] 16 | name = "aes" 17 | version = "0.8.2" 18 | source = "registry+https://github.com/rust-lang/crates.io-index" 19 | checksum = "433cfd6710c9986c576a25ca913c39d66a6474107b406f34f91d4a8923395241" 20 | dependencies = [ 21 | "cfg-if", 22 | "cipher", 23 | "cpufeatures", 24 | ] 25 | 26 | [[package]] 27 | name = "aes-gcm" 28 | version = "0.10.1" 29 | source = "registry+https://github.com/rust-lang/crates.io-index" 30 | checksum = "82e1366e0c69c9f927b1fa5ce2c7bf9eafc8f9268c0b9800729e8b267612447c" 31 | dependencies = [ 32 | "aead", 33 | "aes", 34 | "cipher", 35 | "ctr", 36 | "ghash", 37 | "subtle", 38 | ] 39 | 40 | [[package]] 41 | name = "aho-corasick" 42 | version = "0.7.20" 43 | source = "registry+https://github.com/rust-lang/crates.io-index" 44 | checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" 45 | dependencies = [ 46 | "memchr", 47 | ] 48 | 49 | [[package]] 50 | name = "android_system_properties" 51 | version = "0.1.5" 52 | source = "registry+https://github.com/rust-lang/crates.io-index" 53 | checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 54 | dependencies = [ 55 | "libc", 56 | ] 57 | 58 | [[package]] 59 | name = "async-stream" 60 | version = "0.3.5" 61 | source = "registry+https://github.com/rust-lang/crates.io-index" 62 | checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" 63 | dependencies = [ 64 | "async-stream-impl", 65 | "futures-core", 66 | "pin-project-lite", 67 | ] 68 | 69 | [[package]] 70 | name = "async-stream-impl" 71 | version = "0.3.5" 72 | source = "registry+https://github.com/rust-lang/crates.io-index" 73 | checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" 74 | dependencies = [ 75 | "proc-macro2", 76 | "quote", 77 | "syn 2.0.13", 78 | ] 79 | 80 | [[package]] 81 | name = "async-trait" 82 | version = "0.1.68" 83 | source = "registry+https://github.com/rust-lang/crates.io-index" 84 | checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" 85 | dependencies = [ 86 | "proc-macro2", 87 | "quote", 88 | "syn 2.0.13", 89 | ] 90 | 91 | [[package]] 92 | name = "atomic" 93 | version = "0.5.1" 94 | source = "registry+https://github.com/rust-lang/crates.io-index" 95 | checksum = "b88d82667eca772c4aa12f0f1348b3ae643424c8876448f3f7bd5787032e234c" 96 | dependencies = [ 97 | "autocfg", 98 | ] 99 | 100 | [[package]] 101 | name = "autocfg" 102 | version = "1.1.0" 103 | source = "registry+https://github.com/rust-lang/crates.io-index" 104 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 105 | 106 | [[package]] 107 | name = "base64" 108 | version = "0.21.0" 109 | source = "registry+https://github.com/rust-lang/crates.io-index" 110 | checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" 111 | 112 | [[package]] 113 | name = "binascii" 114 | version = "0.1.4" 115 | source = "registry+https://github.com/rust-lang/crates.io-index" 116 | checksum = "383d29d513d8764dcdc42ea295d979eb99c3c9f00607b3692cf68a431f7dca72" 117 | 118 | [[package]] 119 | name = "bitflags" 120 | version = "1.3.2" 121 | source = "registry+https://github.com/rust-lang/crates.io-index" 122 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 123 | 124 | [[package]] 125 | name = "bitflags" 126 | version = "2.1.0" 127 | source = "registry+https://github.com/rust-lang/crates.io-index" 128 | checksum = "c70beb79cbb5ce9c4f8e20849978f34225931f665bb49efa6982875a4d5facb3" 129 | 130 | [[package]] 131 | name = "block-buffer" 132 | version = "0.10.4" 133 | source = "registry+https://github.com/rust-lang/crates.io-index" 134 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 135 | dependencies = [ 136 | "generic-array", 137 | ] 138 | 139 | [[package]] 140 | name = "bstr" 141 | version = "1.4.0" 142 | source = "registry+https://github.com/rust-lang/crates.io-index" 143 | checksum = "c3d4260bcc2e8fc9df1eac4919a720effeb63a3f0952f5bf4944adfa18897f09" 144 | dependencies = [ 145 | "memchr", 146 | "serde", 147 | ] 148 | 149 | [[package]] 150 | name = "bumpalo" 151 | version = "3.12.0" 152 | source = "registry+https://github.com/rust-lang/crates.io-index" 153 | checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" 154 | 155 | [[package]] 156 | name = "bytes" 157 | version = "1.4.0" 158 | source = "registry+https://github.com/rust-lang/crates.io-index" 159 | checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" 160 | 161 | [[package]] 162 | name = "cc" 163 | version = "1.0.79" 164 | source = "registry+https://github.com/rust-lang/crates.io-index" 165 | checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" 166 | 167 | [[package]] 168 | name = "cfg-if" 169 | version = "1.0.0" 170 | source = "registry+https://github.com/rust-lang/crates.io-index" 171 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 172 | 173 | [[package]] 174 | name = "chrono" 175 | version = "0.4.24" 176 | source = "registry+https://github.com/rust-lang/crates.io-index" 177 | checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b" 178 | dependencies = [ 179 | "iana-time-zone", 180 | "js-sys", 181 | "num-integer", 182 | "num-traits", 183 | "time 0.1.45", 184 | "wasm-bindgen", 185 | "winapi", 186 | ] 187 | 188 | [[package]] 189 | name = "chrono-tz" 190 | version = "0.6.1" 191 | source = "registry+https://github.com/rust-lang/crates.io-index" 192 | checksum = "58549f1842da3080ce63002102d5bc954c7bc843d4f47818e642abdc36253552" 193 | dependencies = [ 194 | "chrono", 195 | "chrono-tz-build", 196 | "phf", 197 | ] 198 | 199 | [[package]] 200 | name = "chrono-tz-build" 201 | version = "0.0.2" 202 | source = "registry+https://github.com/rust-lang/crates.io-index" 203 | checksum = "db058d493fb2f65f41861bfed7e3fe6335264a9f0f92710cab5bdf01fef09069" 204 | dependencies = [ 205 | "parse-zoneinfo", 206 | "phf", 207 | "phf_codegen", 208 | ] 209 | 210 | [[package]] 211 | name = "cipher" 212 | version = "0.4.4" 213 | source = "registry+https://github.com/rust-lang/crates.io-index" 214 | checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" 215 | dependencies = [ 216 | "crypto-common", 217 | "inout", 218 | ] 219 | 220 | [[package]] 221 | name = "codespan-reporting" 222 | version = "0.11.1" 223 | source = "registry+https://github.com/rust-lang/crates.io-index" 224 | checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" 225 | dependencies = [ 226 | "termcolor", 227 | "unicode-width", 228 | ] 229 | 230 | [[package]] 231 | name = "cookie" 232 | version = "0.17.0" 233 | source = "registry+https://github.com/rust-lang/crates.io-index" 234 | checksum = "7efb37c3e1ccb1ff97164ad95ac1606e8ccd35b3fa0a7d99a304c7f4a428cc24" 235 | dependencies = [ 236 | "aes-gcm", 237 | "base64", 238 | "hkdf", 239 | "percent-encoding", 240 | "rand", 241 | "sha2", 242 | "subtle", 243 | "time 0.3.20", 244 | "version_check", 245 | ] 246 | 247 | [[package]] 248 | name = "core-foundation-sys" 249 | version = "0.8.4" 250 | source = "registry+https://github.com/rust-lang/crates.io-index" 251 | checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" 252 | 253 | [[package]] 254 | name = "cpufeatures" 255 | version = "0.2.6" 256 | source = "registry+https://github.com/rust-lang/crates.io-index" 257 | checksum = "280a9f2d8b3a38871a3c8a46fb80db65e5e5ed97da80c4d08bf27fb63e35e181" 258 | dependencies = [ 259 | "libc", 260 | ] 261 | 262 | [[package]] 263 | name = "crossbeam-channel" 264 | version = "0.5.7" 265 | source = "registry+https://github.com/rust-lang/crates.io-index" 266 | checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c" 267 | dependencies = [ 268 | "cfg-if", 269 | "crossbeam-utils", 270 | ] 271 | 272 | [[package]] 273 | name = "crossbeam-utils" 274 | version = "0.8.15" 275 | source = "registry+https://github.com/rust-lang/crates.io-index" 276 | checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" 277 | dependencies = [ 278 | "cfg-if", 279 | ] 280 | 281 | [[package]] 282 | name = "crypto-common" 283 | version = "0.1.6" 284 | source = "registry+https://github.com/rust-lang/crates.io-index" 285 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 286 | dependencies = [ 287 | "generic-array", 288 | "rand_core", 289 | "typenum", 290 | ] 291 | 292 | [[package]] 293 | name = "ctr" 294 | version = "0.9.2" 295 | source = "registry+https://github.com/rust-lang/crates.io-index" 296 | checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" 297 | dependencies = [ 298 | "cipher", 299 | ] 300 | 301 | [[package]] 302 | name = "cxx" 303 | version = "1.0.94" 304 | source = "registry+https://github.com/rust-lang/crates.io-index" 305 | checksum = "f61f1b6389c3fe1c316bf8a4dccc90a38208354b330925bce1f74a6c4756eb93" 306 | dependencies = [ 307 | "cc", 308 | "cxxbridge-flags", 309 | "cxxbridge-macro", 310 | "link-cplusplus", 311 | ] 312 | 313 | [[package]] 314 | name = "cxx-build" 315 | version = "1.0.94" 316 | source = "registry+https://github.com/rust-lang/crates.io-index" 317 | checksum = "12cee708e8962df2aeb38f594aae5d827c022b6460ac71a7a3e2c3c2aae5a07b" 318 | dependencies = [ 319 | "cc", 320 | "codespan-reporting", 321 | "once_cell", 322 | "proc-macro2", 323 | "quote", 324 | "scratch", 325 | "syn 2.0.13", 326 | ] 327 | 328 | [[package]] 329 | name = "cxxbridge-flags" 330 | version = "1.0.94" 331 | source = "registry+https://github.com/rust-lang/crates.io-index" 332 | checksum = "7944172ae7e4068c533afbb984114a56c46e9ccddda550499caa222902c7f7bb" 333 | 334 | [[package]] 335 | name = "cxxbridge-macro" 336 | version = "1.0.94" 337 | source = "registry+https://github.com/rust-lang/crates.io-index" 338 | checksum = "2345488264226bf682893e25de0769f3360aac9957980ec49361b083ddaa5bc5" 339 | dependencies = [ 340 | "proc-macro2", 341 | "quote", 342 | "syn 2.0.13", 343 | ] 344 | 345 | [[package]] 346 | name = "deunicode" 347 | version = "0.4.3" 348 | source = "registry+https://github.com/rust-lang/crates.io-index" 349 | checksum = "850878694b7933ca4c9569d30a34b55031b9b139ee1fc7b94a527c4ef960d690" 350 | 351 | [[package]] 352 | name = "devise" 353 | version = "0.4.1" 354 | source = "registry+https://github.com/rust-lang/crates.io-index" 355 | checksum = "d6eacefd3f541c66fc61433d65e54e0e46e0a029a819a7dbbc7a7b489e8a85f8" 356 | dependencies = [ 357 | "devise_codegen", 358 | "devise_core", 359 | ] 360 | 361 | [[package]] 362 | name = "devise_codegen" 363 | version = "0.4.1" 364 | source = "registry+https://github.com/rust-lang/crates.io-index" 365 | checksum = "9c8cf4b8dd484ede80fd5c547592c46c3745a617c8af278e2b72bea86b2dfed6" 366 | dependencies = [ 367 | "devise_core", 368 | "quote", 369 | ] 370 | 371 | [[package]] 372 | name = "devise_core" 373 | version = "0.4.1" 374 | source = "registry+https://github.com/rust-lang/crates.io-index" 375 | checksum = "35b50dba0afdca80b187392b24f2499a88c336d5a8493e4b4ccfb608708be56a" 376 | dependencies = [ 377 | "bitflags 2.1.0", 378 | "proc-macro2", 379 | "proc-macro2-diagnostics", 380 | "quote", 381 | "syn 2.0.13", 382 | ] 383 | 384 | [[package]] 385 | name = "digest" 386 | version = "0.10.6" 387 | source = "registry+https://github.com/rust-lang/crates.io-index" 388 | checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" 389 | dependencies = [ 390 | "block-buffer", 391 | "crypto-common", 392 | "subtle", 393 | ] 394 | 395 | [[package]] 396 | name = "either" 397 | version = "1.8.1" 398 | source = "registry+https://github.com/rust-lang/crates.io-index" 399 | checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" 400 | 401 | [[package]] 402 | name = "encoding_rs" 403 | version = "0.8.32" 404 | source = "registry+https://github.com/rust-lang/crates.io-index" 405 | checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" 406 | dependencies = [ 407 | "cfg-if", 408 | ] 409 | 410 | [[package]] 411 | name = "errno" 412 | version = "0.3.0" 413 | source = "registry+https://github.com/rust-lang/crates.io-index" 414 | checksum = "50d6a0976c999d473fe89ad888d5a284e55366d9dc9038b1ba2aa15128c4afa0" 415 | dependencies = [ 416 | "errno-dragonfly", 417 | "libc", 418 | "windows-sys 0.45.0", 419 | ] 420 | 421 | [[package]] 422 | name = "errno-dragonfly" 423 | version = "0.1.2" 424 | source = "registry+https://github.com/rust-lang/crates.io-index" 425 | checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" 426 | dependencies = [ 427 | "cc", 428 | "libc", 429 | ] 430 | 431 | [[package]] 432 | name = "fastrand" 433 | version = "1.9.0" 434 | source = "registry+https://github.com/rust-lang/crates.io-index" 435 | checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" 436 | dependencies = [ 437 | "instant", 438 | ] 439 | 440 | [[package]] 441 | name = "figment" 442 | version = "0.10.8" 443 | source = "registry+https://github.com/rust-lang/crates.io-index" 444 | checksum = "4e56602b469b2201400dec66a66aec5a9b8761ee97cd1b8c96ab2483fcc16cc9" 445 | dependencies = [ 446 | "atomic", 447 | "pear", 448 | "serde", 449 | "toml", 450 | "uncased", 451 | "version_check", 452 | ] 453 | 454 | [[package]] 455 | name = "filetime" 456 | version = "0.2.21" 457 | source = "registry+https://github.com/rust-lang/crates.io-index" 458 | checksum = "5cbc844cecaee9d4443931972e1289c8ff485cb4cc2767cb03ca139ed6885153" 459 | dependencies = [ 460 | "cfg-if", 461 | "libc", 462 | "redox_syscall 0.2.16", 463 | "windows-sys 0.48.0", 464 | ] 465 | 466 | [[package]] 467 | name = "fnv" 468 | version = "1.0.7" 469 | source = "registry+https://github.com/rust-lang/crates.io-index" 470 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 471 | 472 | [[package]] 473 | name = "fsevent-sys" 474 | version = "4.1.0" 475 | source = "registry+https://github.com/rust-lang/crates.io-index" 476 | checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2" 477 | dependencies = [ 478 | "libc", 479 | ] 480 | 481 | [[package]] 482 | name = "futures" 483 | version = "0.3.28" 484 | source = "registry+https://github.com/rust-lang/crates.io-index" 485 | checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" 486 | dependencies = [ 487 | "futures-channel", 488 | "futures-core", 489 | "futures-io", 490 | "futures-sink", 491 | "futures-task", 492 | "futures-util", 493 | ] 494 | 495 | [[package]] 496 | name = "futures-channel" 497 | version = "0.3.28" 498 | source = "registry+https://github.com/rust-lang/crates.io-index" 499 | checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" 500 | dependencies = [ 501 | "futures-core", 502 | "futures-sink", 503 | ] 504 | 505 | [[package]] 506 | name = "futures-core" 507 | version = "0.3.28" 508 | source = "registry+https://github.com/rust-lang/crates.io-index" 509 | checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" 510 | 511 | [[package]] 512 | name = "futures-io" 513 | version = "0.3.28" 514 | source = "registry+https://github.com/rust-lang/crates.io-index" 515 | checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" 516 | 517 | [[package]] 518 | name = "futures-sink" 519 | version = "0.3.28" 520 | source = "registry+https://github.com/rust-lang/crates.io-index" 521 | checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" 522 | 523 | [[package]] 524 | name = "futures-task" 525 | version = "0.3.28" 526 | source = "registry+https://github.com/rust-lang/crates.io-index" 527 | checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" 528 | 529 | [[package]] 530 | name = "futures-util" 531 | version = "0.3.28" 532 | source = "registry+https://github.com/rust-lang/crates.io-index" 533 | checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" 534 | dependencies = [ 535 | "futures-channel", 536 | "futures-core", 537 | "futures-io", 538 | "futures-sink", 539 | "futures-task", 540 | "memchr", 541 | "pin-project-lite", 542 | "pin-utils", 543 | "slab", 544 | ] 545 | 546 | [[package]] 547 | name = "generator" 548 | version = "0.7.3" 549 | source = "registry+https://github.com/rust-lang/crates.io-index" 550 | checksum = "33a20a288a94683f5f4da0adecdbe095c94a77c295e514cc6484e9394dd8376e" 551 | dependencies = [ 552 | "cc", 553 | "libc", 554 | "log", 555 | "rustversion", 556 | "windows 0.44.0", 557 | ] 558 | 559 | [[package]] 560 | name = "generic-array" 561 | version = "0.14.7" 562 | source = "registry+https://github.com/rust-lang/crates.io-index" 563 | checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 564 | dependencies = [ 565 | "typenum", 566 | "version_check", 567 | ] 568 | 569 | [[package]] 570 | name = "getrandom" 571 | version = "0.2.9" 572 | source = "registry+https://github.com/rust-lang/crates.io-index" 573 | checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" 574 | dependencies = [ 575 | "cfg-if", 576 | "libc", 577 | "wasi 0.11.0+wasi-snapshot-preview1", 578 | ] 579 | 580 | [[package]] 581 | name = "ghash" 582 | version = "0.5.0" 583 | source = "registry+https://github.com/rust-lang/crates.io-index" 584 | checksum = "d930750de5717d2dd0b8c0d42c076c0e884c81a73e6cab859bbd2339c71e3e40" 585 | dependencies = [ 586 | "opaque-debug", 587 | "polyval", 588 | ] 589 | 590 | [[package]] 591 | name = "glob" 592 | version = "0.3.1" 593 | source = "registry+https://github.com/rust-lang/crates.io-index" 594 | checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" 595 | 596 | [[package]] 597 | name = "globset" 598 | version = "0.4.10" 599 | source = "registry+https://github.com/rust-lang/crates.io-index" 600 | checksum = "029d74589adefde59de1a0c4f4732695c32805624aec7b68d91503d4dba79afc" 601 | dependencies = [ 602 | "aho-corasick", 603 | "bstr", 604 | "fnv", 605 | "log", 606 | "regex", 607 | ] 608 | 609 | [[package]] 610 | name = "globwalk" 611 | version = "0.8.1" 612 | source = "registry+https://github.com/rust-lang/crates.io-index" 613 | checksum = "93e3af942408868f6934a7b85134a3230832b9977cf66125df2f9edcfce4ddcc" 614 | dependencies = [ 615 | "bitflags 1.3.2", 616 | "ignore", 617 | "walkdir", 618 | ] 619 | 620 | [[package]] 621 | name = "h2" 622 | version = "0.3.16" 623 | source = "registry+https://github.com/rust-lang/crates.io-index" 624 | checksum = "5be7b54589b581f624f566bf5d8eb2bab1db736c51528720b6bd36b96b55924d" 625 | dependencies = [ 626 | "bytes", 627 | "fnv", 628 | "futures-core", 629 | "futures-sink", 630 | "futures-util", 631 | "http", 632 | "indexmap", 633 | "slab", 634 | "tokio", 635 | "tokio-util", 636 | "tracing", 637 | ] 638 | 639 | [[package]] 640 | name = "hashbrown" 641 | version = "0.12.3" 642 | source = "registry+https://github.com/rust-lang/crates.io-index" 643 | checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" 644 | 645 | [[package]] 646 | name = "hermit-abi" 647 | version = "0.2.6" 648 | source = "registry+https://github.com/rust-lang/crates.io-index" 649 | checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" 650 | dependencies = [ 651 | "libc", 652 | ] 653 | 654 | [[package]] 655 | name = "hermit-abi" 656 | version = "0.3.1" 657 | source = "registry+https://github.com/rust-lang/crates.io-index" 658 | checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" 659 | 660 | [[package]] 661 | name = "hkdf" 662 | version = "0.12.3" 663 | source = "registry+https://github.com/rust-lang/crates.io-index" 664 | checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" 665 | dependencies = [ 666 | "hmac", 667 | ] 668 | 669 | [[package]] 670 | name = "hmac" 671 | version = "0.12.1" 672 | source = "registry+https://github.com/rust-lang/crates.io-index" 673 | checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" 674 | dependencies = [ 675 | "digest", 676 | ] 677 | 678 | [[package]] 679 | name = "http" 680 | version = "0.2.9" 681 | source = "registry+https://github.com/rust-lang/crates.io-index" 682 | checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" 683 | dependencies = [ 684 | "bytes", 685 | "fnv", 686 | "itoa", 687 | ] 688 | 689 | [[package]] 690 | name = "http-body" 691 | version = "0.4.5" 692 | source = "registry+https://github.com/rust-lang/crates.io-index" 693 | checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" 694 | dependencies = [ 695 | "bytes", 696 | "http", 697 | "pin-project-lite", 698 | ] 699 | 700 | [[package]] 701 | name = "httparse" 702 | version = "1.8.0" 703 | source = "registry+https://github.com/rust-lang/crates.io-index" 704 | checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" 705 | 706 | [[package]] 707 | name = "httpdate" 708 | version = "1.0.2" 709 | source = "registry+https://github.com/rust-lang/crates.io-index" 710 | checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" 711 | 712 | [[package]] 713 | name = "humansize" 714 | version = "2.1.3" 715 | source = "registry+https://github.com/rust-lang/crates.io-index" 716 | checksum = "6cb51c9a029ddc91b07a787f1d86b53ccfa49b0e86688c946ebe8d3555685dd7" 717 | dependencies = [ 718 | "libm", 719 | ] 720 | 721 | [[package]] 722 | name = "hyper" 723 | version = "0.14.25" 724 | source = "registry+https://github.com/rust-lang/crates.io-index" 725 | checksum = "cc5e554ff619822309ffd57d8734d77cd5ce6238bc956f037ea06c58238c9899" 726 | dependencies = [ 727 | "bytes", 728 | "futures-channel", 729 | "futures-core", 730 | "futures-util", 731 | "h2", 732 | "http", 733 | "http-body", 734 | "httparse", 735 | "httpdate", 736 | "itoa", 737 | "pin-project-lite", 738 | "socket2", 739 | "tokio", 740 | "tower-service", 741 | "tracing", 742 | "want", 743 | ] 744 | 745 | [[package]] 746 | name = "iana-time-zone" 747 | version = "0.1.56" 748 | source = "registry+https://github.com/rust-lang/crates.io-index" 749 | checksum = "0722cd7114b7de04316e7ea5456a0bbb20e4adb46fd27a3697adb812cff0f37c" 750 | dependencies = [ 751 | "android_system_properties", 752 | "core-foundation-sys", 753 | "iana-time-zone-haiku", 754 | "js-sys", 755 | "wasm-bindgen", 756 | "windows 0.48.0", 757 | ] 758 | 759 | [[package]] 760 | name = "iana-time-zone-haiku" 761 | version = "0.1.1" 762 | source = "registry+https://github.com/rust-lang/crates.io-index" 763 | checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" 764 | dependencies = [ 765 | "cxx", 766 | "cxx-build", 767 | ] 768 | 769 | [[package]] 770 | name = "ignore" 771 | version = "0.4.20" 772 | source = "registry+https://github.com/rust-lang/crates.io-index" 773 | checksum = "dbe7873dab538a9a44ad79ede1faf5f30d49f9a5c883ddbab48bce81b64b7492" 774 | dependencies = [ 775 | "globset", 776 | "lazy_static", 777 | "log", 778 | "memchr", 779 | "regex", 780 | "same-file", 781 | "thread_local", 782 | "walkdir", 783 | "winapi-util", 784 | ] 785 | 786 | [[package]] 787 | name = "indexmap" 788 | version = "1.9.3" 789 | source = "registry+https://github.com/rust-lang/crates.io-index" 790 | checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" 791 | dependencies = [ 792 | "autocfg", 793 | "hashbrown", 794 | "serde", 795 | ] 796 | 797 | [[package]] 798 | name = "inlinable_string" 799 | version = "0.1.15" 800 | source = "registry+https://github.com/rust-lang/crates.io-index" 801 | checksum = "c8fae54786f62fb2918dcfae3d568594e50eb9b5c25bf04371af6fe7516452fb" 802 | 803 | [[package]] 804 | name = "inotify" 805 | version = "0.9.6" 806 | source = "registry+https://github.com/rust-lang/crates.io-index" 807 | checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff" 808 | dependencies = [ 809 | "bitflags 1.3.2", 810 | "inotify-sys", 811 | "libc", 812 | ] 813 | 814 | [[package]] 815 | name = "inotify-sys" 816 | version = "0.1.5" 817 | source = "registry+https://github.com/rust-lang/crates.io-index" 818 | checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" 819 | dependencies = [ 820 | "libc", 821 | ] 822 | 823 | [[package]] 824 | name = "inout" 825 | version = "0.1.3" 826 | source = "registry+https://github.com/rust-lang/crates.io-index" 827 | checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" 828 | dependencies = [ 829 | "generic-array", 830 | ] 831 | 832 | [[package]] 833 | name = "instant" 834 | version = "0.1.12" 835 | source = "registry+https://github.com/rust-lang/crates.io-index" 836 | checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" 837 | dependencies = [ 838 | "cfg-if", 839 | ] 840 | 841 | [[package]] 842 | name = "io-lifetimes" 843 | version = "1.0.10" 844 | source = "registry+https://github.com/rust-lang/crates.io-index" 845 | checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" 846 | dependencies = [ 847 | "hermit-abi 0.3.1", 848 | "libc", 849 | "windows-sys 0.48.0", 850 | ] 851 | 852 | [[package]] 853 | name = "is-terminal" 854 | version = "0.4.7" 855 | source = "registry+https://github.com/rust-lang/crates.io-index" 856 | checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" 857 | dependencies = [ 858 | "hermit-abi 0.3.1", 859 | "io-lifetimes", 860 | "rustix", 861 | "windows-sys 0.48.0", 862 | ] 863 | 864 | [[package]] 865 | name = "itoa" 866 | version = "1.0.6" 867 | source = "registry+https://github.com/rust-lang/crates.io-index" 868 | checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" 869 | 870 | [[package]] 871 | name = "js-sys" 872 | version = "0.3.61" 873 | source = "registry+https://github.com/rust-lang/crates.io-index" 874 | checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" 875 | dependencies = [ 876 | "wasm-bindgen", 877 | ] 878 | 879 | [[package]] 880 | name = "kqueue" 881 | version = "1.0.7" 882 | source = "registry+https://github.com/rust-lang/crates.io-index" 883 | checksum = "2c8fc60ba15bf51257aa9807a48a61013db043fcf3a78cb0d916e8e396dcad98" 884 | dependencies = [ 885 | "kqueue-sys", 886 | "libc", 887 | ] 888 | 889 | [[package]] 890 | name = "kqueue-sys" 891 | version = "1.0.3" 892 | source = "registry+https://github.com/rust-lang/crates.io-index" 893 | checksum = "8367585489f01bc55dd27404dcf56b95e6da061a256a666ab23be9ba96a2e587" 894 | dependencies = [ 895 | "bitflags 1.3.2", 896 | "libc", 897 | ] 898 | 899 | [[package]] 900 | name = "lazy_static" 901 | version = "1.4.0" 902 | source = "registry+https://github.com/rust-lang/crates.io-index" 903 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 904 | 905 | [[package]] 906 | name = "libc" 907 | version = "0.2.141" 908 | source = "registry+https://github.com/rust-lang/crates.io-index" 909 | checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5" 910 | 911 | [[package]] 912 | name = "libm" 913 | version = "0.2.6" 914 | source = "registry+https://github.com/rust-lang/crates.io-index" 915 | checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb" 916 | 917 | [[package]] 918 | name = "link-cplusplus" 919 | version = "1.0.8" 920 | source = "registry+https://github.com/rust-lang/crates.io-index" 921 | checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" 922 | dependencies = [ 923 | "cc", 924 | ] 925 | 926 | [[package]] 927 | name = "linux-raw-sys" 928 | version = "0.3.1" 929 | source = "registry+https://github.com/rust-lang/crates.io-index" 930 | checksum = "d59d8c75012853d2e872fb56bc8a2e53718e2cafe1a4c823143141c6d90c322f" 931 | 932 | [[package]] 933 | name = "lock_api" 934 | version = "0.4.9" 935 | source = "registry+https://github.com/rust-lang/crates.io-index" 936 | checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" 937 | dependencies = [ 938 | "autocfg", 939 | "scopeguard", 940 | ] 941 | 942 | [[package]] 943 | name = "log" 944 | version = "0.4.17" 945 | source = "registry+https://github.com/rust-lang/crates.io-index" 946 | checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" 947 | dependencies = [ 948 | "cfg-if", 949 | ] 950 | 951 | [[package]] 952 | name = "loom" 953 | version = "0.5.6" 954 | source = "registry+https://github.com/rust-lang/crates.io-index" 955 | checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5" 956 | dependencies = [ 957 | "cfg-if", 958 | "generator", 959 | "scoped-tls", 960 | "serde", 961 | "serde_json", 962 | "tracing", 963 | "tracing-subscriber", 964 | ] 965 | 966 | [[package]] 967 | name = "matchers" 968 | version = "0.1.0" 969 | source = "registry+https://github.com/rust-lang/crates.io-index" 970 | checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" 971 | dependencies = [ 972 | "regex-automata", 973 | ] 974 | 975 | [[package]] 976 | name = "memchr" 977 | version = "2.5.0" 978 | source = "registry+https://github.com/rust-lang/crates.io-index" 979 | checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" 980 | 981 | [[package]] 982 | name = "mime" 983 | version = "0.3.17" 984 | source = "registry+https://github.com/rust-lang/crates.io-index" 985 | checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 986 | 987 | [[package]] 988 | name = "mio" 989 | version = "0.8.6" 990 | source = "registry+https://github.com/rust-lang/crates.io-index" 991 | checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" 992 | dependencies = [ 993 | "libc", 994 | "log", 995 | "wasi 0.11.0+wasi-snapshot-preview1", 996 | "windows-sys 0.45.0", 997 | ] 998 | 999 | [[package]] 1000 | name = "multer" 1001 | version = "2.1.0" 1002 | source = "registry+https://github.com/rust-lang/crates.io-index" 1003 | checksum = "01acbdc23469fd8fe07ab135923371d5f5a422fbf9c522158677c8eb15bc51c2" 1004 | dependencies = [ 1005 | "bytes", 1006 | "encoding_rs", 1007 | "futures-util", 1008 | "http", 1009 | "httparse", 1010 | "log", 1011 | "memchr", 1012 | "mime", 1013 | "spin", 1014 | "tokio", 1015 | "tokio-util", 1016 | "version_check", 1017 | ] 1018 | 1019 | [[package]] 1020 | name = "normpath" 1021 | version = "1.1.1" 1022 | source = "registry+https://github.com/rust-lang/crates.io-index" 1023 | checksum = "ec60c60a693226186f5d6edf073232bfb6464ed97eb22cf3b01c1e8198fd97f5" 1024 | dependencies = [ 1025 | "windows-sys 0.48.0", 1026 | ] 1027 | 1028 | [[package]] 1029 | name = "notify" 1030 | version = "5.1.0" 1031 | source = "registry+https://github.com/rust-lang/crates.io-index" 1032 | checksum = "58ea850aa68a06e48fdb069c0ec44d0d64c8dbffa49bf3b6f7f0a901fdea1ba9" 1033 | dependencies = [ 1034 | "bitflags 1.3.2", 1035 | "crossbeam-channel", 1036 | "filetime", 1037 | "fsevent-sys", 1038 | "inotify", 1039 | "kqueue", 1040 | "libc", 1041 | "mio", 1042 | "walkdir", 1043 | "windows-sys 0.42.0", 1044 | ] 1045 | 1046 | [[package]] 1047 | name = "nu-ansi-term" 1048 | version = "0.46.0" 1049 | source = "registry+https://github.com/rust-lang/crates.io-index" 1050 | checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" 1051 | dependencies = [ 1052 | "overload", 1053 | "winapi", 1054 | ] 1055 | 1056 | [[package]] 1057 | name = "num-integer" 1058 | version = "0.1.45" 1059 | source = "registry+https://github.com/rust-lang/crates.io-index" 1060 | checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" 1061 | dependencies = [ 1062 | "autocfg", 1063 | "num-traits", 1064 | ] 1065 | 1066 | [[package]] 1067 | name = "num-traits" 1068 | version = "0.2.15" 1069 | source = "registry+https://github.com/rust-lang/crates.io-index" 1070 | checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" 1071 | dependencies = [ 1072 | "autocfg", 1073 | ] 1074 | 1075 | [[package]] 1076 | name = "num_cpus" 1077 | version = "1.15.0" 1078 | source = "registry+https://github.com/rust-lang/crates.io-index" 1079 | checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" 1080 | dependencies = [ 1081 | "hermit-abi 0.2.6", 1082 | "libc", 1083 | ] 1084 | 1085 | [[package]] 1086 | name = "once_cell" 1087 | version = "1.17.1" 1088 | source = "registry+https://github.com/rust-lang/crates.io-index" 1089 | checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" 1090 | 1091 | [[package]] 1092 | name = "opaque-debug" 1093 | version = "0.3.0" 1094 | source = "registry+https://github.com/rust-lang/crates.io-index" 1095 | checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" 1096 | 1097 | [[package]] 1098 | name = "overload" 1099 | version = "0.1.1" 1100 | source = "registry+https://github.com/rust-lang/crates.io-index" 1101 | checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" 1102 | 1103 | [[package]] 1104 | name = "parking_lot" 1105 | version = "0.12.1" 1106 | source = "registry+https://github.com/rust-lang/crates.io-index" 1107 | checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" 1108 | dependencies = [ 1109 | "lock_api", 1110 | "parking_lot_core", 1111 | ] 1112 | 1113 | [[package]] 1114 | name = "parking_lot_core" 1115 | version = "0.9.7" 1116 | source = "registry+https://github.com/rust-lang/crates.io-index" 1117 | checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" 1118 | dependencies = [ 1119 | "cfg-if", 1120 | "libc", 1121 | "redox_syscall 0.2.16", 1122 | "smallvec", 1123 | "windows-sys 0.45.0", 1124 | ] 1125 | 1126 | [[package]] 1127 | name = "parse-zoneinfo" 1128 | version = "0.3.0" 1129 | source = "registry+https://github.com/rust-lang/crates.io-index" 1130 | checksum = "c705f256449c60da65e11ff6626e0c16a0a0b96aaa348de61376b249bc340f41" 1131 | dependencies = [ 1132 | "regex", 1133 | ] 1134 | 1135 | [[package]] 1136 | name = "pear" 1137 | version = "0.2.4" 1138 | source = "registry+https://github.com/rust-lang/crates.io-index" 1139 | checksum = "0ec95680a7087503575284e5063e14b694b7a9c0b065e5dceec661e0497127e8" 1140 | dependencies = [ 1141 | "inlinable_string", 1142 | "pear_codegen", 1143 | "yansi", 1144 | ] 1145 | 1146 | [[package]] 1147 | name = "pear_codegen" 1148 | version = "0.2.4" 1149 | source = "registry+https://github.com/rust-lang/crates.io-index" 1150 | checksum = "9661a3a53f93f09f2ea882018e4d7c88f6ff2956d809a276060476fd8c879d3c" 1151 | dependencies = [ 1152 | "proc-macro2", 1153 | "proc-macro2-diagnostics", 1154 | "quote", 1155 | "syn 2.0.13", 1156 | ] 1157 | 1158 | [[package]] 1159 | name = "percent-encoding" 1160 | version = "2.2.0" 1161 | source = "registry+https://github.com/rust-lang/crates.io-index" 1162 | checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" 1163 | 1164 | [[package]] 1165 | name = "pest" 1166 | version = "2.5.7" 1167 | source = "registry+https://github.com/rust-lang/crates.io-index" 1168 | checksum = "7b1403e8401ad5dedea73c626b99758535b342502f8d1e361f4a2dd952749122" 1169 | dependencies = [ 1170 | "thiserror", 1171 | "ucd-trie", 1172 | ] 1173 | 1174 | [[package]] 1175 | name = "pest_derive" 1176 | version = "2.5.7" 1177 | source = "registry+https://github.com/rust-lang/crates.io-index" 1178 | checksum = "be99c4c1d2fc2769b1d00239431d711d08f6efedcecb8b6e30707160aee99c15" 1179 | dependencies = [ 1180 | "pest", 1181 | "pest_generator", 1182 | ] 1183 | 1184 | [[package]] 1185 | name = "pest_generator" 1186 | version = "2.5.7" 1187 | source = "registry+https://github.com/rust-lang/crates.io-index" 1188 | checksum = "e56094789873daa36164de2e822b3888c6ae4b4f9da555a1103587658c805b1e" 1189 | dependencies = [ 1190 | "pest", 1191 | "pest_meta", 1192 | "proc-macro2", 1193 | "quote", 1194 | "syn 2.0.13", 1195 | ] 1196 | 1197 | [[package]] 1198 | name = "pest_meta" 1199 | version = "2.5.7" 1200 | source = "registry+https://github.com/rust-lang/crates.io-index" 1201 | checksum = "6733073c7cff3d8459fda0e42f13a047870242aed8b509fe98000928975f359e" 1202 | dependencies = [ 1203 | "once_cell", 1204 | "pest", 1205 | "sha2", 1206 | ] 1207 | 1208 | [[package]] 1209 | name = "phf" 1210 | version = "0.10.1" 1211 | source = "registry+https://github.com/rust-lang/crates.io-index" 1212 | checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" 1213 | dependencies = [ 1214 | "phf_shared", 1215 | ] 1216 | 1217 | [[package]] 1218 | name = "phf_codegen" 1219 | version = "0.10.0" 1220 | source = "registry+https://github.com/rust-lang/crates.io-index" 1221 | checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd" 1222 | dependencies = [ 1223 | "phf_generator", 1224 | "phf_shared", 1225 | ] 1226 | 1227 | [[package]] 1228 | name = "phf_generator" 1229 | version = "0.10.0" 1230 | source = "registry+https://github.com/rust-lang/crates.io-index" 1231 | checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" 1232 | dependencies = [ 1233 | "phf_shared", 1234 | "rand", 1235 | ] 1236 | 1237 | [[package]] 1238 | name = "phf_shared" 1239 | version = "0.10.0" 1240 | source = "registry+https://github.com/rust-lang/crates.io-index" 1241 | checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" 1242 | dependencies = [ 1243 | "siphasher", 1244 | "uncased", 1245 | ] 1246 | 1247 | [[package]] 1248 | name = "pin-project-lite" 1249 | version = "0.2.9" 1250 | source = "registry+https://github.com/rust-lang/crates.io-index" 1251 | checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" 1252 | 1253 | [[package]] 1254 | name = "pin-utils" 1255 | version = "0.1.0" 1256 | source = "registry+https://github.com/rust-lang/crates.io-index" 1257 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 1258 | 1259 | [[package]] 1260 | name = "polyval" 1261 | version = "0.6.0" 1262 | source = "registry+https://github.com/rust-lang/crates.io-index" 1263 | checksum = "7ef234e08c11dfcb2e56f79fd70f6f2eb7f025c0ce2333e82f4f0518ecad30c6" 1264 | dependencies = [ 1265 | "cfg-if", 1266 | "cpufeatures", 1267 | "opaque-debug", 1268 | "universal-hash", 1269 | ] 1270 | 1271 | [[package]] 1272 | name = "ppv-lite86" 1273 | version = "0.2.17" 1274 | source = "registry+https://github.com/rust-lang/crates.io-index" 1275 | checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" 1276 | 1277 | [[package]] 1278 | name = "proc-macro2" 1279 | version = "1.0.56" 1280 | source = "registry+https://github.com/rust-lang/crates.io-index" 1281 | checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" 1282 | dependencies = [ 1283 | "unicode-ident", 1284 | ] 1285 | 1286 | [[package]] 1287 | name = "proc-macro2-diagnostics" 1288 | version = "0.10.0" 1289 | source = "registry+https://github.com/rust-lang/crates.io-index" 1290 | checksum = "606c4ba35817e2922a308af55ad51bab3645b59eae5c570d4a6cf07e36bd493b" 1291 | dependencies = [ 1292 | "proc-macro2", 1293 | "quote", 1294 | "syn 2.0.13", 1295 | "version_check", 1296 | "yansi", 1297 | ] 1298 | 1299 | [[package]] 1300 | name = "quote" 1301 | version = "1.0.26" 1302 | source = "registry+https://github.com/rust-lang/crates.io-index" 1303 | checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" 1304 | dependencies = [ 1305 | "proc-macro2", 1306 | ] 1307 | 1308 | [[package]] 1309 | name = "rand" 1310 | version = "0.8.5" 1311 | source = "registry+https://github.com/rust-lang/crates.io-index" 1312 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 1313 | dependencies = [ 1314 | "libc", 1315 | "rand_chacha", 1316 | "rand_core", 1317 | ] 1318 | 1319 | [[package]] 1320 | name = "rand_chacha" 1321 | version = "0.3.1" 1322 | source = "registry+https://github.com/rust-lang/crates.io-index" 1323 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 1324 | dependencies = [ 1325 | "ppv-lite86", 1326 | "rand_core", 1327 | ] 1328 | 1329 | [[package]] 1330 | name = "rand_core" 1331 | version = "0.6.4" 1332 | source = "registry+https://github.com/rust-lang/crates.io-index" 1333 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 1334 | dependencies = [ 1335 | "getrandom", 1336 | ] 1337 | 1338 | [[package]] 1339 | name = "redox_syscall" 1340 | version = "0.2.16" 1341 | source = "registry+https://github.com/rust-lang/crates.io-index" 1342 | checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" 1343 | dependencies = [ 1344 | "bitflags 1.3.2", 1345 | ] 1346 | 1347 | [[package]] 1348 | name = "redox_syscall" 1349 | version = "0.3.5" 1350 | source = "registry+https://github.com/rust-lang/crates.io-index" 1351 | checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" 1352 | dependencies = [ 1353 | "bitflags 1.3.2", 1354 | ] 1355 | 1356 | [[package]] 1357 | name = "ref-cast" 1358 | version = "1.0.16" 1359 | source = "registry+https://github.com/rust-lang/crates.io-index" 1360 | checksum = "f43faa91b1c8b36841ee70e97188a869d37ae21759da6846d4be66de5bf7b12c" 1361 | dependencies = [ 1362 | "ref-cast-impl", 1363 | ] 1364 | 1365 | [[package]] 1366 | name = "ref-cast-impl" 1367 | version = "1.0.16" 1368 | source = "registry+https://github.com/rust-lang/crates.io-index" 1369 | checksum = "8d2275aab483050ab2a7364c1a46604865ee7d6906684e08db0f090acf74f9e7" 1370 | dependencies = [ 1371 | "proc-macro2", 1372 | "quote", 1373 | "syn 2.0.13", 1374 | ] 1375 | 1376 | [[package]] 1377 | name = "regex" 1378 | version = "1.7.3" 1379 | source = "registry+https://github.com/rust-lang/crates.io-index" 1380 | checksum = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d" 1381 | dependencies = [ 1382 | "aho-corasick", 1383 | "memchr", 1384 | "regex-syntax", 1385 | ] 1386 | 1387 | [[package]] 1388 | name = "regex-automata" 1389 | version = "0.1.10" 1390 | source = "registry+https://github.com/rust-lang/crates.io-index" 1391 | checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" 1392 | dependencies = [ 1393 | "regex-syntax", 1394 | ] 1395 | 1396 | [[package]] 1397 | name = "regex-syntax" 1398 | version = "0.6.29" 1399 | source = "registry+https://github.com/rust-lang/crates.io-index" 1400 | checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" 1401 | 1402 | [[package]] 1403 | name = "rocket" 1404 | version = "0.5.0-rc.3" 1405 | source = "registry+https://github.com/rust-lang/crates.io-index" 1406 | checksum = "58734f7401ae5cfd129685b48f61182331745b357b96f2367f01aebaf1cc9cc9" 1407 | dependencies = [ 1408 | "async-stream", 1409 | "async-trait", 1410 | "atomic", 1411 | "binascii", 1412 | "bytes", 1413 | "either", 1414 | "figment", 1415 | "futures", 1416 | "indexmap", 1417 | "is-terminal", 1418 | "log", 1419 | "memchr", 1420 | "multer", 1421 | "num_cpus", 1422 | "parking_lot", 1423 | "pin-project-lite", 1424 | "rand", 1425 | "ref-cast", 1426 | "rocket_codegen", 1427 | "rocket_http", 1428 | "serde", 1429 | "serde_json", 1430 | "state", 1431 | "tempfile", 1432 | "time 0.3.20", 1433 | "tokio", 1434 | "tokio-stream", 1435 | "tokio-util", 1436 | "ubyte", 1437 | "version_check", 1438 | "yansi", 1439 | ] 1440 | 1441 | [[package]] 1442 | name = "rocket_codegen" 1443 | version = "0.5.0-rc.3" 1444 | source = "registry+https://github.com/rust-lang/crates.io-index" 1445 | checksum = "7093353f14228c744982e409259fb54878ba9563d08214f2d880d59ff2fc508b" 1446 | dependencies = [ 1447 | "devise", 1448 | "glob", 1449 | "indexmap", 1450 | "proc-macro2", 1451 | "quote", 1452 | "rocket_http", 1453 | "syn 2.0.13", 1454 | "unicode-xid", 1455 | ] 1456 | 1457 | [[package]] 1458 | name = "rocket_dyn_templates" 1459 | version = "0.1.0-rc.3" 1460 | source = "registry+https://github.com/rust-lang/crates.io-index" 1461 | checksum = "276cac97fcddca93d741a4a530f58969f45a5bdb587f8c6b04c75cf849ca7f4c" 1462 | dependencies = [ 1463 | "glob", 1464 | "normpath", 1465 | "notify", 1466 | "rocket", 1467 | "tera", 1468 | ] 1469 | 1470 | [[package]] 1471 | name = "rocket_http" 1472 | version = "0.5.0-rc.3" 1473 | source = "registry+https://github.com/rust-lang/crates.io-index" 1474 | checksum = "936012c99162a03a67f37f9836d5f938f662e26f2717809761a9ac46432090f4" 1475 | dependencies = [ 1476 | "cookie", 1477 | "either", 1478 | "futures", 1479 | "http", 1480 | "hyper", 1481 | "indexmap", 1482 | "log", 1483 | "memchr", 1484 | "pear", 1485 | "percent-encoding", 1486 | "pin-project-lite", 1487 | "ref-cast", 1488 | "serde", 1489 | "smallvec", 1490 | "stable-pattern", 1491 | "state", 1492 | "time 0.3.20", 1493 | "tokio", 1494 | "uncased", 1495 | ] 1496 | 1497 | [[package]] 1498 | name = "rustix" 1499 | version = "0.37.8" 1500 | source = "registry+https://github.com/rust-lang/crates.io-index" 1501 | checksum = "1aef160324be24d31a62147fae491c14d2204a3865c7ca8c3b0d7f7bcb3ea635" 1502 | dependencies = [ 1503 | "bitflags 1.3.2", 1504 | "errno", 1505 | "io-lifetimes", 1506 | "libc", 1507 | "linux-raw-sys", 1508 | "windows-sys 0.48.0", 1509 | ] 1510 | 1511 | [[package]] 1512 | name = "rustversion" 1513 | version = "1.0.12" 1514 | source = "registry+https://github.com/rust-lang/crates.io-index" 1515 | checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" 1516 | 1517 | [[package]] 1518 | name = "ryu" 1519 | version = "1.0.13" 1520 | source = "registry+https://github.com/rust-lang/crates.io-index" 1521 | checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" 1522 | 1523 | [[package]] 1524 | name = "same-file" 1525 | version = "1.0.6" 1526 | source = "registry+https://github.com/rust-lang/crates.io-index" 1527 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 1528 | dependencies = [ 1529 | "winapi-util", 1530 | ] 1531 | 1532 | [[package]] 1533 | name = "scoped-tls" 1534 | version = "1.0.1" 1535 | source = "registry+https://github.com/rust-lang/crates.io-index" 1536 | checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" 1537 | 1538 | [[package]] 1539 | name = "scopeguard" 1540 | version = "1.1.0" 1541 | source = "registry+https://github.com/rust-lang/crates.io-index" 1542 | checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" 1543 | 1544 | [[package]] 1545 | name = "scratch" 1546 | version = "1.0.5" 1547 | source = "registry+https://github.com/rust-lang/crates.io-index" 1548 | checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1" 1549 | 1550 | [[package]] 1551 | name = "serde" 1552 | version = "1.0.159" 1553 | source = "registry+https://github.com/rust-lang/crates.io-index" 1554 | checksum = "3c04e8343c3daeec41f58990b9d77068df31209f2af111e059e9fe9646693065" 1555 | dependencies = [ 1556 | "serde_derive", 1557 | ] 1558 | 1559 | [[package]] 1560 | name = "serde_derive" 1561 | version = "1.0.159" 1562 | source = "registry+https://github.com/rust-lang/crates.io-index" 1563 | checksum = "4c614d17805b093df4b147b51339e7e44bf05ef59fba1e45d83500bcfb4d8585" 1564 | dependencies = [ 1565 | "proc-macro2", 1566 | "quote", 1567 | "syn 2.0.13", 1568 | ] 1569 | 1570 | [[package]] 1571 | name = "serde_json" 1572 | version = "1.0.95" 1573 | source = "registry+https://github.com/rust-lang/crates.io-index" 1574 | checksum = "d721eca97ac802aa7777b701877c8004d950fc142651367300d21c1cc0194744" 1575 | dependencies = [ 1576 | "itoa", 1577 | "ryu", 1578 | "serde", 1579 | ] 1580 | 1581 | [[package]] 1582 | name = "sha2" 1583 | version = "0.10.6" 1584 | source = "registry+https://github.com/rust-lang/crates.io-index" 1585 | checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" 1586 | dependencies = [ 1587 | "cfg-if", 1588 | "cpufeatures", 1589 | "digest", 1590 | ] 1591 | 1592 | [[package]] 1593 | name = "sharded-slab" 1594 | version = "0.1.4" 1595 | source = "registry+https://github.com/rust-lang/crates.io-index" 1596 | checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" 1597 | dependencies = [ 1598 | "lazy_static", 1599 | ] 1600 | 1601 | [[package]] 1602 | name = "signal-hook-registry" 1603 | version = "1.4.1" 1604 | source = "registry+https://github.com/rust-lang/crates.io-index" 1605 | checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" 1606 | dependencies = [ 1607 | "libc", 1608 | ] 1609 | 1610 | [[package]] 1611 | name = "siphasher" 1612 | version = "0.3.10" 1613 | source = "registry+https://github.com/rust-lang/crates.io-index" 1614 | checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" 1615 | 1616 | [[package]] 1617 | name = "slab" 1618 | version = "0.4.8" 1619 | source = "registry+https://github.com/rust-lang/crates.io-index" 1620 | checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" 1621 | dependencies = [ 1622 | "autocfg", 1623 | ] 1624 | 1625 | [[package]] 1626 | name = "slug" 1627 | version = "0.1.4" 1628 | source = "registry+https://github.com/rust-lang/crates.io-index" 1629 | checksum = "b3bc762e6a4b6c6fcaade73e77f9ebc6991b676f88bb2358bddb56560f073373" 1630 | dependencies = [ 1631 | "deunicode", 1632 | ] 1633 | 1634 | [[package]] 1635 | name = "smallvec" 1636 | version = "1.10.0" 1637 | source = "registry+https://github.com/rust-lang/crates.io-index" 1638 | checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" 1639 | 1640 | [[package]] 1641 | name = "socket2" 1642 | version = "0.4.9" 1643 | source = "registry+https://github.com/rust-lang/crates.io-index" 1644 | checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" 1645 | dependencies = [ 1646 | "libc", 1647 | "winapi", 1648 | ] 1649 | 1650 | [[package]] 1651 | name = "spin" 1652 | version = "0.9.8" 1653 | source = "registry+https://github.com/rust-lang/crates.io-index" 1654 | checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 1655 | 1656 | [[package]] 1657 | name = "stable-pattern" 1658 | version = "0.1.0" 1659 | source = "registry+https://github.com/rust-lang/crates.io-index" 1660 | checksum = "4564168c00635f88eaed410d5efa8131afa8d8699a612c80c455a0ba05c21045" 1661 | dependencies = [ 1662 | "memchr", 1663 | ] 1664 | 1665 | [[package]] 1666 | name = "state" 1667 | version = "0.5.3" 1668 | source = "registry+https://github.com/rust-lang/crates.io-index" 1669 | checksum = "dbe866e1e51e8260c9eed836a042a5e7f6726bb2b411dffeaa712e19c388f23b" 1670 | dependencies = [ 1671 | "loom", 1672 | ] 1673 | 1674 | [[package]] 1675 | name = "subtle" 1676 | version = "2.4.1" 1677 | source = "registry+https://github.com/rust-lang/crates.io-index" 1678 | checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" 1679 | 1680 | [[package]] 1681 | name = "svelte-on-rust" 1682 | version = "0.2.0" 1683 | dependencies = [ 1684 | "chrono", 1685 | "rocket", 1686 | "rocket_dyn_templates", 1687 | "serde", 1688 | "sha2", 1689 | ] 1690 | 1691 | [[package]] 1692 | name = "syn" 1693 | version = "1.0.109" 1694 | source = "registry+https://github.com/rust-lang/crates.io-index" 1695 | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 1696 | dependencies = [ 1697 | "proc-macro2", 1698 | "quote", 1699 | "unicode-ident", 1700 | ] 1701 | 1702 | [[package]] 1703 | name = "syn" 1704 | version = "2.0.13" 1705 | source = "registry+https://github.com/rust-lang/crates.io-index" 1706 | checksum = "4c9da457c5285ac1f936ebd076af6dac17a61cfe7826f2076b4d015cf47bc8ec" 1707 | dependencies = [ 1708 | "proc-macro2", 1709 | "quote", 1710 | "unicode-ident", 1711 | ] 1712 | 1713 | [[package]] 1714 | name = "tempfile" 1715 | version = "3.5.0" 1716 | source = "registry+https://github.com/rust-lang/crates.io-index" 1717 | checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998" 1718 | dependencies = [ 1719 | "cfg-if", 1720 | "fastrand", 1721 | "redox_syscall 0.3.5", 1722 | "rustix", 1723 | "windows-sys 0.45.0", 1724 | ] 1725 | 1726 | [[package]] 1727 | name = "tera" 1728 | version = "1.18.1" 1729 | source = "registry+https://github.com/rust-lang/crates.io-index" 1730 | checksum = "95a665751302f22a03c56721e23094e4dc22b04a80f381e6737a07bf7a7c70c0" 1731 | dependencies = [ 1732 | "chrono", 1733 | "chrono-tz", 1734 | "globwalk", 1735 | "humansize", 1736 | "lazy_static", 1737 | "percent-encoding", 1738 | "pest", 1739 | "pest_derive", 1740 | "rand", 1741 | "regex", 1742 | "serde", 1743 | "serde_json", 1744 | "slug", 1745 | "thread_local", 1746 | "unic-segment", 1747 | ] 1748 | 1749 | [[package]] 1750 | name = "termcolor" 1751 | version = "1.2.0" 1752 | source = "registry+https://github.com/rust-lang/crates.io-index" 1753 | checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" 1754 | dependencies = [ 1755 | "winapi-util", 1756 | ] 1757 | 1758 | [[package]] 1759 | name = "thiserror" 1760 | version = "1.0.40" 1761 | source = "registry+https://github.com/rust-lang/crates.io-index" 1762 | checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" 1763 | dependencies = [ 1764 | "thiserror-impl", 1765 | ] 1766 | 1767 | [[package]] 1768 | name = "thiserror-impl" 1769 | version = "1.0.40" 1770 | source = "registry+https://github.com/rust-lang/crates.io-index" 1771 | checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" 1772 | dependencies = [ 1773 | "proc-macro2", 1774 | "quote", 1775 | "syn 2.0.13", 1776 | ] 1777 | 1778 | [[package]] 1779 | name = "thread_local" 1780 | version = "1.1.4" 1781 | source = "registry+https://github.com/rust-lang/crates.io-index" 1782 | checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" 1783 | dependencies = [ 1784 | "once_cell", 1785 | ] 1786 | 1787 | [[package]] 1788 | name = "time" 1789 | version = "0.1.45" 1790 | source = "registry+https://github.com/rust-lang/crates.io-index" 1791 | checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" 1792 | dependencies = [ 1793 | "libc", 1794 | "wasi 0.10.0+wasi-snapshot-preview1", 1795 | "winapi", 1796 | ] 1797 | 1798 | [[package]] 1799 | name = "time" 1800 | version = "0.3.20" 1801 | source = "registry+https://github.com/rust-lang/crates.io-index" 1802 | checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890" 1803 | dependencies = [ 1804 | "itoa", 1805 | "serde", 1806 | "time-core", 1807 | "time-macros", 1808 | ] 1809 | 1810 | [[package]] 1811 | name = "time-core" 1812 | version = "0.1.0" 1813 | source = "registry+https://github.com/rust-lang/crates.io-index" 1814 | checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" 1815 | 1816 | [[package]] 1817 | name = "time-macros" 1818 | version = "0.2.8" 1819 | source = "registry+https://github.com/rust-lang/crates.io-index" 1820 | checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36" 1821 | dependencies = [ 1822 | "time-core", 1823 | ] 1824 | 1825 | [[package]] 1826 | name = "tokio" 1827 | version = "1.27.0" 1828 | source = "registry+https://github.com/rust-lang/crates.io-index" 1829 | checksum = "d0de47a4eecbe11f498978a9b29d792f0d2692d1dd003650c24c76510e3bc001" 1830 | dependencies = [ 1831 | "autocfg", 1832 | "bytes", 1833 | "libc", 1834 | "mio", 1835 | "num_cpus", 1836 | "pin-project-lite", 1837 | "signal-hook-registry", 1838 | "socket2", 1839 | "tokio-macros", 1840 | "windows-sys 0.45.0", 1841 | ] 1842 | 1843 | [[package]] 1844 | name = "tokio-macros" 1845 | version = "2.0.0" 1846 | source = "registry+https://github.com/rust-lang/crates.io-index" 1847 | checksum = "61a573bdc87985e9d6ddeed1b3d864e8a302c847e40d647746df2f1de209d1ce" 1848 | dependencies = [ 1849 | "proc-macro2", 1850 | "quote", 1851 | "syn 2.0.13", 1852 | ] 1853 | 1854 | [[package]] 1855 | name = "tokio-stream" 1856 | version = "0.1.12" 1857 | source = "registry+https://github.com/rust-lang/crates.io-index" 1858 | checksum = "8fb52b74f05dbf495a8fba459fdc331812b96aa086d9eb78101fa0d4569c3313" 1859 | dependencies = [ 1860 | "futures-core", 1861 | "pin-project-lite", 1862 | "tokio", 1863 | ] 1864 | 1865 | [[package]] 1866 | name = "tokio-util" 1867 | version = "0.7.7" 1868 | source = "registry+https://github.com/rust-lang/crates.io-index" 1869 | checksum = "5427d89453009325de0d8f342c9490009f76e999cb7672d77e46267448f7e6b2" 1870 | dependencies = [ 1871 | "bytes", 1872 | "futures-core", 1873 | "futures-sink", 1874 | "pin-project-lite", 1875 | "tokio", 1876 | "tracing", 1877 | ] 1878 | 1879 | [[package]] 1880 | name = "toml" 1881 | version = "0.5.11" 1882 | source = "registry+https://github.com/rust-lang/crates.io-index" 1883 | checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" 1884 | dependencies = [ 1885 | "serde", 1886 | ] 1887 | 1888 | [[package]] 1889 | name = "tower-service" 1890 | version = "0.3.2" 1891 | source = "registry+https://github.com/rust-lang/crates.io-index" 1892 | checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" 1893 | 1894 | [[package]] 1895 | name = "tracing" 1896 | version = "0.1.37" 1897 | source = "registry+https://github.com/rust-lang/crates.io-index" 1898 | checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" 1899 | dependencies = [ 1900 | "cfg-if", 1901 | "pin-project-lite", 1902 | "tracing-attributes", 1903 | "tracing-core", 1904 | ] 1905 | 1906 | [[package]] 1907 | name = "tracing-attributes" 1908 | version = "0.1.23" 1909 | source = "registry+https://github.com/rust-lang/crates.io-index" 1910 | checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" 1911 | dependencies = [ 1912 | "proc-macro2", 1913 | "quote", 1914 | "syn 1.0.109", 1915 | ] 1916 | 1917 | [[package]] 1918 | name = "tracing-core" 1919 | version = "0.1.30" 1920 | source = "registry+https://github.com/rust-lang/crates.io-index" 1921 | checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" 1922 | dependencies = [ 1923 | "once_cell", 1924 | "valuable", 1925 | ] 1926 | 1927 | [[package]] 1928 | name = "tracing-log" 1929 | version = "0.1.3" 1930 | source = "registry+https://github.com/rust-lang/crates.io-index" 1931 | checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" 1932 | dependencies = [ 1933 | "lazy_static", 1934 | "log", 1935 | "tracing-core", 1936 | ] 1937 | 1938 | [[package]] 1939 | name = "tracing-subscriber" 1940 | version = "0.3.16" 1941 | source = "registry+https://github.com/rust-lang/crates.io-index" 1942 | checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70" 1943 | dependencies = [ 1944 | "matchers", 1945 | "nu-ansi-term", 1946 | "once_cell", 1947 | "regex", 1948 | "sharded-slab", 1949 | "smallvec", 1950 | "thread_local", 1951 | "tracing", 1952 | "tracing-core", 1953 | "tracing-log", 1954 | ] 1955 | 1956 | [[package]] 1957 | name = "try-lock" 1958 | version = "0.2.4" 1959 | source = "registry+https://github.com/rust-lang/crates.io-index" 1960 | checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" 1961 | 1962 | [[package]] 1963 | name = "typenum" 1964 | version = "1.16.0" 1965 | source = "registry+https://github.com/rust-lang/crates.io-index" 1966 | checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" 1967 | 1968 | [[package]] 1969 | name = "ubyte" 1970 | version = "0.10.3" 1971 | source = "registry+https://github.com/rust-lang/crates.io-index" 1972 | checksum = "c81f0dae7d286ad0d9366d7679a77934cfc3cf3a8d67e82669794412b2368fe6" 1973 | dependencies = [ 1974 | "serde", 1975 | ] 1976 | 1977 | [[package]] 1978 | name = "ucd-trie" 1979 | version = "0.1.5" 1980 | source = "registry+https://github.com/rust-lang/crates.io-index" 1981 | checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" 1982 | 1983 | [[package]] 1984 | name = "uncased" 1985 | version = "0.9.7" 1986 | source = "registry+https://github.com/rust-lang/crates.io-index" 1987 | checksum = "09b01702b0fd0b3fadcf98e098780badda8742d4f4a7676615cad90e8ac73622" 1988 | dependencies = [ 1989 | "serde", 1990 | "version_check", 1991 | ] 1992 | 1993 | [[package]] 1994 | name = "unic-char-property" 1995 | version = "0.9.0" 1996 | source = "registry+https://github.com/rust-lang/crates.io-index" 1997 | checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" 1998 | dependencies = [ 1999 | "unic-char-range", 2000 | ] 2001 | 2002 | [[package]] 2003 | name = "unic-char-range" 2004 | version = "0.9.0" 2005 | source = "registry+https://github.com/rust-lang/crates.io-index" 2006 | checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" 2007 | 2008 | [[package]] 2009 | name = "unic-common" 2010 | version = "0.9.0" 2011 | source = "registry+https://github.com/rust-lang/crates.io-index" 2012 | checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" 2013 | 2014 | [[package]] 2015 | name = "unic-segment" 2016 | version = "0.9.0" 2017 | source = "registry+https://github.com/rust-lang/crates.io-index" 2018 | checksum = "e4ed5d26be57f84f176157270c112ef57b86debac9cd21daaabbe56db0f88f23" 2019 | dependencies = [ 2020 | "unic-ucd-segment", 2021 | ] 2022 | 2023 | [[package]] 2024 | name = "unic-ucd-segment" 2025 | version = "0.9.0" 2026 | source = "registry+https://github.com/rust-lang/crates.io-index" 2027 | checksum = "2079c122a62205b421f499da10f3ee0f7697f012f55b675e002483c73ea34700" 2028 | dependencies = [ 2029 | "unic-char-property", 2030 | "unic-char-range", 2031 | "unic-ucd-version", 2032 | ] 2033 | 2034 | [[package]] 2035 | name = "unic-ucd-version" 2036 | version = "0.9.0" 2037 | source = "registry+https://github.com/rust-lang/crates.io-index" 2038 | checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" 2039 | dependencies = [ 2040 | "unic-common", 2041 | ] 2042 | 2043 | [[package]] 2044 | name = "unicode-ident" 2045 | version = "1.0.8" 2046 | source = "registry+https://github.com/rust-lang/crates.io-index" 2047 | checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" 2048 | 2049 | [[package]] 2050 | name = "unicode-width" 2051 | version = "0.1.10" 2052 | source = "registry+https://github.com/rust-lang/crates.io-index" 2053 | checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" 2054 | 2055 | [[package]] 2056 | name = "unicode-xid" 2057 | version = "0.2.4" 2058 | source = "registry+https://github.com/rust-lang/crates.io-index" 2059 | checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" 2060 | 2061 | [[package]] 2062 | name = "universal-hash" 2063 | version = "0.5.0" 2064 | source = "registry+https://github.com/rust-lang/crates.io-index" 2065 | checksum = "7d3160b73c9a19f7e2939a2fdad446c57c1bbbbf4d919d3213ff1267a580d8b5" 2066 | dependencies = [ 2067 | "crypto-common", 2068 | "subtle", 2069 | ] 2070 | 2071 | [[package]] 2072 | name = "valuable" 2073 | version = "0.1.0" 2074 | source = "registry+https://github.com/rust-lang/crates.io-index" 2075 | checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" 2076 | 2077 | [[package]] 2078 | name = "version_check" 2079 | version = "0.9.4" 2080 | source = "registry+https://github.com/rust-lang/crates.io-index" 2081 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 2082 | 2083 | [[package]] 2084 | name = "walkdir" 2085 | version = "2.3.3" 2086 | source = "registry+https://github.com/rust-lang/crates.io-index" 2087 | checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" 2088 | dependencies = [ 2089 | "same-file", 2090 | "winapi-util", 2091 | ] 2092 | 2093 | [[package]] 2094 | name = "want" 2095 | version = "0.3.0" 2096 | source = "registry+https://github.com/rust-lang/crates.io-index" 2097 | checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" 2098 | dependencies = [ 2099 | "log", 2100 | "try-lock", 2101 | ] 2102 | 2103 | [[package]] 2104 | name = "wasi" 2105 | version = "0.10.0+wasi-snapshot-preview1" 2106 | source = "registry+https://github.com/rust-lang/crates.io-index" 2107 | checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" 2108 | 2109 | [[package]] 2110 | name = "wasi" 2111 | version = "0.11.0+wasi-snapshot-preview1" 2112 | source = "registry+https://github.com/rust-lang/crates.io-index" 2113 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 2114 | 2115 | [[package]] 2116 | name = "wasm-bindgen" 2117 | version = "0.2.84" 2118 | source = "registry+https://github.com/rust-lang/crates.io-index" 2119 | checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" 2120 | dependencies = [ 2121 | "cfg-if", 2122 | "wasm-bindgen-macro", 2123 | ] 2124 | 2125 | [[package]] 2126 | name = "wasm-bindgen-backend" 2127 | version = "0.2.84" 2128 | source = "registry+https://github.com/rust-lang/crates.io-index" 2129 | checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" 2130 | dependencies = [ 2131 | "bumpalo", 2132 | "log", 2133 | "once_cell", 2134 | "proc-macro2", 2135 | "quote", 2136 | "syn 1.0.109", 2137 | "wasm-bindgen-shared", 2138 | ] 2139 | 2140 | [[package]] 2141 | name = "wasm-bindgen-macro" 2142 | version = "0.2.84" 2143 | source = "registry+https://github.com/rust-lang/crates.io-index" 2144 | checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" 2145 | dependencies = [ 2146 | "quote", 2147 | "wasm-bindgen-macro-support", 2148 | ] 2149 | 2150 | [[package]] 2151 | name = "wasm-bindgen-macro-support" 2152 | version = "0.2.84" 2153 | source = "registry+https://github.com/rust-lang/crates.io-index" 2154 | checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" 2155 | dependencies = [ 2156 | "proc-macro2", 2157 | "quote", 2158 | "syn 1.0.109", 2159 | "wasm-bindgen-backend", 2160 | "wasm-bindgen-shared", 2161 | ] 2162 | 2163 | [[package]] 2164 | name = "wasm-bindgen-shared" 2165 | version = "0.2.84" 2166 | source = "registry+https://github.com/rust-lang/crates.io-index" 2167 | checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" 2168 | 2169 | [[package]] 2170 | name = "winapi" 2171 | version = "0.3.9" 2172 | source = "registry+https://github.com/rust-lang/crates.io-index" 2173 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 2174 | dependencies = [ 2175 | "winapi-i686-pc-windows-gnu", 2176 | "winapi-x86_64-pc-windows-gnu", 2177 | ] 2178 | 2179 | [[package]] 2180 | name = "winapi-i686-pc-windows-gnu" 2181 | version = "0.4.0" 2182 | source = "registry+https://github.com/rust-lang/crates.io-index" 2183 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 2184 | 2185 | [[package]] 2186 | name = "winapi-util" 2187 | version = "0.1.5" 2188 | source = "registry+https://github.com/rust-lang/crates.io-index" 2189 | checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" 2190 | dependencies = [ 2191 | "winapi", 2192 | ] 2193 | 2194 | [[package]] 2195 | name = "winapi-x86_64-pc-windows-gnu" 2196 | version = "0.4.0" 2197 | source = "registry+https://github.com/rust-lang/crates.io-index" 2198 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 2199 | 2200 | [[package]] 2201 | name = "windows" 2202 | version = "0.44.0" 2203 | source = "registry+https://github.com/rust-lang/crates.io-index" 2204 | checksum = "9e745dab35a0c4c77aa3ce42d595e13d2003d6902d6b08c9ef5fc326d08da12b" 2205 | dependencies = [ 2206 | "windows-targets 0.42.2", 2207 | ] 2208 | 2209 | [[package]] 2210 | name = "windows" 2211 | version = "0.48.0" 2212 | source = "registry+https://github.com/rust-lang/crates.io-index" 2213 | checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" 2214 | dependencies = [ 2215 | "windows-targets 0.48.0", 2216 | ] 2217 | 2218 | [[package]] 2219 | name = "windows-sys" 2220 | version = "0.42.0" 2221 | source = "registry+https://github.com/rust-lang/crates.io-index" 2222 | checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" 2223 | dependencies = [ 2224 | "windows_aarch64_gnullvm 0.42.2", 2225 | "windows_aarch64_msvc 0.42.2", 2226 | "windows_i686_gnu 0.42.2", 2227 | "windows_i686_msvc 0.42.2", 2228 | "windows_x86_64_gnu 0.42.2", 2229 | "windows_x86_64_gnullvm 0.42.2", 2230 | "windows_x86_64_msvc 0.42.2", 2231 | ] 2232 | 2233 | [[package]] 2234 | name = "windows-sys" 2235 | version = "0.45.0" 2236 | source = "registry+https://github.com/rust-lang/crates.io-index" 2237 | checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" 2238 | dependencies = [ 2239 | "windows-targets 0.42.2", 2240 | ] 2241 | 2242 | [[package]] 2243 | name = "windows-sys" 2244 | version = "0.48.0" 2245 | source = "registry+https://github.com/rust-lang/crates.io-index" 2246 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 2247 | dependencies = [ 2248 | "windows-targets 0.48.0", 2249 | ] 2250 | 2251 | [[package]] 2252 | name = "windows-targets" 2253 | version = "0.42.2" 2254 | source = "registry+https://github.com/rust-lang/crates.io-index" 2255 | checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" 2256 | dependencies = [ 2257 | "windows_aarch64_gnullvm 0.42.2", 2258 | "windows_aarch64_msvc 0.42.2", 2259 | "windows_i686_gnu 0.42.2", 2260 | "windows_i686_msvc 0.42.2", 2261 | "windows_x86_64_gnu 0.42.2", 2262 | "windows_x86_64_gnullvm 0.42.2", 2263 | "windows_x86_64_msvc 0.42.2", 2264 | ] 2265 | 2266 | [[package]] 2267 | name = "windows-targets" 2268 | version = "0.48.0" 2269 | source = "registry+https://github.com/rust-lang/crates.io-index" 2270 | checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" 2271 | dependencies = [ 2272 | "windows_aarch64_gnullvm 0.48.0", 2273 | "windows_aarch64_msvc 0.48.0", 2274 | "windows_i686_gnu 0.48.0", 2275 | "windows_i686_msvc 0.48.0", 2276 | "windows_x86_64_gnu 0.48.0", 2277 | "windows_x86_64_gnullvm 0.48.0", 2278 | "windows_x86_64_msvc 0.48.0", 2279 | ] 2280 | 2281 | [[package]] 2282 | name = "windows_aarch64_gnullvm" 2283 | version = "0.42.2" 2284 | source = "registry+https://github.com/rust-lang/crates.io-index" 2285 | checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" 2286 | 2287 | [[package]] 2288 | name = "windows_aarch64_gnullvm" 2289 | version = "0.48.0" 2290 | source = "registry+https://github.com/rust-lang/crates.io-index" 2291 | checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" 2292 | 2293 | [[package]] 2294 | name = "windows_aarch64_msvc" 2295 | version = "0.42.2" 2296 | source = "registry+https://github.com/rust-lang/crates.io-index" 2297 | checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" 2298 | 2299 | [[package]] 2300 | name = "windows_aarch64_msvc" 2301 | version = "0.48.0" 2302 | source = "registry+https://github.com/rust-lang/crates.io-index" 2303 | checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" 2304 | 2305 | [[package]] 2306 | name = "windows_i686_gnu" 2307 | version = "0.42.2" 2308 | source = "registry+https://github.com/rust-lang/crates.io-index" 2309 | checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" 2310 | 2311 | [[package]] 2312 | name = "windows_i686_gnu" 2313 | version = "0.48.0" 2314 | source = "registry+https://github.com/rust-lang/crates.io-index" 2315 | checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" 2316 | 2317 | [[package]] 2318 | name = "windows_i686_msvc" 2319 | version = "0.42.2" 2320 | source = "registry+https://github.com/rust-lang/crates.io-index" 2321 | checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" 2322 | 2323 | [[package]] 2324 | name = "windows_i686_msvc" 2325 | version = "0.48.0" 2326 | source = "registry+https://github.com/rust-lang/crates.io-index" 2327 | checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" 2328 | 2329 | [[package]] 2330 | name = "windows_x86_64_gnu" 2331 | version = "0.42.2" 2332 | source = "registry+https://github.com/rust-lang/crates.io-index" 2333 | checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" 2334 | 2335 | [[package]] 2336 | name = "windows_x86_64_gnu" 2337 | version = "0.48.0" 2338 | source = "registry+https://github.com/rust-lang/crates.io-index" 2339 | checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" 2340 | 2341 | [[package]] 2342 | name = "windows_x86_64_gnullvm" 2343 | version = "0.42.2" 2344 | source = "registry+https://github.com/rust-lang/crates.io-index" 2345 | checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" 2346 | 2347 | [[package]] 2348 | name = "windows_x86_64_gnullvm" 2349 | version = "0.48.0" 2350 | source = "registry+https://github.com/rust-lang/crates.io-index" 2351 | checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" 2352 | 2353 | [[package]] 2354 | name = "windows_x86_64_msvc" 2355 | version = "0.42.2" 2356 | source = "registry+https://github.com/rust-lang/crates.io-index" 2357 | checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" 2358 | 2359 | [[package]] 2360 | name = "windows_x86_64_msvc" 2361 | version = "0.48.0" 2362 | source = "registry+https://github.com/rust-lang/crates.io-index" 2363 | checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" 2364 | 2365 | [[package]] 2366 | name = "yansi" 2367 | version = "0.5.1" 2368 | source = "registry+https://github.com/rust-lang/crates.io-index" 2369 | checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" 2370 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "svelte-on-rust" 3 | version = "0.2.0" 4 | authors = ["Sachin Bhutani "] 5 | edition = "2021" 6 | 7 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 8 | 9 | [dependencies] 10 | chrono = "0.4.24" 11 | rocket = { version = "=0.5.0-rc.3", features = ["secrets","json"] } 12 | rocket_dyn_templates = { version = "=0.1.0-rc.3", features = ["tera"] } 13 | serde = { version ="1.0.159", features = ["derive"] } 14 | sha2 = "0.10.6" -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) [year] [fullname] 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # Svelte-on-Rust 3 | 4 | Starter template for [Svelte](https://svelte.dev) frontend apps with Rust [Rocket](https://rocket.rs) backend server. 5 | 6 | 7 | 8 | ## Requirements 9 | 10 | NodeJs - [Install](https://nodejs.org/en/download/) 11 | 12 | Rust - [Install](https://www.rust-lang.org/tools/install) 13 | 14 | Rust Nightly for the project folder 15 | 16 | 17 | ## Get started 18 | Create a new project based on this template using [degit](https://github.com/Rich-Harris/degit) and 19 | install the dependencies... 20 | 21 | ```bash 22 | npx degit sachinbhutani/svelte-on-rust svelte-rocket 23 | cd svelte-rocket 24 | npm install 25 | ``` 26 | 27 | 28 | ...then start Rocket server and [Vite](https://vitejs.dev) in two different terminals 29 | 30 | Terminal 1: (To run the rust server) 31 | ```bash 32 | cargo run 33 | ``` 34 | Terminal 2: (To build and hot reload svelte components) 35 | ```bash 36 | npm run dev 37 | ``` 38 | 39 | Navigate to [localhost:8000](http://localhost:8000). You should see your app running. 40 | All svelte component live in `client` directory. Save any changes live-reloading. 41 | All Rocket code lives in `src` directory. To rebuild Rust code use cargo run after saving your changes. 42 | All static files are served from `public` direcotry. Including the JS code compiled by Svelte Compiler. 43 | 44 | 45 | ## Building and running in production mode 46 | 47 | To create an optimised version of the app: 48 | 49 | ```bash 50 | npm run build 51 | cargo build 52 | ``` 53 | 54 | ## Built With 55 | [Rocket](https://rocket.rs/) 56 | 57 | [Svelte](https://svelte.dev/) 58 | 59 | [YRV](https://github.com/pateketrueke/yrv) 60 | 61 | [Vite](https://vitejs.dev) 62 | 63 | ## Change Log 64 | 65 | v0.2.0: Complete Rewrite 66 | + upgraded to rust stable 67 | + upgraded to new svelte version 68 | + removed rollup, using vite now 69 | + removed bulma, pure css only. 70 | 71 | v0.1.4: update packages because `cargo run` failed 72 | 73 | v0.1.3: Added authentication example with private cookies 74 | 75 | v0.1.2: Added Bulma CSS styling -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Svelte-on-Rust 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "moduleResolution": "Node", 4 | "target": "ESNext", 5 | "module": "ESNext", 6 | /** 7 | * svelte-preprocess cannot figure out whether you have 8 | * a value or a type, so tell TypeScript to enforce using 9 | * `import type` instead of `import` for Types. 10 | */ 11 | "importsNotUsedAsValues": "error", 12 | "isolatedModules": true, 13 | "resolveJsonModule": true, 14 | /** 15 | * To have warnings / errors of the Svelte compiler at the 16 | * correct position, enable source maps by default. 17 | */ 18 | "sourceMap": true, 19 | "esModuleInterop": true, 20 | "skipLibCheck": true, 21 | "forceConsistentCasingInFileNames": true, 22 | /** 23 | * Typecheck JS in `.svelte` and `.js` files by default. 24 | * Disable this if you'd like to use dynamic types. 25 | */ 26 | "checkJs": true 27 | }, 28 | /** 29 | * Use global.d.ts instead of compilerOptions.types 30 | * to avoid limiting type declarations. 31 | */ 32 | "include": ["src/**/*.d.ts", "src/**/*.js", "src/**/*.svelte"] 33 | } 34 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svelte-on-rust", 3 | "version": "0.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "svelte-on-rust", 9 | "version": "0.0.0", 10 | "dependencies": { 11 | "yrv": "^0.0.57" 12 | }, 13 | "devDependencies": { 14 | "@sveltejs/vite-plugin-svelte": "^2.0.3", 15 | "svelte": "^3.55.1", 16 | "vite": "^4.2.0" 17 | } 18 | }, 19 | "node_modules/@esbuild/android-arm": { 20 | "version": "0.17.15", 21 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.15.tgz", 22 | "integrity": "sha512-sRSOVlLawAktpMvDyJIkdLI/c/kdRTOqo8t6ImVxg8yT7LQDUYV5Rp2FKeEosLr6ZCja9UjYAzyRSxGteSJPYg==", 23 | "cpu": [ 24 | "arm" 25 | ], 26 | "dev": true, 27 | "optional": true, 28 | "os": [ 29 | "android" 30 | ], 31 | "engines": { 32 | "node": ">=12" 33 | } 34 | }, 35 | "node_modules/@esbuild/android-arm64": { 36 | "version": "0.17.15", 37 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.15.tgz", 38 | "integrity": "sha512-0kOB6Y7Br3KDVgHeg8PRcvfLkq+AccreK///B4Z6fNZGr/tNHX0z2VywCc7PTeWp+bPvjA5WMvNXltHw5QjAIA==", 39 | "cpu": [ 40 | "arm64" 41 | ], 42 | "dev": true, 43 | "optional": true, 44 | "os": [ 45 | "android" 46 | ], 47 | "engines": { 48 | "node": ">=12" 49 | } 50 | }, 51 | "node_modules/@esbuild/android-x64": { 52 | "version": "0.17.15", 53 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.15.tgz", 54 | "integrity": "sha512-MzDqnNajQZ63YkaUWVl9uuhcWyEyh69HGpMIrf+acR4otMkfLJ4sUCxqwbCyPGicE9dVlrysI3lMcDBjGiBBcQ==", 55 | "cpu": [ 56 | "x64" 57 | ], 58 | "dev": true, 59 | "optional": true, 60 | "os": [ 61 | "android" 62 | ], 63 | "engines": { 64 | "node": ">=12" 65 | } 66 | }, 67 | "node_modules/@esbuild/darwin-arm64": { 68 | "version": "0.17.15", 69 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.15.tgz", 70 | "integrity": "sha512-7siLjBc88Z4+6qkMDxPT2juf2e8SJxmsbNVKFY2ifWCDT72v5YJz9arlvBw5oB4W/e61H1+HDB/jnu8nNg0rLA==", 71 | "cpu": [ 72 | "arm64" 73 | ], 74 | "dev": true, 75 | "optional": true, 76 | "os": [ 77 | "darwin" 78 | ], 79 | "engines": { 80 | "node": ">=12" 81 | } 82 | }, 83 | "node_modules/@esbuild/darwin-x64": { 84 | "version": "0.17.15", 85 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.15.tgz", 86 | "integrity": "sha512-NbImBas2rXwYI52BOKTW342Tm3LTeVlaOQ4QPZ7XuWNKiO226DisFk/RyPk3T0CKZkKMuU69yOvlapJEmax7cg==", 87 | "cpu": [ 88 | "x64" 89 | ], 90 | "dev": true, 91 | "optional": true, 92 | "os": [ 93 | "darwin" 94 | ], 95 | "engines": { 96 | "node": ">=12" 97 | } 98 | }, 99 | "node_modules/@esbuild/freebsd-arm64": { 100 | "version": "0.17.15", 101 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.15.tgz", 102 | "integrity": "sha512-Xk9xMDjBVG6CfgoqlVczHAdJnCs0/oeFOspFap5NkYAmRCT2qTn1vJWA2f419iMtsHSLm+O8B6SLV/HlY5cYKg==", 103 | "cpu": [ 104 | "arm64" 105 | ], 106 | "dev": true, 107 | "optional": true, 108 | "os": [ 109 | "freebsd" 110 | ], 111 | "engines": { 112 | "node": ">=12" 113 | } 114 | }, 115 | "node_modules/@esbuild/freebsd-x64": { 116 | "version": "0.17.15", 117 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.15.tgz", 118 | "integrity": "sha512-3TWAnnEOdclvb2pnfsTWtdwthPfOz7qAfcwDLcfZyGJwm1SRZIMOeB5FODVhnM93mFSPsHB9b/PmxNNbSnd0RQ==", 119 | "cpu": [ 120 | "x64" 121 | ], 122 | "dev": true, 123 | "optional": true, 124 | "os": [ 125 | "freebsd" 126 | ], 127 | "engines": { 128 | "node": ">=12" 129 | } 130 | }, 131 | "node_modules/@esbuild/linux-arm": { 132 | "version": "0.17.15", 133 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.15.tgz", 134 | "integrity": "sha512-MLTgiXWEMAMr8nmS9Gigx43zPRmEfeBfGCwxFQEMgJ5MC53QKajaclW6XDPjwJvhbebv+RzK05TQjvH3/aM4Xw==", 135 | "cpu": [ 136 | "arm" 137 | ], 138 | "dev": true, 139 | "optional": true, 140 | "os": [ 141 | "linux" 142 | ], 143 | "engines": { 144 | "node": ">=12" 145 | } 146 | }, 147 | "node_modules/@esbuild/linux-arm64": { 148 | "version": "0.17.15", 149 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.15.tgz", 150 | "integrity": "sha512-T0MVnYw9KT6b83/SqyznTs/3Jg2ODWrZfNccg11XjDehIved2oQfrX/wVuev9N936BpMRaTR9I1J0tdGgUgpJA==", 151 | "cpu": [ 152 | "arm64" 153 | ], 154 | "dev": true, 155 | "optional": true, 156 | "os": [ 157 | "linux" 158 | ], 159 | "engines": { 160 | "node": ">=12" 161 | } 162 | }, 163 | "node_modules/@esbuild/linux-ia32": { 164 | "version": "0.17.15", 165 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.15.tgz", 166 | "integrity": "sha512-wp02sHs015T23zsQtU4Cj57WiteiuASHlD7rXjKUyAGYzlOKDAjqK6bk5dMi2QEl/KVOcsjwL36kD+WW7vJt8Q==", 167 | "cpu": [ 168 | "ia32" 169 | ], 170 | "dev": true, 171 | "optional": true, 172 | "os": [ 173 | "linux" 174 | ], 175 | "engines": { 176 | "node": ">=12" 177 | } 178 | }, 179 | "node_modules/@esbuild/linux-loong64": { 180 | "version": "0.17.15", 181 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.15.tgz", 182 | "integrity": "sha512-k7FsUJjGGSxwnBmMh8d7IbObWu+sF/qbwc+xKZkBe/lTAF16RqxRCnNHA7QTd3oS2AfGBAnHlXL67shV5bBThQ==", 183 | "cpu": [ 184 | "loong64" 185 | ], 186 | "dev": true, 187 | "optional": true, 188 | "os": [ 189 | "linux" 190 | ], 191 | "engines": { 192 | "node": ">=12" 193 | } 194 | }, 195 | "node_modules/@esbuild/linux-mips64el": { 196 | "version": "0.17.15", 197 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.15.tgz", 198 | "integrity": "sha512-ZLWk6czDdog+Q9kE/Jfbilu24vEe/iW/Sj2d8EVsmiixQ1rM2RKH2n36qfxK4e8tVcaXkvuV3mU5zTZviE+NVQ==", 199 | "cpu": [ 200 | "mips64el" 201 | ], 202 | "dev": true, 203 | "optional": true, 204 | "os": [ 205 | "linux" 206 | ], 207 | "engines": { 208 | "node": ">=12" 209 | } 210 | }, 211 | "node_modules/@esbuild/linux-ppc64": { 212 | "version": "0.17.15", 213 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.15.tgz", 214 | "integrity": "sha512-mY6dPkIRAiFHRsGfOYZC8Q9rmr8vOBZBme0/j15zFUKM99d4ILY4WpOC7i/LqoY+RE7KaMaSfvY8CqjJtuO4xg==", 215 | "cpu": [ 216 | "ppc64" 217 | ], 218 | "dev": true, 219 | "optional": true, 220 | "os": [ 221 | "linux" 222 | ], 223 | "engines": { 224 | "node": ">=12" 225 | } 226 | }, 227 | "node_modules/@esbuild/linux-riscv64": { 228 | "version": "0.17.15", 229 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.15.tgz", 230 | "integrity": "sha512-EcyUtxffdDtWjjwIH8sKzpDRLcVtqANooMNASO59y+xmqqRYBBM7xVLQhqF7nksIbm2yHABptoioS9RAbVMWVA==", 231 | "cpu": [ 232 | "riscv64" 233 | ], 234 | "dev": true, 235 | "optional": true, 236 | "os": [ 237 | "linux" 238 | ], 239 | "engines": { 240 | "node": ">=12" 241 | } 242 | }, 243 | "node_modules/@esbuild/linux-s390x": { 244 | "version": "0.17.15", 245 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.15.tgz", 246 | "integrity": "sha512-BuS6Jx/ezxFuHxgsfvz7T4g4YlVrmCmg7UAwboeyNNg0OzNzKsIZXpr3Sb/ZREDXWgt48RO4UQRDBxJN3B9Rbg==", 247 | "cpu": [ 248 | "s390x" 249 | ], 250 | "dev": true, 251 | "optional": true, 252 | "os": [ 253 | "linux" 254 | ], 255 | "engines": { 256 | "node": ">=12" 257 | } 258 | }, 259 | "node_modules/@esbuild/linux-x64": { 260 | "version": "0.17.15", 261 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.15.tgz", 262 | "integrity": "sha512-JsdS0EgEViwuKsw5tiJQo9UdQdUJYuB+Mf6HxtJSPN35vez1hlrNb1KajvKWF5Sa35j17+rW1ECEO9iNrIXbNg==", 263 | "cpu": [ 264 | "x64" 265 | ], 266 | "dev": true, 267 | "optional": true, 268 | "os": [ 269 | "linux" 270 | ], 271 | "engines": { 272 | "node": ">=12" 273 | } 274 | }, 275 | "node_modules/@esbuild/netbsd-x64": { 276 | "version": "0.17.15", 277 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.15.tgz", 278 | "integrity": "sha512-R6fKjtUysYGym6uXf6qyNephVUQAGtf3n2RCsOST/neIwPqRWcnc3ogcielOd6pT+J0RDR1RGcy0ZY7d3uHVLA==", 279 | "cpu": [ 280 | "x64" 281 | ], 282 | "dev": true, 283 | "optional": true, 284 | "os": [ 285 | "netbsd" 286 | ], 287 | "engines": { 288 | "node": ">=12" 289 | } 290 | }, 291 | "node_modules/@esbuild/openbsd-x64": { 292 | "version": "0.17.15", 293 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.15.tgz", 294 | "integrity": "sha512-mVD4PGc26b8PI60QaPUltYKeSX0wxuy0AltC+WCTFwvKCq2+OgLP4+fFd+hZXzO2xW1HPKcytZBdjqL6FQFa7w==", 295 | "cpu": [ 296 | "x64" 297 | ], 298 | "dev": true, 299 | "optional": true, 300 | "os": [ 301 | "openbsd" 302 | ], 303 | "engines": { 304 | "node": ">=12" 305 | } 306 | }, 307 | "node_modules/@esbuild/sunos-x64": { 308 | "version": "0.17.15", 309 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.15.tgz", 310 | "integrity": "sha512-U6tYPovOkw3459t2CBwGcFYfFRjivcJJc1WC8Q3funIwX8x4fP+R6xL/QuTPNGOblbq/EUDxj9GU+dWKX0oWlQ==", 311 | "cpu": [ 312 | "x64" 313 | ], 314 | "dev": true, 315 | "optional": true, 316 | "os": [ 317 | "sunos" 318 | ], 319 | "engines": { 320 | "node": ">=12" 321 | } 322 | }, 323 | "node_modules/@esbuild/win32-arm64": { 324 | "version": "0.17.15", 325 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.15.tgz", 326 | "integrity": "sha512-W+Z5F++wgKAleDABemiyXVnzXgvRFs+GVKThSI+mGgleLWluv0D7Diz4oQpgdpNzh4i2nNDzQtWbjJiqutRp6Q==", 327 | "cpu": [ 328 | "arm64" 329 | ], 330 | "dev": true, 331 | "optional": true, 332 | "os": [ 333 | "win32" 334 | ], 335 | "engines": { 336 | "node": ">=12" 337 | } 338 | }, 339 | "node_modules/@esbuild/win32-ia32": { 340 | "version": "0.17.15", 341 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.15.tgz", 342 | "integrity": "sha512-Muz/+uGgheShKGqSVS1KsHtCyEzcdOn/W/Xbh6H91Etm+wiIfwZaBn1W58MeGtfI8WA961YMHFYTthBdQs4t+w==", 343 | "cpu": [ 344 | "ia32" 345 | ], 346 | "dev": true, 347 | "optional": true, 348 | "os": [ 349 | "win32" 350 | ], 351 | "engines": { 352 | "node": ">=12" 353 | } 354 | }, 355 | "node_modules/@esbuild/win32-x64": { 356 | "version": "0.17.15", 357 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.15.tgz", 358 | "integrity": "sha512-DjDa9ywLUUmjhV2Y9wUTIF+1XsmuFGvZoCmOWkli1XcNAh5t25cc7fgsCx4Zi/Uurep3TTLyDiKATgGEg61pkA==", 359 | "cpu": [ 360 | "x64" 361 | ], 362 | "dev": true, 363 | "optional": true, 364 | "os": [ 365 | "win32" 366 | ], 367 | "engines": { 368 | "node": ">=12" 369 | } 370 | }, 371 | "node_modules/@jridgewell/sourcemap-codec": { 372 | "version": "1.4.15", 373 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", 374 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", 375 | "dev": true 376 | }, 377 | "node_modules/@sveltejs/vite-plugin-svelte": { 378 | "version": "2.0.4", 379 | "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.0.4.tgz", 380 | "integrity": "sha512-pjqhW00KwK2uzDGEr+yJBwut+D+4XfJO/+bHHdHzPRXn9+1Jeq5JcFHyrUiYaXgHtyhX0RsllCTm4ssAx4ZY7Q==", 381 | "dev": true, 382 | "dependencies": { 383 | "debug": "^4.3.4", 384 | "deepmerge": "^4.3.1", 385 | "kleur": "^4.1.5", 386 | "magic-string": "^0.30.0", 387 | "svelte-hmr": "^0.15.1", 388 | "vitefu": "^0.2.4" 389 | }, 390 | "engines": { 391 | "node": "^14.18.0 || >= 16" 392 | }, 393 | "peerDependencies": { 394 | "svelte": "^3.54.0", 395 | "vite": "^4.0.0" 396 | } 397 | }, 398 | "node_modules/debug": { 399 | "version": "4.3.4", 400 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 401 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 402 | "dev": true, 403 | "dependencies": { 404 | "ms": "2.1.2" 405 | }, 406 | "engines": { 407 | "node": ">=6.0" 408 | }, 409 | "peerDependenciesMeta": { 410 | "supports-color": { 411 | "optional": true 412 | } 413 | } 414 | }, 415 | "node_modules/deepmerge": { 416 | "version": "4.3.1", 417 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", 418 | "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", 419 | "dev": true, 420 | "engines": { 421 | "node": ">=0.10.0" 422 | } 423 | }, 424 | "node_modules/esbuild": { 425 | "version": "0.17.15", 426 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.15.tgz", 427 | "integrity": "sha512-LBUV2VsUIc/iD9ME75qhT4aJj0r75abCVS0jakhFzOtR7TQsqQA5w0tZ+KTKnwl3kXE0MhskNdHDh/I5aCR1Zw==", 428 | "dev": true, 429 | "hasInstallScript": true, 430 | "bin": { 431 | "esbuild": "bin/esbuild" 432 | }, 433 | "engines": { 434 | "node": ">=12" 435 | }, 436 | "optionalDependencies": { 437 | "@esbuild/android-arm": "0.17.15", 438 | "@esbuild/android-arm64": "0.17.15", 439 | "@esbuild/android-x64": "0.17.15", 440 | "@esbuild/darwin-arm64": "0.17.15", 441 | "@esbuild/darwin-x64": "0.17.15", 442 | "@esbuild/freebsd-arm64": "0.17.15", 443 | "@esbuild/freebsd-x64": "0.17.15", 444 | "@esbuild/linux-arm": "0.17.15", 445 | "@esbuild/linux-arm64": "0.17.15", 446 | "@esbuild/linux-ia32": "0.17.15", 447 | "@esbuild/linux-loong64": "0.17.15", 448 | "@esbuild/linux-mips64el": "0.17.15", 449 | "@esbuild/linux-ppc64": "0.17.15", 450 | "@esbuild/linux-riscv64": "0.17.15", 451 | "@esbuild/linux-s390x": "0.17.15", 452 | "@esbuild/linux-x64": "0.17.15", 453 | "@esbuild/netbsd-x64": "0.17.15", 454 | "@esbuild/openbsd-x64": "0.17.15", 455 | "@esbuild/sunos-x64": "0.17.15", 456 | "@esbuild/win32-arm64": "0.17.15", 457 | "@esbuild/win32-ia32": "0.17.15", 458 | "@esbuild/win32-x64": "0.17.15" 459 | } 460 | }, 461 | "node_modules/fsevents": { 462 | "version": "2.3.2", 463 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 464 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 465 | "dev": true, 466 | "hasInstallScript": true, 467 | "optional": true, 468 | "os": [ 469 | "darwin" 470 | ], 471 | "engines": { 472 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 473 | } 474 | }, 475 | "node_modules/function-bind": { 476 | "version": "1.1.1", 477 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 478 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 479 | "dev": true 480 | }, 481 | "node_modules/has": { 482 | "version": "1.0.3", 483 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 484 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 485 | "dev": true, 486 | "dependencies": { 487 | "function-bind": "^1.1.1" 488 | }, 489 | "engines": { 490 | "node": ">= 0.4.0" 491 | } 492 | }, 493 | "node_modules/is-core-module": { 494 | "version": "2.11.0", 495 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", 496 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", 497 | "dev": true, 498 | "dependencies": { 499 | "has": "^1.0.3" 500 | }, 501 | "funding": { 502 | "url": "https://github.com/sponsors/ljharb" 503 | } 504 | }, 505 | "node_modules/kleur": { 506 | "version": "4.1.5", 507 | "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", 508 | "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", 509 | "dev": true, 510 | "engines": { 511 | "node": ">=6" 512 | } 513 | }, 514 | "node_modules/magic-string": { 515 | "version": "0.30.0", 516 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", 517 | "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", 518 | "dev": true, 519 | "dependencies": { 520 | "@jridgewell/sourcemap-codec": "^1.4.13" 521 | }, 522 | "engines": { 523 | "node": ">=12" 524 | } 525 | }, 526 | "node_modules/ms": { 527 | "version": "2.1.2", 528 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 529 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 530 | "dev": true 531 | }, 532 | "node_modules/nanoid": { 533 | "version": "3.3.6", 534 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", 535 | "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", 536 | "dev": true, 537 | "funding": [ 538 | { 539 | "type": "github", 540 | "url": "https://github.com/sponsors/ai" 541 | } 542 | ], 543 | "bin": { 544 | "nanoid": "bin/nanoid.cjs" 545 | }, 546 | "engines": { 547 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 548 | } 549 | }, 550 | "node_modules/path-parse": { 551 | "version": "1.0.7", 552 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 553 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 554 | "dev": true 555 | }, 556 | "node_modules/picocolors": { 557 | "version": "1.0.0", 558 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 559 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 560 | "dev": true 561 | }, 562 | "node_modules/postcss": { 563 | "version": "8.4.21", 564 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", 565 | "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", 566 | "dev": true, 567 | "funding": [ 568 | { 569 | "type": "opencollective", 570 | "url": "https://opencollective.com/postcss/" 571 | }, 572 | { 573 | "type": "tidelift", 574 | "url": "https://tidelift.com/funding/github/npm/postcss" 575 | } 576 | ], 577 | "dependencies": { 578 | "nanoid": "^3.3.4", 579 | "picocolors": "^1.0.0", 580 | "source-map-js": "^1.0.2" 581 | }, 582 | "engines": { 583 | "node": "^10 || ^12 || >=14" 584 | } 585 | }, 586 | "node_modules/resolve": { 587 | "version": "1.22.2", 588 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", 589 | "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", 590 | "dev": true, 591 | "dependencies": { 592 | "is-core-module": "^2.11.0", 593 | "path-parse": "^1.0.7", 594 | "supports-preserve-symlinks-flag": "^1.0.0" 595 | }, 596 | "bin": { 597 | "resolve": "bin/resolve" 598 | }, 599 | "funding": { 600 | "url": "https://github.com/sponsors/ljharb" 601 | } 602 | }, 603 | "node_modules/rollup": { 604 | "version": "3.20.2", 605 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.20.2.tgz", 606 | "integrity": "sha512-3zwkBQl7Ai7MFYQE0y1MeQ15+9jsi7XxfrqwTb/9EK8D9C9+//EBR4M+CuA1KODRaNbFez/lWxA5vhEGZp4MUg==", 607 | "dev": true, 608 | "bin": { 609 | "rollup": "dist/bin/rollup" 610 | }, 611 | "engines": { 612 | "node": ">=14.18.0", 613 | "npm": ">=8.0.0" 614 | }, 615 | "optionalDependencies": { 616 | "fsevents": "~2.3.2" 617 | } 618 | }, 619 | "node_modules/source-map-js": { 620 | "version": "1.0.2", 621 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 622 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 623 | "dev": true, 624 | "engines": { 625 | "node": ">=0.10.0" 626 | } 627 | }, 628 | "node_modules/supports-preserve-symlinks-flag": { 629 | "version": "1.0.0", 630 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 631 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 632 | "dev": true, 633 | "engines": { 634 | "node": ">= 0.4" 635 | }, 636 | "funding": { 637 | "url": "https://github.com/sponsors/ljharb" 638 | } 639 | }, 640 | "node_modules/svelte": { 641 | "version": "3.58.0", 642 | "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.58.0.tgz", 643 | "integrity": "sha512-brIBNNB76mXFmU/Kerm4wFnkskBbluBDCjx/8TcpYRb298Yh2dztS2kQ6bhtjMcvUhd5ynClfwpz5h2gnzdQ1A==", 644 | "engines": { 645 | "node": ">= 8" 646 | } 647 | }, 648 | "node_modules/svelte-hmr": { 649 | "version": "0.15.1", 650 | "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz", 651 | "integrity": "sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==", 652 | "dev": true, 653 | "engines": { 654 | "node": "^12.20 || ^14.13.1 || >= 16" 655 | }, 656 | "peerDependencies": { 657 | "svelte": ">=3.19.0" 658 | } 659 | }, 660 | "node_modules/vite": { 661 | "version": "4.2.1", 662 | "resolved": "https://registry.npmjs.org/vite/-/vite-4.2.1.tgz", 663 | "integrity": "sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==", 664 | "dev": true, 665 | "dependencies": { 666 | "esbuild": "^0.17.5", 667 | "postcss": "^8.4.21", 668 | "resolve": "^1.22.1", 669 | "rollup": "^3.18.0" 670 | }, 671 | "bin": { 672 | "vite": "bin/vite.js" 673 | }, 674 | "engines": { 675 | "node": "^14.18.0 || >=16.0.0" 676 | }, 677 | "optionalDependencies": { 678 | "fsevents": "~2.3.2" 679 | }, 680 | "peerDependencies": { 681 | "@types/node": ">= 14", 682 | "less": "*", 683 | "sass": "*", 684 | "stylus": "*", 685 | "sugarss": "*", 686 | "terser": "^5.4.0" 687 | }, 688 | "peerDependenciesMeta": { 689 | "@types/node": { 690 | "optional": true 691 | }, 692 | "less": { 693 | "optional": true 694 | }, 695 | "sass": { 696 | "optional": true 697 | }, 698 | "stylus": { 699 | "optional": true 700 | }, 701 | "sugarss": { 702 | "optional": true 703 | }, 704 | "terser": { 705 | "optional": true 706 | } 707 | } 708 | }, 709 | "node_modules/vitefu": { 710 | "version": "0.2.4", 711 | "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.4.tgz", 712 | "integrity": "sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==", 713 | "dev": true, 714 | "peerDependencies": { 715 | "vite": "^3.0.0 || ^4.0.0" 716 | }, 717 | "peerDependenciesMeta": { 718 | "vite": { 719 | "optional": true 720 | } 721 | } 722 | }, 723 | "node_modules/yrv": { 724 | "version": "0.0.57", 725 | "resolved": "https://registry.npmjs.org/yrv/-/yrv-0.0.57.tgz", 726 | "integrity": "sha512-aKrepVSVULwrg/eWVt+cahlwWiqo6fuLv5g+Z29Dgt5d718r/6RhoJhgYOQCiTF0zTokbM4FRM/YswDwSqE3fg==", 727 | "peerDependencies": { 728 | "svelte": "3.x" 729 | } 730 | } 731 | }, 732 | "dependencies": { 733 | "@esbuild/android-arm": { 734 | "version": "0.17.15", 735 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.15.tgz", 736 | "integrity": "sha512-sRSOVlLawAktpMvDyJIkdLI/c/kdRTOqo8t6ImVxg8yT7LQDUYV5Rp2FKeEosLr6ZCja9UjYAzyRSxGteSJPYg==", 737 | "dev": true, 738 | "optional": true 739 | }, 740 | "@esbuild/android-arm64": { 741 | "version": "0.17.15", 742 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.15.tgz", 743 | "integrity": "sha512-0kOB6Y7Br3KDVgHeg8PRcvfLkq+AccreK///B4Z6fNZGr/tNHX0z2VywCc7PTeWp+bPvjA5WMvNXltHw5QjAIA==", 744 | "dev": true, 745 | "optional": true 746 | }, 747 | "@esbuild/android-x64": { 748 | "version": "0.17.15", 749 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.15.tgz", 750 | "integrity": "sha512-MzDqnNajQZ63YkaUWVl9uuhcWyEyh69HGpMIrf+acR4otMkfLJ4sUCxqwbCyPGicE9dVlrysI3lMcDBjGiBBcQ==", 751 | "dev": true, 752 | "optional": true 753 | }, 754 | "@esbuild/darwin-arm64": { 755 | "version": "0.17.15", 756 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.15.tgz", 757 | "integrity": "sha512-7siLjBc88Z4+6qkMDxPT2juf2e8SJxmsbNVKFY2ifWCDT72v5YJz9arlvBw5oB4W/e61H1+HDB/jnu8nNg0rLA==", 758 | "dev": true, 759 | "optional": true 760 | }, 761 | "@esbuild/darwin-x64": { 762 | "version": "0.17.15", 763 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.15.tgz", 764 | "integrity": "sha512-NbImBas2rXwYI52BOKTW342Tm3LTeVlaOQ4QPZ7XuWNKiO226DisFk/RyPk3T0CKZkKMuU69yOvlapJEmax7cg==", 765 | "dev": true, 766 | "optional": true 767 | }, 768 | "@esbuild/freebsd-arm64": { 769 | "version": "0.17.15", 770 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.15.tgz", 771 | "integrity": "sha512-Xk9xMDjBVG6CfgoqlVczHAdJnCs0/oeFOspFap5NkYAmRCT2qTn1vJWA2f419iMtsHSLm+O8B6SLV/HlY5cYKg==", 772 | "dev": true, 773 | "optional": true 774 | }, 775 | "@esbuild/freebsd-x64": { 776 | "version": "0.17.15", 777 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.15.tgz", 778 | "integrity": "sha512-3TWAnnEOdclvb2pnfsTWtdwthPfOz7qAfcwDLcfZyGJwm1SRZIMOeB5FODVhnM93mFSPsHB9b/PmxNNbSnd0RQ==", 779 | "dev": true, 780 | "optional": true 781 | }, 782 | "@esbuild/linux-arm": { 783 | "version": "0.17.15", 784 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.15.tgz", 785 | "integrity": "sha512-MLTgiXWEMAMr8nmS9Gigx43zPRmEfeBfGCwxFQEMgJ5MC53QKajaclW6XDPjwJvhbebv+RzK05TQjvH3/aM4Xw==", 786 | "dev": true, 787 | "optional": true 788 | }, 789 | "@esbuild/linux-arm64": { 790 | "version": "0.17.15", 791 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.15.tgz", 792 | "integrity": "sha512-T0MVnYw9KT6b83/SqyznTs/3Jg2ODWrZfNccg11XjDehIved2oQfrX/wVuev9N936BpMRaTR9I1J0tdGgUgpJA==", 793 | "dev": true, 794 | "optional": true 795 | }, 796 | "@esbuild/linux-ia32": { 797 | "version": "0.17.15", 798 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.15.tgz", 799 | "integrity": "sha512-wp02sHs015T23zsQtU4Cj57WiteiuASHlD7rXjKUyAGYzlOKDAjqK6bk5dMi2QEl/KVOcsjwL36kD+WW7vJt8Q==", 800 | "dev": true, 801 | "optional": true 802 | }, 803 | "@esbuild/linux-loong64": { 804 | "version": "0.17.15", 805 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.15.tgz", 806 | "integrity": "sha512-k7FsUJjGGSxwnBmMh8d7IbObWu+sF/qbwc+xKZkBe/lTAF16RqxRCnNHA7QTd3oS2AfGBAnHlXL67shV5bBThQ==", 807 | "dev": true, 808 | "optional": true 809 | }, 810 | "@esbuild/linux-mips64el": { 811 | "version": "0.17.15", 812 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.15.tgz", 813 | "integrity": "sha512-ZLWk6czDdog+Q9kE/Jfbilu24vEe/iW/Sj2d8EVsmiixQ1rM2RKH2n36qfxK4e8tVcaXkvuV3mU5zTZviE+NVQ==", 814 | "dev": true, 815 | "optional": true 816 | }, 817 | "@esbuild/linux-ppc64": { 818 | "version": "0.17.15", 819 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.15.tgz", 820 | "integrity": "sha512-mY6dPkIRAiFHRsGfOYZC8Q9rmr8vOBZBme0/j15zFUKM99d4ILY4WpOC7i/LqoY+RE7KaMaSfvY8CqjJtuO4xg==", 821 | "dev": true, 822 | "optional": true 823 | }, 824 | "@esbuild/linux-riscv64": { 825 | "version": "0.17.15", 826 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.15.tgz", 827 | "integrity": "sha512-EcyUtxffdDtWjjwIH8sKzpDRLcVtqANooMNASO59y+xmqqRYBBM7xVLQhqF7nksIbm2yHABptoioS9RAbVMWVA==", 828 | "dev": true, 829 | "optional": true 830 | }, 831 | "@esbuild/linux-s390x": { 832 | "version": "0.17.15", 833 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.15.tgz", 834 | "integrity": "sha512-BuS6Jx/ezxFuHxgsfvz7T4g4YlVrmCmg7UAwboeyNNg0OzNzKsIZXpr3Sb/ZREDXWgt48RO4UQRDBxJN3B9Rbg==", 835 | "dev": true, 836 | "optional": true 837 | }, 838 | "@esbuild/linux-x64": { 839 | "version": "0.17.15", 840 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.15.tgz", 841 | "integrity": "sha512-JsdS0EgEViwuKsw5tiJQo9UdQdUJYuB+Mf6HxtJSPN35vez1hlrNb1KajvKWF5Sa35j17+rW1ECEO9iNrIXbNg==", 842 | "dev": true, 843 | "optional": true 844 | }, 845 | "@esbuild/netbsd-x64": { 846 | "version": "0.17.15", 847 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.15.tgz", 848 | "integrity": "sha512-R6fKjtUysYGym6uXf6qyNephVUQAGtf3n2RCsOST/neIwPqRWcnc3ogcielOd6pT+J0RDR1RGcy0ZY7d3uHVLA==", 849 | "dev": true, 850 | "optional": true 851 | }, 852 | "@esbuild/openbsd-x64": { 853 | "version": "0.17.15", 854 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.15.tgz", 855 | "integrity": "sha512-mVD4PGc26b8PI60QaPUltYKeSX0wxuy0AltC+WCTFwvKCq2+OgLP4+fFd+hZXzO2xW1HPKcytZBdjqL6FQFa7w==", 856 | "dev": true, 857 | "optional": true 858 | }, 859 | "@esbuild/sunos-x64": { 860 | "version": "0.17.15", 861 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.15.tgz", 862 | "integrity": "sha512-U6tYPovOkw3459t2CBwGcFYfFRjivcJJc1WC8Q3funIwX8x4fP+R6xL/QuTPNGOblbq/EUDxj9GU+dWKX0oWlQ==", 863 | "dev": true, 864 | "optional": true 865 | }, 866 | "@esbuild/win32-arm64": { 867 | "version": "0.17.15", 868 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.15.tgz", 869 | "integrity": "sha512-W+Z5F++wgKAleDABemiyXVnzXgvRFs+GVKThSI+mGgleLWluv0D7Diz4oQpgdpNzh4i2nNDzQtWbjJiqutRp6Q==", 870 | "dev": true, 871 | "optional": true 872 | }, 873 | "@esbuild/win32-ia32": { 874 | "version": "0.17.15", 875 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.15.tgz", 876 | "integrity": "sha512-Muz/+uGgheShKGqSVS1KsHtCyEzcdOn/W/Xbh6H91Etm+wiIfwZaBn1W58MeGtfI8WA961YMHFYTthBdQs4t+w==", 877 | "dev": true, 878 | "optional": true 879 | }, 880 | "@esbuild/win32-x64": { 881 | "version": "0.17.15", 882 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.15.tgz", 883 | "integrity": "sha512-DjDa9ywLUUmjhV2Y9wUTIF+1XsmuFGvZoCmOWkli1XcNAh5t25cc7fgsCx4Zi/Uurep3TTLyDiKATgGEg61pkA==", 884 | "dev": true, 885 | "optional": true 886 | }, 887 | "@jridgewell/sourcemap-codec": { 888 | "version": "1.4.15", 889 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", 890 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", 891 | "dev": true 892 | }, 893 | "@sveltejs/vite-plugin-svelte": { 894 | "version": "2.0.4", 895 | "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.0.4.tgz", 896 | "integrity": "sha512-pjqhW00KwK2uzDGEr+yJBwut+D+4XfJO/+bHHdHzPRXn9+1Jeq5JcFHyrUiYaXgHtyhX0RsllCTm4ssAx4ZY7Q==", 897 | "dev": true, 898 | "requires": { 899 | "debug": "^4.3.4", 900 | "deepmerge": "^4.3.1", 901 | "kleur": "^4.1.5", 902 | "magic-string": "^0.30.0", 903 | "svelte-hmr": "^0.15.1", 904 | "vitefu": "^0.2.4" 905 | } 906 | }, 907 | "debug": { 908 | "version": "4.3.4", 909 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 910 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 911 | "dev": true, 912 | "requires": { 913 | "ms": "2.1.2" 914 | } 915 | }, 916 | "deepmerge": { 917 | "version": "4.3.1", 918 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", 919 | "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", 920 | "dev": true 921 | }, 922 | "esbuild": { 923 | "version": "0.17.15", 924 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.15.tgz", 925 | "integrity": "sha512-LBUV2VsUIc/iD9ME75qhT4aJj0r75abCVS0jakhFzOtR7TQsqQA5w0tZ+KTKnwl3kXE0MhskNdHDh/I5aCR1Zw==", 926 | "dev": true, 927 | "requires": { 928 | "@esbuild/android-arm": "0.17.15", 929 | "@esbuild/android-arm64": "0.17.15", 930 | "@esbuild/android-x64": "0.17.15", 931 | "@esbuild/darwin-arm64": "0.17.15", 932 | "@esbuild/darwin-x64": "0.17.15", 933 | "@esbuild/freebsd-arm64": "0.17.15", 934 | "@esbuild/freebsd-x64": "0.17.15", 935 | "@esbuild/linux-arm": "0.17.15", 936 | "@esbuild/linux-arm64": "0.17.15", 937 | "@esbuild/linux-ia32": "0.17.15", 938 | "@esbuild/linux-loong64": "0.17.15", 939 | "@esbuild/linux-mips64el": "0.17.15", 940 | "@esbuild/linux-ppc64": "0.17.15", 941 | "@esbuild/linux-riscv64": "0.17.15", 942 | "@esbuild/linux-s390x": "0.17.15", 943 | "@esbuild/linux-x64": "0.17.15", 944 | "@esbuild/netbsd-x64": "0.17.15", 945 | "@esbuild/openbsd-x64": "0.17.15", 946 | "@esbuild/sunos-x64": "0.17.15", 947 | "@esbuild/win32-arm64": "0.17.15", 948 | "@esbuild/win32-ia32": "0.17.15", 949 | "@esbuild/win32-x64": "0.17.15" 950 | } 951 | }, 952 | "fsevents": { 953 | "version": "2.3.2", 954 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 955 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 956 | "dev": true, 957 | "optional": true 958 | }, 959 | "function-bind": { 960 | "version": "1.1.1", 961 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 962 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 963 | "dev": true 964 | }, 965 | "has": { 966 | "version": "1.0.3", 967 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 968 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 969 | "dev": true, 970 | "requires": { 971 | "function-bind": "^1.1.1" 972 | } 973 | }, 974 | "is-core-module": { 975 | "version": "2.11.0", 976 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", 977 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", 978 | "dev": true, 979 | "requires": { 980 | "has": "^1.0.3" 981 | } 982 | }, 983 | "kleur": { 984 | "version": "4.1.5", 985 | "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", 986 | "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", 987 | "dev": true 988 | }, 989 | "magic-string": { 990 | "version": "0.30.0", 991 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", 992 | "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", 993 | "dev": true, 994 | "requires": { 995 | "@jridgewell/sourcemap-codec": "^1.4.13" 996 | } 997 | }, 998 | "ms": { 999 | "version": "2.1.2", 1000 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1001 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1002 | "dev": true 1003 | }, 1004 | "nanoid": { 1005 | "version": "3.3.6", 1006 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", 1007 | "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", 1008 | "dev": true 1009 | }, 1010 | "path-parse": { 1011 | "version": "1.0.7", 1012 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1013 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1014 | "dev": true 1015 | }, 1016 | "picocolors": { 1017 | "version": "1.0.0", 1018 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 1019 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 1020 | "dev": true 1021 | }, 1022 | "postcss": { 1023 | "version": "8.4.21", 1024 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", 1025 | "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", 1026 | "dev": true, 1027 | "requires": { 1028 | "nanoid": "^3.3.4", 1029 | "picocolors": "^1.0.0", 1030 | "source-map-js": "^1.0.2" 1031 | } 1032 | }, 1033 | "resolve": { 1034 | "version": "1.22.2", 1035 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", 1036 | "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", 1037 | "dev": true, 1038 | "requires": { 1039 | "is-core-module": "^2.11.0", 1040 | "path-parse": "^1.0.7", 1041 | "supports-preserve-symlinks-flag": "^1.0.0" 1042 | } 1043 | }, 1044 | "rollup": { 1045 | "version": "3.20.2", 1046 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.20.2.tgz", 1047 | "integrity": "sha512-3zwkBQl7Ai7MFYQE0y1MeQ15+9jsi7XxfrqwTb/9EK8D9C9+//EBR4M+CuA1KODRaNbFez/lWxA5vhEGZp4MUg==", 1048 | "dev": true, 1049 | "requires": { 1050 | "fsevents": "~2.3.2" 1051 | } 1052 | }, 1053 | "source-map-js": { 1054 | "version": "1.0.2", 1055 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 1056 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 1057 | "dev": true 1058 | }, 1059 | "supports-preserve-symlinks-flag": { 1060 | "version": "1.0.0", 1061 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 1062 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 1063 | "dev": true 1064 | }, 1065 | "svelte": { 1066 | "version": "3.58.0", 1067 | "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.58.0.tgz", 1068 | "integrity": "sha512-brIBNNB76mXFmU/Kerm4wFnkskBbluBDCjx/8TcpYRb298Yh2dztS2kQ6bhtjMcvUhd5ynClfwpz5h2gnzdQ1A==" 1069 | }, 1070 | "svelte-hmr": { 1071 | "version": "0.15.1", 1072 | "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz", 1073 | "integrity": "sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==", 1074 | "dev": true, 1075 | "requires": {} 1076 | }, 1077 | "vite": { 1078 | "version": "4.2.1", 1079 | "resolved": "https://registry.npmjs.org/vite/-/vite-4.2.1.tgz", 1080 | "integrity": "sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==", 1081 | "dev": true, 1082 | "requires": { 1083 | "esbuild": "^0.17.5", 1084 | "fsevents": "~2.3.2", 1085 | "postcss": "^8.4.21", 1086 | "resolve": "^1.22.1", 1087 | "rollup": "^3.18.0" 1088 | } 1089 | }, 1090 | "vitefu": { 1091 | "version": "0.2.4", 1092 | "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.4.tgz", 1093 | "integrity": "sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==", 1094 | "dev": true, 1095 | "requires": {} 1096 | }, 1097 | "yrv": { 1098 | "version": "0.0.57", 1099 | "resolved": "https://registry.npmjs.org/yrv/-/yrv-0.0.57.tgz", 1100 | "integrity": "sha512-aKrepVSVULwrg/eWVt+cahlwWiqo6fuLv5g+Z29Dgt5d718r/6RhoJhgYOQCiTF0zTokbM4FRM/YswDwSqE3fg==", 1101 | "requires": {} 1102 | } 1103 | } 1104 | } 1105 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svelte-on-rust", 3 | "private": false, 4 | "version": "0.2.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "vite build", 9 | "preview": "vite preview" 10 | }, 11 | "devDependencies": { 12 | "@sveltejs/vite-plugin-svelte": "^2.0.3", 13 | "svelte": "^3.55.1", 14 | "vite": "^4.2.0" 15 | }, 16 | "dependencies": { 17 | "yrv": "^0.0.57" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /public/vite.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/App.svelte: -------------------------------------------------------------------------------- 1 | 15 | 16 |
17 | 18 | {#if currentUser !== "_"} 19 |

Welcome {currentUser}

20 | {/if} 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 |
30 | -------------------------------------------------------------------------------- /src/app.css: -------------------------------------------------------------------------------- 1 | :root { 2 | font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; 3 | line-height: 1.5; 4 | font-weight: 400; 5 | 6 | color-scheme: light dark; 7 | color: rgba(255, 255, 255, 0.87); 8 | background-color: #242424; 9 | 10 | font-synthesis: none; 11 | text-rendering: optimizeLegibility; 12 | -webkit-font-smoothing: antialiased; 13 | -moz-osx-font-smoothing: grayscale; 14 | -webkit-text-size-adjust: 100%; 15 | } 16 | 17 | a { 18 | font-weight: 500; 19 | color: #646cff; 20 | text-decoration: inherit; 21 | } 22 | a:hover { 23 | color: #535bf2; 24 | } 25 | a:selected { 26 | text-decoration: underline; 27 | } 28 | 29 | body { 30 | margin: 0; 31 | display: flex; 32 | place-items: stretch; 33 | min-width: 320px; 34 | min-height: 100vh; 35 | } 36 | 37 | h1 { 38 | font-size: 3.2em; 39 | line-height: 1.1; 40 | } 41 | 42 | .card { 43 | padding: 2em; 44 | } 45 | 46 | #app { 47 | max-width: 1280px; 48 | margin: 0 auto; 49 | padding: 2rem; 50 | text-align: center; 51 | } 52 | 53 | button { 54 | border-radius: 8px; 55 | border: 1px solid transparent; 56 | padding: 0.6em 1.2em; 57 | font-size: 1em; 58 | font-weight: 500; 59 | font-family: inherit; 60 | background-color: #1a1a1a; 61 | cursor: pointer; 62 | transition: border-color 0.25s; 63 | } 64 | button:hover { 65 | border-color: #646cff; 66 | } 67 | button:focus, 68 | button:focus-visible { 69 | outline: 4px auto -webkit-focus-ring-color; 70 | } 71 | 72 | @media (prefers-color-scheme: light) { 73 | :root { 74 | color: #213547; 75 | background-color: #ffffff; 76 | } 77 | a:hover { 78 | color: #747bff; 79 | } 80 | button { 81 | background-color: #f9f9f9; 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /src/assets/svelte.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/lib/About.svelte: -------------------------------------------------------------------------------- 1 |

Svelte On Rust

2 | 3 |

4 | Common Routes: Served using client router with data loaded from rust backend.
5 | Server Routes: Rust backed route
6 | Secure Routes: Common routes secured with server based authentication
7 | This component was servered by YRV svelte routing...
8 |

-------------------------------------------------------------------------------- /src/lib/Common.svelte: -------------------------------------------------------------------------------- 1 | 17 | 18 |

Data fetched from server:

19 |
20 | {JSON.stringify(props,null, 2)}
21 | 
22 |

Data from client Router:

23 |
24 | {JSON.stringify($router,null,2)}
25 | 
26 | 27 | 32 | -------------------------------------------------------------------------------- /src/lib/Counter.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 11 | -------------------------------------------------------------------------------- /src/lib/Footer.svelte: -------------------------------------------------------------------------------- 1 | Built with: 2 | Rocket | 3 | Svelte | 4 | YRV | 5 | Vite 6 |
-------------------------------------------------------------------------------- /src/lib/Home.svelte: -------------------------------------------------------------------------------- 1 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 |

Svelte on Rust

28 |

A compiled frontend, deserves a compiled backend.

29 | 30 |
31 | 32 |
33 | 34 |

35 | {data} 36 |

37 | 38 | 52 | -------------------------------------------------------------------------------- /src/lib/Login.svelte: -------------------------------------------------------------------------------- 1 | 36 | {#if ($user == "_")} 37 |
38 | {#if errorMessage} 39 |
40 | {errorMessage} 41 |
42 | {/if} 43 |
44 | 45 |
46 | 47 |
48 |
49 |
50 | 51 |
52 | 53 | 54 | 55 | 56 |
57 |
58 |
Enter any username = password to login
59 |
60 |

61 | 64 |

65 |
66 |
67 | {:else} 68 |
69 | Logged in as: {$user}
70 |

Now you may access the secured Route from the Nav above

71 | 72 |
73 | {/if} 74 | -------------------------------------------------------------------------------- /src/lib/Nav.svelte: -------------------------------------------------------------------------------- 1 | 25 | 48 | 63 | 64 | -------------------------------------------------------------------------------- /src/lib/Secret.svelte: -------------------------------------------------------------------------------- 1 | 34 | {#if errorMessage !== ""} 35 |

{errorMessage}

36 | {:else} 37 |

Data fetched from server:

38 |
39 | {JSON.stringify(props,null, 2)}
40 | 
41 | {/if} 42 |

Data from client Router:

43 |
44 | {JSON.stringify($router,null,2)}
45 | 
46 | 47 | 55 | -------------------------------------------------------------------------------- /src/lib/store.js: -------------------------------------------------------------------------------- 1 | import {writable, readable} from 'svelte/store' 2 | 3 | export const APIserver = readable("http://127.0.0.1:8000/api") 4 | 5 | const localSessionID = localStorage.getItem("session_id"); 6 | export const sessionID = writable(localSessionID || "_"); 7 | sessionID.subscribe((value) => localStorage.setItem("session_id",value)); 8 | 9 | const localUserID = localStorage.getItem("user_id"); 10 | export const user = writable(localUserID || "_"); 11 | user.subscribe((value) => localStorage.setItem("user_id",value)); 12 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import './app.css' 2 | import App from './App.svelte' 3 | 4 | const app = new App({ 5 | target: document.getElementById('app'), 6 | }) 7 | 8 | export default app 9 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | use rocket::serde::json::{Value, json}; 2 | use rocket::serde::{Serialize,Deserialize, json::Json}; 3 | use rocket::{Response}; 4 | use rocket::fairing::{Fairing, Info, Kind}; 5 | use rocket::http::{Header,Status}; 6 | use rocket::request::{self, Outcome, Request, FromRequest}; 7 | use sha2::{Sha256,Digest}; 8 | use chrono::Utc; 9 | use std::convert::Infallible; 10 | 11 | #[macro_use] extern crate rocket; 12 | 13 | fn get_session_id(data: &String) -> String{ 14 | let time = Utc::now().to_rfc3339(); 15 | let mut hasher = Sha256::new(); 16 | hasher.update(data); 17 | hasher.update(time); 18 | let hash = format!("{:x}",hasher.finalize()); 19 | return hash; 20 | } 21 | 22 | #[get("/")] 23 | fn api() -> String { 24 | format!("Hello, from Rust Backend!") 25 | } 26 | 27 | #[get("/message", rank = 1)] 28 | fn json_message() -> Value{ 29 | json!({ "app": "svelte-on-rust", "version": "0.2.0", "status": "ok"}) 30 | } 31 | 32 | // User struct for login 33 | #[derive(Serialize, Deserialize)] 34 | struct User { 35 | username: String, 36 | password: String 37 | } 38 | 39 | 40 | #[post("/login", format = "json", data = "")] 41 | fn login_user(user: Json) -> Value{ 42 | // should be replaced with databased/auth service logic to generate tokens 43 | // issue access token from auth service 44 | let token = get_session_id(&user.username); 45 | if user.username == user.password { 46 | json!({ "result" : "success", 47 | "messge" : "login successfull", 48 | "token" : token 49 | }) 50 | }else { 51 | json!({ "result" : "error", 52 | "message": "Invalid Username/Password" 53 | }) 54 | } 55 | } 56 | 57 | #[get("/logout")] 58 | fn logout_user() -> Value{ 59 | // database logic to process logout should be added 60 | json!({ "result" : "success", 61 | "messge" : "logout successfull" 62 | }) 63 | } 64 | 65 | struct Token<'r>(&'r str); 66 | 67 | #[derive(Debug)] 68 | enum TokenError { 69 | Missing, 70 | Invalid, 71 | } 72 | 73 | #[rocket::async_trait] 74 | impl<'r> FromRequest<'r> for Token<'r> { 75 | type Error = TokenError; 76 | async fn from_request(req: &'r Request<'_>) -> Outcome { 77 | //replace with server side validation of the session id /auth token to respond 78 | let t = req.headers().get_one("x-token"); 79 | print!("Token recieved:{:?}",t); 80 | match t { 81 | None => Outcome::Failure((Status::Unauthorized, TokenError::Missing)), 82 | Some("_") => Outcome::Failure((Status::Unauthorized, TokenError::Missing)), 83 | Some(key) => Outcome::Success(Token(key)), 84 | Some(_) => Outcome::Failure((Status::BadRequest, TokenError::Invalid)), 85 | } 86 | } 87 | } 88 | 89 | //#[get("/sensitive")] 90 | //fn sensitive(key: ApiKey<'_>) -> &'static str { 91 | // "Sensitive data." 92 | //} 93 | 94 | #[get("/secret")] 95 | fn secret(token: Token<'_>) -> Value { 96 | //print!("session_id: {}",Token); 97 | json!({"token": token.0, "message":"This is a secret message from server, just for you!"}) 98 | } 99 | 100 | //catch all OPTIONS requests to trigger CORS 101 | #[options("/<_..>")] 102 | fn all_options() { 103 | } 104 | 105 | #[derive(Default, Clone)] 106 | struct CORS { 107 | } 108 | 109 | #[rocket::async_trait] 110 | impl Fairing for CORS { 111 | fn info(&self) -> Info { 112 | Info { 113 | name: "Cross-Origin-Resource-Sharing Fairing", 114 | kind: Kind::Response, 115 | } 116 | } 117 | 118 | async fn on_response<'r>(&self, _request: &'r Request<'_>, response: &mut Response<'r>) { 119 | response.set_header(Header::new("Access-Control-Allow-Origin", "*")); 120 | response.set_header(Header::new( 121 | "Access-Control-Allow-Methods", 122 | "POST, PATCH, PUT, DELETE, HEAD, OPTIONS, GET", 123 | )); 124 | response.set_header(Header::new("Access-Control-Allow-Headers", "*")); 125 | response.set_header(Header::new("Access-Control-Allow-Credentials", "true")); 126 | } 127 | } 128 | 129 | #[launch] 130 | fn rocket() -> _ { 131 | rocket::build() 132 | .mount("/api",routes![api,json_message]) 133 | .mount("/api/auth",routes![login_user,logout_user,all_options]) 134 | .mount("/api/secure",routes![secret,all_options]) 135 | .attach(CORS::default()) 136 | } -------------------------------------------------------------------------------- /src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | -------------------------------------------------------------------------------- /svelte.config.js: -------------------------------------------------------------------------------- 1 | import { vitePreprocess } from '@sveltejs/vite-plugin-svelte' 2 | 3 | export default { 4 | // Consult https://svelte.dev/docs#compile-time-svelte-preprocess 5 | // for more information about preprocessors 6 | preprocess: vitePreprocess(), 7 | } 8 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import { svelte } from '@sveltejs/vite-plugin-svelte' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [svelte()], 7 | }) 8 | --------------------------------------------------------------------------------