@@ -54,30 +54,6 @@ type Browser = 'chrome' | 'iexplorer' | 'firefox' | 'safari' | 'opera';
54
54
* @param faker An existing faker instance.
55
55
*/
56
56
export function generate ( faker : Faker ) : string {
57
- const weightedKeyFromObject = < T extends Record < string , number > > (
58
- obj : T
59
- ) : keyof T => {
60
- //returns a random key from the passed object; keys are weighted by the decimal probability in their value
61
- const rand = faker . number . int ( 100 ) / 100 ;
62
- let min = 0 ;
63
- let max = 0 ;
64
- let return_val : string ;
65
-
66
- for ( const key in obj ) {
67
- if ( Object . prototype . hasOwnProperty . call ( obj , key ) ) {
68
- max = obj [ key ] + min ;
69
- return_val = key ;
70
- if ( rand >= min && rand <= max ) {
71
- break ;
72
- }
73
-
74
- min = min + obj [ key ] ;
75
- }
76
- }
77
-
78
- return return_val ;
79
- } ;
80
-
81
57
const randomLang = ( ) : string =>
82
58
faker . helpers . arrayElement ( [
83
59
'AB' ,
@@ -179,39 +155,29 @@ export function generate(faker: Faker): string {
179
155
] ) ;
180
156
181
157
const randomBrowserAndOS = ( ) : [ Browser , OS ] => {
182
- const browser : Browser = weightedKeyFromObject ( {
183
- chrome : 0.45132810566 ,
184
- iexplorer : 0.27477061836 ,
185
- firefox : 0.19384170608 ,
186
- safari : 0.06186781118 ,
187
- opera : 0.01574236955 ,
188
- } ) ;
189
- const os : OS = weightedKeyFromObject (
190
- {
191
- chrome : { win : 0.89 , mac : 0.09 , lin : 0.02 } ,
192
- firefox : { win : 0.83 , mac : 0.16 , lin : 0.01 } ,
193
- opera : { win : 0.91 , mac : 0.03 , lin : 0.06 } ,
194
- safari : { win : 0.04 , mac : 0.96 } ,
195
- iexplorer : { win : 1 } ,
196
- } [ browser ]
197
- ) ;
158
+ const browserToOsMap = {
159
+ chrome : [ 'win' , 'mac' , 'lin' ] ,
160
+ firefox : [ 'win' , 'mac' , 'lin' ] ,
161
+ opera : [ 'win' , 'mac' , 'lin' ] ,
162
+ safari : [ 'win' , 'mac' ] ,
163
+ iexplorer : [ 'win' ] ,
164
+ } satisfies Record < Browser , OS [ ] > ;
165
+ const browser : Browser = faker . helpers . objectKey ( browserToOsMap ) ;
166
+ const os : OS = faker . helpers . arrayElement ( browserToOsMap [ browser ] ) ;
198
167
199
168
return [ browser , os ] ;
200
169
} ;
201
170
202
- const randomProc = ( arch : OS ) : string => {
203
- const procs = {
204
- lin : [ 'i686' , 'x86_64' ] ,
205
- mac : { Intel : 0.48 , PPC : 0.01 , 'U; Intel' : 0.48 , 'U; PPC' : 0.01 } ,
206
- win : [ '' , 'WOW64' , 'Win64; x64' ] ,
207
- } ;
208
- const archValue = procs [ arch ] ;
209
- const proc = Array . isArray ( archValue )
210
- ? faker . helpers . arrayElement ( archValue )
211
- : weightedKeyFromObject ( archValue ) ;
212
-
213
- return proc ;
214
- } ;
171
+ const randomProc = ( arch : OS ) : string =>
172
+ faker . helpers . arrayElement (
173
+ (
174
+ {
175
+ lin : [ 'i686' , 'x86_64' ] ,
176
+ mac : [ 'Intel' , 'PPC' , 'U; Intel' , 'U; PPC' ] ,
177
+ win : [ '' , 'WOW64' , 'Win64; x64' ] ,
178
+ } satisfies Record < OS , string [ ] >
179
+ ) [ arch ]
180
+ ) ;
215
181
216
182
const randomRevision = ( dots : number ) : string => {
217
183
let return_val = '' ;
0 commit comments