File size: 4,690 Bytes
15fc415
 
9c6729c
15fc415
39da8e8
 
 
15fc415
ad297a0
 
 
 
 
 
15fc415
bb50e8b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4157ba8
bb50e8b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8dd18eb
 
bb50e8b
 
 
39da8e8
3f367d0
bb50e8b
 
 
 
3f367d0
39da8e8
 
 
89ee79c
39da8e8
 
 
 
 
 
 
 
 
 
33f5b5e
 
39da8e8
 
 
4a990c5
e8998a4
39da8e8
55a7125
39da8e8
8779c03
33f5b5e
 
bb50e8b
1e7805c
bb50e8b
1e7805c
bb50e8b
 
 
 
d110f72
bb50e8b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
[package]
name = "websurfx"
version = "1.12.1"
edition = "2021"
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."
repository = "https://github.com/neon-mmd/websurfx"
license = "AGPL-3.0"

[[bin]]
name = "websurfx"
test = true
bench = false
path = "src/bin/websurfx.rs"

[dependencies]
reqwest = { version = "0.11.24", default-features = false, features = [
    "rustls-tls",
    "brotli",
    "gzip",
] }
tokio = { version = "1.32.0", features = [
    "rt-multi-thread",
    "macros",
    "fs",
    "io-util",
], default-features = false }
serde = { version = "1.0.196", default-features = false, features = ["derive"] }
serde_json = { version = "1.0.109", default-features = false }
maud = { version = "0.25.0", default-features = false, features = [
    "actix-web",
] }
scraper = { version = "0.18.1", default-features = false }
actix-web = { version = "4.4.0", features = [
    "cookies",
    "macros",
    "compress-brotli",
], default-features = false }
actix-files = { version = "0.6.5", default-features = false }
actix-cors = { version = "0.7.0", default-features = false }
fake-useragent = { version = "0.1.3", default-features = false }
env_logger = { version = "0.11.1", default-features = false }
log = { version = "0.4.21", default-features = false }
mlua = { version = "0.9.1", features = [
    "luajit",
    "vendored",
], default-features = false }
redis = { version = "0.24.0", features = [
    "tokio-comp",
    "connection-manager",
], default-features = false, optional = true }
blake3 = { version = "1.5.0", default-features = false }
error-stack = { version = "0.4.0", default-features = false, features = [
    "std",
] }
async-trait = { version = "0.1.76", default-features = false }
regex = { version = "1.9.4", features = ["perf"], default-features = false }
smallvec = { version = "1.13.1", features = [
    "union",
    "serde",
], default-features = false }
futures = { version = "0.3.30", default-features = false, features = ["alloc"] }
dhat = { version = "0.3.2", optional = true, default-features = false }
mimalloc = { version = "0.1.38", default-features = false }
async-once-cell = { version = "0.5.3", default-features = false }
actix-governor = { version = "0.5.0", default-features = false }
mini-moka = { version = "0.10", optional = true, default-features = false, features = [
    "sync",
] }
async-compression = { version = "0.4.6", default-features = false, features = [
    "brotli",
    "tokio",
], optional = true }
chacha20poly1305 = { version = "0.10.1", default-features = false, features = [
    "alloc",
    "getrandom",
], optional = true }
chacha20 = { version = "0.9.1", default-features = false, optional = true }
base64 = { version = "0.21.5", default-features = false, features = [
    "std",
], optional = true }
cfg-if = { version = "1.0.0", default-features = false, optional = true }
keyword_extraction = { version = "1.3.0", default-features = false, features = [
    "tf_idf",


] }

stop-words = { version = "0.8.0", default-features = false, features = ["iso"] }
thesaurus = { version = "0.5.2", default-features = false, optional = true, features = [
    "moby",
] }

[dev-dependencies]
rusty-hook = { version = "^0.11.2", default-features = false }
criterion = { version = "0.5.1", default-features = false }
tempfile = { version = "3.10.1", default-features = false }

[build-dependencies]
lightningcss = { version = "1.0.0-alpha.52", default-features = false, features = [
    "grid",
] }
minify-js = { version = "0.6.0", default-features = false }

[profile.dev]
opt-level = 0
debug = true
split-debuginfo = 'unpacked'
debug-assertions = true
overflow-checks = true
lto = false
panic = 'unwind'
incremental = true
codegen-units = 256
rpath = false

[profile.release]
opt-level = 3
debug = false # This should only be commented when testing with dhat profiler
# debug = 1 # This should only be uncommented when testing with dhat profiler
split-debuginfo = '...'
debug-assertions = false
overflow-checks = false
lto = 'thin'
panic = 'abort'
incremental = false
codegen-units = 1
rpath = false
strip = "symbols"

[features]
use-synonyms-search = ["thesaurus/static"]
default = ["memory-cache"]
dhat-heap = ["dep:dhat"]
memory-cache = ["dep:mini-moka"]
redis-cache = ["dep:redis", "dep:base64"]
compress-cache-results = ["dep:async-compression", "dep:cfg-if"]
encrypt-cache-results = ["dep:chacha20poly1305", "dep:chacha20"]
cec-cache-results = ["compress-cache-results", "encrypt-cache-results"]
experimental-io-uring = ["actix-web/experimental-io-uring"]
use-non-static-synonyms-search = ["thesaurus"]