From c75fa679ea67203532dac2df0b7e400e891b546c Mon Sep 17 00:00:00 2001 From: gu Date: Fri, 29 Jan 2016 17:14:40 +0100 Subject: [PATCH 1/4] Added definition for random-js --- random-js/random-js.d.ts | 61 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 random-js/random-js.d.ts diff --git a/random-js/random-js.d.ts b/random-js/random-js.d.ts new file mode 100644 index 000000000..9b903a6bf --- /dev/null +++ b/random-js/random-js.d.ts @@ -0,0 +1,61 @@ +// Type definitions for random-js 1.0.8 +// Project: https://github.com/ckknight/random-js +// Definitions by: Gustavo Di Pietro + +declare module random { + export function Engine(): number; + export interface Engine { + + } + + export function MT19937 (): number; + export interface MT19937 extends Engine{ + seed (value: number): Engine; + seedWithArray(array: Array): Engine + autoSeed(): Engine; + discard(count: number): Engine; + getUseCount(): Engine; + } + + export class Random { + constructor (engine?: Engine); + + static engines: { + nativeMath: Engine, + browserCrypto: Engine, + mt19937: () => MT19937 + } + + static integer(min: number, max: number): (engine: Engine) => number; + static real(min: number, max: number, inclusive: boolean): (engine: Engine) => number; + static bool(percentage?: number): (engine: Engine) => boolean; + static bool(numerator: number, denominator: number): (engine: Engine) => boolean; + static pick(engine: Engine, array: Array, begin?: number, end?: number): T; + static picker(array: Array, begin?: number, end?: number): (engine: Engine) => T; + static shuffle(engine: Engine, array: Array): Array; + static sample(engine: Engine, population: Array, sampleSize: number): Array; + static die(sideCount: number): (engine: Engine) => number; + static dice(sideCount: number, dieCount: number): (engine: Engine) => number; + static uuid4(engine: Engine): string; + static string(engine: Engine, length: number): string; + static string(pool: string, length: number): (engine: Engine, length: number) => string; + static hex(upperCase?: boolean): (engine: Engine, length: number) => string; + static date(start: Date, end: Date): (engine: Engine) => Date; + + integer(min: number, max: number): number; + real(min: number, max: number, inclusive: boolean): number; + bool(percentage?: number): (engine: Engine) => boolean; + bool(numerator: number, denominator: number): boolean; + pick(engine: Engine, array: Array, begin?: number, end?: number): T; + picker(array: Array, begin?: number, end?: number): (engine: Engine) => T; + shuffle(engine: Engine, array: Array): Array; + sample(engine: Engine, population: Array, sampleSize: number): Array; + die(sideCount: number): (engine: Engine) => number; + dice(sideCount: number, dieCount: number): number; + uuid4(engine: Engine): string; + string(engine: Engine, length: number): string; + string(pool: string, length: number): string; + hex(upperCase?: boolean): string; + date(start: Date, end: Date): Date; + } +} From 6cbfed02a3f8214673eb3cc4a69e5c32adff0cf2 Mon Sep 17 00:00:00 2001 From: gu Date: Fri, 29 Jan 2016 17:19:55 +0100 Subject: [PATCH 2/4] Added definition comment in header --- random-js/random-js.d.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/random-js/random-js.d.ts b/random-js/random-js.d.ts index 9b903a6bf..c03d6af0f 100644 --- a/random-js/random-js.d.ts +++ b/random-js/random-js.d.ts @@ -1,6 +1,7 @@ // Type definitions for random-js 1.0.8 // Project: https://github.com/ckknight/random-js // Definitions by: Gustavo Di Pietro +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped declare module random { export function Engine(): number; From e0dbfeeb395c8cb2f4df9d660f4118e99ec1dcc8 Mon Sep 17 00:00:00 2001 From: gu Date: Mon, 1 Feb 2016 10:29:36 +0100 Subject: [PATCH 3/4] added test --- random-js/random-js-tests.ts | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 random-js/random-js-tests.ts diff --git a/random-js/random-js-tests.ts b/random-js/random-js-tests.ts new file mode 100644 index 000000000..0d4d82b7f --- /dev/null +++ b/random-js/random-js-tests.ts @@ -0,0 +1,29 @@ +/// +/// + +// Examples taken from the documentation at https://github.com/ckknight/random-js + +import Random = require("random-js"); + +// create a Mersenne Twister-19937 that is auto-seeded based on time and other random values +var engine: Engine = Random.engines.mt19937().autoSeed(); +// create a distribution that will consistently produce integers within inclusive range [0, 99]. +var distribution: Function = Random.integer(0, 99); +// generate a number that is guaranteed to be within [0, 99] without any particular bias. +function generateNaturalLessThan100(): number { + return distribution(engine); +} + +// using essentially Math.random() +var engine2: Engine = Random.engines.nativeMath; +// lower-case Hex string distribution +var distribution2: Function = Random.hex(false); +// generate a 40-character hex string +function generateSHA1(): string { + return distribution(40); +} + +var r: Random = new Random(Random.engines.mt19937().seedWithArray([0x12345678, 0x90abcdef])); +var value = r.integer(0, 99); + +r = new Random(); // same as new Random(Random.engines.nativeMath) From a5665d15abad47b44f1b1924bff8697e5d401c90 Mon Sep 17 00:00:00 2001 From: gu Date: Mon, 1 Feb 2016 10:39:50 +0100 Subject: [PATCH 4/4] fix --- random-js/random-js-tests.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/random-js/random-js-tests.ts b/random-js/random-js-tests.ts index 0d4d82b7f..9ee80883b 100644 --- a/random-js/random-js-tests.ts +++ b/random-js/random-js-tests.ts @@ -1,11 +1,11 @@ /// -/// +/// // Examples taken from the documentation at https://github.com/ckknight/random-js - -import Random = require("random-js"); - // create a Mersenne Twister-19937 that is auto-seeded based on time and other random values +import Engine = random.Engine; +import Random = random.Random; + var engine: Engine = Random.engines.mt19937().autoSeed(); // create a distribution that will consistently produce integers within inclusive range [0, 99]. var distribution: Function = Random.integer(0, 99);