nv-get-random-values 1.0.0
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/README.md +125 -0
- package/index.js +33 -0
- package/package.json +11 -0
package/README.md
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
|
|
2
|
+
nv-get-random-values
|
|
3
|
+
=======================
|
|
4
|
+
- same as crypto.getRandomValues
|
|
5
|
+
- simple wrap of crypto.getRandomValues to avoid : DOMException [QuotaExceededError]: The requested length exceeds 65,536 bytes
|
|
6
|
+
- support FloatTypedArray and ArrayBuffer and DataView
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
install
|
|
10
|
+
=======
|
|
11
|
+
- npm install nv-get-random-values
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
usage
|
|
15
|
+
=====
|
|
16
|
+
|
|
17
|
+
const getRandomValues = require("nv-get-random-values");
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
example
|
|
21
|
+
-------
|
|
22
|
+
|
|
23
|
+
> var ab = new ArrayBuffer(65537)
|
|
24
|
+
> getRandomValues(ab)
|
|
25
|
+
> ab
|
|
26
|
+
ArrayBuffer {
|
|
27
|
+
[Uint8Contents]: <f9 da c3 5e 2a 05 03 b0 b2 27 ce 3c a0 93 2e 66 86 31 74 b5 6c 45 ed dd 1d 31 b5 52 b7 bb 14 23 92 f8 2c 6c 7c af be c4 b4 80 f7 a8 dd c3 c3 18 b3 00 08 35 2f 6f 0a f1 70 68 2a d3 f9 fc 4e 4c 7b 15 b0 3b 53 7a ab 1b fc 30 fe ab 8b cd f8 47 f4 fe 21 39 f9 3b 39 18 a2 a4 c8 f7 a0 9d 72 f6 f3 98 d9 49 ... 65437 more bytes>,
|
|
28
|
+
byteLength: 65537
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
var u16a = new Uint16Array(1024*1024*512);
|
|
33
|
+
getRandomValues(u16a)
|
|
34
|
+
|
|
35
|
+
> u16a
|
|
36
|
+
Uint16Array(536870912) [
|
|
37
|
+
61465, 42267, 36595, 14446, 6859, 9717, 49183, 32276,
|
|
38
|
+
11667, 11445, 19657, 60604, 57622, 11835, 13572, 138,
|
|
39
|
+
35485, 30370, 37128, 26873, 33691, 7911, 48943, 31131,
|
|
40
|
+
46891, 34467, 16840, 7208, 20594, 34910, 29729, 7445,
|
|
41
|
+
64418, 10277, 28287, 23711, 18314, 61726, 31650, 20591,
|
|
42
|
+
11456, 33753, 16547, 53200, 29901, 60636, 14555, 4248,
|
|
43
|
+
24189, 54129, 37858, 41713, 59744, 47078, 37252, 30257,
|
|
44
|
+
47331, 46343, 46778, 24047, 23013, 5833, 51527, 56080,
|
|
45
|
+
39317, 8416, 58250, 47312, 50677, 18357, 23677, 30563,
|
|
46
|
+
54025, 16830, 51983, 39262, 59341, 20818, 60378, 58544,
|
|
47
|
+
22011, 33740, 16012, 52726, 33518, 522, 51816, 52889,
|
|
48
|
+
51463, 46709, 12075, 24782, 17099, 55025, 2106, 13492,
|
|
49
|
+
215, 26433, 11366, 3834,
|
|
50
|
+
... 536870812 more items
|
|
51
|
+
]
|
|
52
|
+
>
|
|
53
|
+
|
|
54
|
+
var f32a = new Float32Array(16385);
|
|
55
|
+
getRandomValues(f32a)
|
|
56
|
+
> f32a
|
|
57
|
+
> f32a
|
|
58
|
+
Float32Array(16385) [
|
|
59
|
+
7.778468624417001e-13,
|
|
60
|
+
1.749459184655673e+33,
|
|
61
|
+
-8.160149669980749e+25,
|
|
62
|
+
1.2789833453260256e-31,
|
|
63
|
+
-3.963198301890859e+37,
|
|
64
|
+
-8382006497827095000,
|
|
65
|
+
0.0003309941093903035,
|
|
66
|
+
6.035875541549418e+24,
|
|
67
|
+
2070070656,
|
|
68
|
+
....
|
|
69
|
+
]
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
var f64a = new Float32Array(8193);
|
|
73
|
+
getRandomValues(f64a)
|
|
74
|
+
> f64a
|
|
75
|
+
Float32Array(8193) [
|
|
76
|
+
0.0000616460747551173, 4.799488158227657e-38, -1.3102224054885224e-25,
|
|
77
|
+
8.250607159626363e-35, 1.0809262403877618e+23, 924065.0625,
|
|
78
|
+
247106.421875, -5.623769154047254e+22, 1.1244358688600187e-7,
|
|
79
|
+
...
|
|
80
|
+
-1.0665523368993957e-12, -1.0732819814706263e+29, -2.9870795530361535e-37,
|
|
81
|
+
...
|
|
82
|
+
]
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
var u64a = new BigUint64Array(8193);
|
|
86
|
+
getRandomValues(u64a)
|
|
87
|
+
> u64a
|
|
88
|
+
BigUint64Array(8193) [
|
|
89
|
+
2302722242467597411n, 1984628925042550598n, 10979331346543240423n,
|
|
90
|
+
18138836546890784880n, 8499427350350933246n, 10417557258900234131n,
|
|
91
|
+
5753987758466790000n, 11027852167042747236n, 3279377313528098163n,
|
|
92
|
+
13886580408729987773n, 537068078521930593n, 13319668477505083335n,
|
|
93
|
+
...
|
|
94
|
+
4476794433959645139n, 7603231641362984490n, 5494308809252184211n,
|
|
95
|
+
11437283966248178489n, 9382486356394534052n, 11664890693933100211n,
|
|
96
|
+
10160184950554824565n, 4093137840964670528n, 17813984759058651806n,
|
|
97
|
+
16755341494649912864n,
|
|
98
|
+
... 8093 more items
|
|
99
|
+
]
|
|
100
|
+
>
|
|
101
|
+
|
|
102
|
+
var i64a = new BigInt64Array(8193);
|
|
103
|
+
getRandomValues(i64a)
|
|
104
|
+
> i64a
|
|
105
|
+
BigInt64Array(8193) [
|
|
106
|
+
-3283113613754311255n, 8283704947201239835n, 141200950951960242n,
|
|
107
|
+
-3448862961415466720n, 5021087136500461538n, -6651306749080991142n,
|
|
108
|
+
1950813384352664202n, 6852270041077330573n, 5342624158790842885n,
|
|
109
|
+
4590992216306508734n, -4846930881919214199n, 1555312156454248659n,
|
|
110
|
+
6196312503731476000n, -5903614227005657034n, 2023345465048062785n,
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
METHODS
|
|
115
|
+
========
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
APIS
|
|
119
|
+
=======
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
LICENSE
|
|
123
|
+
=======
|
|
124
|
+
- ISC
|
|
125
|
+
|
package/index.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module.exports = (ta)=>{
|
|
2
|
+
var u8a;
|
|
3
|
+
if(ArrayBuffer.isView(ta)) {
|
|
4
|
+
u8a = new Uint8Array(ta.buffer,ta.byteOffset,ta.byteLength);
|
|
5
|
+
} else {
|
|
6
|
+
u8a = new Uint8Array(ta);
|
|
7
|
+
}
|
|
8
|
+
var r0 = u8a.byteOffset % 4;
|
|
9
|
+
var si;
|
|
10
|
+
if(r0 === 0) {
|
|
11
|
+
si = u8a.byteOffset;
|
|
12
|
+
} else {
|
|
13
|
+
si = u8a.byteOffset + 4- r0;
|
|
14
|
+
var pre = u8a.subarray(0,4-r0);
|
|
15
|
+
crypto.getRandomValues(pre);
|
|
16
|
+
}
|
|
17
|
+
var ei = u8a.byteOffset + u8a.byteLength;
|
|
18
|
+
var r1 = ei % 4;
|
|
19
|
+
if(r1===0) {
|
|
20
|
+
} else {
|
|
21
|
+
ei -= r1;
|
|
22
|
+
var pst = u8a.subarray(ei-u8a.byteOffset,ei-u8a.byteOffset+r1);
|
|
23
|
+
crypto.getRandomValues(pst);
|
|
24
|
+
}
|
|
25
|
+
////
|
|
26
|
+
var u32a = new Uint32Array(u8a.buffer,si,(ei-si)/4);
|
|
27
|
+
var offset = 0;
|
|
28
|
+
while(offset < u32a.byteLength) {
|
|
29
|
+
var suba = u32a.subarray(offset/4,offset/4+16384);
|
|
30
|
+
crypto.getRandomValues(suba);
|
|
31
|
+
offset += 65536
|
|
32
|
+
}
|
|
33
|
+
}
|