inray 0.0.6 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +32 -29
- package/README.md +467 -55
- package/dist/db/postgres/types/index.d.ts +2 -1
- package/dist/random/_pcg32.d.ts +61 -0
- package/dist/random/_pcg32.d.ts.map +1 -0
- package/dist/random/_pcg32.js +122 -0
- package/dist/random/_pcg32.js.map +1 -0
- package/dist/random/_platform.d.ts +12 -0
- package/dist/random/_platform.d.ts.map +1 -0
- package/dist/random/_platform.js +13 -0
- package/dist/random/_platform.js.map +1 -0
- package/dist/random/_seed_bytes_from_uint64.d.ts +15 -0
- package/dist/random/_seed_bytes_from_uint64.d.ts.map +1 -0
- package/dist/random/_seed_bytes_from_uint64.js +23 -0
- package/dist/random/_seed_bytes_from_uint64.js.map +1 -0
- package/dist/random/_test_utils.d.ts +15 -0
- package/dist/random/_test_utils.d.ts.map +1 -0
- package/dist/random/_test_utils.js +92 -0
- package/dist/random/_test_utils.js.map +1 -0
- package/dist/random/_types.d.ts +50 -0
- package/dist/random/_types.d.ts.map +1 -0
- package/dist/random/_types.js +10 -0
- package/dist/random/_types.js.map +1 -0
- package/dist/random/between.d.ts +33 -0
- package/dist/random/between.d.ts.map +1 -0
- package/dist/random/between.js +44 -0
- package/dist/random/between.js.map +1 -0
- package/dist/random/get_random_values_seeded.d.ts +31 -0
- package/dist/random/get_random_values_seeded.d.ts.map +1 -0
- package/dist/random/get_random_values_seeded.js +34 -0
- package/dist/random/get_random_values_seeded.js.map +1 -0
- package/dist/random/integer_between.d.ts +33 -0
- package/dist/random/integer_between.d.ts.map +1 -0
- package/dist/random/integer_between.js +34 -0
- package/dist/random/integer_between.js.map +1 -0
- package/dist/random/internal/_testing.d.ts +15 -0
- package/dist/random/internal/_testing.d.ts.map +1 -0
- package/dist/random/internal/_testing.js +27 -0
- package/dist/random/internal/_testing.js.map +1 -0
- package/dist/random/mod.d.ts +45 -0
- package/dist/random/mod.d.ts.map +1 -0
- package/dist/random/mod.js +46 -0
- package/dist/random/mod.js.map +1 -0
- package/dist/random/next_float_64.d.ts +38 -0
- package/dist/random/next_float_64.d.ts.map +1 -0
- package/dist/random/next_float_64.js +47 -0
- package/dist/random/next_float_64.js.map +1 -0
- package/dist/random/sample.d.ts +58 -0
- package/dist/random/sample.d.ts.map +1 -0
- package/dist/random/sample.js +69 -0
- package/dist/random/sample.js.map +1 -0
- package/dist/random/seeded.d.ts +34 -0
- package/dist/random/seeded.d.ts.map +1 -0
- package/dist/random/seeded.js +37 -0
- package/dist/random/seeded.js.map +1 -0
- package/dist/random/shuffle.d.ts +35 -0
- package/dist/random/shuffle.d.ts.map +1 -0
- package/dist/random/shuffle.js +48 -0
- package/dist/random/shuffle.js.map +1 -0
- package/dist/semver/_constants.d.ts +20 -0
- package/dist/semver/_constants.d.ts.map +1 -0
- package/dist/semver/_constants.js +28 -0
- package/dist/semver/_constants.js.map +1 -0
- package/dist/semver/_shared.d.ts +52 -0
- package/dist/semver/_shared.d.ts.map +1 -0
- package/dist/semver/_shared.js +168 -0
- package/dist/semver/_shared.js.map +1 -0
- package/dist/semver/_test_comparator_set.d.ts +11 -0
- package/dist/semver/_test_comparator_set.d.ts.map +1 -0
- package/dist/semver/_test_comparator_set.js +62 -0
- package/dist/semver/_test_comparator_set.js.map +1 -0
- package/dist/semver/can_parse.d.ts +24 -0
- package/dist/semver/can_parse.d.ts.map +1 -0
- package/dist/semver/can_parse.js +34 -0
- package/dist/semver/can_parse.js.map +1 -0
- package/dist/semver/compare.d.ts +35 -0
- package/dist/semver/compare.d.ts.map +1 -0
- package/dist/semver/compare.js +43 -0
- package/dist/semver/compare.js.map +1 -0
- package/dist/semver/difference.d.ts +34 -0
- package/dist/semver/difference.d.ts.map +1 -0
- package/dist/semver/difference.js +48 -0
- package/dist/semver/difference.js.map +1 -0
- package/dist/semver/equals.d.ts +31 -0
- package/dist/semver/equals.d.ts.map +1 -0
- package/dist/semver/equals.js +34 -0
- package/dist/semver/equals.js.map +1 -0
- package/dist/semver/format.d.ts +29 -0
- package/dist/semver/format.d.ts.map +1 -0
- package/dist/semver/format.js +40 -0
- package/dist/semver/format.js.map +1 -0
- package/dist/semver/format_range.d.ts +25 -0
- package/dist/semver/format_range.d.ts.map +1 -0
- package/dist/semver/format_range.js +33 -0
- package/dist/semver/format_range.js.map +1 -0
- package/dist/semver/greater_or_equal.d.ts +32 -0
- package/dist/semver/greater_or_equal.d.ts.map +1 -0
- package/dist/semver/greater_or_equal.js +34 -0
- package/dist/semver/greater_or_equal.js.map +1 -0
- package/dist/semver/greater_than.d.ts +32 -0
- package/dist/semver/greater_than.d.ts.map +1 -0
- package/dist/semver/greater_than.js +34 -0
- package/dist/semver/greater_than.js.map +1 -0
- package/dist/semver/greater_than_range.d.ts +30 -0
- package/dist/semver/greater_than_range.d.ts.map +1 -0
- package/dist/semver/greater_than_range.js +64 -0
- package/dist/semver/greater_than_range.js.map +1 -0
- package/dist/semver/increment.d.ts +61 -0
- package/dist/semver/increment.d.ts.map +1 -0
- package/dist/semver/increment.js +186 -0
- package/dist/semver/increment.js.map +1 -0
- package/dist/semver/is_range.d.ts +30 -0
- package/dist/semver/is_range.d.ts.map +1 -0
- package/dist/semver/is_range.js +42 -0
- package/dist/semver/is_range.js.map +1 -0
- package/dist/semver/is_semver.d.ts +41 -0
- package/dist/semver/is_semver.d.ts.map +1 -0
- package/dist/semver/is_semver.js +60 -0
- package/dist/semver/is_semver.js.map +1 -0
- package/dist/semver/less_or_equal.d.ts +32 -0
- package/dist/semver/less_or_equal.d.ts.map +1 -0
- package/dist/semver/less_or_equal.js +34 -0
- package/dist/semver/less_or_equal.js.map +1 -0
- package/dist/semver/less_than.d.ts +32 -0
- package/dist/semver/less_than.d.ts.map +1 -0
- package/dist/semver/less_than.js +34 -0
- package/dist/semver/less_than.js.map +1 -0
- package/dist/semver/less_than_range.d.ts +30 -0
- package/dist/semver/less_than_range.d.ts.map +1 -0
- package/dist/semver/less_than_range.js +64 -0
- package/dist/semver/less_than_range.js.map +1 -0
- package/dist/semver/max_satisfying.d.ts +29 -0
- package/dist/semver/max_satisfying.d.ts.map +1 -0
- package/dist/semver/max_satisfying.js +38 -0
- package/dist/semver/max_satisfying.js.map +1 -0
- package/dist/semver/min_satisfying.d.ts +29 -0
- package/dist/semver/min_satisfying.d.ts.map +1 -0
- package/dist/semver/min_satisfying.js +38 -0
- package/dist/semver/min_satisfying.js.map +1 -0
- package/dist/semver/mod.d.ts +305 -0
- package/dist/semver/mod.d.ts.map +1 -0
- package/dist/semver/mod.js +306 -0
- package/dist/semver/mod.js.map +1 -0
- package/dist/semver/not_equals.d.ts +31 -0
- package/dist/semver/not_equals.d.ts.map +1 -0
- package/dist/semver/not_equals.js +33 -0
- package/dist/semver/not_equals.js.map +1 -0
- package/dist/semver/parse.d.ts +32 -0
- package/dist/semver/parse.d.ts.map +1 -0
- package/dist/semver/parse.js +50 -0
- package/dist/semver/parse.js.map +1 -0
- package/dist/semver/parse_range.d.ts +34 -0
- package/dist/semver/parse_range.d.ts.map +1 -0
- package/dist/semver/parse_range.js +352 -0
- package/dist/semver/parse_range.js.map +1 -0
- package/dist/semver/range_intersects.d.ts +32 -0
- package/dist/semver/range_intersects.d.ts.map +1 -0
- package/dist/semver/range_intersects.js +89 -0
- package/dist/semver/range_intersects.js.map +1 -0
- package/dist/semver/satisfies.d.ts +31 -0
- package/dist/semver/satisfies.d.ts.map +1 -0
- package/dist/semver/satisfies.js +33 -0
- package/dist/semver/satisfies.js.map +1 -0
- package/dist/semver/try_parse.d.ts +28 -0
- package/dist/semver/try_parse.d.ts.map +1 -0
- package/dist/semver/try_parse.js +35 -0
- package/dist/semver/try_parse.js.map +1 -0
- package/dist/semver/try_parse_range.d.ts +31 -0
- package/dist/semver/try_parse_range.d.ts.map +1 -0
- package/dist/semver/try_parse_range.js +40 -0
- package/dist/semver/try_parse_range.js.map +1 -0
- package/dist/semver/types.d.ts +66 -0
- package/dist/semver/types.d.ts.map +1 -0
- package/dist/semver/types.js +10 -0
- package/dist/semver/types.js.map +1 -0
- package/dist/text/_util.d.ts +11 -0
- package/dist/text/_util.d.ts.map +1 -0
- package/dist/text/_util.js +21 -0
- package/dist/text/_util.js.map +1 -0
- package/dist/text/closest_string.d.ts +49 -0
- package/dist/text/closest_string.d.ts.map +1 -0
- package/dist/text/closest_string.js +51 -0
- package/dist/text/closest_string.js.map +1 -0
- package/dist/text/compare_similarity.d.ts +54 -0
- package/dist/text/compare_similarity.d.ts.map +1 -0
- package/dist/text/compare_similarity.js +45 -0
- package/dist/text/compare_similarity.js.map +1 -0
- package/dist/text/levenshtein_distance.d.ts +30 -0
- package/dist/text/levenshtein_distance.d.ts.map +1 -0
- package/dist/text/levenshtein_distance.js +134 -0
- package/dist/text/levenshtein_distance.js.map +1 -0
- package/dist/text/mod.d.ts +34 -0
- package/dist/text/mod.d.ts.map +1 -0
- package/dist/text/mod.js +35 -0
- package/dist/text/mod.js.map +1 -0
- package/dist/text/to_camel_case.d.ts +23 -0
- package/dist/text/to_camel_case.d.ts.map +1 -0
- package/dist/text/to_camel_case.js +29 -0
- package/dist/text/to_camel_case.js.map +1 -0
- package/dist/text/to_kebab_case.d.ts +23 -0
- package/dist/text/to_kebab_case.d.ts.map +1 -0
- package/dist/text/to_kebab_case.js +28 -0
- package/dist/text/to_kebab_case.js.map +1 -0
- package/dist/text/to_pascal_case.d.ts +23 -0
- package/dist/text/to_pascal_case.d.ts.map +1 -0
- package/dist/text/to_pascal_case.js +28 -0
- package/dist/text/to_pascal_case.js.map +1 -0
- package/dist/text/to_snake_case.d.ts +23 -0
- package/dist/text/to_snake_case.d.ts.map +1 -0
- package/dist/text/to_snake_case.js +28 -0
- package/dist/text/to_snake_case.js.map +1 -0
- package/dist/text/truncate.d.ts +81 -0
- package/dist/text/truncate.d.ts.map +1 -0
- package/dist/text/truncate.js +116 -0
- package/dist/text/truncate.js.map +1 -0
- package/dist/text/word_similarity_sort.d.ts +46 -0
- package/dist/text/word_similarity_sort.d.ts.map +1 -0
- package/dist/text/word_similarity_sort.js +47 -0
- package/dist/text/word_similarity_sort.js.map +1 -0
- package/package.json +16 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Original library: denoland/@std
|
|
3
|
+
* - Copyright (c) 2018-2026 the Deno authors. MIT license.
|
|
4
|
+
*
|
|
5
|
+
* Modified and integrated in "Inray":
|
|
6
|
+
* - Evgeniy Bushin
|
|
7
|
+
*/
|
|
8
|
+
/***/
|
|
9
|
+
import type { Prng, RandomOptions } from './_types.ts';
|
|
10
|
+
export type { Prng, RandomOptions };
|
|
11
|
+
/**
|
|
12
|
+
* Generates a random integer between the provided minimum and maximum values.
|
|
13
|
+
*
|
|
14
|
+
* The number is in the range `[min, max]`, i.e. both `min` and `max` are included.
|
|
15
|
+
*
|
|
16
|
+
* @experimental **UNSTABLE**: New API, yet to be vetted.
|
|
17
|
+
*
|
|
18
|
+
* @param min The minimum value (inclusive)
|
|
19
|
+
* @param max The maximum value (inclusive)
|
|
20
|
+
* @param options The options for the random number generator
|
|
21
|
+
* @returns A random integer between the provided minimum and maximum values
|
|
22
|
+
*
|
|
23
|
+
* @example Usage
|
|
24
|
+
* ```ts
|
|
25
|
+
* import { randomIntegerBetween } from "inray/random";
|
|
26
|
+
*
|
|
27
|
+
* randomIntegerBetween(1, 10); // 7
|
|
28
|
+
* randomIntegerBetween(1, 10); // 9
|
|
29
|
+
* randomIntegerBetween(1, 10); // 2
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare function randomIntegerBetween(min: number, max: number, options?: RandomOptions): number;
|
|
33
|
+
//# sourceMappingURL=integer_between.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integer_between.d.ts","sourceRoot":"","sources":["../../src/random/integer_between.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAGL,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEvD,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM,CAE9F"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Original library: denoland/@std
|
|
3
|
+
* - Copyright (c) 2018-2026 the Deno authors. MIT license.
|
|
4
|
+
*
|
|
5
|
+
* Modified and integrated in "Inray":
|
|
6
|
+
* - Evgeniy Bushin
|
|
7
|
+
*/
|
|
8
|
+
/***/
|
|
9
|
+
import { randomBetween } from "./between.js";
|
|
10
|
+
/**
|
|
11
|
+
* Generates a random integer between the provided minimum and maximum values.
|
|
12
|
+
*
|
|
13
|
+
* The number is in the range `[min, max]`, i.e. both `min` and `max` are included.
|
|
14
|
+
*
|
|
15
|
+
* @experimental **UNSTABLE**: New API, yet to be vetted.
|
|
16
|
+
*
|
|
17
|
+
* @param min The minimum value (inclusive)
|
|
18
|
+
* @param max The maximum value (inclusive)
|
|
19
|
+
* @param options The options for the random number generator
|
|
20
|
+
* @returns A random integer between the provided minimum and maximum values
|
|
21
|
+
*
|
|
22
|
+
* @example Usage
|
|
23
|
+
* ```ts
|
|
24
|
+
* import { randomIntegerBetween } from "inray/random";
|
|
25
|
+
*
|
|
26
|
+
* randomIntegerBetween(1, 10); // 7
|
|
27
|
+
* randomIntegerBetween(1, 10); // 9
|
|
28
|
+
* randomIntegerBetween(1, 10); // 2
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export function randomIntegerBetween(min, max, options) {
|
|
32
|
+
return Math.floor(randomBetween(Math.ceil(min), Math.floor(max) + 1, options));
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=integer_between.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integer_between.js","sourceRoot":"","sources":["../../src/random/integer_between.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAIL,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW,EAAE,GAAW,EAAE,OAAuB;IACpF,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACjF,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Original library: denoland/@std
|
|
3
|
+
* - Copyright (c) 2018-2026 the Deno authors. MIT license.
|
|
4
|
+
*
|
|
5
|
+
* Modified and integrated in "Inray":
|
|
6
|
+
* - Evgeniy Bushin
|
|
7
|
+
*/
|
|
8
|
+
/***/
|
|
9
|
+
export declare function disposableStack(): {
|
|
10
|
+
disposables: Disposable[];
|
|
11
|
+
defer(fn: () => void): void;
|
|
12
|
+
use(val: Disposable): void;
|
|
13
|
+
[Symbol.dispose](): void;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=_testing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_testing.d.ts","sourceRoot":"","sources":["../../../src/random/internal/_testing.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAIL,wBAAgB,eAAe;iBAER,UAAU,EAAE;cACrB,MAAM,IAAI;aAGX,UAAU;;EAStB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Original library: denoland/@std
|
|
3
|
+
* - Copyright (c) 2018-2026 the Deno authors. MIT license.
|
|
4
|
+
*
|
|
5
|
+
* Modified and integrated in "Inray":
|
|
6
|
+
* - Evgeniy Bushin
|
|
7
|
+
*/
|
|
8
|
+
/***/
|
|
9
|
+
// partial `DisposableStack` polyfill
|
|
10
|
+
// https://github.com/tc39/proposal-explicit-resource-management
|
|
11
|
+
export function disposableStack() {
|
|
12
|
+
return {
|
|
13
|
+
disposables: [],
|
|
14
|
+
defer(fn) {
|
|
15
|
+
this.disposables.push({ [Symbol.dispose]: fn });
|
|
16
|
+
},
|
|
17
|
+
use(val) {
|
|
18
|
+
this.disposables.push(val);
|
|
19
|
+
},
|
|
20
|
+
[Symbol.dispose]() {
|
|
21
|
+
for (let i = this.disposables.length - 1; i >= 0; --i) {
|
|
22
|
+
this.disposables[i][Symbol.dispose]();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=_testing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_testing.js","sourceRoot":"","sources":["../../../src/random/internal/_testing.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAEL,qCAAqC;AACrC,gEAAgE;AAChE,MAAM,UAAU,eAAe;IAC7B,OAAO;QACL,WAAW,EAAE,EAAkB;QAC/B,KAAK,CAAC,EAAc;YAClB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,GAAG,CAAC,GAAe;YACjB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QACD,CAAC,MAAM,CAAC,OAAO,CAAC;YACd,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;gBACtD,IAAI,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YACzC,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Original library: denoland/@std
|
|
3
|
+
* - Copyright (c) 2018-2026 the Deno authors. MIT license.
|
|
4
|
+
*
|
|
5
|
+
* Modified and integrated in "Inray":
|
|
6
|
+
* - Evgeniy Bushin
|
|
7
|
+
*/
|
|
8
|
+
/***/
|
|
9
|
+
/**
|
|
10
|
+
* Utilities for generating random numbers.
|
|
11
|
+
*
|
|
12
|
+
* Example of generating a random integer with fixed seed number:
|
|
13
|
+
*
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { randomIntegerBetween } from "inray/random";
|
|
16
|
+
* import { randomSeeded } from "inray/random";
|
|
17
|
+
*
|
|
18
|
+
* const prng = randomSeeded(1n);
|
|
19
|
+
*
|
|
20
|
+
* randomIntegerBetween(1, 10, { prng }) // 3
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* Example of generating a random integer between two values:
|
|
24
|
+
*
|
|
25
|
+
* ```ts
|
|
26
|
+
* import { randomIntegerBetween } from "inray/random";
|
|
27
|
+
* import { randomSeeded } from "inray/random";
|
|
28
|
+
*
|
|
29
|
+
* const prng = randomSeeded(BigInt(crypto.getRandomValues(new Uint32Array(1))[0]!));
|
|
30
|
+
*
|
|
31
|
+
* const randomInteger = randomIntegerBetween(1, 10, { prng });
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* @experimental **UNSTABLE**: New API, yet to be vetted.
|
|
35
|
+
*
|
|
36
|
+
* @module
|
|
37
|
+
*/
|
|
38
|
+
export * from './between.ts';
|
|
39
|
+
export * from './integer_between.ts';
|
|
40
|
+
export * from './get_random_values_seeded.ts';
|
|
41
|
+
export * from './next_float_64.ts';
|
|
42
|
+
export * from './sample.ts';
|
|
43
|
+
export * from './seeded.ts';
|
|
44
|
+
export * from './shuffle.ts';
|
|
45
|
+
//# sourceMappingURL=mod.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/random/mod.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAIL;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Original library: denoland/@std
|
|
3
|
+
* - Copyright (c) 2018-2026 the Deno authors. MIT license.
|
|
4
|
+
*
|
|
5
|
+
* Modified and integrated in "Inray":
|
|
6
|
+
* - Evgeniy Bushin
|
|
7
|
+
*/
|
|
8
|
+
/***/
|
|
9
|
+
// This module is browser compatible.
|
|
10
|
+
/**
|
|
11
|
+
* Utilities for generating random numbers.
|
|
12
|
+
*
|
|
13
|
+
* Example of generating a random integer with fixed seed number:
|
|
14
|
+
*
|
|
15
|
+
* ```ts
|
|
16
|
+
* import { randomIntegerBetween } from "inray/random";
|
|
17
|
+
* import { randomSeeded } from "inray/random";
|
|
18
|
+
*
|
|
19
|
+
* const prng = randomSeeded(1n);
|
|
20
|
+
*
|
|
21
|
+
* randomIntegerBetween(1, 10, { prng }) // 3
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* Example of generating a random integer between two values:
|
|
25
|
+
*
|
|
26
|
+
* ```ts
|
|
27
|
+
* import { randomIntegerBetween } from "inray/random";
|
|
28
|
+
* import { randomSeeded } from "inray/random";
|
|
29
|
+
*
|
|
30
|
+
* const prng = randomSeeded(BigInt(crypto.getRandomValues(new Uint32Array(1))[0]!));
|
|
31
|
+
*
|
|
32
|
+
* const randomInteger = randomIntegerBetween(1, 10, { prng });
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* @experimental **UNSTABLE**: New API, yet to be vetted.
|
|
36
|
+
*
|
|
37
|
+
* @module
|
|
38
|
+
*/
|
|
39
|
+
export * from "./between.js";
|
|
40
|
+
export * from "./integer_between.js";
|
|
41
|
+
export * from "./get_random_values_seeded.js";
|
|
42
|
+
export * from "./next_float_64.js";
|
|
43
|
+
export * from "./sample.js";
|
|
44
|
+
export * from "./seeded.js";
|
|
45
|
+
export * from "./shuffle.js";
|
|
46
|
+
//# sourceMappingURL=mod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/random/mod.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAEL,qCAAqC;AAErC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Original library: denoland/@std
|
|
3
|
+
* - Copyright (c) 2018-2026 the Deno authors. MIT license.
|
|
4
|
+
*
|
|
5
|
+
* Modified and integrated in "Inray":
|
|
6
|
+
* - Evgeniy Bushin
|
|
7
|
+
*/
|
|
8
|
+
/***/
|
|
9
|
+
import type { RandomValueGenerator } from './_types.ts';
|
|
10
|
+
/**
|
|
11
|
+
* Get a float64 in the range `[0, 1)` from a random value generator.
|
|
12
|
+
*
|
|
13
|
+
* @experimental **UNSTABLE**: New API, yet to be vetted.
|
|
14
|
+
*
|
|
15
|
+
* @param getRandomValues A function that fills a typed array with random values.
|
|
16
|
+
* @returns A float64 in the range `[0, 1)`.
|
|
17
|
+
*
|
|
18
|
+
* @example With a seeded value generator
|
|
19
|
+
* ```ts
|
|
20
|
+
* import { nextFloat64, getRandomValuesSeeded } from "inray/random";
|
|
21
|
+
*
|
|
22
|
+
* const getRandomValues = getRandomValuesSeeded(1n);
|
|
23
|
+
* nextFloat64(getRandomValues); // 0.49116444173310125
|
|
24
|
+
* nextFloat64(getRandomValues); // 0.06903754193160427
|
|
25
|
+
* nextFloat64(getRandomValues); // 0.16063206851777034
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @example With an arbitrary value generator
|
|
29
|
+
* ```ts
|
|
30
|
+
* import { nextFloat64 } from "inray/random";
|
|
31
|
+
*
|
|
32
|
+
* const val = nextFloat64(crypto.getRandomValues.bind(crypto)); // example: 0.8928746327842533
|
|
33
|
+
* // val >= 0
|
|
34
|
+
* // val < 1
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare function nextFloat64(getRandomValues: RandomValueGenerator): number;
|
|
38
|
+
//# sourceMappingURL=next_float_64.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next_float_64.d.ts","sourceRoot":"","sources":["../../src/random/next_float_64.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAGL,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AASxD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,WAAW,CAAC,eAAe,EAAE,oBAAoB,GAAG,MAAM,CAKzE"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Original library: denoland/@std
|
|
3
|
+
* - Copyright (c) 2018-2026 the Deno authors. MIT license.
|
|
4
|
+
*
|
|
5
|
+
* Modified and integrated in "Inray":
|
|
6
|
+
* - Evgeniy Bushin
|
|
7
|
+
*/
|
|
8
|
+
/***/
|
|
9
|
+
const b8 = new Uint8Array(8);
|
|
10
|
+
const dv8 = new DataView(b8.buffer);
|
|
11
|
+
// 0x1.0p-53
|
|
12
|
+
const FLOAT_64_MULTIPLIER = 2 ** -53;
|
|
13
|
+
// assert(1 / FLOAT_64_MULTIPLIER === Number.MAX_SAFE_INTEGER + 1)
|
|
14
|
+
/**
|
|
15
|
+
* Get a float64 in the range `[0, 1)` from a random value generator.
|
|
16
|
+
*
|
|
17
|
+
* @experimental **UNSTABLE**: New API, yet to be vetted.
|
|
18
|
+
*
|
|
19
|
+
* @param getRandomValues A function that fills a typed array with random values.
|
|
20
|
+
* @returns A float64 in the range `[0, 1)`.
|
|
21
|
+
*
|
|
22
|
+
* @example With a seeded value generator
|
|
23
|
+
* ```ts
|
|
24
|
+
* import { nextFloat64, getRandomValuesSeeded } from "inray/random";
|
|
25
|
+
*
|
|
26
|
+
* const getRandomValues = getRandomValuesSeeded(1n);
|
|
27
|
+
* nextFloat64(getRandomValues); // 0.49116444173310125
|
|
28
|
+
* nextFloat64(getRandomValues); // 0.06903754193160427
|
|
29
|
+
* nextFloat64(getRandomValues); // 0.16063206851777034
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* @example With an arbitrary value generator
|
|
33
|
+
* ```ts
|
|
34
|
+
* import { nextFloat64 } from "inray/random";
|
|
35
|
+
*
|
|
36
|
+
* const val = nextFloat64(crypto.getRandomValues.bind(crypto)); // example: 0.8928746327842533
|
|
37
|
+
* // val >= 0
|
|
38
|
+
* // val < 1
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export function nextFloat64(getRandomValues) {
|
|
42
|
+
getRandomValues(b8);
|
|
43
|
+
const int53 = Number(dv8.getBigUint64(0, true) >> 11n);
|
|
44
|
+
// assert(int53 <= Number.MAX_SAFE_INTEGER)
|
|
45
|
+
return int53 * FLOAT_64_MULTIPLIER;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=next_float_64.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next_float_64.js","sourceRoot":"","sources":["../../src/random/next_float_64.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAKL,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AAC7B,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AAEpC,YAAY;AACZ,MAAM,mBAAmB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AACrC,kEAAkE;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,WAAW,CAAC,eAAqC;IAC/D,eAAe,CAAC,EAAE,CAAC,CAAC;IACpB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IACvD,2CAA2C;IAC3C,OAAO,KAAK,GAAG,mBAAmB,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Original library: denoland/@std
|
|
3
|
+
* - Copyright (c) 2018-2026 the Deno authors. MIT license.
|
|
4
|
+
*
|
|
5
|
+
* Modified and integrated in "Inray":
|
|
6
|
+
* - Evgeniy Bushin
|
|
7
|
+
*/
|
|
8
|
+
/***/
|
|
9
|
+
import type { Prng, RandomOptions } from './_types.ts';
|
|
10
|
+
export type { Prng, RandomOptions };
|
|
11
|
+
/**
|
|
12
|
+
* Options for {@linkcode sample}.
|
|
13
|
+
*
|
|
14
|
+
* @experimental **UNSTABLE**: New API, yet to be vetted.
|
|
15
|
+
*/
|
|
16
|
+
export type SampleOptions = RandomOptions & {
|
|
17
|
+
/**
|
|
18
|
+
* An array of weights corresponding to each item in the input array.
|
|
19
|
+
* If supplied, this is used to determine the probability of each item being
|
|
20
|
+
* selected.
|
|
21
|
+
*/
|
|
22
|
+
weights?: ArrayLike<number>;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Returns a random element from the given array.
|
|
26
|
+
*
|
|
27
|
+
* @experimental **UNSTABLE**: New API, yet to be vetted.
|
|
28
|
+
*
|
|
29
|
+
* @typeParam T The type of the elements in the array.
|
|
30
|
+
* @typeParam O The type of the accumulator.
|
|
31
|
+
*
|
|
32
|
+
* @param array The array to sample from.
|
|
33
|
+
* @param options Options modifying the sampling behavior.
|
|
34
|
+
*
|
|
35
|
+
* @returns A random element from the given array, or `undefined` if the array
|
|
36
|
+
* is empty.
|
|
37
|
+
*
|
|
38
|
+
* @example Basic usage
|
|
39
|
+
* ```ts
|
|
40
|
+
* import { sample } from "inray/random";
|
|
41
|
+
*
|
|
42
|
+
* const numbers = [1, 2, 3, 4];
|
|
43
|
+
* const sampled = sample(numbers); // numbers includes all sampled
|
|
44
|
+
*
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* @example Using `weights` option
|
|
48
|
+
* ```ts
|
|
49
|
+
* import { sample } from "inray/random";
|
|
50
|
+
*
|
|
51
|
+
* const values = ["a", "b", "c"];
|
|
52
|
+
* const weights = [5, 3, 2];
|
|
53
|
+
* const result = sample(values, { weights });
|
|
54
|
+
* // gives "a" 50% of the time, "b" 30% of the time, and "c" 20% of the time
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export declare function sample<T>(array: ArrayLike<T>, options?: SampleOptions): T | undefined;
|
|
58
|
+
//# sourceMappingURL=sample.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sample.d.ts","sourceRoot":"","sources":["../../src/random/sample.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAGL,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEvD,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;AAEpC;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG;IAC1C;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,CAAC,GAAG,SAAS,CAkCrF"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Original library: denoland/@std
|
|
3
|
+
* - Copyright (c) 2018-2026 the Deno authors. MIT license.
|
|
4
|
+
*
|
|
5
|
+
* Modified and integrated in "Inray":
|
|
6
|
+
* - Evgeniy Bushin
|
|
7
|
+
*/
|
|
8
|
+
/***/
|
|
9
|
+
import { randomIntegerBetween } from "./integer_between.js";
|
|
10
|
+
/**
|
|
11
|
+
* Returns a random element from the given array.
|
|
12
|
+
*
|
|
13
|
+
* @experimental **UNSTABLE**: New API, yet to be vetted.
|
|
14
|
+
*
|
|
15
|
+
* @typeParam T The type of the elements in the array.
|
|
16
|
+
* @typeParam O The type of the accumulator.
|
|
17
|
+
*
|
|
18
|
+
* @param array The array to sample from.
|
|
19
|
+
* @param options Options modifying the sampling behavior.
|
|
20
|
+
*
|
|
21
|
+
* @returns A random element from the given array, or `undefined` if the array
|
|
22
|
+
* is empty.
|
|
23
|
+
*
|
|
24
|
+
* @example Basic usage
|
|
25
|
+
* ```ts
|
|
26
|
+
* import { sample } from "inray/random";
|
|
27
|
+
*
|
|
28
|
+
* const numbers = [1, 2, 3, 4];
|
|
29
|
+
* const sampled = sample(numbers); // numbers includes all sampled
|
|
30
|
+
*
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @example Using `weights` option
|
|
34
|
+
* ```ts
|
|
35
|
+
* import { sample } from "inray/random";
|
|
36
|
+
*
|
|
37
|
+
* const values = ["a", "b", "c"];
|
|
38
|
+
* const weights = [5, 3, 2];
|
|
39
|
+
* const result = sample(values, { weights });
|
|
40
|
+
* // gives "a" 50% of the time, "b" 30% of the time, and "c" 20% of the time
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export function sample(array, options) {
|
|
44
|
+
const { weights } = { ...options };
|
|
45
|
+
if (weights) {
|
|
46
|
+
if (weights.length !== array.length) {
|
|
47
|
+
throw new RangeError('Cannot sample an item: The length of the weights array must match the length of the input array');
|
|
48
|
+
}
|
|
49
|
+
if (!array.length)
|
|
50
|
+
return undefined;
|
|
51
|
+
const total = Object.values(weights).reduce((sum, n) => sum + n, 0);
|
|
52
|
+
if (total <= 0) {
|
|
53
|
+
throw new RangeError('Cannot sample an item: Total weight must be greater than 0');
|
|
54
|
+
}
|
|
55
|
+
const rand = (options?.prng ?? Math.random)() * total;
|
|
56
|
+
let current = 0;
|
|
57
|
+
for (let i = 0; i < array.length; ++i) {
|
|
58
|
+
current += weights[i];
|
|
59
|
+
if (rand < current) {
|
|
60
|
+
return array[i];
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// this line should never be hit, but in case of rounding errors etc.
|
|
64
|
+
return array[0];
|
|
65
|
+
}
|
|
66
|
+
const length = array.length;
|
|
67
|
+
return length ? array[randomIntegerBetween(0, length - 1, options)] : undefined;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=sample.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sample.js","sourceRoot":"","sources":["../../src/random/sample.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAIL,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAiB5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,UAAU,MAAM,CAAI,KAAmB,EAAE,OAAuB;IACpE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IAEnC,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;YACpC,MAAM,IAAI,UAAU,CAClB,iGAAiG,CAClG,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QAEpC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAEpE,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,MAAM,IAAI,UAAU,CAAC,4DAA4D,CAAC,CAAC;QACrF,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC;QACtD,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;YACtC,OAAO,IAAI,OAAO,CAAC,CAAC,CAAE,CAAC;YACvB,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;gBACnB,OAAO,KAAK,CAAC,CAAC,CAAE,CAAC;YACnB,CAAC;QACH,CAAC;QAED,qEAAqE;QACrE,OAAO,KAAK,CAAC,CAAC,CAAE,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAClF,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Original library: denoland/@std
|
|
3
|
+
* - Copyright (c) 2018-2026 the Deno authors. MIT license.
|
|
4
|
+
*
|
|
5
|
+
* Modified and integrated in "Inray":
|
|
6
|
+
* - Evgeniy Bushin
|
|
7
|
+
*/
|
|
8
|
+
/***/
|
|
9
|
+
import type { Prng } from './_types.ts';
|
|
10
|
+
export type { Prng } from './_types.ts';
|
|
11
|
+
/**
|
|
12
|
+
* Creates a pseudo-random number generator that generates random numbers in
|
|
13
|
+
* the range `[0, 1)`, based on the given seed, with 32 bits of entropy.
|
|
14
|
+
* The algorithm used for generation is {@link https://www.pcg-random.org/download.html | PCG32}.
|
|
15
|
+
*
|
|
16
|
+
* @experimental **UNSTABLE**: New API, yet to be vetted.
|
|
17
|
+
*
|
|
18
|
+
* @param seed The seed used to initialize the random number generator's state.
|
|
19
|
+
* @returns A pseudo-random number generator function, which will generate
|
|
20
|
+
* different random numbers on each call.
|
|
21
|
+
*
|
|
22
|
+
* @example Usage
|
|
23
|
+
* ```ts
|
|
24
|
+
* import { randomSeeded } from "inray/random";
|
|
25
|
+
*
|
|
26
|
+
* const prng = randomSeeded(1n);
|
|
27
|
+
*
|
|
28
|
+
* prng() // 0.20176767697557807
|
|
29
|
+
* prng() // 0.4911644416861236
|
|
30
|
+
* prng() // 0.7924694607499987
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare function randomSeeded(seed: bigint): Prng;
|
|
34
|
+
//# sourceMappingURL=seeded.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seeded.d.ts","sourceRoot":"","sources":["../../src/random/seeded.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAIL,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAG/C"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Original library: denoland/@std
|
|
3
|
+
* - Copyright (c) 2018-2026 the Deno authors. MIT license.
|
|
4
|
+
*
|
|
5
|
+
* Modified and integrated in "Inray":
|
|
6
|
+
* - Evgeniy Bushin
|
|
7
|
+
*/
|
|
8
|
+
/***/
|
|
9
|
+
// This module is browser compatible.
|
|
10
|
+
import { Pcg32 } from "./_pcg32.js";
|
|
11
|
+
/**
|
|
12
|
+
* Creates a pseudo-random number generator that generates random numbers in
|
|
13
|
+
* the range `[0, 1)`, based on the given seed, with 32 bits of entropy.
|
|
14
|
+
* The algorithm used for generation is {@link https://www.pcg-random.org/download.html | PCG32}.
|
|
15
|
+
*
|
|
16
|
+
* @experimental **UNSTABLE**: New API, yet to be vetted.
|
|
17
|
+
*
|
|
18
|
+
* @param seed The seed used to initialize the random number generator's state.
|
|
19
|
+
* @returns A pseudo-random number generator function, which will generate
|
|
20
|
+
* different random numbers on each call.
|
|
21
|
+
*
|
|
22
|
+
* @example Usage
|
|
23
|
+
* ```ts
|
|
24
|
+
* import { randomSeeded } from "inray/random";
|
|
25
|
+
*
|
|
26
|
+
* const prng = randomSeeded(1n);
|
|
27
|
+
*
|
|
28
|
+
* prng() // 0.20176767697557807
|
|
29
|
+
* prng() // 0.4911644416861236
|
|
30
|
+
* prng() // 0.7924694607499987
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export function randomSeeded(seed) {
|
|
34
|
+
const pcg = new Pcg32(seed);
|
|
35
|
+
return () => pcg.nextUint32() / 2 ** 32;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=seeded.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seeded.js","sourceRoot":"","sources":["../../src/random/seeded.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAEL,qCAAqC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAIpC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Original library: denoland/@std
|
|
3
|
+
* - Copyright (c) 2018-2026 the Deno authors. MIT license.
|
|
4
|
+
*
|
|
5
|
+
* Modified and integrated in "Inray":
|
|
6
|
+
* - Evgeniy Bushin
|
|
7
|
+
*/
|
|
8
|
+
/***/
|
|
9
|
+
import type { Prng, RandomOptions } from './_types.ts';
|
|
10
|
+
export type { Prng, RandomOptions };
|
|
11
|
+
/**
|
|
12
|
+
* Shuffles the provided array, returning a copy and without modifying the original array.
|
|
13
|
+
*
|
|
14
|
+
* @experimental **UNSTABLE**: New API, yet to be vetted.
|
|
15
|
+
*
|
|
16
|
+
* @typeParam T The type of the items in the array
|
|
17
|
+
* @param items The items to shuffle
|
|
18
|
+
* @param options The options for the random number generator
|
|
19
|
+
* @returns A shuffled copy of the provided items
|
|
20
|
+
*
|
|
21
|
+
* @example Usage
|
|
22
|
+
* ```ts
|
|
23
|
+
* import { shuffle } from "inray/random";
|
|
24
|
+
*
|
|
25
|
+
* const items = [1, 2, 3, 4, 5];
|
|
26
|
+
*
|
|
27
|
+
* shuffle(items); // [2, 5, 1, 4, 3]
|
|
28
|
+
* shuffle(items); // [3, 4, 5, 1, 2]
|
|
29
|
+
* shuffle(items); // [5, 2, 4, 3, 1]
|
|
30
|
+
*
|
|
31
|
+
* items; // [1, 2, 3, 4, 5] (original array is unchanged)
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare function shuffle<T>(items: readonly T[], options?: RandomOptions): T[];
|
|
35
|
+
//# sourceMappingURL=shuffle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shuffle.d.ts","sourceRoot":"","sources":["../../src/random/shuffle.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAGL,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACvD,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,CAAC,EAAE,CAiB5E"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Original library: denoland/@std
|
|
3
|
+
* - Copyright (c) 2018-2026 the Deno authors. MIT license.
|
|
4
|
+
*
|
|
5
|
+
* Modified and integrated in "Inray":
|
|
6
|
+
* - Evgeniy Bushin
|
|
7
|
+
*/
|
|
8
|
+
/***/
|
|
9
|
+
/**
|
|
10
|
+
* Shuffles the provided array, returning a copy and without modifying the original array.
|
|
11
|
+
*
|
|
12
|
+
* @experimental **UNSTABLE**: New API, yet to be vetted.
|
|
13
|
+
*
|
|
14
|
+
* @typeParam T The type of the items in the array
|
|
15
|
+
* @param items The items to shuffle
|
|
16
|
+
* @param options The options for the random number generator
|
|
17
|
+
* @returns A shuffled copy of the provided items
|
|
18
|
+
*
|
|
19
|
+
* @example Usage
|
|
20
|
+
* ```ts
|
|
21
|
+
* import { shuffle } from "inray/random";
|
|
22
|
+
*
|
|
23
|
+
* const items = [1, 2, 3, 4, 5];
|
|
24
|
+
*
|
|
25
|
+
* shuffle(items); // [2, 5, 1, 4, 3]
|
|
26
|
+
* shuffle(items); // [3, 4, 5, 1, 2]
|
|
27
|
+
* shuffle(items); // [5, 2, 4, 3, 1]
|
|
28
|
+
*
|
|
29
|
+
* items; // [1, 2, 3, 4, 5] (original array is unchanged)
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export function shuffle(items, options) {
|
|
33
|
+
const result = [...items];
|
|
34
|
+
const prng = options?.prng ?? Math.random;
|
|
35
|
+
// https://en.wikipedia.org/wiki/Fisher–Yates_shuffle#The_modern_algorithm
|
|
36
|
+
// -- To shuffle an array a of n elements (indices 0..n-1):
|
|
37
|
+
// for i from n−1 down to 1 do
|
|
38
|
+
for (let i = result.length - 1; i >= 1; --i) {
|
|
39
|
+
// j ← random integer such that 0 ≤ j ≤ i
|
|
40
|
+
const j = Math.floor(prng() * (i + 1));
|
|
41
|
+
// exchange a[j] and a[i]
|
|
42
|
+
const temp = result[i];
|
|
43
|
+
result[i] = result[j];
|
|
44
|
+
result[j] = temp;
|
|
45
|
+
}
|
|
46
|
+
return result;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=shuffle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shuffle.js","sourceRoot":"","sources":["../../src/random/shuffle.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAML;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,OAAO,CAAI,KAAmB,EAAE,OAAuB;IACrE,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAC1B,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC;IAE1C,0EAA0E;IAC1E,2DAA2D;IAC3D,8BAA8B;IAC9B,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAC5C,yCAAyC;QACzC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvC,yBAAyB;QACzB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACvB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAK,CAAC;IACpB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Original library: denoland/@std
|
|
3
|
+
* - Copyright (c) 2018-2026 the Deno authors. MIT license.
|
|
4
|
+
*
|
|
5
|
+
* Modified and integrated in "Inray":
|
|
6
|
+
* - Evgeniy Bushin
|
|
7
|
+
*/
|
|
8
|
+
/***/
|
|
9
|
+
import type { Comparator, SemVer } from './types.ts';
|
|
10
|
+
/**
|
|
11
|
+
* ANY is a sentinel value used by some range calculations. It is not a valid
|
|
12
|
+
* SemVer object and should not be used directly.
|
|
13
|
+
*/
|
|
14
|
+
export declare const ANY: SemVer;
|
|
15
|
+
/**
|
|
16
|
+
* A comparator which will span all valid semantic versions
|
|
17
|
+
*/
|
|
18
|
+
export declare const ALL: Comparator;
|
|
19
|
+
export declare const OPERATORS: readonly [undefined, "=", "!=", ">", ">=", "<", "<="];
|
|
20
|
+
//# sourceMappingURL=_constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_constants.d.ts","sourceRoot":"","sources":["../../src/semver/_constants.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAEL,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAErD;;;GAGG;AACH,eAAO,MAAM,GAAG,EAAE,MAMjB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,GAAG,EAAE,UAGjB,CAAC;AAEF,eAAO,MAAM,SAAS,uDAAwD,CAAC"}
|