blob: 671deb8c5781c8b5a9e16036a131946f0a0b4ab6 [file] [log] [blame]
Adrià Vilanova Martínez542cc052024-05-25 22:41:25 +02001import { Option, OptionContext, KillSwitchType, OptionConfig } from './Option';
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +02002
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +02003const rawOptionConfigs = {
4 // Available options
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +02005 list: {
6 defaultValue: true,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +02007 context: OptionContext.Options,
8 killSwitchType: KillSwitchType.Option,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +02009 },
10 thread: {
11 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +020012 context: OptionContext.Options,
13 killSwitchType: KillSwitchType.Option,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +020014 },
15 threadall: {
16 defaultValue: true,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +020017 context: OptionContext.Options,
18 killSwitchType: KillSwitchType.Option,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +020019 },
20 fixedtoolbar: {
21 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +020022 context: OptionContext.Options,
23 killSwitchType: KillSwitchType.Option,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +020024 },
25 redirect: {
26 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +020027 context: OptionContext.Options,
28 killSwitchType: KillSwitchType.Option,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +020029 },
30 history: {
31 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +020032 context: OptionContext.Options,
33 killSwitchType: KillSwitchType.Option,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +020034 },
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +020035 increasecontrast: {
36 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +020037 context: OptionContext.Options,
38 killSwitchType: KillSwitchType.Option,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +020039 },
40 stickysidebarheaders: {
41 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +020042 context: OptionContext.Options,
43 killSwitchType: KillSwitchType.Option,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +020044 },
45 profileindicator: {
46 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +020047 context: OptionContext.Options,
48 killSwitchType: KillSwitchType.Option,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +020049 },
50 profileindicatoralt: {
51 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +020052 context: OptionContext.Options,
53 killSwitchType: KillSwitchType.Option,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +020054 },
55 profileindicatoralt_months: {
56 defaultValue: 12,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +020057 context: OptionContext.Options,
58 killSwitchType: KillSwitchType.Ignore,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +020059 },
60 ccdarktheme: {
61 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +020062 context: OptionContext.Options,
63 killSwitchType: KillSwitchType.Option,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +020064 },
65 ccdarktheme_mode: {
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +020066 defaultValue: 'switch',
67 context: OptionContext.Options,
68 killSwitchType: KillSwitchType.Ignore,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +020069 },
70 ccforcehidedrawer: {
71 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +020072 context: OptionContext.Options,
73 killSwitchType: KillSwitchType.Option,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +020074 },
75 // #!if ['chromium', 'chromium_mv3'].includes(browser_target)
76 ccdragndropfix: {
77 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +020078 context: OptionContext.Options,
79 killSwitchType: KillSwitchType.Option,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +020080 },
81 // #!endif
82 batchlock: {
83 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +020084 context: OptionContext.Options,
85 killSwitchType: KillSwitchType.Option,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +020086 },
87 enhancedannouncementsdot: {
88 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +020089 context: OptionContext.Options,
90 killSwitchType: KillSwitchType.Option,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +020091 },
92 repositionexpandthread: {
93 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +020094 context: OptionContext.Options,
95 killSwitchType: KillSwitchType.Option,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +020096 },
97 threadlistavatars: {
98 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +020099 context: OptionContext.Options,
100 killSwitchType: KillSwitchType.Option,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +0200101 },
102 autorefreshlist: {
103 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +0200104 context: OptionContext.Options,
105 killSwitchType: KillSwitchType.Option,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +0200106 },
107 imagemaxheight: {
108 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +0200109 context: OptionContext.Options,
110 killSwitchType: KillSwitchType.Option,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +0200111 },
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +0200112 perforumstats: {
113 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +0200114 context: OptionContext.Options,
115 killSwitchType: KillSwitchType.Option,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +0200116 },
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +0200117 uispacing: {
118 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +0200119 context: OptionContext.Options,
120 killSwitchType: KillSwitchType.Option,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +0200121 },
122 flattenthreads: {
123 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +0200124 context: OptionContext.Options,
125 killSwitchType: KillSwitchType.Option,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +0200126 },
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +0200127
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +0200128 // Experiments
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +0200129 workflows: {
130 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +0200131 context: OptionContext.Experiments,
132 killSwitchType: KillSwitchType.Experiment,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +0200133 },
134 extrainfo: {
135 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +0200136 context: OptionContext.Experiments,
137 killSwitchType: KillSwitchType.Experiment,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +0200138 },
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +0200139
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +0200140 // Internal options
Adrià Vilanova Martínez542cc052024-05-25 22:41:25 +0200141 ccdarktheme_switch_status: {
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +0200142 defaultValue: true,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +0200143 context: OptionContext.Internal,
144 killSwitchType: KillSwitchType.Ignore,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +0200145 },
146 flattenthreads_switch_enabled: {
147 defaultValue: true,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +0200148 context: OptionContext.Internal,
149 killSwitchType: KillSwitchType.Ignore,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +0200150 },
151
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +0200152 // Internal kill switches
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +0200153 killswitch_xhrproxy: {
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +0200154 defaultValue: undefined as any,
155 context: OptionContext.Internal,
156 killSwitchType: KillSwitchType.InternalKillSwitch,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +0200157 },
158
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +0200159 // Deprecated options
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +0200160 escalatethreads: {
161 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +0200162 context: OptionContext.Deprecated,
163 killSwitchType: KillSwitchType.Deprecated,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +0200164 },
165 movethreads: {
166 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +0200167 context: OptionContext.Deprecated,
168 killSwitchType: KillSwitchType.Deprecated,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +0200169 },
170 batchduplicate: {
171 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +0200172 context: OptionContext.Deprecated,
173 killSwitchType: KillSwitchType.Deprecated,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +0200174 },
175 smei_sortdirection: {
176 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +0200177 context: OptionContext.Deprecated,
178 killSwitchType: KillSwitchType.Deprecated,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +0200179 },
180 forcemarkasread: {
181 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +0200182 context: OptionContext.Deprecated,
183 killSwitchType: KillSwitchType.Deprecated,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +0200184 },
185 disableunifiedprofiles: {
186 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +0200187 context: OptionContext.Deprecated,
188 killSwitchType: KillSwitchType.Deprecated,
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +0200189 },
Adrià Vilanova Martínez8423dfd2024-05-16 22:15:55 +0200190 nestedreplies: {
191 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +0200192 context: OptionContext.Deprecated,
193 killSwitchType: KillSwitchType.Deprecated,
Adrià Vilanova Martínez8423dfd2024-05-16 22:15:55 +0200194 },
Adrià Vilanova Martínez879d44a2024-05-17 15:30:03 +0200195 loaddrafts: {
196 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +0200197 context: OptionContext.Deprecated,
198 killSwitchType: KillSwitchType.Deprecated,
Adrià Vilanova Martínez879d44a2024-05-17 15:30:03 +0200199 },
200 // #!if ['chromium', 'chromium_mv3'].includes(browser_target)
201 blockdrafts: {
202 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +0200203 context: OptionContext.Deprecated,
204 killSwitchType: KillSwitchType.Deprecated,
Adrià Vilanova Martínez879d44a2024-05-17 15:30:03 +0200205 },
206 // #!endif
207 interopthreadpage: {
208 defaultValue: false,
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +0200209 context: OptionContext.Deprecated,
210 killSwitchType: KillSwitchType.Deprecated,
Adrià Vilanova Martínez879d44a2024-05-17 15:30:03 +0200211 },
212 interopthreadpage_mode: {
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +0200213 defaultValue: 'previous',
214 context: OptionContext.Deprecated,
215 killSwitchType: KillSwitchType.Ignore,
Adrià Vilanova Martínez879d44a2024-05-17 15:30:03 +0200216 },
Adrià Vilanova Martínez069287e2024-05-31 19:42:58 +0200217 fixpekb269560789: {
218 defaultValue: false,
219 context: OptionContext.Options,
220 killSwitchType: KillSwitchType.Option,
221 },
Adrià Vilanova Martíneza2ede8c2024-04-21 16:43:01 +0200222};
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +0200223
224export type OptionPrototype<T> = Omit<
225 OptionConfig<T>,
226 'codename' | 'optionalPermissions'
227>;
228export const optionsPrototype: Record<
229 string,
230 OptionPrototype<any>
231> = rawOptionConfigs;
232
233export const options = Object.entries(optionsPrototype).map(
234 ([codename, rawOption]) =>
235 new Option({
236 codename,
237 ...rawOption,
238 }),
239);
240
241export const optionsMap = new Map(
242 options.map((option) => [option.codename, option]),
243);
244
Adrià Vilanova Martínez542cc052024-05-25 22:41:25 +0200245export const optionCodenames = Object.keys(
246 rawOptionConfigs,
247) as OptionCodename[];
Adrià Vilanova Martínezad696762024-05-25 19:32:36 +0200248
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +0200249export type OptionCodename = keyof typeof rawOptionConfigs;
Adrià Vilanova Martínezad696762024-05-25 19:32:36 +0200250export type OptionsValues = {
Adrià Vilanova Martínez9344d612024-05-11 14:16:38 +0200251 [K in OptionCodename]: (typeof rawOptionConfigs)[K]['defaultValue'];
252};