diff options
| author | Shinigami <[email protected]> | 2022-01-24 19:30:46 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-01-24 19:30:46 +0100 |
| commit | a3792251766ed9a87a59c760ea87f64792e54caa (patch) | |
| tree | 9a9dc7ee3b67bf08f9db7b14326385f118d39ca0 | |
| parent | be6ea47ffab857e3328bc620502b31732d53d82d (diff) | |
| download | faker-a3792251766ed9a87a59c760ea87f64792e54caa.tar.xz faker-a3792251766ed9a87a59c760ea87f64792e54caa.zip | |
chore: migrate vendor (#254)
| -rw-r--r-- | package.json | 3 | ||||
| -rw-r--r-- | src/internet.ts | 2 | ||||
| -rw-r--r-- | src/mersenne.ts | 2 | ||||
| -rw-r--r-- | src/unique.ts | 13 | ||||
| -rw-r--r-- | src/vendor/mersenne.ts (renamed from vendor/mersenne.js) | 142 | ||||
| -rw-r--r-- | src/vendor/unique.ts (renamed from vendor/unique.js) | 64 | ||||
| -rw-r--r-- | src/vendor/user-agent.ts (renamed from vendor/user-agent.js) | 170 |
7 files changed, 208 insertions, 188 deletions
diff --git a/package.json b/package.json index 30896e6f..c06e478f 100644 --- a/package.json +++ b/package.json @@ -31,8 +31,7 @@ "index.js", "lib", "locale", - "tsconfig.json", - "vendor" + "tsconfig.json" ], "scripts": { "preinstall": "npx only-allow pnpm", diff --git a/src/internet.ts b/src/internet.ts index 6384b155..3b7f0291 100644 --- a/src/internet.ts +++ b/src/internet.ts @@ -1,6 +1,6 @@ import type { Faker } from '.'; -const random_ua = require('../vendor/user-agent'); +import * as random_ua from './vendor/user-agent'; export class Internet { constructor(private readonly faker: Faker) { diff --git a/src/mersenne.ts b/src/mersenne.ts index fe7fbb44..7f42501e 100644 --- a/src/mersenne.ts +++ b/src/mersenne.ts @@ -1,4 +1,4 @@ -const Gen = require('../vendor/mersenne').MersenneTwister19937; +import Gen from './vendor/mersenne'; export class Mersenne { private gen = new Gen(); diff --git a/src/unique.ts b/src/unique.ts index c077ea58..382d2e2d 100644 --- a/src/unique.ts +++ b/src/unique.ts @@ -1,4 +1,4 @@ -const uniqueExec = require('../vendor/unique'); +import * as uniqueExec from './vendor/unique'; export class Unique { // maximum time unique.exec will attempt to run before aborting @@ -25,17 +25,18 @@ export class Unique { * * @method unique */ - unique( - method: any, - args: any, + unique<Method extends (args: Args) => string, Args extends any[]>( + method: Method, + args: Args, opts?: { startTime?: number; maxTime?: number; maxRetries?: number; currentIterations?: number; - [key: string]: any; + exclude?: string | string[]; + compare?: (obj: Record<string, string>, key: string) => 0 | -1; } - ): any { + ): string { opts ||= {}; opts.startTime = new Date().getTime(); if (typeof opts.maxTime !== 'number') { diff --git a/vendor/mersenne.js b/src/vendor/mersenne.ts index 3ce1dec5..6a94522b 100644 --- a/vendor/mersenne.js +++ b/src/vendor/mersenne.ts @@ -7,89 +7,91 @@ // lines commented with /* and */ are original comments. // lines commented with // are additional comments in this JavaScript version. // before using this version, create at least one instance of MersenneTwister19937 class, and initialize the each state, given below in c comments, of all the instances. -/* - A C-program for MT19937, with initialization improved 2002/1/26. - Coded by Takuji Nishimura and Makoto Matsumoto. - - Before using, initialize the state by using init_genrand(seed) - or init_by_array(init_key, key_length). - - Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. The names of its contributors may not be used to endorse or promote - products derived from this software without specific prior written - permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +/* + * A C-program for MT19937, with initialization improved 2002/1/26. + * Coded by Takuji Nishimura and Makoto Matsumoto. + * + * Before using, initialize the state by using init_genrand(seed) + * or init_by_array(init_key, key_length). + * + * Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. The names of its contributors may not be used to endorse or promote + * products derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * Any feedback is very welcome. + * http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html + * email: m-mat @ math.sci.hiroshima-u.ac.jp (remove space) + */ - Any feedback is very welcome. - http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html - email: m-mat @ math.sci.hiroshima-u.ac.jp (remove space) -*/ +let dbg: number; -function MersenneTwister19937() { +function MersenneTwister19937(): void { /* constants should be scoped inside the class */ - var N, M, MATRIX_A, UPPER_MASK, LOWER_MASK; /* Period parameters */ //c//#define N 624 //c//#define M 397 //c//#define MATRIX_A 0x9908b0dfUL /* constant vector a */ //c//#define UPPER_MASK 0x80000000UL /* most significant w-r bits */ //c//#define LOWER_MASK 0x7fffffffUL /* least significant r bits */ - N = 624; - M = 397; - MATRIX_A = 0x9908b0df; /* constant vector a */ - UPPER_MASK = 0x80000000; /* most significant w-r bits */ - LOWER_MASK = 0x7fffffff; /* least significant r bits */ + const N = 624; + const M = 397; + const MATRIX_A = 0x9908b0df; /* constant vector a */ + const UPPER_MASK = 0x80000000; /* most significant w-r bits */ + const LOWER_MASK = 0x7fffffff; /* least significant r bits */ //c//static unsigned long mt[N]; /* the array for the state vector */ //c//static int mti=N+1; /* mti==N+1 means mt[N] is not initialized */ - var mt = new Array(N); /* the array for the state vector */ - var mti = N + 1; /* mti==N+1 means mt[N] is not initialized */ + const mt: number[] = new Array(N); /* the array for the state vector */ + let mti = N + 1; /* mti==N+1 means mt[N] is not initialized */ - function unsigned32(n1) { + function unsigned32(n1: number): number { // returns a 32-bits unsiged integer from an operand to which applied a bit operator. return n1 < 0 ? (n1 ^ UPPER_MASK) + UPPER_MASK : n1; } - function subtraction32(n1, n2) { + function subtraction32(n1: number, n2: number): number { // emulates lowerflow of a c 32-bits unsiged integer variable, instead of the operator -. these both arguments must be non-negative integers expressible using unsigned 32 bits. return n1 < n2 ? unsigned32((0x100000000 - (n2 - n1)) & 0xffffffff) : n1 - n2; } - function addition32(n1, n2) { + function addition32(n1: number, n2: number): number { // emulates overflow of a c 32-bits unsiged integer variable, instead of the operator +. these both arguments must be non-negative integers expressible using unsigned 32 bits. return unsigned32((n1 + n2) & 0xffffffff); } - function multiplication32(n1, n2) { + function multiplication32(n1: number, n2: number): number { // emulates overflow of a c 32-bits unsiged integer variable, instead of the operator *. these both arguments must be non-negative integers expressible using unsigned 32 bits. - var sum = 0; - for (var i = 0; i < 32; ++i) { + let sum = 0; + for (let i = 0; i < 32; ++i) { if ((n1 >>> i) & 0x1) { sum = addition32(sum, unsigned32(n2 << i)); } @@ -99,7 +101,7 @@ function MersenneTwister19937() { /* initializes mt[N] with a seed */ //c//void init_genrand(unsigned long s) - this.init_genrand = function (s) { + this.init_genrand = function (s: number) { //c//mt[0]= s & 0xffffffff; mt[0] = unsigned32(s & 0xffffffff); for (mti = 1; mti < N; mti++) { @@ -128,13 +130,11 @@ function MersenneTwister19937() { /* slight change for C++, 2004/2/26 */ //c//void init_by_array(unsigned long init_key[], int key_length) this.init_by_array = function (init_key, key_length) { - //c//int i, j, k; - var i, j, k; //c//init_genrand(19650218); this.init_genrand(19650218); - i = 1; - j = 0; - k = N > key_length ? N : key_length; + let i = 1; + let j = 0; + let k = N > key_length ? N : key_length; for (; k; k--) { //c//mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1664525)) //c// + init_key[j] + j; /* non linear */ @@ -189,20 +189,20 @@ function MersenneTwister19937() { }; /* moved outside of genrand_int32() by jwatte 2010-11-17; generate less garbage */ - var mag01 = [0x0, MATRIX_A]; + const mag01 = [0x0, MATRIX_A]; /* generates a random number on [0,0xffffffff]-interval */ //c//unsigned long genrand_int32(void) this.genrand_int32 = function () { //c//unsigned long y; //c//static unsigned long mag01[2]={0x0UL, MATRIX_A}; - var y; + let y: number; /* mag01[x] = x * MATRIX_A for x=0,1 */ if (mti >= N) { /* generate N words at one time */ //c//int kk; - var kk; + let kk: number; if (mti == N + 1) { /* if init_genrand() has not been called, */ @@ -246,14 +246,14 @@ function MersenneTwister19937() { /* generates a random number on [0,0x7fffffff]-interval */ //c//long genrand_int31(void) - this.genrand_int31 = function () { + this.genrand_int31 = function (): number { //c//return (genrand_int32()>>1); return this.genrand_int32() >>> 1; }; /* generates a random number on [0,1]-real-interval */ //c//double genrand_real1(void) - this.genrand_real1 = function () { + this.genrand_real1 = function (): number { //c//return genrand_int32()*(1.0/4294967295.0); return this.genrand_int32() * (1.0 / 4294967295.0); /* divided by 2^32-1 */ @@ -261,7 +261,7 @@ function MersenneTwister19937() { /* generates a random number on [0,1)-real-interval */ //c//double genrand_real2(void) - this.genrand_real2 = function () { + this.genrand_real2 = function (): number { //c//return genrand_int32()*(1.0/4294967296.0); return this.genrand_int32() * (1.0 / 4294967296.0); /* divided by 2^32 */ @@ -269,7 +269,7 @@ function MersenneTwister19937() { /* generates a random number on (0,1)-real-interval */ //c//double genrand_real3(void) - this.genrand_real3 = function () { + this.genrand_real3 = function (): number { //c//return ((genrand_int32()) + 0.5)*(1.0/4294967296.0); return (this.genrand_int32() + 0.5) * (1.0 / 4294967296.0); /* divided by 2^32 */ @@ -277,9 +277,9 @@ function MersenneTwister19937() { /* generates a random number on [0,1) with 53-bit resolution*/ //c//double genrand_res53(void) - this.genrand_res53 = function () { + this.genrand_res53 = function (): number { //c//unsigned long a=genrand_int32()>>5, b=genrand_int32()>>6; - var a = this.genrand_int32() >>> 5, + const a = this.genrand_int32() >>> 5, b = this.genrand_int32() >>> 6; return (a * 67108864.0 + b) * (1.0 / 9007199254740992.0); }; @@ -289,4 +289,4 @@ function MersenneTwister19937() { // Exports: Public API // Export the twister class -exports.MersenneTwister19937 = MersenneTwister19937; +export default MersenneTwister19937; diff --git a/vendor/unique.js b/src/vendor/unique.ts index 2a956f5d..1fc80d5f 100644 --- a/vendor/unique.js +++ b/src/vendor/unique.ts @@ -1,30 +1,31 @@ -// the `unique` module -var unique = {}; - // global results store // currently uniqueness is global to entire faker instance // this means that faker should currently *never* return duplicate values across all API methods when using `Faker.unique` // it's possible in the future that some users may want to scope found per function call instead of faker instance -var found = {}; +const found: Record<string, string> = {}; // global exclude list of results // defaults to nothing excluded -var exclude = []; +const exclude: string[] = []; // current iteration or retries of unique.exec ( current loop depth ) -var currentIterations = 0; +let currentIterations = 0; // uniqueness compare function // default behavior is to check value as key against object hash -var defaultCompare = function (obj, key) { +function defaultCompare<T, Key extends keyof T>(obj: T, key: Key): 0 | -1 { if (typeof obj[key] === 'undefined') { return -1; } return 0; -}; +} // common error handler for messages -unique.errorMessage = function (now, code, opts) { +function errorMessage( + now: number, + code: string, + opts: { startTime: number } +): never { console.error('error', code); console.log( 'found', @@ -39,12 +40,23 @@ unique.errorMessage = function (now, code, opts) { code + ' for uniqueness check \n\nMay not be able to generate any more unique values with current settings. \nTry adjusting maxTime or maxRetries parameters for faker.unique()' ); -}; - -unique.exec = function (method, args, opts) { - //console.log(currentIterations) - - var now = new Date().getTime(); +} + +// TODO @Shinigami92 2022-01-24: We should investigate deeper into the types +// Especially the `opts.compare` parameter and `Result` type +export function exec<Method extends (args: Args) => string, Args extends any[]>( + method: Method, + args: Args, + opts: { + maxTime?: number; + maxRetries?: number; + exclude?: string | string[]; + compare?: (obj: Record<string, string>, key: string) => 0 | -1; + currentIterations?: number; + startTime?: number; + } +): string { + const now = new Date().getTime(); opts = opts || {}; opts.maxTime = opts.maxTime || 3; @@ -60,7 +72,7 @@ unique.exec = function (method, args, opts) { opts.startTime = new Date().getTime(); } - var startTime = opts.startTime; + const startTime = opts.startTime; // support single exclude argument as string if (typeof opts.exclude === 'string') { @@ -73,19 +85,25 @@ unique.exec = function (method, args, opts) { // console.log(now - startTime) if (now - startTime >= opts.maxTime) { - return unique.errorMessage(now, 'Exceeded maxTime:' + opts.maxTime, opts); + return errorMessage( + now, + 'Exceeded maxTime:' + opts.maxTime, + // @ts-expect-error: we know that opts.startTime is defined + opts + ); } if (opts.currentIterations >= opts.maxRetries) { - return unique.errorMessage( + return errorMessage( now, 'Exceeded maxRetries:' + opts.maxRetries, + // @ts-expect-error: we know that opts.startTime is defined opts ); } - // execute the provided method to find a potential satifised value - var result = method.apply(this, args); + // execute the provided method to find a potential satisfied value + const result: string = method.apply(this, args); // if the result has not been previously found, add it to the found array and return the value as it's unique if ( @@ -98,8 +116,6 @@ unique.exec = function (method, args, opts) { } else { // console.log('conflict', result); opts.currentIterations++; - return unique.exec(method, args, opts); + return exec(method, args, opts); } -}; - -module.exports = unique; +} diff --git a/vendor/user-agent.js b/src/vendor/user-agent.ts index 487d36f4..4aef3381 100644 --- a/vendor/user-agent.js +++ b/src/vendor/user-agent.ts @@ -1,35 +1,40 @@ /* - -Copyright (c) 2012-2014 Jeffrey Mealo - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and -to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the -Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ------------------------------------------------------------------------------------------------------------------------- - -Based loosely on Luka Pusic's PHP Script: http://360percents.com/posts/php-random-user-agent-generator/ - -The license for that script is as follows: - -"THE BEER-WARE LICENSE" (Revision 42): - -<[email protected]> wrote this file. As long as you retain this notice you can do whatever you want with this stuff. -If we meet some day, and you think this stuff is worth it, you can buy me a beer in return. Luka Pusic - -*/ - -exports.generate = function generate(faker) { - function rnd(a, b) { + * Copyright (c) 2012-2014 Jeffrey Mealo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and + * to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE + * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * ------------------------------------------------------------------------------------------------------------------------ + * + * Based loosely on Luka Pusic's PHP Script: http://360percents.com/posts/php-random-user-agent-generator/ + * + * The license for that script is as follows: + * + * "THE BEER-WARE LICENSE" (Revision 42): + * + * <[email protected]> wrote this file. As long as you retain this notice you can do whatever you want with this stuff. + * If we meet some day, and you think this stuff is worth it, you can buy me a beer in return. Luka Pusic + */ + +import type { Faker } from '..'; + +export type Arch = 'lin' | 'mac' | 'win'; + +export function generate(faker: Faker) { + function rnd( + a?: string[] | number | Record<string, number>, + b?: number + ): string | number { //calling rnd() with no arguments is identical to rnd(0, 100) a = a || 0; b = b || 100; @@ -39,21 +44,20 @@ exports.generate = function generate(faker) { return faker.datatype.number({ min: a, max: b }); } - if (Object.prototype.toString.call(a) === '[object Array]') { + if (Array.isArray(a)) { //returns a random element from array (a), even weighting return faker.random.arrayElement(a); } if (a && typeof a === 'object') { //returns a random key from the passed object; keys are weighted by the decimal probability in their value - return (function (obj) { - var rand = rnd(0, 100) / 100, - min = 0, - max = 0, - key, - return_val; + return ((obj) => { + const rand = (rnd(0, 100) as number) / 100; + let min = 0; + let max = 0; + let return_val: string; - for (key in obj) { + for (let key in obj) { if (obj.hasOwnProperty(key)) { max = obj[key] + min; return_val = key; @@ -73,7 +77,7 @@ exports.generate = function generate(faker) { ); } - function randomLang() { + function randomLang(): string | number { return rnd([ 'AB', 'AF', @@ -174,27 +178,27 @@ exports.generate = function generate(faker) { ]); } - function randomBrowserAndOS() { - var browser = rnd({ - chrome: 0.45132810566, - iexplorer: 0.27477061836, - firefox: 0.19384170608, - safari: 0.06186781118, - opera: 0.01574236955, - }), - os = { - 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'], - }; + function randomBrowserAndOS(): Array<string | number> { + const browser = rnd({ + chrome: 0.45132810566, + iexplorer: 0.27477061836, + firefox: 0.19384170608, + safari: 0.06186781118, + opera: 0.01574236955, + }); + const os = { + 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'], + }; return [browser, rnd(os[browser])]; } - function randomProc(arch) { - var procs = { + function randomProc(arch: Arch): string | number { + 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'], @@ -202,50 +206,50 @@ exports.generate = function generate(faker) { return rnd(procs[arch]); } - function randomRevision(dots) { - var return_val = ''; + function randomRevision(dots: number): string { + let return_val = ''; //generate a random revision //dots = 2 returns .x.y where x & y are between 0 and 9 - for (var x = 0; x < dots; x++) { + for (let x = 0; x < dots; x++) { return_val += '.' + rnd(0, 9); } return return_val; } - var version_string = { - net: function () { + const version_string = { + net() { return [rnd(1, 4), rnd(0, 9), rnd(10000, 99999), rnd(0, 9)].join('.'); }, - nt: function () { + nt() { return rnd(5, 6) + '.' + rnd(0, 3); }, - ie: function () { + ie() { return rnd(7, 11); }, - trident: function () { + trident() { return rnd(3, 7) + '.' + rnd(0, 1); }, - osx: function (delim) { + osx(delim?: string) { return [10, rnd(5, 10), rnd(0, 9)].join(delim || '.'); }, - chrome: function () { + chrome() { return [rnd(13, 39), 0, rnd(800, 899), 0].join('.'); }, - presto: function () { + presto() { return '2.9.' + rnd(160, 190); }, - presto2: function () { + presto2() { return rnd(10, 12) + '.00'; }, - safari: function () { + safari() { return rnd(531, 538) + '.' + rnd(0, 2) + '.' + rnd(0, 2); }, }; - var browser = { - firefox: function firefox(arch) { + const browser = { + firefox(arch: Arch): string { //https://developer.mozilla.org/en-US/docs/Gecko_user_agent_string_reference - var firefox_ver = rnd(5, 15) + randomRevision(2), + const firefox_ver = rnd(5, 15) + randomRevision(2), gecko_ver = 'Gecko/20100101 Firefox/' + firefox_ver, proc = randomProc(arch), os_ver = @@ -265,8 +269,8 @@ exports.generate = function generate(faker) { ); }, - iexplorer: function iexplorer() { - var ver = version_string.ie(); + iexplorer(): string { + const ver = version_string.ie(); if (ver >= 11) { //http://msdn.microsoft.com/en-us/library/ie/hh869301(v=vs.85).aspx @@ -292,9 +296,9 @@ exports.generate = function generate(faker) { ); }, - opera: function opera(arch) { + opera(arch: Arch): string { //http://www.opera.com/docs/history/ - var presto_ver = + const presto_ver = ' Presto/' + version_string.presto() + ' Version/' + @@ -326,8 +330,8 @@ exports.generate = function generate(faker) { return 'Opera/' + rnd(9, 14) + '.' + rnd(0, 99) + ' ' + os_ver; }, - safari: function safari(arch) { - var safari = version_string.safari(), + safari(arch: Arch): string { + const safari = version_string.safari(), ver = rnd(4, 7) + '.' + rnd(0, 1) + '.' + rnd(0, 10), os_ver = arch === 'mac' @@ -354,8 +358,8 @@ exports.generate = function generate(faker) { ); }, - chrome: function chrome(arch) { - var safari = version_string.safari(), + chrome(arch: Arch): string { + const safari = version_string.safari(), os_ver = arch === 'mac' ? '(Macintosh; ' + @@ -380,6 +384,6 @@ exports.generate = function generate(faker) { }, }; - var random = randomBrowserAndOS(); + const random = randomBrowserAndOS(); return browser[random[0]](random[1]); -}; +} |
