aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDivisionByZero <[email protected]>2023-01-29 16:43:33 +0100
committerGitHub <[email protected]>2023-01-29 15:43:33 +0000
commitcec78775e995ece1e6004e8aece6304820126296 (patch)
tree8014a5dc9c4b64a7fea6b562346b93b22e16cbb5
parentac1a3de17c8840e80fe1609b44e26d287eec952c (diff)
downloadfaker-cec78775e995ece1e6004e8aece6304820126296.tar.xz
faker-cec78775e995ece1e6004e8aece6304820126296.zip
refactor(internet): remove weigths in userAgent (#1761)
-rw-r--r--src/modules/internet/user-agent.ts72
-rw-r--r--test/__snapshots__/internet.spec.ts.snap6
2 files changed, 22 insertions, 56 deletions
diff --git a/src/modules/internet/user-agent.ts b/src/modules/internet/user-agent.ts
index 58ef441b..43a1b3ce 100644
--- a/src/modules/internet/user-agent.ts
+++ b/src/modules/internet/user-agent.ts
@@ -54,30 +54,6 @@ type Browser = 'chrome' | 'iexplorer' | 'firefox' | 'safari' | 'opera';
* @param faker An existing faker instance.
*/
export function generate(faker: Faker): string {
- const weightedKeyFromObject = <T extends Record<string, number>>(
- obj: T
- ): keyof T => {
- //returns a random key from the passed object; keys are weighted by the decimal probability in their value
- const rand = faker.number.int(100) / 100;
- let min = 0;
- let max = 0;
- let return_val: string;
-
- for (const key in obj) {
- if (Object.prototype.hasOwnProperty.call(obj, key)) {
- max = obj[key] + min;
- return_val = key;
- if (rand >= min && rand <= max) {
- break;
- }
-
- min = min + obj[key];
- }
- }
-
- return return_val;
- };
-
const randomLang = (): string =>
faker.helpers.arrayElement([
'AB',
@@ -179,39 +155,29 @@ export function generate(faker: Faker): string {
]);
const randomBrowserAndOS = (): [Browser, OS] => {
- const browser: Browser = weightedKeyFromObject({
- chrome: 0.45132810566,
- iexplorer: 0.27477061836,
- firefox: 0.19384170608,
- safari: 0.06186781118,
- opera: 0.01574236955,
- });
- const os: OS = weightedKeyFromObject(
- {
- chrome: { win: 0.89, mac: 0.09, lin: 0.02 },
- firefox: { win: 0.83, mac: 0.16, lin: 0.01 },
- opera: { win: 0.91, mac: 0.03, lin: 0.06 },
- safari: { win: 0.04, mac: 0.96 },
- iexplorer: { win: 1 },
- }[browser]
- );
+ const browserToOsMap = {
+ chrome: ['win', 'mac', 'lin'],
+ firefox: ['win', 'mac', 'lin'],
+ opera: ['win', 'mac', 'lin'],
+ safari: ['win', 'mac'],
+ iexplorer: ['win'],
+ } satisfies Record<Browser, OS[]>;
+ const browser: Browser = faker.helpers.objectKey(browserToOsMap);
+ const os: OS = faker.helpers.arrayElement(browserToOsMap[browser]);
return [browser, os];
};
- const randomProc = (arch: OS): string => {
- const procs = {
- lin: ['i686', 'x86_64'],
- mac: { Intel: 0.48, PPC: 0.01, 'U; Intel': 0.48, 'U; PPC': 0.01 },
- win: ['', 'WOW64', 'Win64; x64'],
- };
- const archValue = procs[arch];
- const proc = Array.isArray(archValue)
- ? faker.helpers.arrayElement(archValue)
- : weightedKeyFromObject(archValue);
-
- return proc;
- };
+ const randomProc = (arch: OS): string =>
+ faker.helpers.arrayElement(
+ (
+ {
+ lin: ['i686', 'x86_64'],
+ mac: ['Intel', 'PPC', 'U; Intel', 'U; PPC'],
+ win: ['', 'WOW64', 'Win64; x64'],
+ } satisfies Record<OS, string[]>
+ )[arch]
+ );
const randomRevision = (dots: number): string => {
let return_val = '';
diff --git a/test/__snapshots__/internet.spec.ts.snap b/test/__snapshots__/internet.spec.ts.snap
index bd8121a4..d18b396b 100644
--- a/test/__snapshots__/internet.spec.ts.snap
+++ b/test/__snapshots__/internet.spec.ts.snap
@@ -68,7 +68,7 @@ exports[`internet > 42 > url > with slash appended 1`] = `"https://hasty-sherbet
exports[`internet > 42 > url > without slash appended and with http protocol 1`] = `"http://hasty-sherbet.org"`;
-exports[`internet > 42 > userAgent 1`] = `"Mozilla/5.0 (Windows; U; Windows NT 6.2) AppleWebKit/538.0.2 (KHTML, like Gecko) Chrome/29.0.815.0 Safari/538.0.2"`;
+exports[`internet > 42 > userAgent 1`] = `"Mozilla/5.0 (X11; Linux x86_64; rv:15.1) Gecko/20100101 Firefox/15.1.7"`;
exports[`internet > 42 > userName > noArgs 1`] = `"Garnet.Schinner73"`;
@@ -148,7 +148,7 @@ exports[`internet > 1211 > url > with slash appended 1`] = `"https://vicious-inf
exports[`internet > 1211 > url > without slash appended and with http protocol 1`] = `"http://vicious-infrastructure.org"`;
-exports[`internet > 1211 > userAgent 1`] = `"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6 rv:3.0; PT) AppleWebKit/538.2.0 (KHTML, like Gecko) Version/4.1.0 Safari/538.2.0"`;
+exports[`internet > 1211 > userAgent 1`] = `"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.3; Trident/4.0)"`;
exports[`internet > 1211 > userName > noArgs 1`] = `"Tito_Koelpin22"`;
@@ -228,7 +228,7 @@ exports[`internet > 1337 > url > with slash appended 1`] = `"https://fair-mile.c
exports[`internet > 1337 > url > without slash appended and with http protocol 1`] = `"http://fair-mile.com"`;
-exports[`internet > 1337 > userAgent 1`] = `"Mozilla/5.0 (Windows; U; Windows NT 6.1) AppleWebKit/532.0.0 (KHTML, like Gecko) Chrome/13.0.832.0 Safari/532.0.0"`;
+exports[`internet > 1337 > userAgent 1`] = `"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.7.0; rv:6.2) Gecko/20100101 Firefox/6.2.2"`;
exports[`internet > 1337 > userName > noArgs 1`] = `"Devyn21"`;