inray 0.0.7 → 0.0.9
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 +522 -58
- package/dist/db-migrator/src/bin.js +1 -1
- package/dist/db-migrator/src/bin.js.map +1 -1
- package/dist/db-migrator/src/index.d.ts +1 -1
- package/dist/db-migrator/src/index.d.ts.map +1 -1
- package/dist/db-migrator/src/index.js +1 -1
- package/dist/db-migrator/src/index.js.map +1 -1
- package/dist/db-migrator/src/lib/clients/index.d.ts +3 -3
- package/dist/db-migrator/src/lib/clients/index.d.ts.map +1 -1
- package/dist/db-migrator/src/lib/clients/index.js +5 -4
- package/dist/db-migrator/src/lib/clients/index.js.map +1 -1
- package/dist/db-migrator/src/lib/clients/postgres.js +1 -1
- package/dist/db-migrator/src/lib/clients/postgres.js.map +1 -1
- package/dist/db-migrator/src/lib/clients/sqlite.d.ts +3 -0
- package/dist/db-migrator/src/lib/clients/sqlite.d.ts.map +1 -0
- package/dist/db-migrator/src/lib/clients/sqlite.js +55 -0
- package/dist/db-migrator/src/lib/clients/sqlite.js.map +1 -0
- package/dist/db-migrator/src/lib/migrator.sql.d.ts +4 -0
- package/dist/db-migrator/src/lib/migrator.sql.d.ts.map +1 -1
- package/dist/db-migrator/src/lib/migrator.sql.js +12 -0
- package/dist/db-migrator/src/lib/migrator.sql.js.map +1 -1
- package/dist/db-migrator/src/lib/migrator.types.d.ts +4 -2
- package/dist/db-migrator/src/lib/migrator.types.d.ts.map +1 -1
- package/dist/db-migrator/src/migrator.d.ts.map +1 -1
- package/dist/db-migrator/src/migrator.js +1 -0
- package/dist/db-migrator/src/migrator.js.map +1 -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 +27 -2
|
@@ -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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
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
|
+
* ANY is a sentinel value used by some range calculations. It is not a valid
|
|
11
|
+
* SemVer object and should not be used directly.
|
|
12
|
+
*/
|
|
13
|
+
export const ANY = {
|
|
14
|
+
major: Number.NaN,
|
|
15
|
+
minor: Number.NaN,
|
|
16
|
+
patch: Number.NaN,
|
|
17
|
+
prerelease: [],
|
|
18
|
+
build: []
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* A comparator which will span all valid semantic versions
|
|
22
|
+
*/
|
|
23
|
+
export const ALL = {
|
|
24
|
+
operator: undefined,
|
|
25
|
+
...ANY
|
|
26
|
+
};
|
|
27
|
+
export const OPERATORS = [undefined, '=', '!=', '>', '>=', '<', '<='];
|
|
28
|
+
//# sourceMappingURL=_constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_constants.js","sourceRoot":"","sources":["../../src/semver/_constants.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAIL;;;GAGG;AACH,MAAM,CAAC,MAAM,GAAG,GAAW;IACzB,KAAK,EAAE,MAAM,CAAC,GAAG;IACjB,KAAK,EAAE,MAAM,CAAC,GAAG;IACjB,KAAK,EAAE,MAAM,CAAC,GAAG;IACjB,UAAU,EAAE,EAAE;IACd,KAAK,EAAE,EAAE;CACV,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,GAAG,GAAe;IAC7B,QAAQ,EAAE,SAAS;IACnB,GAAG,GAAG;CACP,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAU,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
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 } from './types.ts';
|
|
10
|
+
export declare function compareNumber(a: number, b: number): 1 | 0 | -1;
|
|
11
|
+
export declare function checkIdentifier(v1?: ReadonlyArray<string | number>, v2?: ReadonlyArray<string | number>): 1 | 0 | -1;
|
|
12
|
+
export declare function compareIdentifier(v1?: ReadonlyArray<string | number>, v2?: ReadonlyArray<string | number>): 1 | 0 | -1;
|
|
13
|
+
export declare const FULL_REGEXP: RegExp;
|
|
14
|
+
/**
|
|
15
|
+
* A version that can contain wildcards.
|
|
16
|
+
* @example "x", "1.x", "1.x.x", "1.2.x", "*", "1.*", "1.*.*", "1.2.*"
|
|
17
|
+
*/
|
|
18
|
+
export declare const XRANGE = "[v=\\s]*(?<major>0|[1-9]\\d*|x|X|\\*)(?:\\.(?<minor>0|[1-9]\\d*|x|X|\\*)(?:\\.(?<patch>0|[1-9]\\d*|x|X|\\*)(?:-(?<prerelease>(?:0|[1-9]\\d*|\\d*[a-zA-Z-][a-zA-Z0-9-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][a-zA-Z0-9-]*))*))?(?:\\+(?<buildmetadata>[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*))?)?)?";
|
|
19
|
+
/**
|
|
20
|
+
* An operator (`~`, `~>`, `^`, `=`, `<`, `<=`, `>`, or `>=`), followed by an x-range.
|
|
21
|
+
* @example "~1.x.x", "^1.2.*", ">=1.2.3"
|
|
22
|
+
*/
|
|
23
|
+
export declare const OPERATOR_XRANGE_REGEXP: RegExp;
|
|
24
|
+
/**
|
|
25
|
+
* An empty string or a comparator (`=`, `<`, `<=`, `>`, or `>=`), followed by a version.
|
|
26
|
+
* @example ">1.2.3"
|
|
27
|
+
*/
|
|
28
|
+
export declare const COMPARATOR_REGEXP: RegExp;
|
|
29
|
+
/**
|
|
30
|
+
* Returns true if the value is a valid SemVer number.
|
|
31
|
+
*
|
|
32
|
+
* Must be a number. Must not be NaN. Can be positive or negative infinity.
|
|
33
|
+
* Can be between 0 and MAX_SAFE_INTEGER.
|
|
34
|
+
* @param value The value to check
|
|
35
|
+
* @returns True if its a valid semver number
|
|
36
|
+
*/
|
|
37
|
+
export declare function isValidNumber(value: unknown): value is number;
|
|
38
|
+
export declare const MAX_LENGTH = 256;
|
|
39
|
+
/**
|
|
40
|
+
* Returns true if the value is a valid semver pre-release or build identifier.
|
|
41
|
+
*
|
|
42
|
+
* Must be a string. Must be between 1 and 256 characters long. Must match
|
|
43
|
+
* the regular expression /[0-9A-Za-z-]+/.
|
|
44
|
+
* @param value The value to check
|
|
45
|
+
* @returns True if the value is a valid semver string.
|
|
46
|
+
*/
|
|
47
|
+
export declare function isValidString(value: unknown): value is string;
|
|
48
|
+
export declare function parsePrerelease(prerelease: string): (string | number)[];
|
|
49
|
+
export declare function parseBuild(buildmetadata: string): string[];
|
|
50
|
+
export declare function parseNumber(input: string, errorMessage: string): number;
|
|
51
|
+
export declare function isWildcardComparator(c: Comparator): boolean;
|
|
52
|
+
//# sourceMappingURL=_shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_shared.d.ts","sourceRoot":"","sources":["../../src/semver/_shared.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAEL,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAK9D;AAED,wBAAgB,eAAe,CAC7B,EAAE,GAAE,aAAa,CAAC,MAAM,GAAG,MAAM,CAAM,EACvC,EAAE,GAAE,aAAa,CAAC,MAAM,GAAG,MAAM,CAAM,GACtC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAMZ;AAED,wBAAgB,iBAAiB,CAC/B,EAAE,GAAE,aAAa,CAAC,MAAM,GAAG,MAAM,CAAM,EACvC,EAAE,GAAE,aAAa,CAAC,MAAM,GAAG,MAAM,CAAM,GACtC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAoBZ;AA4CD,eAAO,MAAM,WAAW,QAAkC,CAAC;AAgB3D;;;GAGG;AACH,eAAO,MAAM,MAAM,iSAA8I,CAAC;AAElK;;;GAGG;AACH,eAAO,MAAM,sBAAsB,QAAkE,CAAC;AAEtG;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAAqE,CAAC;AAEpG;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAM7D;AAED,eAAO,MAAM,UAAU,MAAM,CAAC;AAE9B;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAE7D;AAGD,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,uBAWjD;AAED,wBAAgB,UAAU,CAAC,aAAa,EAAE,MAAM,YAE/C;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,UAI9D;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,CAQ3D"}
|
|
@@ -0,0 +1,168 @@
|
|
|
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 function compareNumber(a, b) {
|
|
10
|
+
if (isNaN(a) || isNaN(b)) {
|
|
11
|
+
throw new Error('Cannot compare against non-numbers');
|
|
12
|
+
}
|
|
13
|
+
return a === b ? 0 : a < b ? -1 : 1;
|
|
14
|
+
}
|
|
15
|
+
export function checkIdentifier(v1 = [], v2 = []) {
|
|
16
|
+
// NOT having a prerelease is > having one
|
|
17
|
+
// But NOT having a build is < having one
|
|
18
|
+
if (v1.length && !v2.length)
|
|
19
|
+
return -1;
|
|
20
|
+
if (!v1.length && v2.length)
|
|
21
|
+
return 1;
|
|
22
|
+
return 0;
|
|
23
|
+
}
|
|
24
|
+
export function compareIdentifier(v1 = [], v2 = []) {
|
|
25
|
+
const length = Math.max(v1.length, v2.length);
|
|
26
|
+
for (let i = 0; i < length; i++) {
|
|
27
|
+
const a = v1[i];
|
|
28
|
+
const b = v2[i];
|
|
29
|
+
// same length is equal
|
|
30
|
+
if (a === undefined && b === undefined)
|
|
31
|
+
return 0;
|
|
32
|
+
// longer > shorter
|
|
33
|
+
if (b === undefined)
|
|
34
|
+
return 1;
|
|
35
|
+
// shorter < longer
|
|
36
|
+
if (a === undefined)
|
|
37
|
+
return -1;
|
|
38
|
+
// string > number
|
|
39
|
+
if (typeof a === 'string' && typeof b === 'number')
|
|
40
|
+
return 1;
|
|
41
|
+
// number < string
|
|
42
|
+
if (typeof a === 'number' && typeof b === 'string')
|
|
43
|
+
return -1;
|
|
44
|
+
if (a < b)
|
|
45
|
+
return -1;
|
|
46
|
+
if (a > b)
|
|
47
|
+
return 1;
|
|
48
|
+
// If they're equal, continue comparing segments.
|
|
49
|
+
}
|
|
50
|
+
return 0;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* A single `0`, or a non-zero digit followed by zero or more digits.
|
|
54
|
+
*/
|
|
55
|
+
const NUMERIC_IDENTIFIER = '0|[1-9]\\d*';
|
|
56
|
+
/**
|
|
57
|
+
* Zero or more digits, followed by a letter or hyphen, and then zero or more letters, digits, or hyphens.
|
|
58
|
+
*/
|
|
59
|
+
const NON_NUMERIC_IDENTIFIER = '\\d*[a-zA-Z-][a-zA-Z0-9-]*';
|
|
60
|
+
/**
|
|
61
|
+
* Three dot-separated numeric identifiers.
|
|
62
|
+
*/
|
|
63
|
+
const VERSION_CORE = `(?<major>${NUMERIC_IDENTIFIER})\\.(?<minor>${NUMERIC_IDENTIFIER})\\.(?<patch>${NUMERIC_IDENTIFIER})`;
|
|
64
|
+
/**
|
|
65
|
+
* A numeric identifier, or a non-numeric identifier.
|
|
66
|
+
*/
|
|
67
|
+
const PRERELEASE_IDENTIFIER = `(?:${NUMERIC_IDENTIFIER}|${NON_NUMERIC_IDENTIFIER})`;
|
|
68
|
+
/**
|
|
69
|
+
* A hyphen, followed by one or more dot-separated pre-release version identifiers.
|
|
70
|
+
* @example "-pre.release"
|
|
71
|
+
*/
|
|
72
|
+
const PRERELEASE = `(?:-(?<prerelease>${PRERELEASE_IDENTIFIER}(?:\\.${PRERELEASE_IDENTIFIER})*))`;
|
|
73
|
+
/**
|
|
74
|
+
* Any combination of digits, letters, or hyphens.
|
|
75
|
+
*/
|
|
76
|
+
const BUILD_IDENTIFIER = '[0-9A-Za-z-]+';
|
|
77
|
+
/**
|
|
78
|
+
* A plus sign, followed by one or more period-separated build metadata identifiers.
|
|
79
|
+
* @example "+build.meta"
|
|
80
|
+
*/
|
|
81
|
+
const BUILD = `(?:\\+(?<buildmetadata>${BUILD_IDENTIFIER}(?:\\.${BUILD_IDENTIFIER})*))`;
|
|
82
|
+
/**
|
|
83
|
+
* A version, followed optionally by a pre-release version and build metadata.
|
|
84
|
+
*/
|
|
85
|
+
const FULL_VERSION = `v?${VERSION_CORE}${PRERELEASE}?${BUILD}?`;
|
|
86
|
+
export const FULL_REGEXP = new RegExp(`^${FULL_VERSION}$`);
|
|
87
|
+
/**
|
|
88
|
+
* A comparator.
|
|
89
|
+
* @example `=`, `<`, `<=`, `>`, `>=`
|
|
90
|
+
*/
|
|
91
|
+
const COMPARATOR = '(?:<|>)?=?';
|
|
92
|
+
/**
|
|
93
|
+
* A wildcard identifier.
|
|
94
|
+
* @example "x", "X", "*"
|
|
95
|
+
*/
|
|
96
|
+
const WILDCARD_IDENTIFIER = `x|X|\\*`;
|
|
97
|
+
const XRANGE_IDENTIFIER = `${NUMERIC_IDENTIFIER}|${WILDCARD_IDENTIFIER}`;
|
|
98
|
+
/**
|
|
99
|
+
* A version that can contain wildcards.
|
|
100
|
+
* @example "x", "1.x", "1.x.x", "1.2.x", "*", "1.*", "1.*.*", "1.2.*"
|
|
101
|
+
*/
|
|
102
|
+
export const XRANGE = `[v=\\s]*(?<major>${XRANGE_IDENTIFIER})(?:\\.(?<minor>${XRANGE_IDENTIFIER})(?:\\.(?<patch>${XRANGE_IDENTIFIER})${PRERELEASE}?${BUILD}?)?)?`;
|
|
103
|
+
/**
|
|
104
|
+
* An operator (`~`, `~>`, `^`, `=`, `<`, `<=`, `>`, or `>=`), followed by an x-range.
|
|
105
|
+
* @example "~1.x.x", "^1.2.*", ">=1.2.3"
|
|
106
|
+
*/
|
|
107
|
+
export const OPERATOR_XRANGE_REGEXP = new RegExp(`^(?<operator>~>?|\\^|${COMPARATOR})\\s*${XRANGE}$`);
|
|
108
|
+
/**
|
|
109
|
+
* An empty string or a comparator (`=`, `<`, `<=`, `>`, or `>=`), followed by a version.
|
|
110
|
+
* @example ">1.2.3"
|
|
111
|
+
*/
|
|
112
|
+
export const COMPARATOR_REGEXP = new RegExp(`^(?<operator>${COMPARATOR})\\s*(${FULL_VERSION})$|^$`);
|
|
113
|
+
/**
|
|
114
|
+
* Returns true if the value is a valid SemVer number.
|
|
115
|
+
*
|
|
116
|
+
* Must be a number. Must not be NaN. Can be positive or negative infinity.
|
|
117
|
+
* Can be between 0 and MAX_SAFE_INTEGER.
|
|
118
|
+
* @param value The value to check
|
|
119
|
+
* @returns True if its a valid semver number
|
|
120
|
+
*/
|
|
121
|
+
export function isValidNumber(value) {
|
|
122
|
+
return (typeof value === 'number' &&
|
|
123
|
+
!Number.isNaN(value) &&
|
|
124
|
+
(!Number.isFinite(value) || (0 <= value && value <= Number.MAX_SAFE_INTEGER)));
|
|
125
|
+
}
|
|
126
|
+
export const MAX_LENGTH = 256;
|
|
127
|
+
/**
|
|
128
|
+
* Returns true if the value is a valid semver pre-release or build identifier.
|
|
129
|
+
*
|
|
130
|
+
* Must be a string. Must be between 1 and 256 characters long. Must match
|
|
131
|
+
* the regular expression /[0-9A-Za-z-]+/.
|
|
132
|
+
* @param value The value to check
|
|
133
|
+
* @returns True if the value is a valid semver string.
|
|
134
|
+
*/
|
|
135
|
+
export function isValidString(value) {
|
|
136
|
+
return typeof value === 'string' && value.length > 0 && value.length <= MAX_LENGTH && /[0-9A-Za-z-]+/.test(value);
|
|
137
|
+
}
|
|
138
|
+
const NUMERIC_IDENTIFIER_REGEXP = new RegExp(`^${NUMERIC_IDENTIFIER}$`);
|
|
139
|
+
export function parsePrerelease(prerelease) {
|
|
140
|
+
return prerelease
|
|
141
|
+
.split('.')
|
|
142
|
+
.filter(Boolean)
|
|
143
|
+
.map((id) => {
|
|
144
|
+
if (NUMERIC_IDENTIFIER_REGEXP.test(id)) {
|
|
145
|
+
const number = Number(id);
|
|
146
|
+
if (isValidNumber(number))
|
|
147
|
+
return number;
|
|
148
|
+
}
|
|
149
|
+
return id;
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
export function parseBuild(buildmetadata) {
|
|
153
|
+
return buildmetadata.split('.').filter(Boolean);
|
|
154
|
+
}
|
|
155
|
+
export function parseNumber(input, errorMessage) {
|
|
156
|
+
const number = Number(input);
|
|
157
|
+
if (!isValidNumber(number))
|
|
158
|
+
throw new TypeError(errorMessage);
|
|
159
|
+
return number;
|
|
160
|
+
}
|
|
161
|
+
export function isWildcardComparator(c) {
|
|
162
|
+
return (Number.isNaN(c.major) &&
|
|
163
|
+
Number.isNaN(c.minor) &&
|
|
164
|
+
Number.isNaN(c.patch) &&
|
|
165
|
+
(c.prerelease === undefined || c.prerelease.length === 0) &&
|
|
166
|
+
(c.build === undefined || c.build.length === 0));
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=_shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_shared.js","sourceRoot":"","sources":["../../src/semver/_shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
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
|
+
export declare function testComparatorSet(version: SemVer, set: Comparator[]): boolean;
|
|
11
|
+
//# sourceMappingURL=_test_comparator_set.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_test_comparator_set.d.ts","sourceRoot":"","sources":["../../src/semver/_test_comparator_set.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAEL,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAgCrD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,OAAO,CAqB7E"}
|