1use crate::utils::seeder;
2use wasm_bindgen::prelude::*;
3
4#[wasm_bindgen]
5pub fn windows_version() -> String {
6 WINDOWS_VERSIONS[seeder::gen_range(0..WINDOWS_VERSIONS_LEN)].to_string()
7}
8
9#[wasm_bindgen(js_name = windows_client_version)]
10pub fn client_version() -> String {
11 CLIENT_VERSIONS[seeder::gen_range(0..CLIENT_VERSIONS_LEN)].to_string()
12}
13
14#[wasm_bindgen(js_name = windows_server_version)]
15pub fn server_version() -> String {
16 SERVER_VERSIONS[seeder::gen_range(0..SERVER_VERSIONS_LEN)].to_string()
17}
18
19#[wasm_bindgen(js_name = windows_specialized_version)]
20pub fn specialized_version() -> String {
21 SPECIALIZED_VERSIONS[seeder::gen_range(0..SPECIALIZED_VERSIONS_LEN)].to_string()
22}
23
24#[wasm_bindgen(js_name = windows_device_version)]
25pub fn device_version() -> String {
26 DEVICE_VERSIONS[seeder::gen_range(0..DEVICE_VERSIONS_LEN)].to_string()
27}
28static WINDOWS_VERSIONS: [&'static str; 88] = [
29 "Windows 1.0",
30 "Windows 2.x",
31 "Windows 3.0",
32 "Windows 3.1x",
33 "Windows NT 3.1",
34 "Windows NT 3.5x",
35 "Windows NT 4.0",
36 "Windows NT 4.0 Terminal Server Edition",
37 "Windows 95",
38 "Windows 98",
39 "Windows CE 1.0",
40 "Windows CE 2.0",
41 "Windows CE 3.0",
42 "Windows CE 4.0",
43 "Windows CE 4.1",
44 "Windows CE 5.0",
45 "Windows CE 6.0",
46 "Windows Mobile 6.0",
47 "Windows Mobile 6.1",
48 "Windows Mobile 6.5",
49 "Windows Mobile 2003",
50 "Windows XP",
51 "Windows XP 64-Bit Edition",
52 "Windows XP Embedded",
53 "Windows XP Media Center Edition",
54 "Windows XP Professional x64 Edition",
55 "Windows XP Starter Edition",
56 "Windows XP Tablet PC Edition",
57 "Windows Vista",
58 "Windows 7",
59 "Windows 8",
60 "Windows 8.1",
61 "Windows 10",
62 "Windows 10 Anniversary Update",
63 "Windows 10 April 2018 Update",
64 "Windows 10 Creators Update",
65 "Windows 10 Fall Creators Update",
66 "Windows 10 IoT Core",
67 "Windows 10 May 2019 Update",
68 "Windows 10 May 2020 Update",
69 "Windows 10 May 2021 Update",
70 "Windows 10 Mobile",
71 "Windows 10 November 2019 Update",
72 "Windows 10 November 2021 Update",
73 "Windows 10 October 2018 Update",
74 "Windows 10 October 2020 Update",
75 "Windows 10 original release",
76 "Windows 10X",
77 "Windows 11",
78 "Windows Server 2003",
79 "Windows Server 2008",
80 "Windows Server 2008 R2",
81 "Windows Server 2012",
82 "Windows Server 2012 R2",
83 "Windows Server 2016",
84 "Windows Server 2019",
85 "Windows Server 2022",
86 "Windows Server version 1709",
87 "Windows Server version 1803",
88 "Windows Server version 1903",
89 "Windows Server version 1909",
90 "Windows Server version 2004",
91 "Windows Server version 20H2",
92 "Windows Small Business Server 2000",
93 "Windows Small Business Server 2003",
94 "Windows Small Business Server 2008",
95 "Windows Small Business Server 2011",
96 "Windows Embedded 7",
97 "Windows Embedded 8.1",
98 "Windows Embedded 8",
99 "Windows Embedded Compact 2013",
100 "Windows Embedded Compact 7",
101 "Windows Embedded for Point of Service",
102 "Windows Embedded POSReady 2009",
103 "Windows Embedded Standard 2009",
104 "Windows Essential Business Server 2008",
105 "Windows Fundamentals for Legacy PCs",
106 "Windows Home Server",
107 "Windows Home Server 2011",
108 "Windows MultiPoint Server 2010",
109 "Windows MultiPoint Server 2011",
110 "Windows MultiPoint Server 2012",
111 "Windows Thin PC",
112 "Windows Polaris",
113 "Windows Nashville",
114 "Windows Neptune",
115 "Windows Me",
116 "Windows 2000",
117];
118static WINDOWS_VERSIONS_LEN: usize = WINDOWS_VERSIONS.len();
119
120static CLIENT_VERSIONS: [&'static str; 22] = [
121 "Windows 1.0",
122 "Windows 2.0",
123 "Windows 2.1",
124 "Windows 3.0",
125 "Windows 3.1",
126 "Windows 3.2",
127 "Windows NT 3.1",
128 "Windows NT 3.5",
129 "Windows NT 3.51",
130 "Windows 95",
131 "Windows NT 4.0",
132 "Windows 98",
133 "Windows Me",
134 "Windows 2000",
135 "Windows XP",
136 "Windows XP Professional x64 Edition",
137 "Windows Vista",
138 "Windows 7",
139 "Windows 8",
140 "Windows 8.1",
141 "Windows 10",
142 "Windows 11",
143];
144static CLIENT_VERSIONS_LEN: usize = CLIENT_VERSIONS.len();
145
146static SERVER_VERSIONS: [&'static str; 14] = [
147 "Windows NT 3.1",
148 "Windows NT 3.5",
149 "Windows NT 3.51",
150 "Windows 2000 Server",
151 "Windows NT 4.0",
152 "Windows Server 2003",
153 "Windows Server 2003 R2",
154 "Windows Server 2008",
155 "Windows Server 2008 R2",
156 "Windows Server 2012",
157 "Windows Server 2012 R2",
158 "Windows Server 2016",
159 "Windows Server 2019",
160 "Windows Server 2022",
161];
162static SERVER_VERSIONS_LEN: usize = SERVER_VERSIONS.len();
163
164static SPECIALIZED_VERSIONS: [&'static str; 3] = [
165 "Windows Embedded",
166 "Windows PE",
167 "Windows Fundamentals for Legacy PCs",
168];
169static SPECIALIZED_VERSIONS_LEN: usize = SPECIALIZED_VERSIONS.len();
170
171static DEVICE_VERSIONS: [&'static str; 16] = [
172 "Windows RT 8.1",
173 "Windows RT 8",
174 "Windows 7 Starter",
175 "Windows Vista Starter",
176 "Windows XP Media Center Edition",
177 "Windows Embedded Industry",
178 "Windows NT 4.0 Embedded",
179 "Windows XP Embedded",
180 "Windows Embedded for Point of Service",
181 "Windows Embedded Standard 2009",
182 "Windows Embedded POSReady 2009",
183 "Windows Embedded Standard 7",
184 "Windows Embedded POSReady 7",
185 "Windows Embedded 8 Industry",
186 "Windows Embedded 8.1 Industry",
187 "Windows 10 IoT",
188];
189static DEVICE_VERSIONS_LEN: usize = DEVICE_VERSIONS.len();