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.
Files changed (3) hide show
  1. package/README.md +125 -0
  2. package/index.js +33 -0
  3. 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
+ }
package/package.json ADDED
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "nv-get-random-values",
3
+ "version": "1.0.0",
4
+ "main": "index.js",
5
+ "scripts": {
6
+ "test": "echo \"Error: no test specified\" && exit 1"
7
+ },
8
+ "author": "",
9
+ "license": "ISC",
10
+ "description": ""
11
+ }