lib0 0.2.108 → 0.2.110
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/array.d.ts +2 -2
- package/array.d.ts.map +1 -1
- package/array.js +5 -6
- package/bin/0serve.js +9 -1
- package/bin/gentesthtml.js +16 -2
- package/coverage/tmp/coverage-19938-1752497708602-0.json +1 -0
- package/coverage/tmp/coverage-19939-1752497665435-0.json +1 -0
- package/diff/patience.d.ts +16 -0
- package/diff/patience.d.ts.map +1 -0
- package/diff/patience.js +226 -0
- package/diff/patience.test.d.ts +4 -0
- package/diff/patience.test.d.ts.map +1 -0
- package/dist/aes-gcm.cjs +4 -4
- package/dist/{array-f0f52786.cjs → array-f5410bdd.cjs} +6 -7
- package/dist/array-f5410bdd.cjs.map +1 -0
- package/dist/array.cjs +1 -1
- package/dist/array.d.ts +2 -2
- package/dist/array.d.ts.map +1 -1
- package/dist/{broadcastchannel-f721f1d5.cjs → broadcastchannel-7479dcb7.cjs} +2 -2
- package/dist/{broadcastchannel-f721f1d5.cjs.map → broadcastchannel-7479dcb7.cjs.map} +1 -1
- package/dist/broadcastchannel.cjs +9 -9
- package/dist/{buffer-5c744eee.cjs → buffer-cba90761.cjs} +6 -6
- package/dist/{buffer-5c744eee.cjs.map → buffer-cba90761.cjs.map} +1 -1
- package/dist/buffer.cjs +8 -8
- package/dist/cache.cjs +3 -3
- package/dist/component.cjs +5 -5
- package/dist/{decoding-7b1393a8.cjs → decoding-9732ddf2.cjs} +3 -3
- package/dist/{decoding-7b1393a8.cjs.map → decoding-9732ddf2.cjs.map} +1 -1
- package/dist/decoding.cjs +4 -4
- package/dist/diff/patience.d.ts +16 -0
- package/dist/diff/patience.d.ts.map +1 -0
- package/dist/diff/patience.test.d.ts +4 -0
- package/dist/diff/patience.test.d.ts.map +1 -0
- package/dist/{diff-6c8c103c.cjs → diff-63d13d0f.cjs} +2 -2
- package/dist/{diff-6c8c103c.cjs.map → diff-63d13d0f.cjs.map} +1 -1
- package/dist/diff.cjs +4 -4
- package/dist/{encoding-364fc682.cjs → encoding-62f41e96.cjs} +3 -3
- package/dist/{encoding-364fc682.cjs.map → encoding-62f41e96.cjs.map} +1 -1
- package/dist/encoding.cjs +3 -3
- package/dist/{environment-e8406042.cjs → environment-2789c99d.cjs} +3 -3
- package/dist/{environment-e8406042.cjs.map → environment-2789c99d.cjs.map} +1 -1
- package/dist/environment.cjs +5 -5
- package/dist/{function-a29189eb.cjs → function-6c17de82.cjs} +3 -3
- package/dist/{function-a29189eb.cjs.map → function-6c17de82.cjs.map} +1 -1
- package/dist/function.cjs +3 -3
- package/dist/index.cjs +12 -12
- package/dist/indexeddbV2.cjs +1 -1
- package/dist/jwt.cjs +8 -8
- package/dist/list.cjs +3 -3
- package/dist/logging.cjs +5 -5
- package/dist/logging.common.cjs +5 -5
- package/dist/logging.node.cjs +5 -5
- package/dist/{object-315a738b.cjs → object-491858d1.cjs} +33 -7
- package/dist/object-491858d1.cjs.map +1 -0
- package/dist/object.cjs +3 -1
- package/dist/object.cjs.map +1 -1
- package/dist/object.d.ts +28 -12
- package/dist/object.d.ts.map +1 -1
- package/dist/object.test.d.ts +1 -0
- package/dist/object.test.d.ts.map +1 -1
- package/dist/observable.cjs +1 -1
- package/dist/patience.cjs +236 -0
- package/dist/patience.cjs.map +1 -0
- package/dist/performance.node.cjs +3 -3
- package/dist/pledge.cjs +1 -1
- package/dist/{prng-706a5e42.cjs → prng-6cd9a82d.cjs} +3 -3
- package/dist/{prng-706a5e42.cjs.map → prng-6cd9a82d.cjs.map} +1 -1
- package/dist/prng.cjs +9 -9
- package/dist/prng.test.d.ts.map +1 -1
- package/dist/rabin-gf2-polynomial.cjs +8 -8
- package/dist/rabin-uncached.cjs +8 -8
- package/dist/rabin.cjs +8 -8
- package/dist/random.test.d.ts.map +1 -1
- package/dist/schema.cjs +509 -0
- package/dist/schema.cjs.map +1 -0
- package/dist/schema.d.ts +297 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.test.d.ts +3 -0
- package/dist/schema.test.d.ts.map +1 -0
- package/dist/sort.test.d.ts.map +1 -1
- package/dist/{string-42009272.cjs → string-04e96f2d.cjs} +2 -2
- package/dist/{string-42009272.cjs.map → string-04e96f2d.cjs.map} +1 -1
- package/dist/string.cjs +2 -2
- package/dist/testing.cjs +10 -11
- package/dist/testing.cjs.map +1 -1
- package/dist/testing.d.ts +0 -1
- package/dist/testing.d.ts.map +1 -1
- package/dist/url.cjs +1 -1
- package/dist/{websocket-3a481d20.cjs → websocket-2c325505.cjs} +1 -1
- package/dist/{websocket-3a481d20.cjs.map → websocket-2c325505.cjs.map} +1 -1
- package/dist/websocket.cjs +2 -2
- package/object.d.ts +28 -12
- package/object.d.ts.map +1 -1
- package/object.js +27 -5
- package/object.test.d.ts +1 -0
- package/object.test.d.ts.map +1 -1
- package/package.json +17 -5
- package/prng.test.d.ts.map +1 -1
- package/random.test.d.ts.map +1 -1
- package/schema.d.ts +297 -0
- package/schema.d.ts.map +1 -0
- package/schema.js +470 -0
- package/schema.test.d.ts +3 -0
- package/schema.test.d.ts.map +1 -0
- package/sort.test.d.ts.map +1 -1
- package/test.html +1 -0
- package/test.js +5 -2
- package/testing.d.ts +0 -1
- package/testing.d.ts.map +1 -1
- package/testing.js +0 -2
- package/coverage/tmp/coverage-24213-1747233250173-0.json +0 -1
- package/dist/array-f0f52786.cjs.map +0 -1
- package/dist/object-315a738b.cjs.map +0 -1
|
@@ -21,6 +21,13 @@ const assign = Object.assign;
|
|
|
21
21
|
*/
|
|
22
22
|
const keys = Object.keys;
|
|
23
23
|
|
|
24
|
+
/**
|
|
25
|
+
* @template V
|
|
26
|
+
* @param {{[key:string]: V}} obj
|
|
27
|
+
* @return {Array<V>}
|
|
28
|
+
*/
|
|
29
|
+
const values = Object.values;
|
|
30
|
+
|
|
24
31
|
/**
|
|
25
32
|
* @template V
|
|
26
33
|
* @param {{[k:string]:V}} obj
|
|
@@ -62,8 +69,9 @@ const length = obj => keys(obj).length;
|
|
|
62
69
|
const size = obj => keys(obj).length;
|
|
63
70
|
|
|
64
71
|
/**
|
|
65
|
-
* @
|
|
66
|
-
* @param {
|
|
72
|
+
* @template {{ [key:string|number|symbol]: any }} T
|
|
73
|
+
* @param {T} obj
|
|
74
|
+
* @param {(v:T[keyof T],k:keyof T)=>boolean} f
|
|
67
75
|
* @return {boolean}
|
|
68
76
|
*/
|
|
69
77
|
const some = (obj, f) => {
|
|
@@ -87,8 +95,9 @@ const isEmpty = obj => {
|
|
|
87
95
|
};
|
|
88
96
|
|
|
89
97
|
/**
|
|
90
|
-
* @
|
|
91
|
-
* @param {
|
|
98
|
+
* @template {{ [key:string|number|symbol]: any }} T
|
|
99
|
+
* @param {T} obj
|
|
100
|
+
* @param {(v:T[keyof T],k:keyof T)=>boolean} f
|
|
92
101
|
* @return {boolean}
|
|
93
102
|
*/
|
|
94
103
|
const every = (obj, f) => {
|
|
@@ -104,7 +113,7 @@ const every = (obj, f) => {
|
|
|
104
113
|
* Calls `Object.prototype.hasOwnProperty`.
|
|
105
114
|
*
|
|
106
115
|
* @param {any} obj
|
|
107
|
-
* @param {string|symbol} key
|
|
116
|
+
* @param {string|number|symbol} key
|
|
108
117
|
* @return {boolean}
|
|
109
118
|
*/
|
|
110
119
|
const hasProperty = (obj, key) => Object.prototype.hasOwnProperty.call(obj, key);
|
|
@@ -140,11 +149,25 @@ const deepFreeze = (o) => {
|
|
|
140
149
|
return freeze(o)
|
|
141
150
|
};
|
|
142
151
|
|
|
152
|
+
/**
|
|
153
|
+
* Get object property. Create T if property is undefined and set T on object.
|
|
154
|
+
*
|
|
155
|
+
* @function
|
|
156
|
+
* @template {object} KV
|
|
157
|
+
* @template {keyof KV} [K=keyof KV]
|
|
158
|
+
* @param {KV} o
|
|
159
|
+
* @param {K} key
|
|
160
|
+
* @param {() => KV[K]} createT
|
|
161
|
+
* @return {KV[K]}
|
|
162
|
+
*/
|
|
163
|
+
const setIfUndefined = (o, key, createT) => hasProperty(o, key) ? o[key] : (o[key] = createT());
|
|
164
|
+
|
|
143
165
|
var object = /*#__PURE__*/Object.freeze({
|
|
144
166
|
__proto__: null,
|
|
145
167
|
create: create,
|
|
146
168
|
assign: assign,
|
|
147
169
|
keys: keys,
|
|
170
|
+
values: values,
|
|
148
171
|
forEach: forEach,
|
|
149
172
|
map: map,
|
|
150
173
|
length: length,
|
|
@@ -155,7 +178,8 @@ var object = /*#__PURE__*/Object.freeze({
|
|
|
155
178
|
hasProperty: hasProperty,
|
|
156
179
|
equalFlat: equalFlat,
|
|
157
180
|
freeze: freeze,
|
|
158
|
-
deepFreeze: deepFreeze
|
|
181
|
+
deepFreeze: deepFreeze,
|
|
182
|
+
setIfUndefined: setIfUndefined
|
|
159
183
|
});
|
|
160
184
|
|
|
161
185
|
exports.assign = assign;
|
|
@@ -171,6 +195,8 @@ exports.keys = keys;
|
|
|
171
195
|
exports.length = length;
|
|
172
196
|
exports.map = map;
|
|
173
197
|
exports.object = object;
|
|
198
|
+
exports.setIfUndefined = setIfUndefined;
|
|
174
199
|
exports.size = size;
|
|
175
200
|
exports.some = some;
|
|
176
|
-
|
|
201
|
+
exports.values = values;
|
|
202
|
+
//# sourceMappingURL=object-491858d1.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object-491858d1.cjs","sources":["../object.js"],"sourcesContent":["/**\n * Utility functions for working with EcmaScript objects.\n *\n * @module object\n */\n\n/**\n * @return {Object<string,any>} obj\n */\nexport const create = () => Object.create(null)\n\n/**\n * Object.assign\n */\nexport const assign = Object.assign\n\n/**\n * @param {Object<string,any>} obj\n */\nexport const keys = Object.keys\n\n/**\n * @template V\n * @param {{[key:string]: V}} obj\n * @return {Array<V>}\n */\nexport const values = Object.values\n\n/**\n * @template V\n * @param {{[k:string]:V}} obj\n * @param {function(V,string):any} f\n */\nexport const forEach = (obj, f) => {\n for (const key in obj) {\n f(obj[key], key)\n }\n}\n\n/**\n * @todo implement mapToArray & map\n *\n * @template R\n * @param {Object<string,any>} obj\n * @param {function(any,string):R} f\n * @return {Array<R>}\n */\nexport const map = (obj, f) => {\n const results = []\n for (const key in obj) {\n results.push(f(obj[key], key))\n }\n return results\n}\n\n/**\n * @deprecated use object.size instead\n * @param {Object<string,any>} obj\n * @return {number}\n */\nexport const length = obj => keys(obj).length\n\n/**\n * @param {Object<string,any>} obj\n * @return {number}\n */\nexport const size = obj => keys(obj).length\n\n/**\n * @template {{ [key:string|number|symbol]: any }} T\n * @param {T} obj\n * @param {(v:T[keyof T],k:keyof T)=>boolean} f\n * @return {boolean}\n */\nexport const some = (obj, f) => {\n for (const key in obj) {\n if (f(obj[key], key)) {\n return true\n }\n }\n return false\n}\n\n/**\n * @param {Object|null|undefined} obj\n */\nexport const isEmpty = obj => {\n // eslint-disable-next-line no-unreachable-loop\n for (const _k in obj) {\n return false\n }\n return true\n}\n\n/**\n * @template {{ [key:string|number|symbol]: any }} T\n * @param {T} obj\n * @param {(v:T[keyof T],k:keyof T)=>boolean} f\n * @return {boolean}\n */\nexport const every = (obj, f) => {\n for (const key in obj) {\n if (!f(obj[key], key)) {\n return false\n }\n }\n return true\n}\n\n/**\n * Calls `Object.prototype.hasOwnProperty`.\n *\n * @param {any} obj\n * @param {string|number|symbol} key\n * @return {boolean}\n */\nexport const hasProperty = (obj, key) => Object.prototype.hasOwnProperty.call(obj, key)\n\n/**\n * @param {Object<string,any>} a\n * @param {Object<string,any>} b\n * @return {boolean}\n */\nexport const equalFlat = (a, b) => a === b || (size(a) === size(b) && every(a, (val, key) => (val !== undefined || hasProperty(b, key)) && b[key] === val))\n\n/**\n * Make an object immutable. This hurts performance and is usually not needed if you perform good\n * coding practices.\n */\nexport const freeze = Object.freeze\n\n/**\n * Make an object and all its children immutable.\n * This *really* hurts performance and is usually not needed if you perform good coding practices.\n *\n * @template {any} T\n * @param {T} o\n * @return {Readonly<T>}\n */\nexport const deepFreeze = (o) => {\n for (const key in o) {\n const c = o[key]\n if (typeof c === 'object' || typeof c === 'function') {\n deepFreeze(o[key])\n }\n }\n return freeze(o)\n}\n\n/**\n * Get object property. Create T if property is undefined and set T on object.\n *\n * @function\n * @template {object} KV\n * @template {keyof KV} [K=keyof KV]\n * @param {KV} o\n * @param {K} key\n * @param {() => KV[K]} createT\n * @return {KV[K]}\n */\nexport const setIfUndefined = (o, key, createT) => hasProperty(o, key) ? o[key] : (o[key] = createT())\n"],"names":[],"mappings":"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"}
|
package/dist/object.cjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var object = require('./object-
|
|
5
|
+
var object = require('./object-491858d1.cjs');
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
@@ -18,6 +18,8 @@ exports.isEmpty = object.isEmpty;
|
|
|
18
18
|
exports.keys = object.keys;
|
|
19
19
|
exports.length = object.length;
|
|
20
20
|
exports.map = object.map;
|
|
21
|
+
exports.setIfUndefined = object.setIfUndefined;
|
|
21
22
|
exports.size = object.size;
|
|
22
23
|
exports.some = object.some;
|
|
24
|
+
exports.values = object.values;
|
|
23
25
|
//# sourceMappingURL=object.cjs.map
|
package/dist/object.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"object.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/object.d.ts
CHANGED
|
@@ -6,8 +6,8 @@ export function create(): {
|
|
|
6
6
|
*/
|
|
7
7
|
export const assign: {
|
|
8
8
|
<T extends {}, U>(target: T, source: U): T & U;
|
|
9
|
-
<T_1 extends {}, U_1,
|
|
10
|
-
<T_2 extends {}, U_2,
|
|
9
|
+
<T_1 extends {}, U_1, V_1>(target: T_1, source1: U_1, source2: V_1): T_1 & U_1 & V_1;
|
|
10
|
+
<T_2 extends {}, U_2, V_2, W>(target: T_2, source1: U_2, source2: V_2, source3: W): T_2 & U_2 & V_2 & W;
|
|
11
11
|
(target: object, ...sources: any[]): any;
|
|
12
12
|
};
|
|
13
13
|
/**
|
|
@@ -17,9 +17,20 @@ export const keys: {
|
|
|
17
17
|
(o: object): string[];
|
|
18
18
|
(o: {}): string[];
|
|
19
19
|
};
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
/**
|
|
21
|
+
* @template V
|
|
22
|
+
* @param {{[key:string]: V}} obj
|
|
23
|
+
* @return {Array<V>}
|
|
24
|
+
*/
|
|
25
|
+
export const values: {
|
|
26
|
+
<T>(o: {
|
|
27
|
+
[s: string]: T;
|
|
28
|
+
} | ArrayLike<T>): T[];
|
|
29
|
+
(o: {}): any[];
|
|
30
|
+
};
|
|
31
|
+
export function forEach<V_1>(obj: {
|
|
32
|
+
[k: string]: V_1;
|
|
33
|
+
}, f: (arg0: V_1, arg1: string) => any): void;
|
|
23
34
|
export function map<R>(obj: {
|
|
24
35
|
[x: string]: any;
|
|
25
36
|
}, f: (arg0: any, arg1: string) => R): R[];
|
|
@@ -29,14 +40,18 @@ export function length(obj: {
|
|
|
29
40
|
export function size(obj: {
|
|
30
41
|
[x: string]: any;
|
|
31
42
|
}): number;
|
|
32
|
-
export function some
|
|
33
|
-
[
|
|
34
|
-
|
|
43
|
+
export function some<T extends {
|
|
44
|
+
[key: string]: any;
|
|
45
|
+
[key: number]: any;
|
|
46
|
+
[key: symbol]: any;
|
|
47
|
+
}>(obj: T, f: (v: T[keyof T], k: keyof T) => boolean): boolean;
|
|
35
48
|
export function isEmpty(obj: Object | null | undefined): boolean;
|
|
36
|
-
export function every
|
|
37
|
-
[
|
|
38
|
-
|
|
39
|
-
|
|
49
|
+
export function every<T extends {
|
|
50
|
+
[key: string]: any;
|
|
51
|
+
[key: number]: any;
|
|
52
|
+
[key: symbol]: any;
|
|
53
|
+
}>(obj: T, f: (v: T[keyof T], k: keyof T) => boolean): boolean;
|
|
54
|
+
export function hasProperty(obj: any, key: string | number | symbol): boolean;
|
|
40
55
|
export function equalFlat(a: {
|
|
41
56
|
[x: string]: any;
|
|
42
57
|
}, b: {
|
|
@@ -54,4 +69,5 @@ export const freeze: {
|
|
|
54
69
|
<T_2>(o: T_2): Readonly<T_2>;
|
|
55
70
|
};
|
|
56
71
|
export function deepFreeze<T extends unknown>(o: T): Readonly<T>;
|
|
72
|
+
export function setIfUndefined<KV extends object, K extends keyof KV = keyof KV>(o: KV, key: K, createT: () => KV[K]): KV[K];
|
|
57
73
|
//# sourceMappingURL=object.d.ts.map
|
package/dist/object.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../object.js"],"names":[],"mappings":"AASO;QAFY,MAAM,GAAC,GAAG;EAEkB;AAE/C;;GAEG;AACH;;;;;EAAmC;AAEnC;;GAEG;AACH;;;EAA+B;
|
|
1
|
+
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../object.js"],"names":[],"mappings":"AASO;QAFY,MAAM,GAAC,GAAG;EAEkB;AAE/C;;GAEG;AACH;;;;;EAAmC;AAEnC;;GAEG;AACH;;;EAA+B;AAE/B;;;;GAIG;AACH;;;;;EAAmC;AAO5B;;wBAFe,MAAM,KAAE,GAAG,QAMhC;AAUM;QAJW,MAAM,GAAC,GAAG;aACR,GAAG,QAAC,MAAM,aAS7B;AAOM;QAHW,MAAM,GAAC,GAAG;IAChB,MAAM,CAE2B;AAMtC;QAHW,MAAM,GAAC,GAAG;IAChB,MAAM,CAEyB;AAQpC;;;;6CAH8B,OAAO,GAChC,OAAO,CASlB;AAKM,6BAFI,MAAM,GAAC,IAAI,GAAC,SAAS,WAQ/B;AAQM;;;;6CAH8B,OAAO,GAChC,OAAO,CASlB;AASM,iCAJI,GAAG,OACH,MAAM,GAAC,MAAM,GAAC,MAAM,GACnB,OAAO,CAEoE;AAOhF;QAJW,MAAM,GAAC,GAAG;;QACV,MAAM,GAAC,GAAG;IAChB,OAAO,CAEwI;AAE3J;;;GAGG;AACH;;;;;;EAAmC;AAU5B,iEAQN;AAaM,6HAA+F"}
|
package/dist/object.test.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.test.d.ts","sourceRoot":"","sources":["../object.test.js"],"names":[],"mappings":"AAOO,gCAFI,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"object.test.d.ts","sourceRoot":"","sources":["../object.test.js"],"names":[],"mappings":"AAOO,gCAFI,EAAE,QAAQ,QA4CpB;AAKM,gCAFI,EAAE,QAAQ,QAuBpB;AAKM,wCAFI,EAAE,QAAQ,QAgBpB;mBA9FkB,cAAc"}
|
package/dist/observable.cjs
CHANGED
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var map = require('./map-0dabcc55.cjs');
|
|
6
6
|
var set = require('./set-a0a3ea69.cjs');
|
|
7
|
-
var array = require('./array-
|
|
7
|
+
var array = require('./array-f5410bdd.cjs');
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Observable class prototype.
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var map = require('./map-0dabcc55.cjs');
|
|
6
|
+
var math = require('./math-08e068f9.cjs');
|
|
7
|
+
var array = require('./array-f5410bdd.cjs');
|
|
8
|
+
require('./set-a0a3ea69.cjs');
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* A very simple diff algorithm. Slightly adapted to support splitting at different stages (e.g.
|
|
12
|
+
* first diff lines, then diff words)
|
|
13
|
+
*
|
|
14
|
+
* https://bramcohen.livejournal.com/73318.html
|
|
15
|
+
*
|
|
16
|
+
* @experiemantal This API will likely change.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Implementation of patience diff. Expects that content is pre-split (e.g. by newline).
|
|
21
|
+
*
|
|
22
|
+
* @param {Array<string>} as
|
|
23
|
+
* @param {Array<string>} bs
|
|
24
|
+
* @return {Array<{ index: number, remove: Array<string>, insert: Array<string>}>} changeset @todo should use delta instead
|
|
25
|
+
*/
|
|
26
|
+
const diff = (as, bs) => {
|
|
27
|
+
const {
|
|
28
|
+
middleAs,
|
|
29
|
+
middleBs,
|
|
30
|
+
commonPrefix
|
|
31
|
+
} = removeCommonPrefixAndSuffix(as, bs);
|
|
32
|
+
return lcs(middleAs, middleBs, commonPrefix)
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* @param {string} a
|
|
37
|
+
* @param {string} b
|
|
38
|
+
* @param {RegExp|string} _regexp
|
|
39
|
+
*/
|
|
40
|
+
const diffSplitBy = (a, b, _regexp) => {
|
|
41
|
+
const isStringSeparator = typeof _regexp === 'string';
|
|
42
|
+
const separator = isStringSeparator ? _regexp : '';
|
|
43
|
+
const regexp = isStringSeparator ? new RegExp(_regexp, 'g') : _regexp;
|
|
44
|
+
const as = splitByRegexp(a, regexp, !isStringSeparator);
|
|
45
|
+
const bs = splitByRegexp(b, regexp, !isStringSeparator);
|
|
46
|
+
const changes = diff(as, bs);
|
|
47
|
+
let prevSplitIndex = 0;
|
|
48
|
+
let prevStringIndex = 0;
|
|
49
|
+
return changes.map(change => {
|
|
50
|
+
for (; prevSplitIndex < change.index; prevSplitIndex++) {
|
|
51
|
+
prevStringIndex += as[prevSplitIndex].length;
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
index: prevStringIndex,
|
|
55
|
+
remove: change.remove.join(separator),
|
|
56
|
+
insert: change.insert.join(separator)
|
|
57
|
+
}
|
|
58
|
+
})
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Sensible default for diffing strings using patience (it's fast though).
|
|
63
|
+
*
|
|
64
|
+
* Perform different types of patience diff on the content. Diff first by newline, then paragraphs, then by word
|
|
65
|
+
* (split by space, brackets, punctuation)
|
|
66
|
+
*
|
|
67
|
+
* @param {string} a
|
|
68
|
+
* @param {string} b
|
|
69
|
+
*/
|
|
70
|
+
const diffAuto = (a, b) =>
|
|
71
|
+
diffSplitBy(a, b, '\n').map(d =>
|
|
72
|
+
diffSplitBy(d.remove, d.insert, /\. |[a-zA-Z0-9]+|[. ()[\],;{}]/g).map(dd => ({
|
|
73
|
+
insert: dd.insert,
|
|
74
|
+
remove: dd.remove,
|
|
75
|
+
index: dd.index + d.index
|
|
76
|
+
}))
|
|
77
|
+
).flat();
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* @param {Array<string>} as
|
|
81
|
+
* @param {Array<string>} bs
|
|
82
|
+
*/
|
|
83
|
+
const removeCommonPrefixAndSuffix = (as, bs) => {
|
|
84
|
+
const commonLen = math.min(as.length, bs.length);
|
|
85
|
+
let commonPrefix = 0;
|
|
86
|
+
let commonSuffix = 0;
|
|
87
|
+
// match start
|
|
88
|
+
for (; commonPrefix < commonLen && as[commonPrefix] === bs[commonPrefix]; commonPrefix++) { /* nop */ }
|
|
89
|
+
// match end
|
|
90
|
+
for (; commonSuffix < commonLen - commonPrefix && as[as.length - 1 - commonSuffix] === bs[bs.length - 1 - commonSuffix]; commonSuffix++) { /* nop */ }
|
|
91
|
+
const middleAs = as.slice(commonPrefix, as.length - commonSuffix);
|
|
92
|
+
const middleBs = bs.slice(commonPrefix, bs.length - commonSuffix);
|
|
93
|
+
return {
|
|
94
|
+
middleAs, middleBs, commonPrefix, commonSuffix
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Splits string by regex and returns all strings as an array. The matched parts are also returned.
|
|
100
|
+
*
|
|
101
|
+
* @param {string} str
|
|
102
|
+
* @param {RegExp} regexp
|
|
103
|
+
* @param {boolean} includeSeparator
|
|
104
|
+
*/
|
|
105
|
+
const splitByRegexp = (str, regexp, includeSeparator) => {
|
|
106
|
+
const matches = [...str.matchAll(regexp)];
|
|
107
|
+
let prevIndex = 0;
|
|
108
|
+
/**
|
|
109
|
+
* @type {Array<string>}
|
|
110
|
+
*/
|
|
111
|
+
const res = [];
|
|
112
|
+
matches.forEach(m => {
|
|
113
|
+
prevIndex < (m.index || 0) && res.push(str.slice(prevIndex, m.index));
|
|
114
|
+
includeSeparator && res.push(m[0]); // is always non-empty
|
|
115
|
+
prevIndex = /** @type {number} */ (m.index) + m[0].length;
|
|
116
|
+
});
|
|
117
|
+
const end = str.slice(prevIndex);
|
|
118
|
+
end.length > 0 && res.push(end);
|
|
119
|
+
return res
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* An item may have multiple occurances (not when matching unique entries). It also may have a
|
|
124
|
+
* reference to the stack of other items (from as to bs).
|
|
125
|
+
*/
|
|
126
|
+
class Item {
|
|
127
|
+
constructor () {
|
|
128
|
+
/**
|
|
129
|
+
* @type {Array<number>}
|
|
130
|
+
*/
|
|
131
|
+
this.indexes = [];
|
|
132
|
+
/**
|
|
133
|
+
* The matching item from the other side
|
|
134
|
+
* @type {Item?}
|
|
135
|
+
*/
|
|
136
|
+
this.match = null;
|
|
137
|
+
/**
|
|
138
|
+
* For patience sort. Reference (index of the stack) to the previous pile.
|
|
139
|
+
*
|
|
140
|
+
* @type {Item?}
|
|
141
|
+
*/
|
|
142
|
+
this.ref = null;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* @param {Array<string>} xs
|
|
148
|
+
*/
|
|
149
|
+
const partition = xs => {
|
|
150
|
+
/**
|
|
151
|
+
* @type {Map<string,Item>}
|
|
152
|
+
*/
|
|
153
|
+
const refs = map.create();
|
|
154
|
+
xs.forEach((x, index) => {
|
|
155
|
+
map.setIfUndefined(refs, x, () => new Item()).indexes.push(index);
|
|
156
|
+
});
|
|
157
|
+
return refs
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Find the longest common subsequence of items using patience sort.
|
|
162
|
+
*
|
|
163
|
+
* @param {Array<string>} as
|
|
164
|
+
* @param {Array<string>} bs
|
|
165
|
+
* @param {number} indexAdjust
|
|
166
|
+
*/
|
|
167
|
+
const lcs = (as, bs, indexAdjust) => {
|
|
168
|
+
if (as.length === 0 && bs.length === 0) return []
|
|
169
|
+
const aParts = partition(as);
|
|
170
|
+
const bParts = partition(bs);
|
|
171
|
+
/**
|
|
172
|
+
* @type {Array<Array<Item>>} I.e. Array<Pile<Item>>
|
|
173
|
+
*/
|
|
174
|
+
const piles = [];
|
|
175
|
+
aParts.forEach((aItem, aKey) => {
|
|
176
|
+
// skip if no match or if either item is not unique
|
|
177
|
+
if (aItem.indexes.length > 1 || (aItem.match = bParts.get(aKey) || null) == null || aItem.match.indexes.length > 1) return
|
|
178
|
+
for (let i = 0; i < piles.length; i++) {
|
|
179
|
+
const pile = piles[i];
|
|
180
|
+
if (aItem.match.indexes[0] < /** @type {Item} */ (pile[pile.length - 1].match).indexes[0]) {
|
|
181
|
+
pile.push(aItem);
|
|
182
|
+
if (i > 0) aItem.ref = array.last(piles[i - 1]);
|
|
183
|
+
return
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
piles.length > 0 && (aItem.ref = array.last(piles[piles.length - 1]));
|
|
187
|
+
piles.push([aItem]);
|
|
188
|
+
});
|
|
189
|
+
/**
|
|
190
|
+
* References to all matched items
|
|
191
|
+
*
|
|
192
|
+
* @type {Array<Item>}
|
|
193
|
+
*/
|
|
194
|
+
const matches = [];
|
|
195
|
+
/**
|
|
196
|
+
* @type {Item?}
|
|
197
|
+
*/
|
|
198
|
+
let currPileItem = piles[piles.length - 1]?.[0];
|
|
199
|
+
while (currPileItem != null) {
|
|
200
|
+
matches.push(currPileItem);
|
|
201
|
+
currPileItem = currPileItem.ref;
|
|
202
|
+
}
|
|
203
|
+
matches.reverse();
|
|
204
|
+
// add pseude match (assume the string terminal always matches)
|
|
205
|
+
const pseudoA = new Item();
|
|
206
|
+
const pseudoB = new Item();
|
|
207
|
+
pseudoA.match = pseudoB;
|
|
208
|
+
pseudoA.indexes.push(as.length);
|
|
209
|
+
pseudoB.indexes.push(bs.length);
|
|
210
|
+
matches.push(pseudoA);
|
|
211
|
+
/**
|
|
212
|
+
* @type {Array<{ index: number, remove: Array<string>, insert: Array<string>}>}
|
|
213
|
+
*/
|
|
214
|
+
const changeset = [];
|
|
215
|
+
let diffAStart = 0;
|
|
216
|
+
let diffBStart = 0;
|
|
217
|
+
for (let i = 0; i < matches.length; i++) {
|
|
218
|
+
const m = matches[i];
|
|
219
|
+
const delLength = m.indexes[0] - diffAStart;
|
|
220
|
+
const insLength = /** @type {Item} */ (m.match).indexes[0] - diffBStart;
|
|
221
|
+
if (delLength !== 0 || insLength !== 0) {
|
|
222
|
+
const stripped = removeCommonPrefixAndSuffix(as.slice(diffAStart, diffAStart + delLength), bs.slice(diffBStart, diffBStart + insLength));
|
|
223
|
+
if (stripped.middleAs.length !== 0 || stripped.middleBs.length !== 0) {
|
|
224
|
+
changeset.push({ index: diffAStart + indexAdjust + stripped.commonPrefix, remove: stripped.middleAs, insert: stripped.middleBs });
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
diffAStart = m.indexes[0] + 1;
|
|
228
|
+
diffBStart = /** @type {Item} */ (m.match).indexes[0] + 1;
|
|
229
|
+
}
|
|
230
|
+
return changeset
|
|
231
|
+
};
|
|
232
|
+
|
|
233
|
+
exports.diff = diff;
|
|
234
|
+
exports.diffAuto = diffAuto;
|
|
235
|
+
exports.diffSplitBy = diffSplitBy;
|
|
236
|
+
//# sourceMappingURL=patience.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patience.cjs","sources":["../diff/patience.js"],"sourcesContent":["/**\n * A very simple diff algorithm. Slightly adapted to support splitting at different stages (e.g.\n * first diff lines, then diff words)\n *\n * https://bramcohen.livejournal.com/73318.html\n *\n * @experiemantal This API will likely change.\n */\n\nimport * as map from '../map.js'\nimport * as math from '../math.js'\nimport * as array from '../array.js'\n\n/**\n * Implementation of patience diff. Expects that content is pre-split (e.g. by newline).\n *\n * @param {Array<string>} as\n * @param {Array<string>} bs\n * @return {Array<{ index: number, remove: Array<string>, insert: Array<string>}>} changeset @todo should use delta instead\n */\nexport const diff = (as, bs) => {\n const {\n middleAs,\n middleBs,\n commonPrefix\n } = removeCommonPrefixAndSuffix(as, bs)\n return lcs(middleAs, middleBs, commonPrefix)\n}\n\n/**\n * @param {string} a\n * @param {string} b\n * @param {RegExp|string} _regexp\n */\nexport const diffSplitBy = (a, b, _regexp) => {\n const isStringSeparator = typeof _regexp === 'string'\n const separator = isStringSeparator ? _regexp : ''\n const regexp = isStringSeparator ? new RegExp(_regexp, 'g') : _regexp\n const as = splitByRegexp(a, regexp, !isStringSeparator)\n const bs = splitByRegexp(b, regexp, !isStringSeparator)\n const changes = diff(as, bs)\n let prevSplitIndex = 0\n let prevStringIndex = 0\n return changes.map(change => {\n for (; prevSplitIndex < change.index; prevSplitIndex++) {\n prevStringIndex += as[prevSplitIndex].length\n }\n return {\n index: prevStringIndex,\n remove: change.remove.join(separator),\n insert: change.insert.join(separator)\n }\n })\n}\n\n/**\n * Sensible default for diffing strings using patience (it's fast though).\n *\n * Perform different types of patience diff on the content. Diff first by newline, then paragraphs, then by word\n * (split by space, brackets, punctuation)\n *\n * @param {string} a\n * @param {string} b\n */\nexport const diffAuto = (a, b) =>\n diffSplitBy(a, b, '\\n').map(d =>\n diffSplitBy(d.remove, d.insert, /\\. |[a-zA-Z0-9]+|[. ()[\\],;{}]/g).map(dd => ({\n insert: dd.insert,\n remove: dd.remove,\n index: dd.index + d.index\n }))\n ).flat()\n\n/**\n * @param {Array<string>} as\n * @param {Array<string>} bs\n */\nconst removeCommonPrefixAndSuffix = (as, bs) => {\n const commonLen = math.min(as.length, bs.length)\n let commonPrefix = 0\n let commonSuffix = 0\n // match start\n for (; commonPrefix < commonLen && as[commonPrefix] === bs[commonPrefix]; commonPrefix++) { /* nop */ }\n // match end\n for (; commonSuffix < commonLen - commonPrefix && as[as.length - 1 - commonSuffix] === bs[bs.length - 1 - commonSuffix]; commonSuffix++) { /* nop */ }\n const middleAs = as.slice(commonPrefix, as.length - commonSuffix)\n const middleBs = bs.slice(commonPrefix, bs.length - commonSuffix)\n return {\n middleAs, middleBs, commonPrefix, commonSuffix\n }\n}\n\n/**\n * Splits string by regex and returns all strings as an array. The matched parts are also returned.\n *\n * @param {string} str\n * @param {RegExp} regexp\n * @param {boolean} includeSeparator\n */\nconst splitByRegexp = (str, regexp, includeSeparator) => {\n const matches = [...str.matchAll(regexp)]\n let prevIndex = 0\n /**\n * @type {Array<string>}\n */\n const res = []\n matches.forEach(m => {\n prevIndex < (m.index || 0) && res.push(str.slice(prevIndex, m.index))\n includeSeparator && res.push(m[0]) // is always non-empty\n prevIndex = /** @type {number} */ (m.index) + m[0].length\n })\n const end = str.slice(prevIndex)\n end.length > 0 && res.push(end)\n return res\n}\n\n/**\n * An item may have multiple occurances (not when matching unique entries). It also may have a\n * reference to the stack of other items (from as to bs).\n */\nclass Item {\n constructor () {\n /**\n * @type {Array<number>}\n */\n this.indexes = []\n /**\n * The matching item from the other side\n * @type {Item?}\n */\n this.match = null\n /**\n * For patience sort. Reference (index of the stack) to the previous pile.\n *\n * @type {Item?}\n */\n this.ref = null\n }\n}\n\n/**\n * @param {Array<string>} xs\n */\nconst partition = xs => {\n /**\n * @type {Map<string,Item>}\n */\n const refs = map.create()\n xs.forEach((x, index) => {\n map.setIfUndefined(refs, x, () => new Item()).indexes.push(index)\n })\n return refs\n}\n\n/**\n * Find the longest common subsequence of items using patience sort.\n *\n * @param {Array<string>} as\n * @param {Array<string>} bs\n * @param {number} indexAdjust\n */\nconst lcs = (as, bs, indexAdjust) => {\n if (as.length === 0 && bs.length === 0) return []\n const aParts = partition(as)\n const bParts = partition(bs)\n /**\n * @type {Array<Array<Item>>} I.e. Array<Pile<Item>>\n */\n const piles = []\n aParts.forEach((aItem, aKey) => {\n // skip if no match or if either item is not unique\n if (aItem.indexes.length > 1 || (aItem.match = bParts.get(aKey) || null) == null || aItem.match.indexes.length > 1) return\n for (let i = 0; i < piles.length; i++) {\n const pile = piles[i]\n if (aItem.match.indexes[0] < /** @type {Item} */ (pile[pile.length - 1].match).indexes[0]) {\n pile.push(aItem)\n if (i > 0) aItem.ref = array.last(piles[i - 1])\n return\n }\n }\n piles.length > 0 && (aItem.ref = array.last(piles[piles.length - 1]))\n piles.push([aItem])\n })\n /**\n * References to all matched items\n *\n * @type {Array<Item>}\n */\n const matches = []\n /**\n * @type {Item?}\n */\n let currPileItem = piles[piles.length - 1]?.[0]\n while (currPileItem != null) {\n matches.push(currPileItem)\n currPileItem = currPileItem.ref\n }\n matches.reverse()\n // add pseude match (assume the string terminal always matches)\n const pseudoA = new Item()\n const pseudoB = new Item()\n pseudoA.match = pseudoB\n pseudoA.indexes.push(as.length)\n pseudoB.indexes.push(bs.length)\n matches.push(pseudoA)\n /**\n * @type {Array<{ index: number, remove: Array<string>, insert: Array<string>}>}\n */\n const changeset = []\n let diffAStart = 0\n let diffBStart = 0\n for (let i = 0; i < matches.length; i++) {\n const m = matches[i]\n const delLength = m.indexes[0] - diffAStart\n const insLength = /** @type {Item} */ (m.match).indexes[0] - diffBStart\n if (delLength !== 0 || insLength !== 0) {\n const stripped = removeCommonPrefixAndSuffix(as.slice(diffAStart, diffAStart + delLength), bs.slice(diffBStart, diffBStart + insLength))\n if (stripped.middleAs.length !== 0 || stripped.middleBs.length !== 0) {\n changeset.push({ index: diffAStart + indexAdjust + stripped.commonPrefix, remove: stripped.middleAs, insert: stripped.middleBs })\n }\n }\n diffAStart = m.indexes[0] + 1\n diffBStart = /** @type {Item} */ (m.match).indexes[0] + 1\n }\n return changeset\n}\n"],"names":["math.min","map.create","map.setIfUndefined","array.last"],"mappings":"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"}
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var node_perf_hooks = require('node:perf_hooks');
|
|
6
|
-
var _function = require('./function-
|
|
6
|
+
var _function = require('./function-6c17de82.cjs');
|
|
7
7
|
var time = require('./time-bc2081b9.cjs');
|
|
8
|
-
require('./array-
|
|
8
|
+
require('./array-f5410bdd.cjs');
|
|
9
9
|
require('./set-a0a3ea69.cjs');
|
|
10
|
-
require('./object-
|
|
10
|
+
require('./object-491858d1.cjs');
|
|
11
11
|
require('./traits.cjs');
|
|
12
12
|
require('./metric.cjs');
|
|
13
13
|
require('./math-08e068f9.cjs');
|
package/dist/pledge.cjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var binary = require('./binary-ac8e39e2.cjs');
|
|
4
|
-
var string = require('./string-
|
|
4
|
+
var string = require('./string-04e96f2d.cjs');
|
|
5
5
|
var math = require('./math-08e068f9.cjs');
|
|
6
|
-
var buffer = require('./buffer-
|
|
6
|
+
var buffer = require('./buffer-cba90761.cjs');
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* @module prng
|
|
@@ -384,4 +384,4 @@ exports.uint8Array = uint8Array;
|
|
|
384
384
|
exports.utf16Rune = utf16Rune;
|
|
385
385
|
exports.utf16String = utf16String;
|
|
386
386
|
exports.word = word;
|
|
387
|
-
//# sourceMappingURL=prng-
|
|
387
|
+
//# sourceMappingURL=prng-6cd9a82d.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prng-706a5e42.cjs","sources":["../prng/Xorshift32.js","../prng/Xoroshiro128plus.js","../prng.js"],"sourcesContent":["/**\n * @module prng\n */\n\nimport * as binary from '../binary.js'\n\n/**\n * Xorshift32 is a very simple but elegang PRNG with a period of `2^32-1`.\n */\nexport class Xorshift32 {\n /**\n * @param {number} seed Unsigned 32 bit number\n */\n constructor (seed) {\n this.seed = seed\n /**\n * @type {number}\n */\n this._state = seed\n }\n\n /**\n * Generate a random signed integer.\n *\n * @return {Number} A 32 bit signed integer.\n */\n next () {\n let x = this._state\n x ^= x << 13\n x ^= x >> 17\n x ^= x << 5\n this._state = x\n return (x >>> 0) / (binary.BITS32 + 1)\n }\n}\n","/**\n * @module prng\n */\n\nimport { Xorshift32 } from './Xorshift32.js'\nimport * as binary from '../binary.js'\n\n/**\n * This is a variant of xoroshiro128plus - the fastest full-period generator passing BigCrush without systematic failures.\n *\n * This implementation follows the idea of the original xoroshiro128plus implementation,\n * but is optimized for the JavaScript runtime. I.e.\n * * The operations are performed on 32bit integers (the original implementation works with 64bit values).\n * * The initial 128bit state is computed based on a 32bit seed and Xorshift32.\n * * This implementation returns two 32bit values based on the 64bit value that is computed by xoroshiro128plus.\n * Caution: The last addition step works slightly different than in the original implementation - the add carry of the\n * first 32bit addition is not carried over to the last 32bit.\n *\n * [Reference implementation](http://vigna.di.unimi.it/xorshift/xoroshiro128plus.c)\n */\nexport class Xoroshiro128plus {\n /**\n * @param {number} seed Unsigned 32 bit number\n */\n constructor (seed) {\n this.seed = seed\n // This is a variant of Xoroshiro128plus to fill the initial state\n const xorshift32 = new Xorshift32(seed)\n this.state = new Uint32Array(4)\n for (let i = 0; i < 4; i++) {\n this.state[i] = xorshift32.next() * binary.BITS32\n }\n this._fresh = true\n }\n\n /**\n * @return {number} Float/Double in [0,1)\n */\n next () {\n const state = this.state\n if (this._fresh) {\n this._fresh = false\n return ((state[0] + state[2]) >>> 0) / (binary.BITS32 + 1)\n } else {\n this._fresh = true\n const s0 = state[0]\n const s1 = state[1]\n const s2 = state[2] ^ s0\n const s3 = state[3] ^ s1\n // function js_rotl (x, k) {\n // k = k - 32\n // const x1 = x[0]\n // const x2 = x[1]\n // x[0] = x2 << k | x1 >>> (32 - k)\n // x[1] = x1 << k | x2 >>> (32 - k)\n // }\n // rotl(s0, 55) // k = 23 = 55 - 32; j = 9 = 32 - 23\n state[0] = (s1 << 23 | s0 >>> 9) ^ s2 ^ (s2 << 14 | s3 >>> 18)\n state[1] = (s0 << 23 | s1 >>> 9) ^ s3 ^ (s3 << 14)\n // rol(s1, 36) // k = 4 = 36 - 32; j = 23 = 32 - 9\n state[2] = s3 << 4 | s2 >>> 28\n state[3] = s2 << 4 | s3 >>> 28\n return (((state[1] + state[3]) >>> 0) / (binary.BITS32 + 1))\n }\n }\n}\n\n/*\n// Reference implementation\n// Source: http://vigna.di.unimi.it/xorshift/xoroshiro128plus.c\n// By David Blackman and Sebastiano Vigna\n// Who published the reference implementation under Public Domain (CC0)\n\n#include <stdint.h>\n#include <stdio.h>\n\nuint64_t s[2];\n\nstatic inline uint64_t rotl(const uint64_t x, int k) {\n return (x << k) | (x >> (64 - k));\n}\n\nuint64_t next(void) {\n const uint64_t s0 = s[0];\n uint64_t s1 = s[1];\n s1 ^= s0;\n s[0] = rotl(s0, 55) ^ s1 ^ (s1 << 14); // a, b\n s[1] = rotl(s1, 36); // c\n return (s[0] + s[1]) & 0xFFFFFFFF;\n}\n\nint main(void)\n{\n int i;\n s[0] = 1111 | (1337ul << 32);\n s[1] = 1234 | (9999ul << 32);\n\n printf(\"1000 outputs of genrand_int31()\\n\");\n for (i=0; i<100; i++) {\n printf(\"%10lu \", i);\n printf(\"%10lu \", next());\n printf(\"- %10lu \", s[0] >> 32);\n printf(\"%10lu \", (s[0] << 32) >> 32);\n printf(\"%10lu \", s[1] >> 32);\n printf(\"%10lu \", (s[1] << 32) >> 32);\n printf(\"\\n\");\n // if (i%5==4) printf(\"\\n\");\n }\n return 0;\n}\n*/\n","/**\n * Fast Pseudo Random Number Generators.\n *\n * Given a seed a PRNG generates a sequence of numbers that cannot be reasonably predicted.\n * Two PRNGs must generate the same random sequence of numbers if given the same seed.\n *\n * @module prng\n */\n\nimport * as binary from './binary.js'\nimport { fromCharCode, fromCodePoint } from './string.js'\nimport * as math from './math.js'\nimport { Xoroshiro128plus } from './prng/Xoroshiro128plus.js'\nimport * as buffer from './buffer.js'\n\n/**\n * Description of the function\n * @callback generatorNext\n * @return {number} A random float in the cange of [0,1)\n */\n\n/**\n * A random type generator.\n *\n * @typedef {Object} PRNG\n * @property {generatorNext} next Generate new number\n */\nexport const DefaultPRNG = Xoroshiro128plus\n\n/**\n * Create a Xoroshiro128plus Pseudo-Random-Number-Generator.\n * This is the fastest full-period generator passing BigCrush without systematic failures.\n * But there are more PRNGs available in ./PRNG/.\n *\n * @param {number} seed A positive 32bit integer. Do not use negative numbers.\n * @return {PRNG}\n */\nexport const create = seed => new DefaultPRNG(seed)\n\n/**\n * Generates a single random bool.\n *\n * @param {PRNG} gen A random number generator.\n * @return {Boolean} A random boolean\n */\nexport const bool = gen => (gen.next() >= 0.5)\n\n/**\n * Generates a random integer with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const int53 = (gen, min, max) => math.floor(gen.next() * (max + 1 - min) + min)\n\n/**\n * Generates a random integer with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const uint53 = (gen, min, max) => math.abs(int53(gen, min, max))\n\n/**\n * Generates a random integer with 32 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const int32 = (gen, min, max) => math.floor(gen.next() * (max + 1 - min) + min)\n\n/**\n * Generates a random integer with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const uint32 = (gen, min, max) => int32(gen, min, max) >>> 0\n\n/**\n * @deprecated\n * Optimized version of prng.int32. It has the same precision as prng.int32, but should be preferred when\n * openaring on smaller ranges.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive). The max inclusive number is `binary.BITS31-1`\n * @return {Number} A random integer on [min, max]\n */\nexport const int31 = (gen, min, max) => int32(gen, min, max)\n\n/**\n * Generates a random real on [0, 1) with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @return {Number} A random real number on [0, 1).\n */\nexport const real53 = gen => gen.next() // (((gen.next() >>> 5) * binary.BIT26) + (gen.next() >>> 6)) / MAX_SAFE_INTEGER\n\n/**\n * Generates a random character from char code 32 - 126. I.e. Characters, Numbers, special characters, and Space:\n *\n * @param {PRNG} gen A random number generator.\n * @return {string}\n *\n * (Space)!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[/]^_`abcdefghijklmnopqrstuvwxyz{|}~\n */\nexport const char = gen => fromCharCode(int31(gen, 32, 126))\n\n/**\n * @param {PRNG} gen\n * @return {string} A single letter (a-z)\n */\nexport const letter = gen => fromCharCode(int31(gen, 97, 122))\n\n/**\n * @param {PRNG} gen\n * @param {number} [minLen=0]\n * @param {number} [maxLen=20]\n * @return {string} A random word (0-20 characters) without spaces consisting of letters (a-z)\n */\nexport const word = (gen, minLen = 0, maxLen = 20) => {\n const len = int31(gen, minLen, maxLen)\n let str = ''\n for (let i = 0; i < len; i++) {\n str += letter(gen)\n }\n return str\n}\n\n/**\n * TODO: this function produces invalid runes. Does not cover all of utf16!!\n *\n * @param {PRNG} gen\n * @return {string}\n */\nexport const utf16Rune = gen => {\n const codepoint = int31(gen, 0, 256)\n return fromCodePoint(codepoint)\n}\n\n/**\n * @param {PRNG} gen\n * @param {number} [maxlen = 20]\n */\nexport const utf16String = (gen, maxlen = 20) => {\n const len = int31(gen, 0, maxlen)\n let str = ''\n for (let i = 0; i < len; i++) {\n str += utf16Rune(gen)\n }\n return str\n}\n\n/**\n * Returns one element of a given array.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Array<T>} array Non empty Array of possible values.\n * @return {T} One of the values of the supplied Array.\n * @template T\n */\nexport const oneOf = (gen, array) => array[int31(gen, 0, array.length - 1)]\n\n/**\n * @param {PRNG} gen\n * @param {number} len\n * @return {Uint8Array}\n */\nexport const uint8Array = (gen, len) => {\n const buf = buffer.createUint8ArrayFromLen(len)\n for (let i = 0; i < buf.length; i++) {\n buf[i] = int32(gen, 0, binary.BITS8)\n }\n return buf\n}\n\n/* c8 ignore start */\n/**\n * @param {PRNG} gen\n * @param {number} len\n * @return {Uint16Array}\n */\nexport const uint16Array = (gen, len) => new Uint16Array(uint8Array(gen, len * 2).buffer)\n\n/**\n * @param {PRNG} gen\n * @param {number} len\n * @return {Uint32Array}\n */\nexport const uint32Array = (gen, len) => new Uint32Array(uint8Array(gen, len * 4).buffer)\n/* c8 ignore stop */\n"],"names":["binary.BITS32","math.floor","math.abs","fromCharCode","fromCodePoint","buffer.createUint8ArrayFromLen","binary.BITS8"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prng-6cd9a82d.cjs","sources":["../prng/Xorshift32.js","../prng/Xoroshiro128plus.js","../prng.js"],"sourcesContent":["/**\n * @module prng\n */\n\nimport * as binary from '../binary.js'\n\n/**\n * Xorshift32 is a very simple but elegang PRNG with a period of `2^32-1`.\n */\nexport class Xorshift32 {\n /**\n * @param {number} seed Unsigned 32 bit number\n */\n constructor (seed) {\n this.seed = seed\n /**\n * @type {number}\n */\n this._state = seed\n }\n\n /**\n * Generate a random signed integer.\n *\n * @return {Number} A 32 bit signed integer.\n */\n next () {\n let x = this._state\n x ^= x << 13\n x ^= x >> 17\n x ^= x << 5\n this._state = x\n return (x >>> 0) / (binary.BITS32 + 1)\n }\n}\n","/**\n * @module prng\n */\n\nimport { Xorshift32 } from './Xorshift32.js'\nimport * as binary from '../binary.js'\n\n/**\n * This is a variant of xoroshiro128plus - the fastest full-period generator passing BigCrush without systematic failures.\n *\n * This implementation follows the idea of the original xoroshiro128plus implementation,\n * but is optimized for the JavaScript runtime. I.e.\n * * The operations are performed on 32bit integers (the original implementation works with 64bit values).\n * * The initial 128bit state is computed based on a 32bit seed and Xorshift32.\n * * This implementation returns two 32bit values based on the 64bit value that is computed by xoroshiro128plus.\n * Caution: The last addition step works slightly different than in the original implementation - the add carry of the\n * first 32bit addition is not carried over to the last 32bit.\n *\n * [Reference implementation](http://vigna.di.unimi.it/xorshift/xoroshiro128plus.c)\n */\nexport class Xoroshiro128plus {\n /**\n * @param {number} seed Unsigned 32 bit number\n */\n constructor (seed) {\n this.seed = seed\n // This is a variant of Xoroshiro128plus to fill the initial state\n const xorshift32 = new Xorshift32(seed)\n this.state = new Uint32Array(4)\n for (let i = 0; i < 4; i++) {\n this.state[i] = xorshift32.next() * binary.BITS32\n }\n this._fresh = true\n }\n\n /**\n * @return {number} Float/Double in [0,1)\n */\n next () {\n const state = this.state\n if (this._fresh) {\n this._fresh = false\n return ((state[0] + state[2]) >>> 0) / (binary.BITS32 + 1)\n } else {\n this._fresh = true\n const s0 = state[0]\n const s1 = state[1]\n const s2 = state[2] ^ s0\n const s3 = state[3] ^ s1\n // function js_rotl (x, k) {\n // k = k - 32\n // const x1 = x[0]\n // const x2 = x[1]\n // x[0] = x2 << k | x1 >>> (32 - k)\n // x[1] = x1 << k | x2 >>> (32 - k)\n // }\n // rotl(s0, 55) // k = 23 = 55 - 32; j = 9 = 32 - 23\n state[0] = (s1 << 23 | s0 >>> 9) ^ s2 ^ (s2 << 14 | s3 >>> 18)\n state[1] = (s0 << 23 | s1 >>> 9) ^ s3 ^ (s3 << 14)\n // rol(s1, 36) // k = 4 = 36 - 32; j = 23 = 32 - 9\n state[2] = s3 << 4 | s2 >>> 28\n state[3] = s2 << 4 | s3 >>> 28\n return (((state[1] + state[3]) >>> 0) / (binary.BITS32 + 1))\n }\n }\n}\n\n/*\n// Reference implementation\n// Source: http://vigna.di.unimi.it/xorshift/xoroshiro128plus.c\n// By David Blackman and Sebastiano Vigna\n// Who published the reference implementation under Public Domain (CC0)\n\n#include <stdint.h>\n#include <stdio.h>\n\nuint64_t s[2];\n\nstatic inline uint64_t rotl(const uint64_t x, int k) {\n return (x << k) | (x >> (64 - k));\n}\n\nuint64_t next(void) {\n const uint64_t s0 = s[0];\n uint64_t s1 = s[1];\n s1 ^= s0;\n s[0] = rotl(s0, 55) ^ s1 ^ (s1 << 14); // a, b\n s[1] = rotl(s1, 36); // c\n return (s[0] + s[1]) & 0xFFFFFFFF;\n}\n\nint main(void)\n{\n int i;\n s[0] = 1111 | (1337ul << 32);\n s[1] = 1234 | (9999ul << 32);\n\n printf(\"1000 outputs of genrand_int31()\\n\");\n for (i=0; i<100; i++) {\n printf(\"%10lu \", i);\n printf(\"%10lu \", next());\n printf(\"- %10lu \", s[0] >> 32);\n printf(\"%10lu \", (s[0] << 32) >> 32);\n printf(\"%10lu \", s[1] >> 32);\n printf(\"%10lu \", (s[1] << 32) >> 32);\n printf(\"\\n\");\n // if (i%5==4) printf(\"\\n\");\n }\n return 0;\n}\n*/\n","/**\n * Fast Pseudo Random Number Generators.\n *\n * Given a seed a PRNG generates a sequence of numbers that cannot be reasonably predicted.\n * Two PRNGs must generate the same random sequence of numbers if given the same seed.\n *\n * @module prng\n */\n\nimport * as binary from './binary.js'\nimport { fromCharCode, fromCodePoint } from './string.js'\nimport * as math from './math.js'\nimport { Xoroshiro128plus } from './prng/Xoroshiro128plus.js'\nimport * as buffer from './buffer.js'\n\n/**\n * Description of the function\n * @callback generatorNext\n * @return {number} A random float in the cange of [0,1)\n */\n\n/**\n * A random type generator.\n *\n * @typedef {Object} PRNG\n * @property {generatorNext} next Generate new number\n */\nexport const DefaultPRNG = Xoroshiro128plus\n\n/**\n * Create a Xoroshiro128plus Pseudo-Random-Number-Generator.\n * This is the fastest full-period generator passing BigCrush without systematic failures.\n * But there are more PRNGs available in ./PRNG/.\n *\n * @param {number} seed A positive 32bit integer. Do not use negative numbers.\n * @return {PRNG}\n */\nexport const create = seed => new DefaultPRNG(seed)\n\n/**\n * Generates a single random bool.\n *\n * @param {PRNG} gen A random number generator.\n * @return {Boolean} A random boolean\n */\nexport const bool = gen => (gen.next() >= 0.5)\n\n/**\n * Generates a random integer with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const int53 = (gen, min, max) => math.floor(gen.next() * (max + 1 - min) + min)\n\n/**\n * Generates a random integer with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const uint53 = (gen, min, max) => math.abs(int53(gen, min, max))\n\n/**\n * Generates a random integer with 32 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const int32 = (gen, min, max) => math.floor(gen.next() * (max + 1 - min) + min)\n\n/**\n * Generates a random integer with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const uint32 = (gen, min, max) => int32(gen, min, max) >>> 0\n\n/**\n * @deprecated\n * Optimized version of prng.int32. It has the same precision as prng.int32, but should be preferred when\n * openaring on smaller ranges.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive). The max inclusive number is `binary.BITS31-1`\n * @return {Number} A random integer on [min, max]\n */\nexport const int31 = (gen, min, max) => int32(gen, min, max)\n\n/**\n * Generates a random real on [0, 1) with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @return {Number} A random real number on [0, 1).\n */\nexport const real53 = gen => gen.next() // (((gen.next() >>> 5) * binary.BIT26) + (gen.next() >>> 6)) / MAX_SAFE_INTEGER\n\n/**\n * Generates a random character from char code 32 - 126. I.e. Characters, Numbers, special characters, and Space:\n *\n * @param {PRNG} gen A random number generator.\n * @return {string}\n *\n * (Space)!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[/]^_`abcdefghijklmnopqrstuvwxyz{|}~\n */\nexport const char = gen => fromCharCode(int31(gen, 32, 126))\n\n/**\n * @param {PRNG} gen\n * @return {string} A single letter (a-z)\n */\nexport const letter = gen => fromCharCode(int31(gen, 97, 122))\n\n/**\n * @param {PRNG} gen\n * @param {number} [minLen=0]\n * @param {number} [maxLen=20]\n * @return {string} A random word (0-20 characters) without spaces consisting of letters (a-z)\n */\nexport const word = (gen, minLen = 0, maxLen = 20) => {\n const len = int31(gen, minLen, maxLen)\n let str = ''\n for (let i = 0; i < len; i++) {\n str += letter(gen)\n }\n return str\n}\n\n/**\n * TODO: this function produces invalid runes. Does not cover all of utf16!!\n *\n * @param {PRNG} gen\n * @return {string}\n */\nexport const utf16Rune = gen => {\n const codepoint = int31(gen, 0, 256)\n return fromCodePoint(codepoint)\n}\n\n/**\n * @param {PRNG} gen\n * @param {number} [maxlen = 20]\n */\nexport const utf16String = (gen, maxlen = 20) => {\n const len = int31(gen, 0, maxlen)\n let str = ''\n for (let i = 0; i < len; i++) {\n str += utf16Rune(gen)\n }\n return str\n}\n\n/**\n * Returns one element of a given array.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Array<T>} array Non empty Array of possible values.\n * @return {T} One of the values of the supplied Array.\n * @template T\n */\nexport const oneOf = (gen, array) => array[int31(gen, 0, array.length - 1)]\n\n/**\n * @param {PRNG} gen\n * @param {number} len\n * @return {Uint8Array}\n */\nexport const uint8Array = (gen, len) => {\n const buf = buffer.createUint8ArrayFromLen(len)\n for (let i = 0; i < buf.length; i++) {\n buf[i] = int32(gen, 0, binary.BITS8)\n }\n return buf\n}\n\n/* c8 ignore start */\n/**\n * @param {PRNG} gen\n * @param {number} len\n * @return {Uint16Array}\n */\nexport const uint16Array = (gen, len) => new Uint16Array(uint8Array(gen, len * 2).buffer)\n\n/**\n * @param {PRNG} gen\n * @param {number} len\n * @return {Uint32Array}\n */\nexport const uint32Array = (gen, len) => new Uint32Array(uint8Array(gen, len * 4).buffer)\n/* c8 ignore stop */\n"],"names":["binary.BITS32","math.floor","math.abs","fromCharCode","fromCodePoint","buffer.createUint8ArrayFromLen","binary.BITS8"],"mappings":"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"}
|