alamin655 commited on
Commit
08de9c7
β€’
2 Parent(s): 7f8404e 97067bf

Merge pull request #343 from neon-mmd/add-new-development-doc-page

Browse files
Files changed (4) hide show
  1. Cargo.lock +160 -154
  2. Cargo.toml +1 -1
  3. docs/README.md +1 -0
  4. docs/developing.md +629 -0
Cargo.lock CHANGED
@@ -14,7 +14,7 @@ dependencies = [
14
  "futures-sink",
15
  "memchr",
16
  "pin-project-lite",
17
- "tokio 1.32.0",
18
  "tokio-util",
19
  "tracing",
20
  ]
@@ -81,7 +81,7 @@ dependencies = [
81
  "actix-utils",
82
  "ahash",
83
  "base64 0.21.4",
84
- "bitflags 2.4.0",
85
  "brotli",
86
  "bytes 1.5.0",
87
  "bytestring",
@@ -102,7 +102,7 @@ dependencies = [
102
  "rand 0.8.5",
103
  "sha1",
104
  "smallvec 1.11.1",
105
- "tokio 1.32.0",
106
  "tokio-util",
107
  "tracing",
108
  "zstd",
@@ -115,7 +115,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
115
  checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb"
116
  dependencies = [
117
  "quote 1.0.33",
118
- "syn 2.0.37",
119
  ]
120
 
121
  [[package]]
@@ -138,7 +138,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
138
  checksum = "28f32d40287d3f402ae0028a9d54bef51af15c8769492826a69d28f81893151d"
139
  dependencies = [
140
  "futures-core",
141
- "tokio 1.32.0",
142
  ]
143
 
144
  [[package]]
@@ -153,8 +153,8 @@ dependencies = [
153
  "futures-core",
154
  "futures-util",
155
  "mio 0.8.8",
156
- "socket2 0.5.4",
157
- "tokio 1.32.0",
158
  "tracing",
159
  ]
160
 
@@ -214,8 +214,8 @@ dependencies = [
214
  "serde_json",
215
  "serde_urlencoded 0.7.1",
216
  "smallvec 1.11.1",
217
- "socket2 0.5.4",
218
- "time 0.3.29",
219
  "url 2.4.1",
220
  ]
221
 
@@ -226,9 +226,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
226
  checksum = "eb1f50ebbb30eca122b188319a4398b3f7bb4a8cdf50ecfb73bfc6a3c3ce54f5"
227
  dependencies = [
228
  "actix-router",
229
- "proc-macro2 1.0.67",
230
  "quote 1.0.33",
231
- "syn 2.0.37",
232
  ]
233
 
234
  [[package]]
@@ -260,9 +260,9 @@ dependencies = [
260
 
261
  [[package]]
262
  name = "aho-corasick"
263
- version = "1.1.1"
264
  source = "registry+https://github.com/rust-lang/crates.io-index"
265
- checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab"
266
  dependencies = [
267
  "memchr",
268
  ]
@@ -320,13 +320,13 @@ checksum = "9338790e78aa95a416786ec8389546c4b6a1dfc3dc36071ed9518a9413a542eb"
320
 
321
  [[package]]
322
  name = "async-trait"
323
- version = "0.1.73"
324
  source = "registry+https://github.com/rust-lang/crates.io-index"
325
- checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0"
326
  dependencies = [
327
- "proc-macro2 1.0.67",
328
  "quote 1.0.33",
329
- "syn 2.0.37",
330
  ]
331
 
332
  [[package]]
@@ -397,9 +397,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
397
 
398
  [[package]]
399
  name = "bitflags"
400
- version = "2.4.0"
401
  source = "registry+https://github.com/rust-lang/crates.io-index"
402
- checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635"
403
 
404
  [[package]]
405
  name = "block-buffer"
@@ -433,9 +433,9 @@ dependencies = [
433
 
434
  [[package]]
435
  name = "bstr"
436
- version = "1.6.2"
437
  source = "registry+https://github.com/rust-lang/crates.io-index"
438
- checksum = "4c2f7349907b712260e64b0afe2f84692af14a454be26187d9df565c7f69266a"
439
  dependencies = [
440
  "memchr",
441
  "serde",
@@ -455,9 +455,9 @@ checksum = "ad152d03a2c813c80bb94fedbf3a3f02b28f793e39e7c214c8a0bcc196343de7"
455
 
456
  [[package]]
457
  name = "byteorder"
458
- version = "1.4.3"
459
  source = "registry+https://github.com/rust-lang/crates.io-index"
460
- checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
461
 
462
  [[package]]
463
  name = "bytes"
@@ -496,9 +496,9 @@ dependencies = [
496
 
497
  [[package]]
498
  name = "cargo-platform"
499
- version = "0.1.3"
500
  source = "registry+https://github.com/rust-lang/crates.io-index"
501
- checksum = "2cfa25e60aea747ec7e1124f238816749faa93759c6ff5b31f1ccdda137f4479"
502
  dependencies = [
503
  "serde",
504
  ]
@@ -511,7 +511,7 @@ checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa"
511
  dependencies = [
512
  "camino",
513
  "cargo-platform",
514
- "semver 1.0.19",
515
  "serde",
516
  "serde_json",
517
  ]
@@ -624,7 +624,7 @@ dependencies = [
624
  "futures-core",
625
  "memchr",
626
  "pin-project-lite",
627
- "tokio 1.32.0",
628
  "tokio-util",
629
  ]
630
 
@@ -651,7 +651,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
651
  checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb"
652
  dependencies = [
653
  "percent-encoding 2.3.0",
654
- "time 0.3.29",
655
  "version_check",
656
  ]
657
 
@@ -691,9 +691,9 @@ checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa"
691
 
692
  [[package]]
693
  name = "cpufeatures"
694
- version = "0.2.9"
695
  source = "registry+https://github.com/rust-lang/crates.io-index"
696
- checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1"
697
  dependencies = [
698
  "libc",
699
  ]
@@ -864,7 +864,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
864
  checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
865
  dependencies = [
866
  "quote 1.0.33",
867
- "syn 2.0.37",
868
  ]
869
 
870
  [[package]]
@@ -874,17 +874,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
874
  checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
875
  dependencies = [
876
  "cfg-if 1.0.0",
877
- "hashbrown 0.14.1",
878
- "lock_api 0.4.10",
879
  "once_cell",
880
- "parking_lot_core 0.9.8",
881
  ]
882
 
883
  [[package]]
884
  name = "deranged"
885
- version = "0.3.8"
886
  source = "registry+https://github.com/rust-lang/crates.io-index"
887
- checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946"
 
 
 
888
 
889
  [[package]]
890
  name = "derive_more"
@@ -893,7 +896,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
893
  checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321"
894
  dependencies = [
895
  "convert_case",
896
- "proc-macro2 1.0.67",
897
  "quote 1.0.33",
898
  "rustc_version 0.4.0",
899
  "syn 1.0.109",
@@ -992,25 +995,14 @@ dependencies = [
992
 
993
  [[package]]
994
  name = "errno"
995
- version = "0.3.4"
996
  source = "registry+https://github.com/rust-lang/crates.io-index"
997
- checksum = "add4f07d43996f76ef320709726a556a9d4f965d9410d8d0271132d2f8293480"
998
  dependencies = [
999
- "errno-dragonfly",
1000
  "libc",
1001
  "windows-sys",
1002
  ]
1003
 
1004
- [[package]]
1005
- name = "errno-dragonfly"
1006
- version = "0.1.2"
1007
- source = "registry+https://github.com/rust-lang/crates.io-index"
1008
- checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
1009
- dependencies = [
1010
- "cc",
1011
- "libc",
1012
- ]
1013
-
1014
  [[package]]
1015
  name = "error-chain"
1016
  version = "0.12.4"
@@ -1046,7 +1038,7 @@ version = "0.1.8"
1046
  source = "registry+https://github.com/rust-lang/crates.io-index"
1047
  checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4"
1048
  dependencies = [
1049
- "proc-macro2 1.0.67",
1050
  "quote 1.0.33",
1051
  "syn 1.0.109",
1052
  "synstructure",
@@ -1071,9 +1063,9 @@ checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
1071
 
1072
  [[package]]
1073
  name = "flate2"
1074
- version = "1.0.27"
1075
  source = "registry+https://github.com/rust-lang/crates.io-index"
1076
- checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010"
1077
  dependencies = [
1078
  "crc32fast",
1079
  "miniz_oxide",
@@ -1217,9 +1209,9 @@ version = "0.3.28"
1217
  source = "registry+https://github.com/rust-lang/crates.io-index"
1218
  checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
1219
  dependencies = [
1220
- "proc-macro2 1.0.67",
1221
  "quote 1.0.33",
1222
- "syn 2.0.37",
1223
  ]
1224
 
1225
  [[package]]
@@ -1359,7 +1351,7 @@ dependencies = [
1359
  "http 0.2.9",
1360
  "indexmap",
1361
  "slab",
1362
- "tokio 1.32.0",
1363
  "tokio-util",
1364
  "tracing",
1365
  ]
@@ -1393,9 +1385,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
1393
 
1394
  [[package]]
1395
  name = "hashbrown"
1396
- version = "0.14.1"
1397
  source = "registry+https://github.com/rust-lang/crates.io-index"
1398
- checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12"
1399
 
1400
  [[package]]
1401
  name = "hermit-abi"
@@ -1435,7 +1427,7 @@ dependencies = [
1435
  "log",
1436
  "mac",
1437
  "markup5ever 0.11.0",
1438
- "proc-macro2 1.0.67",
1439
  "quote 1.0.33",
1440
  "syn 1.0.109",
1441
  ]
@@ -1556,8 +1548,8 @@ dependencies = [
1556
  "httpdate",
1557
  "itoa 1.0.9",
1558
  "pin-project-lite",
1559
- "socket2 0.4.9",
1560
- "tokio 1.32.0",
1561
  "tower-service",
1562
  "tracing",
1563
  "want 0.3.1",
@@ -1573,7 +1565,7 @@ dependencies = [
1573
  "http 0.2.9",
1574
  "hyper 0.14.27",
1575
  "rustls",
1576
- "tokio 1.32.0",
1577
  "tokio-rustls",
1578
  ]
1579
 
@@ -1643,9 +1635,9 @@ dependencies = [
1643
 
1644
  [[package]]
1645
  name = "ipnet"
1646
- version = "2.8.0"
1647
  source = "registry+https://github.com/rust-lang/crates.io-index"
1648
- checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6"
1649
 
1650
  [[package]]
1651
  name = "is-terminal"
@@ -1681,9 +1673,9 @@ checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
1681
 
1682
  [[package]]
1683
  name = "jobserver"
1684
- version = "0.1.26"
1685
  source = "registry+https://github.com/rust-lang/crates.io-index"
1686
- checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2"
1687
  dependencies = [
1688
  "libc",
1689
  ]
@@ -1721,9 +1713,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
1721
 
1722
  [[package]]
1723
  name = "libc"
1724
- version = "0.2.148"
1725
  source = "registry+https://github.com/rust-lang/crates.io-index"
1726
- checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b"
1727
 
1728
  [[package]]
1729
  name = "libmimalloc-sys"
@@ -1737,9 +1729,9 @@ dependencies = [
1737
 
1738
  [[package]]
1739
  name = "linux-raw-sys"
1740
- version = "0.4.8"
1741
  source = "registry+https://github.com/rust-lang/crates.io-index"
1742
- checksum = "3852614a3bd9ca9804678ba6be5e3b8ce76dfc902cae004e3e0c44051b6e88db"
1743
 
1744
  [[package]]
1745
  name = "local-channel"
@@ -1769,9 +1761,9 @@ dependencies = [
1769
 
1770
  [[package]]
1771
  name = "lock_api"
1772
- version = "0.4.10"
1773
  source = "registry+https://github.com/rust-lang/crates.io-index"
1774
- checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16"
1775
  dependencies = [
1776
  "autocfg 1.1.0",
1777
  "scopeguard",
@@ -2073,9 +2065,9 @@ checksum = "38bf9645c8b145698bb0b18a4637dcacbc421ea49bef2317e4fd8065a387cf21"
2073
 
2074
  [[package]]
2075
  name = "num-traits"
2076
- version = "0.2.16"
2077
  source = "registry+https://github.com/rust-lang/crates.io-index"
2078
- checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2"
2079
  dependencies = [
2080
  "autocfg 1.1.0",
2081
  ]
@@ -2117,7 +2109,7 @@ version = "0.10.57"
2117
  source = "registry+https://github.com/rust-lang/crates.io-index"
2118
  checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c"
2119
  dependencies = [
2120
- "bitflags 2.4.0",
2121
  "cfg-if 1.0.0",
2122
  "foreign-types",
2123
  "libc",
@@ -2132,9 +2124,9 @@ version = "0.1.1"
2132
  source = "registry+https://github.com/rust-lang/crates.io-index"
2133
  checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
2134
  dependencies = [
2135
- "proc-macro2 1.0.67",
2136
  "quote 1.0.33",
2137
- "syn 2.0.37",
2138
  ]
2139
 
2140
  [[package]]
@@ -2172,8 +2164,8 @@ version = "0.12.1"
2172
  source = "registry+https://github.com/rust-lang/crates.io-index"
2173
  checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
2174
  dependencies = [
2175
- "lock_api 0.4.10",
2176
- "parking_lot_core 0.9.8",
2177
  ]
2178
 
2179
  [[package]]
@@ -2193,13 +2185,13 @@ dependencies = [
2193
 
2194
  [[package]]
2195
  name = "parking_lot_core"
2196
- version = "0.9.8"
2197
  source = "registry+https://github.com/rust-lang/crates.io-index"
2198
- checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447"
2199
  dependencies = [
2200
  "cfg-if 1.0.0",
2201
  "libc",
2202
- "redox_syscall 0.3.5",
2203
  "smallvec 1.11.1",
2204
  "windows-targets",
2205
  ]
@@ -2251,9 +2243,9 @@ checksum = "bc9fc1b9e7057baba189b5c626e2d6f40681ae5b6eb064dc7c7834101ec8123a"
2251
  dependencies = [
2252
  "pest",
2253
  "pest_meta",
2254
- "proc-macro2 1.0.67",
2255
  "quote 1.0.33",
2256
- "syn 2.0.37",
2257
  ]
2258
 
2259
  [[package]]
@@ -2353,9 +2345,9 @@ checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b"
2353
  dependencies = [
2354
  "phf_generator 0.11.2",
2355
  "phf_shared 0.11.2",
2356
- "proc-macro2 1.0.67",
2357
  "quote 1.0.33",
2358
- "syn 2.0.37",
2359
  ]
2360
 
2361
  [[package]]
@@ -2400,9 +2392,9 @@ version = "1.1.3"
2400
  source = "registry+https://github.com/rust-lang/crates.io-index"
2401
  checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
2402
  dependencies = [
2403
- "proc-macro2 1.0.67",
2404
  "quote 1.0.33",
2405
- "syn 2.0.37",
2406
  ]
2407
 
2408
  [[package]]
@@ -2451,6 +2443,12 @@ dependencies = [
2451
  "plotters-backend",
2452
  ]
2453
 
 
 
 
 
 
 
2454
  [[package]]
2455
  name = "ppv-lite86"
2456
  version = "0.2.17"
@@ -2474,9 +2472,9 @@ dependencies = [
2474
 
2475
  [[package]]
2476
  name = "proc-macro2"
2477
- version = "1.0.67"
2478
  source = "registry+https://github.com/rust-lang/crates.io-index"
2479
- checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328"
2480
  dependencies = [
2481
  "unicode-ident",
2482
  ]
@@ -2533,7 +2531,7 @@ version = "1.0.33"
2533
  source = "registry+https://github.com/rust-lang/crates.io-index"
2534
  checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
2535
  dependencies = [
2536
- "proc-macro2 1.0.67",
2537
  ]
2538
 
2539
  [[package]]
@@ -2727,8 +2725,8 @@ dependencies = [
2727
  "pin-project-lite",
2728
  "ryu",
2729
  "sha1_smol",
2730
- "socket2 0.4.9",
2731
- "tokio 1.32.0",
2732
  "tokio-retry",
2733
  "tokio-util",
2734
  "url 2.4.1",
@@ -2749,11 +2747,20 @@ dependencies = [
2749
  "bitflags 1.3.2",
2750
  ]
2751
 
 
 
 
 
 
 
 
 
 
2752
  [[package]]
2753
  name = "regex"
2754
- version = "1.9.6"
2755
  source = "registry+https://github.com/rust-lang/crates.io-index"
2756
- checksum = "ebee201405406dbf528b8b672104ae6d6d63e6d118cb10e4d51abbc7b58044ff"
2757
  dependencies = [
2758
  "aho-corasick",
2759
  "memchr",
@@ -2763,9 +2770,9 @@ dependencies = [
2763
 
2764
  [[package]]
2765
  name = "regex-automata"
2766
- version = "0.3.9"
2767
  source = "registry+https://github.com/rust-lang/crates.io-index"
2768
- checksum = "59b23e92ee4318893fa3fe3e6fb365258efbfe6ac6ab30f090cdcbb7aa37efa9"
2769
  dependencies = [
2770
  "aho-corasick",
2771
  "memchr",
@@ -2774,9 +2781,9 @@ dependencies = [
2774
 
2775
  [[package]]
2776
  name = "regex-syntax"
2777
- version = "0.7.5"
2778
  source = "registry+https://github.com/rust-lang/crates.io-index"
2779
- checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da"
2780
 
2781
  [[package]]
2782
  name = "reqwest"
@@ -2841,7 +2848,7 @@ dependencies = [
2841
  "serde_json",
2842
  "serde_urlencoded 0.7.1",
2843
  "system-configuration",
2844
- "tokio 1.32.0",
2845
  "tokio-rustls",
2846
  "tower-service",
2847
  "url 2.4.1",
@@ -2894,16 +2901,16 @@ version = "0.4.0"
2894
  source = "registry+https://github.com/rust-lang/crates.io-index"
2895
  checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
2896
  dependencies = [
2897
- "semver 1.0.19",
2898
  ]
2899
 
2900
  [[package]]
2901
  name = "rustix"
2902
- version = "0.38.19"
2903
  source = "registry+https://github.com/rust-lang/crates.io-index"
2904
- checksum = "745ecfa778e66b2b63c88a61cb36e0eea109e803b0b86bf9879fbc77c70e86ed"
2905
  dependencies = [
2906
- "bitflags 2.4.0",
2907
  "errno",
2908
  "libc",
2909
  "linux-raw-sys",
@@ -3049,7 +3056,7 @@ version = "0.25.0"
3049
  source = "registry+https://github.com/rust-lang/crates.io-index"
3050
  checksum = "4eb30575f3638fc8f6815f448d50cb1a2e255b0897985c8c59f4d37b72a07b06"
3051
  dependencies = [
3052
- "bitflags 2.4.0",
3053
  "cssparser",
3054
  "derive_more",
3055
  "fxhash",
@@ -3073,9 +3080,9 @@ dependencies = [
3073
 
3074
  [[package]]
3075
  name = "semver"
3076
- version = "1.0.19"
3077
  source = "registry+https://github.com/rust-lang/crates.io-index"
3078
- checksum = "ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0"
3079
  dependencies = [
3080
  "serde",
3081
  ]
@@ -3088,22 +3095,22 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
3088
 
3089
  [[package]]
3090
  name = "serde"
3091
- version = "1.0.188"
3092
  source = "registry+https://github.com/rust-lang/crates.io-index"
3093
- checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e"
3094
  dependencies = [
3095
  "serde_derive",
3096
  ]
3097
 
3098
  [[package]]
3099
  name = "serde_derive"
3100
- version = "1.0.188"
3101
  source = "registry+https://github.com/rust-lang/crates.io-index"
3102
- checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"
3103
  dependencies = [
3104
- "proc-macro2 1.0.67",
3105
  "quote 1.0.33",
3106
- "syn 2.0.37",
3107
  ]
3108
 
3109
  [[package]]
@@ -3243,9 +3250,9 @@ dependencies = [
3243
 
3244
  [[package]]
3245
  name = "socket2"
3246
- version = "0.4.9"
3247
  source = "registry+https://github.com/rust-lang/crates.io-index"
3248
- checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662"
3249
  dependencies = [
3250
  "libc",
3251
  "winapi 0.3.9",
@@ -3253,9 +3260,9 @@ dependencies = [
3253
 
3254
  [[package]]
3255
  name = "socket2"
3256
- version = "0.5.4"
3257
  source = "registry+https://github.com/rust-lang/crates.io-index"
3258
- checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e"
3259
  dependencies = [
3260
  "libc",
3261
  "windows-sys",
@@ -3319,7 +3326,7 @@ checksum = "f0f45ed1b65bf9a4bf2f7b7dc59212d1926e9eaf00fa998988e420fd124467c6"
3319
  dependencies = [
3320
  "phf_generator 0.7.24",
3321
  "phf_shared 0.7.24",
3322
- "proc-macro2 1.0.67",
3323
  "quote 1.0.33",
3324
  "string_cache_shared",
3325
  ]
@@ -3332,7 +3339,7 @@ checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988"
3332
  dependencies = [
3333
  "phf_generator 0.10.0",
3334
  "phf_shared 0.10.0",
3335
- "proc-macro2 1.0.67",
3336
  "quote 1.0.33",
3337
  ]
3338
 
@@ -3359,18 +3366,18 @@ version = "1.0.109"
3359
  source = "registry+https://github.com/rust-lang/crates.io-index"
3360
  checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
3361
  dependencies = [
3362
- "proc-macro2 1.0.67",
3363
  "quote 1.0.33",
3364
  "unicode-ident",
3365
  ]
3366
 
3367
  [[package]]
3368
  name = "syn"
3369
- version = "2.0.37"
3370
  source = "registry+https://github.com/rust-lang/crates.io-index"
3371
- checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8"
3372
  dependencies = [
3373
- "proc-macro2 1.0.67",
3374
  "quote 1.0.33",
3375
  "unicode-ident",
3376
  ]
@@ -3381,7 +3388,7 @@ version = "0.12.6"
3381
  source = "registry+https://github.com/rust-lang/crates.io-index"
3382
  checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
3383
  dependencies = [
3384
- "proc-macro2 1.0.67",
3385
  "quote 1.0.33",
3386
  "syn 1.0.109",
3387
  "unicode-xid 0.2.4",
@@ -3459,22 +3466,22 @@ dependencies = [
3459
 
3460
  [[package]]
3461
  name = "thiserror"
3462
- version = "1.0.49"
3463
  source = "registry+https://github.com/rust-lang/crates.io-index"
3464
- checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4"
3465
  dependencies = [
3466
  "thiserror-impl",
3467
  ]
3468
 
3469
  [[package]]
3470
  name = "thiserror-impl"
3471
- version = "1.0.49"
3472
  source = "registry+https://github.com/rust-lang/crates.io-index"
3473
- checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc"
3474
  dependencies = [
3475
- "proc-macro2 1.0.67",
3476
  "quote 1.0.33",
3477
- "syn 2.0.37",
3478
  ]
3479
 
3480
  [[package]]
@@ -3495,12 +3502,13 @@ dependencies = [
3495
 
3496
  [[package]]
3497
  name = "time"
3498
- version = "0.3.29"
3499
  source = "registry+https://github.com/rust-lang/crates.io-index"
3500
- checksum = "426f806f4089c493dcac0d24c29c01e2c38baf8e30f1b716ee37e83d200b18fe"
3501
  dependencies = [
3502
  "deranged",
3503
  "itoa 1.0.9",
 
3504
  "serde",
3505
  "time-core",
3506
  "time-macros",
@@ -3567,9 +3575,9 @@ dependencies = [
3567
 
3568
  [[package]]
3569
  name = "tokio"
3570
- version = "1.32.0"
3571
  source = "registry+https://github.com/rust-lang/crates.io-index"
3572
- checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9"
3573
  dependencies = [
3574
  "backtrace",
3575
  "bytes 1.5.0",
@@ -3579,7 +3587,7 @@ dependencies = [
3579
  "parking_lot 0.12.1",
3580
  "pin-project-lite",
3581
  "signal-hook-registry",
3582
- "socket2 0.5.4",
3583
  "tokio-macros",
3584
  "windows-sys",
3585
  ]
@@ -3632,9 +3640,9 @@ version = "2.1.0"
3632
  source = "registry+https://github.com/rust-lang/crates.io-index"
3633
  checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e"
3634
  dependencies = [
3635
- "proc-macro2 1.0.67",
3636
  "quote 1.0.33",
3637
- "syn 2.0.37",
3638
  ]
3639
 
3640
  [[package]]
@@ -3664,7 +3672,7 @@ checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f"
3664
  dependencies = [
3665
  "pin-project",
3666
  "rand 0.8.5",
3667
- "tokio 1.32.0",
3668
  ]
3669
 
3670
  [[package]]
@@ -3674,7 +3682,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
3674
  checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081"
3675
  dependencies = [
3676
  "rustls",
3677
- "tokio 1.32.0",
3678
  ]
3679
 
3680
  [[package]]
@@ -3740,7 +3748,7 @@ dependencies = [
3740
  "futures-core",
3741
  "futures-sink",
3742
  "pin-project-lite",
3743
- "tokio 1.32.0",
3744
  "tracing",
3745
  ]
3746
 
@@ -3761,11 +3769,10 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
3761
 
3762
  [[package]]
3763
  name = "tracing"
3764
- version = "0.1.37"
3765
  source = "registry+https://github.com/rust-lang/crates.io-index"
3766
- checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
3767
  dependencies = [
3768
- "cfg-if 1.0.0",
3769
  "log",
3770
  "pin-project-lite",
3771
  "tracing-core",
@@ -3773,9 +3780,9 @@ dependencies = [
3773
 
3774
  [[package]]
3775
  name = "tracing-core"
3776
- version = "0.1.31"
3777
  source = "registry+https://github.com/rust-lang/crates.io-index"
3778
- checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a"
3779
  dependencies = [
3780
  "once_cell",
3781
  ]
@@ -3977,9 +3984,9 @@ dependencies = [
3977
  "bumpalo",
3978
  "log",
3979
  "once_cell",
3980
- "proc-macro2 1.0.67",
3981
  "quote 1.0.33",
3982
- "syn 2.0.37",
3983
  "wasm-bindgen-shared",
3984
  ]
3985
 
@@ -4011,9 +4018,9 @@ version = "0.2.87"
4011
  source = "registry+https://github.com/rust-lang/crates.io-index"
4012
  checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
4013
  dependencies = [
4014
- "proc-macro2 1.0.67",
4015
  "quote 1.0.33",
4016
- "syn 2.0.37",
4017
  "wasm-bindgen-backend",
4018
  "wasm-bindgen-shared",
4019
  ]
@@ -4042,7 +4049,7 @@ checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc"
4042
 
4043
  [[package]]
4044
  name = "websurfx"
4045
- version = "1.2.3"
4046
  dependencies = [
4047
  "actix-cors",
4048
  "actix-files",
@@ -4072,7 +4079,7 @@ dependencies = [
4072
  "serde_json",
4073
  "smallvec 1.11.1",
4074
  "tempfile",
4075
- "tokio 1.32.0",
4076
  ]
4077
 
4078
  [[package]]
@@ -4246,11 +4253,10 @@ dependencies = [
4246
 
4247
  [[package]]
4248
  name = "zstd-sys"
4249
- version = "2.0.8+zstd.1.5.5"
4250
  source = "registry+https://github.com/rust-lang/crates.io-index"
4251
- checksum = "5556e6ee25d32df2586c098bbfa278803692a20d0ab9565e049480d52707ec8c"
4252
  dependencies = [
4253
  "cc",
4254
- "libc",
4255
  "pkg-config",
4256
  ]
 
14
  "futures-sink",
15
  "memchr",
16
  "pin-project-lite",
17
+ "tokio 1.33.0",
18
  "tokio-util",
19
  "tracing",
20
  ]
 
81
  "actix-utils",
82
  "ahash",
83
  "base64 0.21.4",
84
+ "bitflags 2.4.1",
85
  "brotli",
86
  "bytes 1.5.0",
87
  "bytestring",
 
102
  "rand 0.8.5",
103
  "sha1",
104
  "smallvec 1.11.1",
105
+ "tokio 1.33.0",
106
  "tokio-util",
107
  "tracing",
108
  "zstd",
 
115
  checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb"
116
  dependencies = [
117
  "quote 1.0.33",
118
+ "syn 2.0.38",
119
  ]
120
 
121
  [[package]]
 
138
  checksum = "28f32d40287d3f402ae0028a9d54bef51af15c8769492826a69d28f81893151d"
139
  dependencies = [
140
  "futures-core",
141
+ "tokio 1.33.0",
142
  ]
143
 
144
  [[package]]
 
153
  "futures-core",
154
  "futures-util",
155
  "mio 0.8.8",
156
+ "socket2 0.5.5",
157
+ "tokio 1.33.0",
158
  "tracing",
159
  ]
160
 
 
214
  "serde_json",
215
  "serde_urlencoded 0.7.1",
216
  "smallvec 1.11.1",
217
+ "socket2 0.5.5",
218
+ "time 0.3.30",
219
  "url 2.4.1",
220
  ]
221
 
 
226
  checksum = "eb1f50ebbb30eca122b188319a4398b3f7bb4a8cdf50ecfb73bfc6a3c3ce54f5"
227
  dependencies = [
228
  "actix-router",
229
+ "proc-macro2 1.0.69",
230
  "quote 1.0.33",
231
+ "syn 2.0.38",
232
  ]
233
 
234
  [[package]]
 
260
 
261
  [[package]]
262
  name = "aho-corasick"
263
+ version = "1.1.2"
264
  source = "registry+https://github.com/rust-lang/crates.io-index"
265
+ checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
266
  dependencies = [
267
  "memchr",
268
  ]
 
320
 
321
  [[package]]
322
  name = "async-trait"
323
+ version = "0.1.74"
324
  source = "registry+https://github.com/rust-lang/crates.io-index"
325
+ checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9"
326
  dependencies = [
327
+ "proc-macro2 1.0.69",
328
  "quote 1.0.33",
329
+ "syn 2.0.38",
330
  ]
331
 
332
  [[package]]
 
397
 
398
  [[package]]
399
  name = "bitflags"
400
+ version = "2.4.1"
401
  source = "registry+https://github.com/rust-lang/crates.io-index"
402
+ checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
403
 
404
  [[package]]
405
  name = "block-buffer"
 
433
 
434
  [[package]]
435
  name = "bstr"
436
+ version = "1.7.0"
437
  source = "registry+https://github.com/rust-lang/crates.io-index"
438
+ checksum = "c79ad7fb2dd38f3dabd76b09c6a5a20c038fc0213ef1e9afd30eb777f120f019"
439
  dependencies = [
440
  "memchr",
441
  "serde",
 
455
 
456
  [[package]]
457
  name = "byteorder"
458
+ version = "1.5.0"
459
  source = "registry+https://github.com/rust-lang/crates.io-index"
460
+ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
461
 
462
  [[package]]
463
  name = "bytes"
 
496
 
497
  [[package]]
498
  name = "cargo-platform"
499
+ version = "0.1.4"
500
  source = "registry+https://github.com/rust-lang/crates.io-index"
501
+ checksum = "12024c4645c97566567129c204f65d5815a8c9aecf30fcbe682b2fe034996d36"
502
  dependencies = [
503
  "serde",
504
  ]
 
511
  dependencies = [
512
  "camino",
513
  "cargo-platform",
514
+ "semver 1.0.20",
515
  "serde",
516
  "serde_json",
517
  ]
 
624
  "futures-core",
625
  "memchr",
626
  "pin-project-lite",
627
+ "tokio 1.33.0",
628
  "tokio-util",
629
  ]
630
 
 
651
  checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb"
652
  dependencies = [
653
  "percent-encoding 2.3.0",
654
+ "time 0.3.30",
655
  "version_check",
656
  ]
657
 
 
691
 
692
  [[package]]
693
  name = "cpufeatures"
694
+ version = "0.2.10"
695
  source = "registry+https://github.com/rust-lang/crates.io-index"
696
+ checksum = "3fbc60abd742b35f2492f808e1abbb83d45f72db402e14c55057edc9c7b1e9e4"
697
  dependencies = [
698
  "libc",
699
  ]
 
864
  checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
865
  dependencies = [
866
  "quote 1.0.33",
867
+ "syn 2.0.38",
868
  ]
869
 
870
  [[package]]
 
874
  checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
875
  dependencies = [
876
  "cfg-if 1.0.0",
877
+ "hashbrown 0.14.2",
878
+ "lock_api 0.4.11",
879
  "once_cell",
880
+ "parking_lot_core 0.9.9",
881
  ]
882
 
883
  [[package]]
884
  name = "deranged"
885
+ version = "0.3.9"
886
  source = "registry+https://github.com/rust-lang/crates.io-index"
887
+ checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3"
888
+ dependencies = [
889
+ "powerfmt",
890
+ ]
891
 
892
  [[package]]
893
  name = "derive_more"
 
896
  checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321"
897
  dependencies = [
898
  "convert_case",
899
+ "proc-macro2 1.0.69",
900
  "quote 1.0.33",
901
  "rustc_version 0.4.0",
902
  "syn 1.0.109",
 
995
 
996
  [[package]]
997
  name = "errno"
998
+ version = "0.3.5"
999
  source = "registry+https://github.com/rust-lang/crates.io-index"
1000
+ checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860"
1001
  dependencies = [
 
1002
  "libc",
1003
  "windows-sys",
1004
  ]
1005
 
 
 
 
 
 
 
 
 
 
 
1006
  [[package]]
1007
  name = "error-chain"
1008
  version = "0.12.4"
 
1038
  source = "registry+https://github.com/rust-lang/crates.io-index"
1039
  checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4"
1040
  dependencies = [
1041
+ "proc-macro2 1.0.69",
1042
  "quote 1.0.33",
1043
  "syn 1.0.109",
1044
  "synstructure",
 
1063
 
1064
  [[package]]
1065
  name = "flate2"
1066
+ version = "1.0.28"
1067
  source = "registry+https://github.com/rust-lang/crates.io-index"
1068
+ checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e"
1069
  dependencies = [
1070
  "crc32fast",
1071
  "miniz_oxide",
 
1209
  source = "registry+https://github.com/rust-lang/crates.io-index"
1210
  checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
1211
  dependencies = [
1212
+ "proc-macro2 1.0.69",
1213
  "quote 1.0.33",
1214
+ "syn 2.0.38",
1215
  ]
1216
 
1217
  [[package]]
 
1351
  "http 0.2.9",
1352
  "indexmap",
1353
  "slab",
1354
+ "tokio 1.33.0",
1355
  "tokio-util",
1356
  "tracing",
1357
  ]
 
1385
 
1386
  [[package]]
1387
  name = "hashbrown"
1388
+ version = "0.14.2"
1389
  source = "registry+https://github.com/rust-lang/crates.io-index"
1390
+ checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156"
1391
 
1392
  [[package]]
1393
  name = "hermit-abi"
 
1427
  "log",
1428
  "mac",
1429
  "markup5ever 0.11.0",
1430
+ "proc-macro2 1.0.69",
1431
  "quote 1.0.33",
1432
  "syn 1.0.109",
1433
  ]
 
1548
  "httpdate",
1549
  "itoa 1.0.9",
1550
  "pin-project-lite",
1551
+ "socket2 0.4.10",
1552
+ "tokio 1.33.0",
1553
  "tower-service",
1554
  "tracing",
1555
  "want 0.3.1",
 
1565
  "http 0.2.9",
1566
  "hyper 0.14.27",
1567
  "rustls",
1568
+ "tokio 1.33.0",
1569
  "tokio-rustls",
1570
  ]
1571
 
 
1635
 
1636
  [[package]]
1637
  name = "ipnet"
1638
+ version = "2.9.0"
1639
  source = "registry+https://github.com/rust-lang/crates.io-index"
1640
+ checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3"
1641
 
1642
  [[package]]
1643
  name = "is-terminal"
 
1673
 
1674
  [[package]]
1675
  name = "jobserver"
1676
+ version = "0.1.27"
1677
  source = "registry+https://github.com/rust-lang/crates.io-index"
1678
+ checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d"
1679
  dependencies = [
1680
  "libc",
1681
  ]
 
1713
 
1714
  [[package]]
1715
  name = "libc"
1716
+ version = "0.2.149"
1717
  source = "registry+https://github.com/rust-lang/crates.io-index"
1718
+ checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b"
1719
 
1720
  [[package]]
1721
  name = "libmimalloc-sys"
 
1729
 
1730
  [[package]]
1731
  name = "linux-raw-sys"
1732
+ version = "0.4.10"
1733
  source = "registry+https://github.com/rust-lang/crates.io-index"
1734
+ checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f"
1735
 
1736
  [[package]]
1737
  name = "local-channel"
 
1761
 
1762
  [[package]]
1763
  name = "lock_api"
1764
+ version = "0.4.11"
1765
  source = "registry+https://github.com/rust-lang/crates.io-index"
1766
+ checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
1767
  dependencies = [
1768
  "autocfg 1.1.0",
1769
  "scopeguard",
 
2065
 
2066
  [[package]]
2067
  name = "num-traits"
2068
+ version = "0.2.17"
2069
  source = "registry+https://github.com/rust-lang/crates.io-index"
2070
+ checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
2071
  dependencies = [
2072
  "autocfg 1.1.0",
2073
  ]
 
2109
  source = "registry+https://github.com/rust-lang/crates.io-index"
2110
  checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c"
2111
  dependencies = [
2112
+ "bitflags 2.4.1",
2113
  "cfg-if 1.0.0",
2114
  "foreign-types",
2115
  "libc",
 
2124
  source = "registry+https://github.com/rust-lang/crates.io-index"
2125
  checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
2126
  dependencies = [
2127
+ "proc-macro2 1.0.69",
2128
  "quote 1.0.33",
2129
+ "syn 2.0.38",
2130
  ]
2131
 
2132
  [[package]]
 
2164
  source = "registry+https://github.com/rust-lang/crates.io-index"
2165
  checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
2166
  dependencies = [
2167
+ "lock_api 0.4.11",
2168
+ "parking_lot_core 0.9.9",
2169
  ]
2170
 
2171
  [[package]]
 
2185
 
2186
  [[package]]
2187
  name = "parking_lot_core"
2188
+ version = "0.9.9"
2189
  source = "registry+https://github.com/rust-lang/crates.io-index"
2190
+ checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
2191
  dependencies = [
2192
  "cfg-if 1.0.0",
2193
  "libc",
2194
+ "redox_syscall 0.4.1",
2195
  "smallvec 1.11.1",
2196
  "windows-targets",
2197
  ]
 
2243
  dependencies = [
2244
  "pest",
2245
  "pest_meta",
2246
+ "proc-macro2 1.0.69",
2247
  "quote 1.0.33",
2248
+ "syn 2.0.38",
2249
  ]
2250
 
2251
  [[package]]
 
2345
  dependencies = [
2346
  "phf_generator 0.11.2",
2347
  "phf_shared 0.11.2",
2348
+ "proc-macro2 1.0.69",
2349
  "quote 1.0.33",
2350
+ "syn 2.0.38",
2351
  ]
2352
 
2353
  [[package]]
 
2392
  source = "registry+https://github.com/rust-lang/crates.io-index"
2393
  checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
2394
  dependencies = [
2395
+ "proc-macro2 1.0.69",
2396
  "quote 1.0.33",
2397
+ "syn 2.0.38",
2398
  ]
2399
 
2400
  [[package]]
 
2443
  "plotters-backend",
2444
  ]
2445
 
2446
+ [[package]]
2447
+ name = "powerfmt"
2448
+ version = "0.2.0"
2449
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2450
+ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
2451
+
2452
  [[package]]
2453
  name = "ppv-lite86"
2454
  version = "0.2.17"
 
2472
 
2473
  [[package]]
2474
  name = "proc-macro2"
2475
+ version = "1.0.69"
2476
  source = "registry+https://github.com/rust-lang/crates.io-index"
2477
+ checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da"
2478
  dependencies = [
2479
  "unicode-ident",
2480
  ]
 
2531
  source = "registry+https://github.com/rust-lang/crates.io-index"
2532
  checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
2533
  dependencies = [
2534
+ "proc-macro2 1.0.69",
2535
  ]
2536
 
2537
  [[package]]
 
2725
  "pin-project-lite",
2726
  "ryu",
2727
  "sha1_smol",
2728
+ "socket2 0.4.10",
2729
+ "tokio 1.33.0",
2730
  "tokio-retry",
2731
  "tokio-util",
2732
  "url 2.4.1",
 
2747
  "bitflags 1.3.2",
2748
  ]
2749
 
2750
+ [[package]]
2751
+ name = "redox_syscall"
2752
+ version = "0.4.1"
2753
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2754
+ checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
2755
+ dependencies = [
2756
+ "bitflags 1.3.2",
2757
+ ]
2758
+
2759
  [[package]]
2760
  name = "regex"
2761
+ version = "1.10.2"
2762
  source = "registry+https://github.com/rust-lang/crates.io-index"
2763
+ checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
2764
  dependencies = [
2765
  "aho-corasick",
2766
  "memchr",
 
2770
 
2771
  [[package]]
2772
  name = "regex-automata"
2773
+ version = "0.4.3"
2774
  source = "registry+https://github.com/rust-lang/crates.io-index"
2775
+ checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
2776
  dependencies = [
2777
  "aho-corasick",
2778
  "memchr",
 
2781
 
2782
  [[package]]
2783
  name = "regex-syntax"
2784
+ version = "0.8.2"
2785
  source = "registry+https://github.com/rust-lang/crates.io-index"
2786
+ checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
2787
 
2788
  [[package]]
2789
  name = "reqwest"
 
2848
  "serde_json",
2849
  "serde_urlencoded 0.7.1",
2850
  "system-configuration",
2851
+ "tokio 1.33.0",
2852
  "tokio-rustls",
2853
  "tower-service",
2854
  "url 2.4.1",
 
2901
  source = "registry+https://github.com/rust-lang/crates.io-index"
2902
  checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
2903
  dependencies = [
2904
+ "semver 1.0.20",
2905
  ]
2906
 
2907
  [[package]]
2908
  name = "rustix"
2909
+ version = "0.38.20"
2910
  source = "registry+https://github.com/rust-lang/crates.io-index"
2911
+ checksum = "67ce50cb2e16c2903e30d1cbccfd8387a74b9d4c938b6a4c5ec6cc7556f7a8a0"
2912
  dependencies = [
2913
+ "bitflags 2.4.1",
2914
  "errno",
2915
  "libc",
2916
  "linux-raw-sys",
 
3056
  source = "registry+https://github.com/rust-lang/crates.io-index"
3057
  checksum = "4eb30575f3638fc8f6815f448d50cb1a2e255b0897985c8c59f4d37b72a07b06"
3058
  dependencies = [
3059
+ "bitflags 2.4.1",
3060
  "cssparser",
3061
  "derive_more",
3062
  "fxhash",
 
3080
 
3081
  [[package]]
3082
  name = "semver"
3083
+ version = "1.0.20"
3084
  source = "registry+https://github.com/rust-lang/crates.io-index"
3085
+ checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090"
3086
  dependencies = [
3087
  "serde",
3088
  ]
 
3095
 
3096
  [[package]]
3097
  name = "serde"
3098
+ version = "1.0.189"
3099
  source = "registry+https://github.com/rust-lang/crates.io-index"
3100
+ checksum = "8e422a44e74ad4001bdc8eede9a4570ab52f71190e9c076d14369f38b9200537"
3101
  dependencies = [
3102
  "serde_derive",
3103
  ]
3104
 
3105
  [[package]]
3106
  name = "serde_derive"
3107
+ version = "1.0.189"
3108
  source = "registry+https://github.com/rust-lang/crates.io-index"
3109
+ checksum = "1e48d1f918009ce3145511378cf68d613e3b3d9137d67272562080d68a2b32d5"
3110
  dependencies = [
3111
+ "proc-macro2 1.0.69",
3112
  "quote 1.0.33",
3113
+ "syn 2.0.38",
3114
  ]
3115
 
3116
  [[package]]
 
3250
 
3251
  [[package]]
3252
  name = "socket2"
3253
+ version = "0.4.10"
3254
  source = "registry+https://github.com/rust-lang/crates.io-index"
3255
+ checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d"
3256
  dependencies = [
3257
  "libc",
3258
  "winapi 0.3.9",
 
3260
 
3261
  [[package]]
3262
  name = "socket2"
3263
+ version = "0.5.5"
3264
  source = "registry+https://github.com/rust-lang/crates.io-index"
3265
+ checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9"
3266
  dependencies = [
3267
  "libc",
3268
  "windows-sys",
 
3326
  dependencies = [
3327
  "phf_generator 0.7.24",
3328
  "phf_shared 0.7.24",
3329
+ "proc-macro2 1.0.69",
3330
  "quote 1.0.33",
3331
  "string_cache_shared",
3332
  ]
 
3339
  dependencies = [
3340
  "phf_generator 0.10.0",
3341
  "phf_shared 0.10.0",
3342
+ "proc-macro2 1.0.69",
3343
  "quote 1.0.33",
3344
  ]
3345
 
 
3366
  source = "registry+https://github.com/rust-lang/crates.io-index"
3367
  checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
3368
  dependencies = [
3369
+ "proc-macro2 1.0.69",
3370
  "quote 1.0.33",
3371
  "unicode-ident",
3372
  ]
3373
 
3374
  [[package]]
3375
  name = "syn"
3376
+ version = "2.0.38"
3377
  source = "registry+https://github.com/rust-lang/crates.io-index"
3378
+ checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b"
3379
  dependencies = [
3380
+ "proc-macro2 1.0.69",
3381
  "quote 1.0.33",
3382
  "unicode-ident",
3383
  ]
 
3388
  source = "registry+https://github.com/rust-lang/crates.io-index"
3389
  checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
3390
  dependencies = [
3391
+ "proc-macro2 1.0.69",
3392
  "quote 1.0.33",
3393
  "syn 1.0.109",
3394
  "unicode-xid 0.2.4",
 
3466
 
3467
  [[package]]
3468
  name = "thiserror"
3469
+ version = "1.0.50"
3470
  source = "registry+https://github.com/rust-lang/crates.io-index"
3471
+ checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2"
3472
  dependencies = [
3473
  "thiserror-impl",
3474
  ]
3475
 
3476
  [[package]]
3477
  name = "thiserror-impl"
3478
+ version = "1.0.50"
3479
  source = "registry+https://github.com/rust-lang/crates.io-index"
3480
+ checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8"
3481
  dependencies = [
3482
+ "proc-macro2 1.0.69",
3483
  "quote 1.0.33",
3484
+ "syn 2.0.38",
3485
  ]
3486
 
3487
  [[package]]
 
3502
 
3503
  [[package]]
3504
  name = "time"
3505
+ version = "0.3.30"
3506
  source = "registry+https://github.com/rust-lang/crates.io-index"
3507
+ checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5"
3508
  dependencies = [
3509
  "deranged",
3510
  "itoa 1.0.9",
3511
+ "powerfmt",
3512
  "serde",
3513
  "time-core",
3514
  "time-macros",
 
3575
 
3576
  [[package]]
3577
  name = "tokio"
3578
+ version = "1.33.0"
3579
  source = "registry+https://github.com/rust-lang/crates.io-index"
3580
+ checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653"
3581
  dependencies = [
3582
  "backtrace",
3583
  "bytes 1.5.0",
 
3587
  "parking_lot 0.12.1",
3588
  "pin-project-lite",
3589
  "signal-hook-registry",
3590
+ "socket2 0.5.5",
3591
  "tokio-macros",
3592
  "windows-sys",
3593
  ]
 
3640
  source = "registry+https://github.com/rust-lang/crates.io-index"
3641
  checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e"
3642
  dependencies = [
3643
+ "proc-macro2 1.0.69",
3644
  "quote 1.0.33",
3645
+ "syn 2.0.38",
3646
  ]
3647
 
3648
  [[package]]
 
3672
  dependencies = [
3673
  "pin-project",
3674
  "rand 0.8.5",
3675
+ "tokio 1.33.0",
3676
  ]
3677
 
3678
  [[package]]
 
3682
  checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081"
3683
  dependencies = [
3684
  "rustls",
3685
+ "tokio 1.33.0",
3686
  ]
3687
 
3688
  [[package]]
 
3748
  "futures-core",
3749
  "futures-sink",
3750
  "pin-project-lite",
3751
+ "tokio 1.33.0",
3752
  "tracing",
3753
  ]
3754
 
 
3769
 
3770
  [[package]]
3771
  name = "tracing"
3772
+ version = "0.1.40"
3773
  source = "registry+https://github.com/rust-lang/crates.io-index"
3774
+ checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
3775
  dependencies = [
 
3776
  "log",
3777
  "pin-project-lite",
3778
  "tracing-core",
 
3780
 
3781
  [[package]]
3782
  name = "tracing-core"
3783
+ version = "0.1.32"
3784
  source = "registry+https://github.com/rust-lang/crates.io-index"
3785
+ checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
3786
  dependencies = [
3787
  "once_cell",
3788
  ]
 
3984
  "bumpalo",
3985
  "log",
3986
  "once_cell",
3987
+ "proc-macro2 1.0.69",
3988
  "quote 1.0.33",
3989
+ "syn 2.0.38",
3990
  "wasm-bindgen-shared",
3991
  ]
3992
 
 
4018
  source = "registry+https://github.com/rust-lang/crates.io-index"
4019
  checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
4020
  dependencies = [
4021
+ "proc-macro2 1.0.69",
4022
  "quote 1.0.33",
4023
+ "syn 2.0.38",
4024
  "wasm-bindgen-backend",
4025
  "wasm-bindgen-shared",
4026
  ]
 
4049
 
4050
  [[package]]
4051
  name = "websurfx"
4052
+ version = "1.2.4"
4053
  dependencies = [
4054
  "actix-cors",
4055
  "actix-files",
 
4079
  "serde_json",
4080
  "smallvec 1.11.1",
4081
  "tempfile",
4082
+ "tokio 1.33.0",
4083
  ]
4084
 
4085
  [[package]]
 
4253
 
4254
  [[package]]
4255
  name = "zstd-sys"
4256
+ version = "2.0.9+zstd.1.5.5"
4257
  source = "registry+https://github.com/rust-lang/crates.io-index"
4258
+ checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656"
4259
  dependencies = [
4260
  "cc",
 
4261
  "pkg-config",
4262
  ]
Cargo.toml CHANGED
@@ -1,6 +1,6 @@
1
  [package]
2
  name = "websurfx"
3
- version = "1.2.3"
4
  edition = "2021"
5
  description = "An open-source alternative to Searx that provides clean, ad-free, and organic results with incredible speed while keeping privacy and security in mind."
6
  repository = "https://github.com/neon-mmd/websurfx"
 
1
  [package]
2
  name = "websurfx"
3
+ version = "1.2.4"
4
  edition = "2021"
5
  description = "An open-source alternative to Searx that provides clean, ad-free, and organic results with incredible speed while keeping privacy and security in mind."
6
  repository = "https://github.com/neon-mmd/websurfx"
docs/README.md CHANGED
@@ -15,5 +15,6 @@
15
 
16
  # Developers
17
 
 
18
  - [**Contribute**](https://github.com/neon-mmd/websurfx/blob/master/CONTRIBUTING.md)
19
  - [**Coding style**](https://rust-lang.github.io/api-guidelines/naming.html)
 
15
 
16
  # Developers
17
 
18
+ - [Developing](./developing.md)
19
  - [**Contribute**](https://github.com/neon-mmd/websurfx/blob/master/CONTRIBUTING.md)
20
  - [**Coding style**](https://rust-lang.github.io/api-guidelines/naming.html)
docs/developing.md ADDED
@@ -0,0 +1,629 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Developing
2
+
3
+ This page of the docs outlines how to get **Websurfx** up and running in a development environment, and outlines the common worflow, different ways to work on the project, a high level overview of how the project works, project structure and the best pratices that should be followed when working on the project.
4
+
5
+ <details>
6
+ <summary><b>Table of Contents</b></summary>
7
+ <p>
8
+
9
+ - [Setting up the Development Environment](#setting-up-the-development-environment)
10
+ - [Local Development](#local-development-)
11
+ - [Gitpod](#gitpod-)
12
+ - [NixOS Dev Shell using Nix Flake](#nixos-dev-shell-using-nix-flake-)
13
+ - [Local Development with Docker Compose](#local-development-with-docker-compose-)
14
+ - [Project Commands](#project-commands)
15
+ - [Environmental Variables](#environmental-variables)
16
+ - [Git Strategy](#git-strategy)
17
+ - [Flow](#git-flow)
18
+ - [Branches](#git-branch-naming)
19
+ - [Commit emojis](#commit-emojis)
20
+ - [PR Guidelines](#pr-guidelines)
21
+ - [Resources for Beginners](#resources-for-beginners)
22
+ - [App Info](#app-info)
23
+ - [Code Style Guide](#style-guide)
24
+ - [Application Structure](#application-structure)
25
+ - [Development Tools](#development-tools)
26
+ - [Misc / Notes](#notes)
27
+
28
+ </p>
29
+ </details>
30
+
31
+ ## Setting up the Development Environment
32
+
33
+ By default, we provide four different ways to work on the project. Which are as follows:
34
+
35
+ - [Local Development](#local-development-)
36
+ - [Gitpod](#gitpod-)
37
+ - [NixOS Dev Shell using Nix Flake](#nixos-dev-shell-using-nix-flake-)
38
+ - [Local Development with Docker Compose](#local-development-with-docker-compose-)
39
+
40
+ The diferent methods are explained in depth below.
41
+
42
+ ### Local Development
43
+
44
+ This section covers how to setup the project for development on your local machine (bare metal).
45
+
46
+ #### Prerequisites
47
+
48
+ Before you start working on the project. You will need the following packages installed on your system:
49
+
50
+ - A latest version of `cargo` installed on your system which is required to manage building and running the project. The installation instruction for this can be found [here](https://doc.rust-lang.org/cargo/getting-started/installation.html).
51
+ - A latest version of `npm` installed on your system which is required to allow the installation of other tools necessary for the project. The installation for this can be found [here](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm).
52
+ - A latest version of `redis` installed on your system which will be used to avoid introducing unexpected issue when working on the project. The installation for this can be found [here](https://redis.io/docs/getting-started/installation/).
53
+ - A latest version of `stylelint` should be installed on your system which will be used by the pre-commit checks to lint the code before a commit can be made to ensure better code quality. Before you install `stylelint` on your system, make sure you have `npm` installed on you system. To install `stylelint` run the following command:
54
+
55
+ ```shell
56
+ $ npm i -g stylelint
57
+ ```
58
+
59
+ > **Note**
60
+ > In the above command the dollar sign(**$**) refers to running the command in privilaged mode by using utilities `sudo`, `doas`, `pkgexec` or any other privilage access methods.
61
+
62
+ - `Cargo-watch` installed on your system which will allow to auto build the project when any checks occur in the source code files in the codebase (`websurfx` directory). Before you install `cargo-watch` on your system, make sure you have `cargo` installed on your system. To install `cargo-watch` run the following command:
63
+
64
+ ```shell
65
+ cargo install cargo-watch
66
+ ```
67
+
68
+ - `Git` installed on your system. The installation instruction for this can be found [here](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git).
69
+ - Finally, A latest version of `Docker` installed on your system which will be used to avoid introducing unexpected issue when working on the project. The installation instructions for this can be found [here](https://docs.docker.com/engine/install/).
70
+
71
+ > **Note**
72
+ > For **rolling release linux distributions (distros)**, the above mentioned all required packages except for `stylelint` and `cargo-watch` can also be installed via the distro specific package manager.
73
+ >
74
+ > **For Example:**
75
+ >
76
+ > On `arch linux` the following packages could be installed by following link to the installation instructions provided down below:
77
+ >
78
+ > - `Cargo`: https://wiki.archlinux.org/title/rust
79
+ > - `Npm`: https://wiki.archlinux.org/title/Node.js
80
+ > - `Redis`: https://wiki.archlinux.org/title/redis
81
+ > - `Git`: https://wiki.archlinux.org/title/git
82
+ > - `Docker`: https://wiki.archlinux.org/title/docker
83
+ >
84
+ > But we do not recommend this method for **stable release linux distros** as they tend to not provide very up to date versions of the required packages.
85
+
86
+ #### Setting up Pre-commit Checks
87
+
88
+ Before you setup `pre-commit` checks, you will first need to clone **your fork of the project** and navigate into the cloned repository by running the following command:
89
+
90
+ ```shell
91
+ git clone https://github.com/<your_github_username>/websurfx.git
92
+ cd websurfx
93
+ ```
94
+
95
+ Once you have done finished running the above commands then run the following command to setup the `pre-commit` checks:
96
+
97
+ ```shell
98
+ cargo test
99
+ ```
100
+
101
+ By the running the above mentioned command, it will automatically setup all the pre-commit checks in the project.
102
+
103
+ #### Running the Project
104
+
105
+ If you have followed the above section then you should have a cloned repository folder present on your system. In the same directory run the following command to run the project:
106
+
107
+ ```shell
108
+ cargo watch -q -x "run" -w "."
109
+ ```
110
+
111
+ This will compile the app by default with the **In-Memory caching** feature. To compile, run and test the app with other features then follow the build options listed below:
112
+
113
+ ##### Hybrid Cache
114
+
115
+ To build and run the app with the `Hybrid caching` feature. Run the following command:
116
+
117
+ ```shell
118
+ cargo watch -q -x "run --features redis-cache" -w .
119
+ ```
120
+
121
+ ##### No Cache
122
+
123
+ To build and run the search engine with the `No caching` feature. Run the following command:
124
+
125
+ ```shell
126
+ cargo watch -q -x "run --no-default-features" -w .
127
+ ```
128
+
129
+ ##### Redis Cache
130
+
131
+ To build the search engine with the `Redis caching` feature. Run the following command:
132
+
133
+ ```shell
134
+ cargo watch -q -x "run --no-default-features --features redis-cache" -w .
135
+ ```
136
+
137
+ > Optionally, If you have build and run the app with the `Redis cache`or `Hybrid cache` feature (as mentioned above) then you will need to start the redis server alongside the app which can be done so by running the following command:
138
+ >
139
+ > ```shell
140
+ > redis-server --port 8082 &
141
+ > ```
142
+
143
+ Once you have finished running the above command, Websurfx should now be served on the address http://127.0.0.1:8080. Hot reload is enabled, so making changes to any of the files will trigger the project to being rebuilt.
144
+
145
+ > For more info on all the project commands. See: [**Project Commands**](#project-commands-)
146
+
147
+ ### Gitpod
148
+
149
+ This section covers on how to use and setup the Gitpod development environment for working on the project.
150
+
151
+ > **Note**
152
+ > By default the project only supports the Vscode **IDE/Editor** for Gitpod.
153
+
154
+ #### Launching Gitpod
155
+
156
+ > For a full guide on how to fork the project. See: [**Forking**](#)
157
+
158
+ To launch gitpod and start working on the project from your fork of the Websurfx, Just navigate to the following link:
159
+
160
+ ```text
161
+ https://gitpod.io/#https://github.com/<your_github_username>/websurfx
162
+ ```
163
+
164
+ > For a full guide on how to use it and how to use it in different ways. See [**Learn Gitpod**](https://piped.kavin.rocks/playlist?list=PL3TSF5whlprXVp-7Br2oKwQgU4bji1S7H)
165
+
166
+ #### Default Plugins
167
+
168
+ The project by default provides a set of pre-installed plugins for gitpod which is done to improve productivity and efficiency while working on the project. Also to make working on the project more fun and engaging which can be customized from within the `Gitpod` instance.
169
+
170
+ The list of all the pre-installed plugins are listed down below:
171
+
172
+ **Productivity**
173
+
174
+ - [CodeLLDB](https://open-vsx.org/extension/vadimcn/vscode-lldb): Provides a native debugger for rust programming langauge.
175
+ - [GitHub Actions](https://open-vsx.org/extension/cschleiden/vscode-github-actions): Provides an easy to work with github actions.
176
+ - [rust-analyzer](https://open-vsx.org/extension/rust-lang/rust-analyzer): Provides a language server for rust programming langauge.
177
+ - [better-toml](https://open-vsx.org/extension/bungcip/better-toml): Provides support for toml files.
178
+ - [crates](https://open-vsx.org/extension/serayuzgur/crates): Makes managing rust dependencies easier.
179
+ - [Error Lens](https://open-vsx.org/extension/usernamehw/errorlens): Provides better highlighting of errors.
180
+ - [markdownlint](https://open-vsx.org/extension/DavidAnson/vscode-markdownlint): Provides a linter for linting markdown documents.
181
+ - [Prettier](https://open-vsx.org/extension/esbenp/prettier-vscode): Provides a code formatter.
182
+ - [Stylelint](https://open-vsx.org/extension/stylelint/vscode-stylelint): Provides a linter for CSS files.
183
+ - [ESLint](https://open-vsx.org/extension/dbaeumer/vscode-eslint): Provides a linter for JS files.
184
+ - [Syntax Highlighter](https://open-vsx.org/extension/evgeniypeshkov/syntax-highlighter): A better syntax highlighting for code.
185
+ - [Docker](https://open-vsx.org/extension/ms-azuretools/vscode-docker): Makes handling docker files easier.
186
+ - [indent-rainbow](https://open-vsx.org/extension/oderwat/indent-rainbow): Highlightes code idents for better visualization.
187
+ - [Auto Rename Tag](https://open-vsx.org/extension/formulahendry/auto-rename-tag): Provides a way to easily and quickly rename html tags.
188
+ - [Rust Test Explorer](https://open-vsx.org/extension/Swellaby/vscode-rust-test-adapter): View and run cargo tests easily from a convenient sidebar.
189
+ - [Search crates-io](https://open-vsx.org/extension/belfz/search-crates-io): Provides crates suggestions in the `cargo.toml` file.
190
+ - [Test Adapter Converter](https://open-vsx.org/extension/hbenl/test-adapter-converter): A vscode native way to view and run tests.
191
+ - [Test Explorer UI](https://open-vsx.org/extension/hbenl/vscode-test-explorer): Provides a way to run any test from a convenient sidebar.
192
+ - [GitLens](https://open-vsx.org/extension/eamodio/gitlens): Provides a better and more efficient way to manage common git workflows.
193
+
194
+ > Optionally, if you prefer more keyboard centric workflow then we would recommend using the following extension:
195
+ >
196
+ > - [VSCode Neovim](https://open-vsx.org/extension/asvetliakov/vscode-neovim): Provides complete vim emulation for vscode.
197
+
198
+ **Theming**
199
+
200
+ - [Catppuccin for VSCode](https://open-vsx.org/extension/Catppuccin/catppuccin-vsc): Provides the catpuccin theme for vscode.
201
+ - [Material Icon Theme](https://open-vsx.org/extension/PKief/material-icon-theme): Provides material design icons for files dependening on the file extension.
202
+
203
+ > If you have more ideas and ways to improve Gitpod for development purposes then feel free to do so by contributing a PR to this project [**here**](https://github.com/neon-mmd/websurfx/pulls).
204
+
205
+ ### NixOS Dev Shell using Nix Flake
206
+
207
+ This section covers on how to setup the project for development using the `NixOS dev-shell`.
208
+
209
+ #### Pre Setup Requirements
210
+
211
+ Before you start working on the project. You will need the following packages installed on your system:
212
+
213
+ - `Git` installed on your system. The installation instruction for this can be found [here](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git).
214
+ - Finally, A latest version of `Docker` installed on your system which will be used to avoid introducing unexpected issue when working on the project. The installation instructions for this can be found [here](https://docs.docker.com/engine/install/).
215
+
216
+ > Optionally, On `NixOS` the above mentioned all required packages except for `stylelint` and `cargo-watch` could also be installed by following link to the installation instructions provided down below:
217
+ >
218
+ > - `Git`: https://search.nixos.org/packages?channel=23.05&show=git&from=0&size=50&sort=relevance&type=packages&query=git
219
+ > - `Docker`: https://search.nixos.org/packages?channel=23.05&show=docker&from=0&size=50&sort=relevance&type=packages&query=docker
220
+
221
+ #### Setting up Pre-commit Checks
222
+
223
+ Before you setup `pre-commit` checks, you will first need to clone **your fork of the project** and navigate into the cloned repository by running the following command:
224
+
225
+ ```shell
226
+ git clone https://github.com/<your_github_username>/websurfx.git
227
+ cd websurfx
228
+ ```
229
+
230
+ Then run the following command to setup the `NixOS dev-shell`:
231
+
232
+ ```shell
233
+ nix develop
234
+ ```
235
+
236
+ Once you have done finished running the above commands then run the following command to setup the `pre-commit` checks:
237
+
238
+ ```shell
239
+ cargo test
240
+ ```
241
+
242
+ By the running the above mentioned command, it will automatically setup all the pre-commit checks in the project.
243
+
244
+ #### Post Setup Requirements
245
+
246
+ After you have done setting up pre-commit checks, then you may need to fullfill a few more requirements to finish setting up the development environment with `NixOS dev-shell`. These include:
247
+
248
+ - `Cargo-watch` installed on your system which will allow to auto build the project when any checks occur in the source code files in the codebase (`websurfx` directory). Before you install `cargo-watch` on your system, make sure you have `cargo` installed on your system. To install `cargo-watch` run the following command:
249
+
250
+ ```shell
251
+ cargo install cargo-watch
252
+ ```
253
+
254
+ #### Running the Project
255
+
256
+ If you have followed the above section then you should now be inside a `dev-shell` environment. In the same environment run the following command to run the project:
257
+
258
+ ```shell
259
+ cargo watch -q -x "run" -w "."
260
+ ```
261
+
262
+ This will compile the app by default with the **In-Memory caching** feature. To compile, run and test the app with other features then follow the build options listed below:
263
+
264
+ ##### Hybrid Cache
265
+
266
+ To build and run the app with the `Hybrid caching` feature. Run the following command:
267
+
268
+ ```shell
269
+ cargo watch -q -x "run --features redis-cache" -w .
270
+ ```
271
+
272
+ ##### No Cache
273
+
274
+ To build and run the search engine with the `No caching` feature. Run the following command:
275
+
276
+ ```shell
277
+ cargo watch -q -x "run --no-default-features" -w .
278
+ ```
279
+
280
+ ##### Redis Cache
281
+
282
+ To build the search engine with the `Redis caching` feature. Run the following command:
283
+
284
+ ```shell
285
+ cargo watch -q -x "run --no-default-features --features redis-cache" -w .
286
+ ```
287
+
288
+ > Optionally, If you have build and run the app with the `Redis cache`or `Hybrid cache` feature (as mentioned above) then you will need to start the redis server alongside the app which can be done so by running the following command:
289
+ >
290
+ > ```shell
291
+ > redis-server --port 8082 &
292
+ > ```
293
+
294
+ Once you have finished running the above command, Websurfx should now be served on the address http://127.0.0.1:8080. Hot reload is enabled, so making changes to any of the files will trigger the project to being rebuilt.
295
+
296
+ ### Local Development with Docker Compose
297
+
298
+ This section covers how to setup the project for development on your local machine (bare metal) using `docker compose`.
299
+
300
+ #### Prerequisites
301
+
302
+ Before you start working on the project. You will need the following packages installed on your system:
303
+
304
+ - A latest version of `cargo` installed on your system which is required to manage building and running the project. The installation instruction for this can be found [here](https://doc.rust-lang.org/cargo/getting-started/installation.html).
305
+ - A latest version of `npm` installed on your system which is required to allow the installation of other tools necessary for the project. The installation for this can be found [here](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm).
306
+ - A latest version of `stylelint` should be installed on your system which will be used by the pre-commit checks to lint the code before a commit can be made to ensure better code quality. Before you install `stylelint` on your system, make sure you have `npm` installed on you system. To install `stylelint` run the following command:
307
+
308
+ ```shell
309
+ $ npm i -g stylelint
310
+ ```
311
+
312
+ > **Note**
313
+ > In the above command the dollar sign(**$**) refers to running the command in privilaged mode by using utilities `sudo`, `doas`, `pkgexec` or any other privilage access methods.
314
+
315
+ - `Git` installed on your system. The installation instruction for this can be found [here](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git).
316
+ - Finally, A latest version of `Docker` installed on your system which will be used to avoid introducing unexpected issue when working on the project. The installation instructions for this can be found [here](https://docs.docker.com/engine/install/).
317
+
318
+ > **Note**
319
+ > For **rolling release linux distributions (distros)**, the above mentioned all required packages can also be installed via the distro specific package manager.
320
+ >
321
+ > **For Example:**
322
+ >
323
+ > On `arch linux` the following packages could be installed by following link to the installation instructions provided down below:
324
+ >
325
+ > - `Cargo`: https://wiki.archlinux.org/title/rust
326
+ > - `Npm`: https://wiki.archlinux.org/title/Node.js
327
+ > - `Git`: https://wiki.archlinux.org/title/git
328
+ > - `Docker`: https://wiki.archlinux.org/title/docker
329
+ >
330
+ > But we do not recommend this method for **stable release linux distros** as they tend to not provide very up to date versions of the required packages.
331
+
332
+ #### Setting up Pre-commit Checks
333
+
334
+ Before you setup `pre-commit` checks, you will first need to clone **your fork of the project** and navigate into the cloned repository by running the following command:
335
+
336
+ ```shell
337
+ git clone https://github.com/<your_github_username>/websurfx.git
338
+ cd websurfx
339
+ ```
340
+
341
+ Once you have done finished running the above commands then run the following command to setup the `pre-commit` checks:
342
+
343
+ ```shell
344
+ cargo test
345
+ ```
346
+
347
+ By the running the above mentioned command, it will automatically setup all the pre-commit checks in the project.
348
+
349
+ #### Running the Project
350
+
351
+ If you have followed the above section then you should have a cloned repository folder present on your system. In the same directory, edit the `dev.docker-compose.yml` file as required before running the following command to run the project:
352
+
353
+ ```shell
354
+ $ docker compose -f dev.docker-compose.yml up
355
+ ```
356
+
357
+ > **Note**
358
+ > In the above command the dollar sign(**$**) refers to running the command in privilaged mode by using utilities `sudo`, `doas`, `pkgexec` or any other privilage access methods.
359
+
360
+ Once you have finished running the above command, Websurfx should now be served on the address http://127.0.0.1:8080. Hot reload is enabled, so making changes to any of the files will trigger the project to being rebuilt.
361
+
362
+ ### Project Commands
363
+
364
+ #### Basics
365
+
366
+ - `cargo build`: Builds the project.
367
+
368
+ > **Note**
369
+ > When you build the project first time with the above command it will require the app to compile every dependency in the project which will then be cached on your system. So when you compile the app next time it will only compile for the new changes.
370
+
371
+ - `cargo run`: Starts the app and serves the project on http://127.0.0.1:8080.
372
+
373
+ > **Important**
374
+ > You must run the build command first.
375
+
376
+ #### Development
377
+
378
+ - `cargo watch -q -x "run" -w .`: Starts the development server with hot reloading.
379
+ - `cargo fmt -- --check`: Checks the code for proper formatting.
380
+ - `cargo clippy`: Lints code to ensure it follows a consistent, neat style.
381
+ - `cargo test`: Runs unit tests, integrations tests and doc tests.
382
+
383
+ ### Environment Variables
384
+
385
+ All environmental variables are optional. Currently there are not many environmental variables used, as most of the user preferences are stored under the `websurfx` folder (located under the codebase (`websurfx` directory)) in the `config.lua` file.
386
+
387
+ The list of all the available environment variables are listed down below:
388
+
389
+ - `PKG_ENV`: Sets the logging level for the app to **Trace** which can be useful for better debugging of the app. This environment variables accept two values `dev` or `prod` as strings.
390
+ - `RUST_BACKTRACE`: Rust specific environment variable useful for getting more elaborate error messages with an error stack to better diagnose the issue. This environment variable accepts three values `0` (off), `1` (on) and `full` (for long error stack to being printed out).
391
+
392
+ ## Git Strategy
393
+
394
+ ### Git Flow
395
+
396
+ Like most Git repos, we are following the [Github Flow](https://guides.github.com/introduction/flow) standard.
397
+
398
+ 1. Create a branch (or fork if you don'd have write access)
399
+ 2. Code some awesome stuff πŸ§‘β€πŸ’»
400
+ 3. Add, commit and push your changes to your branch/ fork
401
+ 4. Head over to GitHub and create a Pull Request
402
+ 5. Fill in the required sections in the template, and hit submit
403
+ 6. Follow up with any reviews on your code
404
+ 7. Merge πŸŽ‰
405
+
406
+ ### Git Branch Naming
407
+
408
+ The format of your branch name should be something similar to: `[TYPE]/[TICKET]_[TITLE]`
409
+ For example, `FEATURE/420_Awesome-feature` or `FIX/690_login-server-error`
410
+
411
+ ### Commit Emojis
412
+
413
+ Using a single emoji at the start of each commit message, issue title, and pull request title, to indicate the type task, makes the commit ledger, issue and pull request easier to understand, plus it looks cool.
414
+
415
+ - 🎨 `:art:` - Improve structure / format of the code.
416
+ - ⚑️ `:zap:` - Improve performance.
417
+ - πŸ”₯ `:fire:` - Remove code or files.
418
+ - πŸ› `:bug:` - Fix a bug.
419
+ - πŸš‘οΈ `:ambulance:` - Critical hotfix
420
+ - ✨ `:sparkles:` - Introduce new features.
421
+ - πŸ“ `:memo:` - Add or update documentation.
422
+ - πŸš€ `:rocket:` - Deploy stuff.
423
+ - πŸ’„ `:lipstick:` - Add or update the UI and style files.
424
+ - πŸŽ‰ `:tada:` - Begin a project.
425
+ - βœ… `:white_check_mark:` - Add, update, or pass tests.
426
+ - πŸ”’οΈ `:lock:` - Fix security issues.
427
+ - πŸ”– `:bookmark:` - Make a Release or Version tag.
428
+ - 🚨 `:rotating_light:` - Fix compiler / linter warnings.
429
+ - 🚧 `:construction:` - Work in progress.
430
+ - ⬆️ `:arrow_up:` - Upgrade dependencies.
431
+ - πŸ‘· `:construction_worker:` - Add or update CI build system.
432
+ - ♻️ `:recycle:` - Refactor code.
433
+ - 🩹 `:adhesive_bandage:` - Simple fix for a non-critical issue.
434
+ - πŸ”§ `:wrench:` - Add or update configuration files.
435
+ - 🍱 `:bento:` - Add or update assets.
436
+ - πŸ—ƒοΈ `:card_file_box:` - Perform database schema related changes.
437
+ - ✏️ `:pencil2:` - Fix typos.
438
+ - 🌐 `:globe_with_meridians:` - Internationalization and translations.
439
+
440
+ For a full list of options, see [gitmoji.dev](https://gitmoji.dev/)
441
+
442
+ ### PR Guidelines
443
+
444
+ Once you've made your changes, and pushed them to your fork or branch, you're ready to open a pull request!
445
+
446
+ For a pull request to be merged, it must:
447
+
448
+ - The build, lint and tests (run by GH actions) must pass
449
+ - There must not be any merge conflicts
450
+
451
+ When you submit your pull request, include the required info, by filling out the pull request template. Including:
452
+
453
+ - A brief description of your changes.
454
+ - The issue or ticket number (if applicable).
455
+ - For UI related updates include a screenshot.
456
+ - If any dependencies were added, explain why it was needed, state the cost. associated, and confirm it does not introduce any security, privacy or speed issues
457
+ - Optionally, provide a checklist of all the changes that was included in the pull request.
458
+
459
+ > **Important**
460
+ > Make sure to fill all the required/mandatory sections of the pull request as by filling them it helps us distinguish between spam pull requests and legitimate pull requests.
461
+
462
+ > **Note**
463
+ > The pull request template contains comments in the following form `<!-- -->` which are used to provide a guide on what should be provided under each heading of the template. These comments are never rendered when the pull request is either created or updated and hence anything provided in such comments is never displayed.
464
+
465
+ ## Resources for Beginners
466
+
467
+ New to Web Development? Or New to GitHub? Glad to see you're here!! :slightly_smiling_face: Websurfx is a pretty simple app, so it should make a good candidate for your first PR. The following articles (which has been divided into parts for convenience) should point you in the right direction for getting up to speed with the technologies used in this project:
468
+
469
+ **Development**
470
+
471
+ - [Basics of Rust](https://piped.kavin.rocks/playlist?list=PLai5B987bZ9CoVR-QEIN9foz4QCJ0H2Y8)
472
+ - [Introduction and deep dive into async/await in rust](https://piped.kavin.rocks/watch?v=ThjvMReOXYM)
473
+ - [Getting Started to Actix Guide](https://actix.rs/docs/getting-started)
474
+ - [Basics of Lua](https://learn.coregames.com/courses/intro-to-lua/)
475
+ - [Complete course on CSS](https://piped.kavin.rocks/watch?v=1Rs2ND1ryYc)
476
+ - [Complete course on JS](https://piped.kavin.rocks/playlist?list=PL_c9BZzLwBRLVh9OdCBYFEql6esA6aRsi)
477
+ - [Responsive web design](https://piped.kavin.rocks/watch?v=srvUrASNj0s)
478
+ - [Complete beginners guide to Docker](https://docker-curriculum.com/)
479
+ - [Docker Classroom - Interactive Tutorials](https://training.play-with-docker.com/)
480
+ - [Docker Compose Tutorial](https://docs.docker.com/compose/gettingstarted/)
481
+ - [ES6 Tutorial](https://piped.kavin.rocks/watch?v=nZ1DMMsyVyI)
482
+ - [Cargo Guide Book](https://doc.rust-lang.org/cargo/index.html)
483
+
484
+ **GitHub**
485
+
486
+ - [Complete Guide to Open Source - How to Contribute](https://piped.kavin.rocks/watch?v=yzeVMecydCE)
487
+ - [Forking a Project](https://piped.kavin.rocks/watch?v=FnxFwyzm4Z4)
488
+ - [A Tutorial on Git](https://piped.kavin.rocks/playlist?list=PL4lTrYcDuAfxAgSefXftJXbhw0qvjfOFo)
489
+ - [Git cheat sheet](http://git-cheatsheet.com/)
490
+
491
+ For Rust, CSS, JS, Html, Git and Docker- you'll need an IDE (e.g. [VSCode](https://code.visualstudio.com/) or [Neovim](https://neovim.io/) and a terminal (Windows users may find [WSL](https://docs.microsoft.com/en-us/windows/wsl/) more convenient).
492
+
493
+ ## App Info
494
+
495
+ ### Style Guides
496
+
497
+ Linting is done using [Cargo Clippy](https://doc.rust-lang.org/clippy/) and [StyleLint](https://stylelint.io/) or [ESLint](https://eslint.org/). Also, linting is run as a git pre-commit hook.
498
+
499
+ > **Important**
500
+ > All lint checks must pass before any PR can be merged.
501
+
502
+ Styleguides to follow:
503
+
504
+ - [Rust API Guidelines](https://rust-lang.github.io/api-guidelines/naming.html)
505
+ - [Airbnb JS Guidelines](https://github.com/airbnb/javascript)
506
+ - [Google's Html and CSS Guidelines](https://google.github.io/styleguide/htmlcssguide.html)
507
+
508
+ ## Application Structure
509
+
510
+ > **Important**
511
+ > We follow the unix style naming conventions for all the file and folders in the project (except for all files under the `themes` and `colorschemes` folder in the frontend's source code which requires that the names of the files and folders should be in lowercase and the words be seperated with a hyphen.) which includes the name of the files and folders should be in lowercase and every word should be seperated with an underscore.
512
+
513
+ **Files in the root of the codebase:** `./`
514
+
515
+ ```
516
+ ./
517
+ β”œβ”€β”€ .dockerignore # Docker ignore file to ignore stuff being included in the file docker image.
518
+ β”œβ”€β”€ .gitignore # Git ignore file to ignore stuff from being
519
+ β”œβ”€β”€ Cargo.lock # Auto-generated list of current packages and version numbers.
520
+ β”œβ”€β”€ Cargo.toml # Project meta-data and dependencies.
521
+ β”œβ”€β”€ Dockerfile # The blueprint for building the Docker container.
522
+ β”œβ”€β”€ LICENSE # License for use.
523
+ β”œβ”€β”€ README.md # Readme, basic info for getting started.
524
+ β”œβ”€β”€ dev.Dockerfile # The blueprint for building the Docker container for development purposes.
525
+ β”œβ”€β”€ dev.docker-compose.yml # A Docker run command for development environments.
526
+ β”œβ”€β”€ docker-compose.yml # A Docker run command.
527
+ β”œβ”€β”€ flake.lock # NixOS auto-generated flake configuration.
528
+ β”œβ”€β”€ flake.nix # Nix flake package configuration.
529
+ β”œβ”€β”€ docs # Markdown documentation
530
+ β”œβ”€β”€ public # Project front-end source code
531
+ β”œβ”€β”€ src # Project back-end source code
532
+ β”œβ”€β”€ tests # Project integration tests for the back-end source code.
533
+ └── websurfx # Project folder containing config files for the app.
534
+ ```
535
+
536
+ **Frontend Source:** `./public/`
537
+
538
+ ```
539
+ ./public/
540
+ β”œβ”€β”€ robots.txt # Robots file for the Website.
541
+ β”œβ”€β”€ images # Images for the Website.
542
+ β”œβ”€β”€ static # The directory containing all the UI handlers.
543
+ β”‚ β”œβ”€β”€ cookies.js # Handles the loading of saved cookies.
544
+ β”‚ β”œβ”€β”€ error_box.js # Handles the toggling functionality of the error box on the search page.
545
+ β”‚ β”œβ”€β”€ index.js # Functions to handle the searching functionality of the search bar.
546
+ β”‚ β”œβ”€β”€ pagination.js # Functions to handle the navigation between previous and next page in the search page.
547
+ β”‚ β”œβ”€β”€ search_area_options.js # Changes the search options under the search bar in the search page according to the safe search level set using the url safesearch parameter.
548
+ β”‚ β”œβ”€β”€ settings.js # Handles the getting and saving of all the settings page options as a cookie.
549
+ β”‚ β”œβ”€β”€ colorschemes # A folder containing all the popular colorscheme files as CSS files.
550
+ β”‚ └── themes # A folder containing all the popular theme files as CSS files.
551
+ └── templates # Folder containing all the template files for the different pages on the website.
552
+ β”œβ”€β”€ 404.html # A 404 page template.
553
+ β”œβ”€β”€ about.html # An about page template.
554
+ β”œβ”€β”€ bar.html # A template for the search bar.
555
+ β”œβ”€β”€ cookies_tab.html # A template for the cookies tab for the settings page.
556
+ β”œβ”€β”€ engines_tab.html # A template for the engines tab for the settings page.
557
+ β”œβ”€β”€ footer.html # A footer template for all page.
558
+ β”œβ”€β”€ general_tab.html # A template for the general tab for the settings page.
559
+ β”œβ”€β”€ header.html # A header template for all page.
560
+ β”œβ”€β”€ index.html # A home page template.
561
+ β”œβ”€β”€ navbar.html # A navbar template for the header template.
562
+ β”œβ”€β”€ search.html # A search page template.
563
+ β”œβ”€β”€ search_bar.html # A search bar template specifically for the search page.
564
+ β”œβ”€β”€ settings.html # A settings page template.
565
+ └── user_interface_tab.html # A template for the user interface tab for the settings page.
566
+ ```
567
+
568
+ **Backend Source:** `./src/`
569
+
570
+ ```
571
+ ./src/
572
+ β”œβ”€β”€ lib.rs # A library file for the rust project.
573
+ β”œβ”€β”€ bin # A folder containing the source code that would produce the binary file when compiled.
574
+ β”‚ └── websurfx.rs # A file that would be compiled into binary file.
575
+ β”œβ”€β”€ cache # A folder that contains code to handle the caching functionality of the search engine.
576
+ β”‚ β”œβ”€β”€ cacher.rs # Handles the different caching features.
577
+ β”‚ β”œβ”€β”€ error.rs # Provides custom error messages for different types of caches and their related errors.
578
+ β”‚ β”œβ”€β”€ mod.rs # A module file for the rust project.
579
+ β”‚ └── redis_cacher.rs # Provides custom asynchronous pool implementation with auto background reconnection functionality.
580
+ β”œβ”€β”€ config # A folder that holds the code to help parse the lua config file that would be used in the app.
581
+ β”‚ β”œβ”€β”€ mod.rs # A module file for the rust project.
582
+ β”‚ └── parser.rs # Provides the code to parse the config file.
583
+ β”œβ”€β”€ engines # A folder that holds code to handle fetching data from different upstream engines.
584
+ β”‚ β”œβ”€β”€ brave.rs # Provides code to fetch and remove unnecessary or waste results from the fetched results from the brave search engine.
585
+ β”‚ β”œβ”€β”€ duckduckgo.rs # Provides code to fetch and remove unnecessary or waste results from the fetched results from the duckduckgo search engine.
586
+ β”‚ β”œβ”€β”€ mod.rs # A module file for the rust project.
587
+ β”‚ β”œβ”€β”€ search_result_parser.rs # Provides helper function to help ease the process of defining different result selection selectors.
588
+ β”‚ └── searx.rs # Provides code to fetch and remove unnecessary or waste results from the fetched results from the searx engine.
589
+ β”œβ”€β”€ handler # A folder that provides helper code to provide a proper path to the public (theme) folder, config file, blocklist file and allowlist file based on where they are located.
590
+ β”‚ β”œβ”€β”€ mod.rs # A module file for the rust project.
591
+ β”‚ └── paths.rs # Provides helper code to handle different paths.
592
+ β”œβ”€β”€ models # A folder that provides different models for the different modules in the backend code.
593
+ β”‚ β”œβ”€β”€ aggregation_models.rs # Provides different models (enums, structs) for handling and standardizing different parts in the "results" module code.
594
+ β”‚ β”œβ”€β”€ engine_models.rs # Provides different models (enums, structs) for handling and standardizing different parts in the "engines" module code.
595
+ β”‚ β”œβ”€β”€ mod.rs # A module file for the rust project.
596
+ β”‚ β”œβ”€β”€ parser_models.rs # Provides different models (enums, structs) for handling and standardizing different parts in the "config" module code.
597
+ β”‚ └── server_models.rs # Provides different models (enums, structs) for handling and standardizing different parts in the "server" module code.
598
+ β”œβ”€β”€ results # A folder that provides code to handle the feching and aggregating of results from the upstream search engines.
599
+ β”‚ β”œβ”€β”€ aggregator.rs # Provides code aggregate and fetch results from the upstream engines.
600
+ β”‚ β”œβ”€β”€ mod.rs # A module file for the rust project.
601
+ β”‚ └── user_agent.rs # Provides a helper function to provide random user-agents to pass in the server request code to improve user privacy and avoiding detected as a bot.
602
+ └── server # A folder that holds code to handle the routes for the search engine website.
603
+ β”œβ”€β”€ mod.rs # A module file for the rust project.
604
+ β”œβ”€β”€ router.rs # Provides functions to handle the different routes on the website.
605
+ └── routes # A folder that contains code to handle the bigger route for the website.
606
+ β”œβ”€β”€ mod.rs # A module file for the rust project.
607
+ └── search.rs # Provides the function to handle the search route.
608
+ ```
609
+
610
+ ## Development Tools
611
+
612
+ ### Performance - Lighthouse
613
+
614
+ The easiest method of checking performance is to use Chromium's build in auditing tool, Lighthouse. To run the test, open Developer Tools (usually F12) --> Lighthouse and click on the 'Generate Report' button at the bottom.
615
+
616
+ ## Notes
617
+
618
+ ### Known warnings
619
+
620
+ When running the build command, a warning appear. These is not an error, and do not affect the security or performance of the application. They will be addressed soon in a future update.
621
+
622
+ ```shell
623
+ warning: the following packages contain code that will be rejected by a future version of Rust: html5ever v0.23.0
624
+ note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2`
625
+ ```
626
+
627
+ These warning just means that any dependencies or code using the `html5ever` code would be deprecated and rejected in the futures versions of the rust lanaguage. So right now these dependencies can be used as these has not happened yet.
628
+
629
+ [⬅️ Go back to Home](./README.md)