lib0 0.2.77 → 0.2.79
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 +1 -1
- package/array.d.ts +1 -0
- package/array.d.ts.map +1 -1
- package/array.js +18 -0
- package/binary.test.d.ts.map +1 -1
- package/buffer.d.ts +3 -0
- package/buffer.d.ts.map +1 -1
- package/buffer.js +40 -0
- package/buffer.test.d.ts +2 -1
- package/buffer.test.d.ts.map +1 -1
- package/cache.d.ts.map +1 -1
- package/cache.js +0 -1
- package/cache.test.d.ts.map +1 -1
- package/component.d.ts +5 -5
- package/component.d.ts.map +1 -1
- package/component.js +14 -11
- package/coverage/tmp/coverage-10499-1691528887100-0.json +1 -0
- package/decoding.d.ts +2 -0
- package/decoding.d.ts.map +1 -1
- package/decoding.js +26 -0
- package/dist/aes-gcm.cjs +161 -0
- package/dist/aes-gcm.cjs.map +1 -0
- package/dist/{array-fd99bc23.cjs → array-704ca50e.cjs} +22 -2
- package/dist/array-704ca50e.cjs.map +1 -0
- package/dist/array.cjs +2 -1
- package/dist/array.cjs.map +1 -1
- package/dist/array.d.ts +1 -0
- package/dist/array.d.ts.map +1 -1
- package/dist/binary.test.d.ts.map +1 -1
- package/dist/{broadcastchannel-fff713ef.cjs → broadcastchannel-7801969a.cjs} +2 -2
- package/dist/{broadcastchannel-fff713ef.cjs.map → broadcastchannel-7801969a.cjs.map} +1 -1
- package/dist/broadcastchannel.cjs +9 -9
- package/dist/{buffer-621617f6.cjs → buffer-c5d69c70.cjs} +126 -7
- package/dist/buffer-c5d69c70.cjs.map +1 -0
- package/dist/buffer.cjs +12 -9
- package/dist/buffer.cjs.map +1 -1
- package/dist/buffer.d.ts +3 -0
- package/dist/buffer.d.ts.map +1 -1
- package/dist/buffer.test.d.ts +2 -1
- package/dist/buffer.test.d.ts.map +1 -1
- package/dist/cache.cjs +5 -3
- package/dist/cache.cjs.map +1 -1
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.test.d.ts.map +1 -1
- package/dist/common.cjs +37 -0
- package/dist/common.cjs.map +1 -0
- package/dist/component.cjs +20 -17
- package/dist/component.cjs.map +1 -1
- package/dist/component.d.ts +5 -5
- package/dist/component.d.ts.map +1 -1
- package/dist/decoding.cjs +9 -7
- package/dist/decoding.cjs.map +1 -1
- package/dist/decoding.d.ts +2 -0
- package/dist/decoding.d.ts.map +1 -1
- package/dist/{diff-18852f48.cjs → diff-fbaa426b.cjs} +2 -2
- package/dist/{diff-18852f48.cjs.map → diff-fbaa426b.cjs.map} +1 -1
- package/dist/diff.cjs +4 -4
- package/dist/ecdsa.cjs +118 -0
- package/dist/ecdsa.cjs.map +1 -0
- package/dist/encoding.cjs +9 -7
- package/dist/encoding.cjs.map +1 -1
- package/dist/encoding.d.ts +2 -0
- package/dist/encoding.d.ts.map +1 -1
- package/dist/encoding.test.d.ts +1 -0
- package/dist/encoding.test.d.ts.map +1 -1
- package/dist/{environment-0c5ff22b.cjs → environment-ad129e4d.cjs} +3 -3
- package/dist/{environment-0c5ff22b.cjs.map → environment-ad129e4d.cjs.map} +1 -1
- package/dist/environment.cjs +5 -5
- package/dist/{function-831844d3.cjs → function-314fdc56.cjs} +3 -3
- package/dist/{function-831844d3.cjs.map → function-314fdc56.cjs.map} +1 -1
- package/dist/function.cjs +3 -3
- package/dist/hash/rabin-gf2-polynomial.d.ts +45 -0
- package/dist/hash/rabin-gf2-polynomial.d.ts.map +1 -0
- package/dist/hash/rabin-uncached.d.ts +29 -0
- package/dist/hash/rabin-uncached.d.ts.map +1 -0
- package/dist/hash/rabin.d.ts +27 -0
- package/dist/hash/rabin.d.ts.map +1 -0
- package/dist/hash/rabin.test.d.ts +8 -0
- package/dist/hash/rabin.test.d.ts.map +1 -0
- package/dist/hash/sha256.fallback.d.ts +2 -0
- package/dist/hash/sha256.fallback.d.ts.map +1 -0
- package/dist/hash/sha256.node.d.ts +2 -0
- package/dist/hash/sha256.node.d.ts.map +1 -0
- package/dist/hash/sha256.test.d.ts +6 -0
- package/dist/hash/sha256.test.d.ts.map +1 -0
- package/dist/index.cjs +11 -11
- package/dist/list.cjs +3 -3
- package/dist/logging.cjs +5 -5
- package/dist/logging.common.cjs +21 -21
- package/dist/logging.common.cjs.map +1 -1
- package/dist/logging.node.cjs +5 -5
- package/dist/logging.test.d.ts.map +1 -1
- package/dist/{number-dc113762.cjs → number-466d8922.cjs} +29 -10
- package/dist/number-466d8922.cjs.map +1 -0
- package/dist/number.cjs +2 -1
- package/dist/number.cjs.map +1 -1
- package/dist/number.d.ts +1 -0
- package/dist/number.d.ts.map +1 -1
- package/dist/number.test.d.ts +1 -1
- package/dist/number.test.d.ts.map +1 -1
- package/dist/{object-aad630ed.cjs → object-fecf6a7b.cjs} +2 -1
- package/dist/object-fecf6a7b.cjs.map +1 -0
- package/dist/object.cjs +1 -1
- package/dist/object.d.ts.map +1 -1
- package/dist/observable.cjs +1 -1
- package/dist/performance.node.cjs +3 -3
- package/dist/{prng-9ccc85f7.cjs → prng-1149c8c4.cjs} +3 -3
- package/dist/{prng-9ccc85f7.cjs.map → prng-1149c8c4.cjs.map} +1 -1
- package/dist/prng.cjs +8 -8
- package/dist/prng.test.d.ts.map +1 -1
- package/dist/queue.cjs.map +1 -1
- package/dist/queue.d.ts.map +1 -1
- package/dist/rabin-gf2-polynomial.cjs +437 -0
- package/dist/rabin-gf2-polynomial.cjs.map +1 -0
- package/dist/rabin-uncached.cjs +87 -0
- package/dist/rabin-uncached.cjs.map +1 -0
- package/dist/rabin.cjs +125 -0
- package/dist/rabin.cjs.map +1 -0
- package/dist/random.cjs +12 -0
- package/dist/random.cjs.map +1 -1
- package/dist/random.d.ts +1 -1
- package/dist/random.d.ts.map +1 -1
- package/dist/rsa-oaep.cjs +112 -0
- package/dist/rsa-oaep.cjs.map +1 -0
- package/dist/set.test.d.ts.map +1 -1
- package/dist/sha256.fallback.cjs +179 -0
- package/dist/sha256.fallback.cjs.map +1 -0
- package/dist/sha256.node.cjs +17 -0
- package/dist/sha256.node.cjs.map +1 -0
- package/dist/{string-e7eb0c1d.cjs → string-6d104757.cjs} +10 -2
- package/dist/string-6d104757.cjs.map +1 -0
- package/dist/string.cjs +3 -2
- package/dist/string.cjs.map +1 -1
- package/dist/string.d.ts +5 -0
- package/dist/string.d.ts.map +1 -1
- package/dist/testing.cjs +23 -17
- package/dist/testing.cjs.map +1 -1
- package/dist/testing.d.ts +13 -7
- package/dist/testing.d.ts.map +1 -1
- package/dist/url.cjs +1 -1
- package/dist/webcrypto.node.cjs.map +1 -1
- package/dist/webcrypto.node.d.ts.map +1 -1
- package/dist/{websocket-0632cb8c.cjs → websocket-44e4ead5.cjs} +1 -1
- package/dist/{websocket-0632cb8c.cjs.map → websocket-44e4ead5.cjs.map} +1 -1
- package/dist/websocket.cjs +2 -2
- package/encoding.d.ts +2 -0
- package/encoding.d.ts.map +1 -1
- package/encoding.js +42 -0
- package/encoding.test.d.ts +1 -0
- package/encoding.test.d.ts.map +1 -1
- package/hash/rabin-gf2-polynomial.d.ts +45 -0
- package/hash/rabin-gf2-polynomial.d.ts.map +1 -0
- package/hash/rabin-gf2-polynomial.js +379 -0
- package/hash/rabin-uncached.d.ts +29 -0
- package/hash/rabin-uncached.d.ts.map +1 -0
- package/hash/rabin-uncached.js +68 -0
- package/hash/rabin.d.ts +27 -0
- package/hash/rabin.d.ts.map +1 -0
- package/hash/rabin.js +100 -0
- package/hash/rabin.test.d.ts +8 -0
- package/hash/rabin.test.d.ts.map +1 -0
- package/hash/sha256.fallback.d.ts +2 -0
- package/hash/sha256.fallback.d.ts.map +1 -0
- package/hash/sha256.fallback.js +172 -0
- package/hash/sha256.node.d.ts +2 -0
- package/hash/sha256.node.d.ts.map +1 -0
- package/hash/sha256.node.js +10 -0
- package/hash/sha256.test.d.ts +6 -0
- package/hash/sha256.test.d.ts.map +1 -0
- package/logging.common.js +16 -16
- package/logging.test.d.ts.map +1 -1
- package/number.d.ts +1 -0
- package/number.d.ts.map +1 -1
- package/number.js +17 -0
- package/number.test.d.ts +1 -1
- package/number.test.d.ts.map +1 -1
- package/object.d.ts.map +1 -1
- package/object.js +1 -0
- package/package.json +24 -6
- package/prng.test.d.ts.map +1 -1
- package/queue.d.ts.map +1 -1
- package/queue.js +0 -1
- package/random.d.ts +1 -1
- package/random.d.ts.map +1 -1
- package/random.js +4 -1
- package/set.test.d.ts.map +1 -1
- package/string.d.ts +5 -0
- package/string.d.ts.map +1 -1
- package/string.js +6 -0
- package/test.html +2 -0
- package/test.js +4 -0
- package/testing.d.ts +13 -7
- package/testing.d.ts.map +1 -1
- package/testing.js +14 -8
- package/webcrypto.node.d.ts.map +1 -1
- package/webcrypto.node.js +0 -1
- package/coverage/tmp/coverage-36234-1685177795346-0.json +0 -1
- package/dist/array-fd99bc23.cjs.map +0 -1
- package/dist/buffer-621617f6.cjs.map +0 -1
- package/dist/number-dc113762.cjs.map +0 -1
- package/dist/object-aad630ed.cjs.map +0 -1
- package/dist/string-e7eb0c1d.cjs.map +0 -1
package/decoding.d.ts
CHANGED
|
@@ -40,6 +40,8 @@ export function peekVarInt(decoder: Decoder): number;
|
|
|
40
40
|
export function _readVarStringPolyfill(decoder: Decoder): string;
|
|
41
41
|
export function _readVarStringNative(decoder: Decoder): string;
|
|
42
42
|
export function readVarString(decoder: Decoder): string;
|
|
43
|
+
export function readTerminatedUint8Array(decoder: Decoder): Uint8Array;
|
|
44
|
+
export function readTerminatedString(decoder: Decoder): string;
|
|
43
45
|
export function peekVarString(decoder: Decoder): string;
|
|
44
46
|
export function readFromDataView(decoder: Decoder, len: number): DataView;
|
|
45
47
|
export function readFloat32(decoder: Decoder): number;
|
package/decoding.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decoding.d.ts","sourceRoot":"","sources":["decoding.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"decoding.d.ts","sourceRoot":"","sources":["decoding.js"],"names":[],"mappings":"AAuCA;;GAEG;AACH;IACE;;OAEG;IACH,wBAFW,UAAU,EAepB;IAZC;;;;OAIG;IACH,KAFU,UAAU,CAEC;IACrB;;;;OAIG;IACH,KAFU,MAAM,CAEJ;CAEf;AAOM,0CAHI,UAAU,GACT,OAAO,CAE+C;AAO3D,oCAHI,OAAO,GACN,OAAO,CAEoD;AAWhE,+BAJI,OAAO,gCAEN,OAAO,CAMlB;AAaM,wCAJI,OAAO,OACP,MAAM,GACL,UAAU,CAMrB;AAYM,2CAHI,OAAO,GACN,UAAU,CAEmE;AAQlF,8CAHI,OAAO,GACN,UAAU,CAEkF;AAQjG,+BAHI,OAAO,GACN,MAAM,CAE2B;AAQtC,mCAHI,OAAO,GACN,MAAM,CAE4C;AASvD,oCAHI,OAAO,GACN,MAAM,CAQjB;AASM,oCAHI,OAAO,GACN,MAAM,CAUjB;AAUM,6CAHI,OAAO,GACN,MAAM,CAUjB;AAUM,mCAHI,OAAO,GACN,MAAM,CAE0C;AAUrD,oCAHI,OAAO,GACN,MAAM,CAImB;AAU9B,oCAHI,OAAO,GACN,MAAM,CAOX;AAYA,qCAHI,OAAO,GACN,MAAM,CAqBjB;AAaM,oCAHI,OAAO,GACN,MAAM,CA2BjB;AASM,qCAHI,OAAO,GACN,MAAM,CAOjB;AASM,oCAHI,OAAO,GACN,MAAM,CAOjB;AAgBM,gDAJI,OAAO,UA2BjB;AAQM,8CAHI,OAAO,UAI4D;AAhCvE,uCAJI,OAAO,UA2BjB;AA2BM,kDAHI,OAAO,GACN,UAAU,CAerB;AAMM,8CAHI,OAAO,GACN,MAAM,CAEiF;AAS5F,uCAHI,OAAO,GACN,MAAM,CAOjB;AAOM,0CAJI,OAAO,OACP,MAAM,GACL,QAAQ,CAMnB;AAKM,qCAFI,OAAO,UAEqE;AAKhF,qCAFI,OAAO,UAEqE;AAKhF,sCAFI,OAAO,OAE4F;AAKvG,uCAFI,OAAO,OAE8F;AAyCzG,iCAFI,OAAO,OAEqE;AAEvF;;;;GAIG;AACH;IACE;;;OAGG;IACH,wBAHW,UAAU,iBACD,OAAO,KAAE,CAAC,EAc7B;IAVC;;OAEG;IACH,eAPkB,OAAO,KAAE,CAAC,CAOR;IACpB;;;OAGG;IACH,GAFU,CAAC,GAAC,IAAI,CAEH;IACb,cAAc;IAGhB,UAWC;CACF;AAED;IACE;;;OAGG;IACH,wBAHW,UAAU,SACV,MAAM,EAShB;IALC;;;OAGG;IACH,GAFU,MAAM,CAEF;IAGhB;;OAEG;IACH,QAFY,MAAM,CAKjB;CACF;AAED;IACE;;;OAGG;IACH,wBAHW,UAAU,SACV,MAAM,EAUhB;IANC;;;OAGG;IACH,GAFU,MAAM,CAEF;IACd,cAAc;IAGhB;;OAEG;IACH,QAFY,MAAM,CAajB;CACF;AAED;IAMI;;OAEG;IACH,GAFU,MAAM,CAEN;IACV,cAAc;IAGhB,eAaC;CACF;AAED;IAMI;;OAEG;IACH,GAFU,MAAM,CAEN;IACV,cAAc;IAGhB,eAaC;CACF;AAED;IAMI;;OAEG;IACH,GAFU,MAAM,CAEN;IACV,cAAc;IACd,aAAa;IAGf;;OAEG;IACH,QAFY,MAAM,CAgBjB;CACF;AAED;IACE;;OAEG;IACH,wBAFW,UAAU,EASpB;IANC,2BAAgD;IAChD,YAAsC;IACtC;;OAEG;IACH,MAFU,MAAM,CAEH;IAGf;;OAEG;IACH,QAFY,MAAM,CAOjB;CACF"}
|
package/decoding.js
CHANGED
|
@@ -32,6 +32,7 @@ import * as math from './math.js'
|
|
|
32
32
|
import * as number from './number.js'
|
|
33
33
|
import * as string from './string.js'
|
|
34
34
|
import * as error from './error.js'
|
|
35
|
+
import * as encoding from './encoding.js'
|
|
35
36
|
|
|
36
37
|
const errorUnexpectedEndOfArray = error.create('Unexpected end of array')
|
|
37
38
|
const errorIntegerOutOfRange = error.create('Integer out of Range')
|
|
@@ -385,6 +386,31 @@ export const _readVarStringNative = decoder =>
|
|
|
385
386
|
/* c8 ignore next */
|
|
386
387
|
export const readVarString = string.utf8TextDecoder ? _readVarStringNative : _readVarStringPolyfill
|
|
387
388
|
|
|
389
|
+
/**
|
|
390
|
+
* @param {Decoder} decoder
|
|
391
|
+
* @return {Uint8Array}
|
|
392
|
+
*/
|
|
393
|
+
export const readTerminatedUint8Array = decoder => {
|
|
394
|
+
const encoder = encoding.createEncoder()
|
|
395
|
+
let b
|
|
396
|
+
while (true) {
|
|
397
|
+
b = readUint8(decoder)
|
|
398
|
+
if (b === 0) {
|
|
399
|
+
return encoding.toUint8Array(encoder)
|
|
400
|
+
}
|
|
401
|
+
if (b === 1) {
|
|
402
|
+
b = readUint8(decoder)
|
|
403
|
+
}
|
|
404
|
+
encoding.write(encoder, b)
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
/**
|
|
409
|
+
* @param {Decoder} decoder
|
|
410
|
+
* @return {string}
|
|
411
|
+
*/
|
|
412
|
+
export const readTerminatedString = decoder => string.decodeUtf8(readTerminatedUint8Array(decoder))
|
|
413
|
+
|
|
388
414
|
/**
|
|
389
415
|
* Look ahead and read varString without incrementing position
|
|
390
416
|
*
|
package/dist/aes-gcm.cjs
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var encoding = require('./buffer-c5d69c70.cjs');
|
|
6
|
+
var webcrypto = require('lib0/webcrypto');
|
|
7
|
+
var string = require('./string-6d104757.cjs');
|
|
8
|
+
var common = require('./common.cjs');
|
|
9
|
+
require('./environment-ad129e4d.cjs');
|
|
10
|
+
require('./map-9a5915e4.cjs');
|
|
11
|
+
require('./conditions-f5c0c102.cjs');
|
|
12
|
+
require('./storage.cjs');
|
|
13
|
+
require('./function-314fdc56.cjs');
|
|
14
|
+
require('./array-704ca50e.cjs');
|
|
15
|
+
require('./set-0f209abb.cjs');
|
|
16
|
+
require('./object-fecf6a7b.cjs');
|
|
17
|
+
require('./math-08e068f9.cjs');
|
|
18
|
+
require('./binary-ac8e39e2.cjs');
|
|
19
|
+
require('./number-466d8922.cjs');
|
|
20
|
+
require('./error-8582d695.cjs');
|
|
21
|
+
|
|
22
|
+
function _interopNamespace(e) {
|
|
23
|
+
if (e && e.__esModule) return e;
|
|
24
|
+
var n = Object.create(null);
|
|
25
|
+
if (e) {
|
|
26
|
+
Object.keys(e).forEach(function (k) {
|
|
27
|
+
if (k !== 'default') {
|
|
28
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
29
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
30
|
+
enumerable: true,
|
|
31
|
+
get: function () { return e[k]; }
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
n["default"] = e;
|
|
37
|
+
return Object.freeze(n);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
var webcrypto__namespace = /*#__PURE__*/_interopNamespace(webcrypto);
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* AES-GCM is a symmetric key for encryption
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @typedef {Array<'encrypt'|'decrypt'>} Usages
|
|
48
|
+
*/
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* @type {Usages}
|
|
52
|
+
*/
|
|
53
|
+
const defaultUsages = ['encrypt', 'decrypt'];
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* @param {CryptoKey} key
|
|
57
|
+
* @param {Uint8Array} data
|
|
58
|
+
*/
|
|
59
|
+
const encrypt = (key, data) => {
|
|
60
|
+
const iv = webcrypto__namespace.getRandomValues(new Uint8Array(16)); // 92bit is enough. 128bit is recommended if space is not an issue.
|
|
61
|
+
return webcrypto__namespace.subtle.encrypt(
|
|
62
|
+
{
|
|
63
|
+
name: 'AES-GCM',
|
|
64
|
+
iv
|
|
65
|
+
},
|
|
66
|
+
key,
|
|
67
|
+
data
|
|
68
|
+
).then(cipher => {
|
|
69
|
+
const encryptedDataEncoder = encoding.createEncoder();
|
|
70
|
+
// iv may be sent in the clear to the other peers
|
|
71
|
+
encoding.writeUint8Array(encryptedDataEncoder, iv);
|
|
72
|
+
encoding.writeVarUint8Array(encryptedDataEncoder, new Uint8Array(cipher));
|
|
73
|
+
return encoding.toUint8Array(encryptedDataEncoder)
|
|
74
|
+
})
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* @experimental The API is not final!
|
|
79
|
+
*
|
|
80
|
+
* Decrypt some data using AES-GCM method.
|
|
81
|
+
*
|
|
82
|
+
* @param {CryptoKey} key
|
|
83
|
+
* @param {Uint8Array} data
|
|
84
|
+
* @return {PromiseLike<Uint8Array>} decrypted buffer
|
|
85
|
+
*/
|
|
86
|
+
const decrypt = (key, data) => {
|
|
87
|
+
const dataDecoder = encoding.createDecoder(data);
|
|
88
|
+
const iv = encoding.readUint8Array(dataDecoder, 16);
|
|
89
|
+
const cipher = encoding.readVarUint8Array(dataDecoder);
|
|
90
|
+
return webcrypto__namespace.subtle.decrypt(
|
|
91
|
+
{
|
|
92
|
+
name: 'AES-GCM',
|
|
93
|
+
iv
|
|
94
|
+
},
|
|
95
|
+
key,
|
|
96
|
+
cipher
|
|
97
|
+
).then(data => new Uint8Array(data))
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* @param {any} jwk
|
|
102
|
+
* @param {Usages} [usages]
|
|
103
|
+
* @param {boolean} [extractable]
|
|
104
|
+
*/
|
|
105
|
+
const importKey = (jwk, usages, extractable = false) => {
|
|
106
|
+
if (usages == null) {
|
|
107
|
+
/* c8 ignore next */
|
|
108
|
+
usages = jwk.key_ops || defaultUsages;
|
|
109
|
+
}
|
|
110
|
+
return webcrypto__namespace.subtle.importKey('jwk', jwk, 'AES-GCM', extractable, /** @type {Usages} */ (usages))
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* @param {Uint8Array | string} data
|
|
115
|
+
*/
|
|
116
|
+
/* c8 ignore next */
|
|
117
|
+
const toBinary = data => typeof data === 'string' ? string.encodeUtf8(data) : data;
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* @experimental The API is not final!
|
|
121
|
+
*
|
|
122
|
+
* Derive an symmetric key using the Password-Based-Key-Derivation-Function-2.
|
|
123
|
+
*
|
|
124
|
+
* @param {Uint8Array|string} secret
|
|
125
|
+
* @param {Uint8Array|string} salt
|
|
126
|
+
* @param {Object} opts
|
|
127
|
+
* @param {boolean} [opts.extractable]
|
|
128
|
+
* @param {Usages} [opts.usages]
|
|
129
|
+
*/
|
|
130
|
+
const deriveKey = (secret, salt, { extractable = false, usages = defaultUsages } = {}) => {
|
|
131
|
+
return webcrypto__namespace.subtle.importKey(
|
|
132
|
+
'raw',
|
|
133
|
+
toBinary(secret),
|
|
134
|
+
'PBKDF2',
|
|
135
|
+
false,
|
|
136
|
+
['deriveKey']
|
|
137
|
+
).then(keyMaterial =>
|
|
138
|
+
webcrypto__namespace.subtle.deriveKey(
|
|
139
|
+
{
|
|
140
|
+
name: 'PBKDF2',
|
|
141
|
+
salt: toBinary(salt), // NIST recommends at least 64 bits
|
|
142
|
+
iterations: 600000, // OWASP recommends 600k iterations
|
|
143
|
+
hash: 'SHA-256'
|
|
144
|
+
},
|
|
145
|
+
keyMaterial,
|
|
146
|
+
{
|
|
147
|
+
name: 'AES-GCM',
|
|
148
|
+
length: 256
|
|
149
|
+
},
|
|
150
|
+
extractable,
|
|
151
|
+
usages
|
|
152
|
+
)
|
|
153
|
+
)
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
exports.exportKey = common.exportKey;
|
|
157
|
+
exports.decrypt = decrypt;
|
|
158
|
+
exports.deriveKey = deriveKey;
|
|
159
|
+
exports.encrypt = encrypt;
|
|
160
|
+
exports.importKey = importKey;
|
|
161
|
+
//# sourceMappingURL=aes-gcm.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aes-gcm.cjs","sources":["../crypto/aes-gcm.js"],"sourcesContent":["/**\n * AES-GCM is a symmetric key for encryption\n */\n\nimport * as encoding from '../encoding.js'\nimport * as decoding from '../decoding.js'\nimport * as webcrypto from 'lib0/webcrypto'\nimport * as string from '../string.js'\nexport { exportKey } from './common.js'\n\n/**\n * @typedef {Array<'encrypt'|'decrypt'>} Usages\n */\n\n/**\n * @type {Usages}\n */\nconst defaultUsages = ['encrypt', 'decrypt']\n\n/**\n * @param {CryptoKey} key\n * @param {Uint8Array} data\n */\nexport const encrypt = (key, data) => {\n const iv = webcrypto.getRandomValues(new Uint8Array(16)) // 92bit is enough. 128bit is recommended if space is not an issue.\n return webcrypto.subtle.encrypt(\n {\n name: 'AES-GCM',\n iv\n },\n key,\n data\n ).then(cipher => {\n const encryptedDataEncoder = encoding.createEncoder()\n // iv may be sent in the clear to the other peers\n encoding.writeUint8Array(encryptedDataEncoder, iv)\n encoding.writeVarUint8Array(encryptedDataEncoder, new Uint8Array(cipher))\n return encoding.toUint8Array(encryptedDataEncoder)\n })\n}\n\n/**\n * @experimental The API is not final!\n *\n * Decrypt some data using AES-GCM method.\n *\n * @param {CryptoKey} key\n * @param {Uint8Array} data\n * @return {PromiseLike<Uint8Array>} decrypted buffer\n */\nexport const decrypt = (key, data) => {\n const dataDecoder = decoding.createDecoder(data)\n const iv = decoding.readUint8Array(dataDecoder, 16)\n const cipher = decoding.readVarUint8Array(dataDecoder)\n return webcrypto.subtle.decrypt(\n {\n name: 'AES-GCM',\n iv\n },\n key,\n cipher\n ).then(data => new Uint8Array(data))\n}\n\n/**\n * @param {any} jwk\n * @param {Usages} [usages]\n * @param {boolean} [extractable]\n */\nexport const importKey = (jwk, usages, extractable = false) => {\n if (usages == null) {\n /* c8 ignore next */\n usages = jwk.key_ops || defaultUsages\n }\n return webcrypto.subtle.importKey('jwk', jwk, 'AES-GCM', extractable, /** @type {Usages} */ (usages))\n}\n\n/**\n * @param {Uint8Array | string} data\n */\n/* c8 ignore next */\nconst toBinary = data => typeof data === 'string' ? string.encodeUtf8(data) : data\n\n/**\n * @experimental The API is not final!\n *\n * Derive an symmetric key using the Password-Based-Key-Derivation-Function-2.\n *\n * @param {Uint8Array|string} secret\n * @param {Uint8Array|string} salt\n * @param {Object} opts\n * @param {boolean} [opts.extractable]\n * @param {Usages} [opts.usages]\n */\nexport const deriveKey = (secret, salt, { extractable = false, usages = defaultUsages } = {}) => {\n return webcrypto.subtle.importKey(\n 'raw',\n toBinary(secret),\n 'PBKDF2',\n false,\n ['deriveKey']\n ).then(keyMaterial =>\n webcrypto.subtle.deriveKey(\n {\n name: 'PBKDF2',\n salt: toBinary(salt), // NIST recommends at least 64 bits\n iterations: 600000, // OWASP recommends 600k iterations\n hash: 'SHA-256'\n },\n keyMaterial,\n {\n name: 'AES-GCM',\n length: 256\n },\n extractable,\n usages\n )\n )\n}\n"],"names":["webcrypto","encoding.createEncoder","encoding.writeUint8Array","encoding.writeVarUint8Array","encoding.toUint8Array","decoding.createDecoder","decoding.readUint8Array","decoding.readVarUint8Array","string.encodeUtf8"],"mappings":"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"}
|
|
@@ -167,6 +167,24 @@ const uniqueBy = (arr, mapper) => {
|
|
|
167
167
|
return result
|
|
168
168
|
};
|
|
169
169
|
|
|
170
|
+
/**
|
|
171
|
+
* @template {ArrayLike<any>} ARR
|
|
172
|
+
* @template {function(ARR extends ArrayLike<infer T> ? T : never, number, ARR):any} MAPPER
|
|
173
|
+
* @param {ARR} arr
|
|
174
|
+
* @param {MAPPER} mapper
|
|
175
|
+
* @return {Array<MAPPER extends function(...any): infer M ? M : never>}
|
|
176
|
+
*/
|
|
177
|
+
const map = (arr, mapper) => {
|
|
178
|
+
/**
|
|
179
|
+
* @type {Array<any>}
|
|
180
|
+
*/
|
|
181
|
+
const res = Array(arr.length);
|
|
182
|
+
for (let i = 0; i < arr.length; i++) {
|
|
183
|
+
res[i] = mapper(/** @type {any} */ (arr[i]), i, /** @type {any} */ (arr));
|
|
184
|
+
}
|
|
185
|
+
return /** @type {any} */ (res)
|
|
186
|
+
};
|
|
187
|
+
|
|
170
188
|
var array = /*#__PURE__*/Object.freeze({
|
|
171
189
|
__proto__: null,
|
|
172
190
|
last: last,
|
|
@@ -182,7 +200,8 @@ var array = /*#__PURE__*/Object.freeze({
|
|
|
182
200
|
fold: fold,
|
|
183
201
|
isArray: isArray,
|
|
184
202
|
unique: unique,
|
|
185
|
-
uniqueBy: uniqueBy
|
|
203
|
+
uniqueBy: uniqueBy,
|
|
204
|
+
map: map
|
|
186
205
|
});
|
|
187
206
|
|
|
188
207
|
exports.appendTo = appendTo;
|
|
@@ -196,8 +215,9 @@ exports.fold = fold;
|
|
|
196
215
|
exports.from = from;
|
|
197
216
|
exports.isArray = isArray;
|
|
198
217
|
exports.last = last;
|
|
218
|
+
exports.map = map;
|
|
199
219
|
exports.some = some;
|
|
200
220
|
exports.unfold = unfold;
|
|
201
221
|
exports.unique = unique;
|
|
202
222
|
exports.uniqueBy = uniqueBy;
|
|
203
|
-
//# sourceMappingURL=array-
|
|
223
|
+
//# sourceMappingURL=array-704ca50e.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array-704ca50e.cjs","sources":["../array.js"],"sourcesContent":["/**\n * Utility module to work with Arrays.\n *\n * @module array\n */\n\nimport * as set from './set.js'\n\n/**\n * Return the last element of an array. The element must exist\n *\n * @template L\n * @param {ArrayLike<L>} arr\n * @return {L}\n */\nexport const last = arr => arr[arr.length - 1]\n\n/**\n * @template C\n * @return {Array<C>}\n */\nexport const create = () => /** @type {Array<C>} */ ([])\n\n/**\n * @template D\n * @param {Array<D>} a\n * @return {Array<D>}\n */\nexport const copy = a => /** @type {Array<D>} */ (a.slice())\n\n/**\n * Append elements from src to dest\n *\n * @template M\n * @param {Array<M>} dest\n * @param {Array<M>} src\n */\nexport const appendTo = (dest, src) => {\n for (let i = 0; i < src.length; i++) {\n dest.push(src[i])\n }\n}\n\n/**\n * Transforms something array-like to an actual Array.\n *\n * @function\n * @template T\n * @param {ArrayLike<T>|Iterable<T>} arraylike\n * @return {T}\n */\nexport const from = Array.from\n\n/**\n * True iff condition holds on every element in the Array.\n *\n * @function\n * @template ITEM\n * @template {ArrayLike<ITEM>} ARR\n *\n * @param {ARR} arr\n * @param {function(ITEM, number, ARR):boolean} f\n * @return {boolean}\n */\nexport const every = (arr, f) => {\n for (let i = 0; i < arr.length; i++) {\n if (!f(arr[i], i, arr)) {\n return false\n }\n }\n return true\n}\n\n/**\n * True iff condition holds on some element in the Array.\n *\n * @function\n * @template S\n * @template {ArrayLike<S>} ARR\n * @param {ARR} arr\n * @param {function(S, number, ARR):boolean} f\n * @return {boolean}\n */\nexport const some = (arr, f) => {\n for (let i = 0; i < arr.length; i++) {\n if (f(arr[i], i, arr)) {\n return true\n }\n }\n return false\n}\n\n/**\n * @template ELEM\n *\n * @param {ArrayLike<ELEM>} a\n * @param {ArrayLike<ELEM>} b\n * @return {boolean}\n */\nexport const equalFlat = (a, b) => a.length === b.length && every(a, (item, index) => item === b[index])\n\n/**\n * @template ELEM\n * @param {Array<Array<ELEM>>} arr\n * @return {Array<ELEM>}\n */\nexport const flatten = arr => fold(arr, /** @type {Array<ELEM>} */ ([]), (acc, val) => acc.concat(val))\n\n/**\n * @template T\n * @param {number} len\n * @param {function(number, Array<T>):T} f\n * @return {Array<T>}\n */\nexport const unfold = (len, f) => {\n const array = new Array(len)\n for (let i = 0; i < len; i++) {\n array[i] = f(i, array)\n }\n return array\n}\n\n/**\n * @template T\n * @template RESULT\n * @param {Array<T>} arr\n * @param {RESULT} seed\n * @param {function(RESULT, T, number):RESULT} folder\n */\nexport const fold = (arr, seed, folder) => arr.reduce(folder, seed)\n\nexport const isArray = Array.isArray\n\n/**\n * @template T\n * @param {Array<T>} arr\n * @return {Array<T>}\n */\nexport const unique = arr => from(set.from(arr))\n\n/**\n * @template T\n * @template M\n * @param {ArrayLike<T>} arr\n * @param {function(T):M} mapper\n * @return {Array<T>}\n */\nexport const uniqueBy = (arr, mapper) => {\n /**\n * @type {Set<M>}\n */\n const happened = set.create()\n /**\n * @type {Array<T>}\n */\n const result = []\n for (let i = 0; i < arr.length; i++) {\n const el = arr[i]\n const mapped = mapper(el)\n if (!happened.has(mapped)) {\n happened.add(mapped)\n result.push(el)\n }\n }\n return result\n}\n\n/**\n * @template {ArrayLike<any>} ARR\n * @template {function(ARR extends ArrayLike<infer T> ? T : never, number, ARR):any} MAPPER\n * @param {ARR} arr\n * @param {MAPPER} mapper\n * @return {Array<MAPPER extends function(...any): infer M ? M : never>}\n */\nexport const map = (arr, mapper) => {\n /**\n * @type {Array<any>}\n */\n const res = Array(arr.length)\n for (let i = 0; i < arr.length; i++) {\n res[i] = mapper(/** @type {any} */ (arr[i]), i, /** @type {any} */ (arr))\n }\n return /** @type {any} */ (res)\n}\n"],"names":["set.from","set.create"],"mappings":"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"}
|
package/dist/array.cjs
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
require('./set-0f209abb.cjs');
|
|
6
|
-
var array = require('./array-
|
|
6
|
+
var array = require('./array-704ca50e.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
@@ -17,6 +17,7 @@ exports.fold = array.fold;
|
|
|
17
17
|
exports.from = array.from;
|
|
18
18
|
exports.isArray = array.isArray;
|
|
19
19
|
exports.last = array.last;
|
|
20
|
+
exports.map = array.map;
|
|
20
21
|
exports.some = array.some;
|
|
21
22
|
exports.unfold = array.unfold;
|
|
22
23
|
exports.unique = array.unique;
|
package/dist/array.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"array.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/array.d.ts
CHANGED
|
@@ -25,4 +25,5 @@ export function fold<T_1, RESULT>(arr: T_1[], seed: RESULT, folder: (arg0: RESUL
|
|
|
25
25
|
export const isArray: (arg: any) => arg is any[];
|
|
26
26
|
export function unique<T_1>(arr: T_1[]): T_1[];
|
|
27
27
|
export function uniqueBy<T_1, M>(arr: ArrayLike<T_1>, mapper: (arg0: T_1) => M): T_1[];
|
|
28
|
+
export function map<ARR extends ArrayLike<any>, MAPPER extends (arg0: ARR extends ArrayLike<infer T_1> ? T_1 : never, arg1: number, arg2: ARR) => any>(arr: ARR, mapper: MAPPER): (MAPPER extends (...arg0: any[]) => infer M ? M : never)[];
|
|
28
29
|
//# sourceMappingURL=array.d.ts.map
|
package/dist/array.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../array.js"],"names":[],"mappings":"AAeO,8CAAuC;AAMvC,iCAAiD;AAOjD,qCAAqD;AASrD,uDAIN;AAED;;;;;;;GAOG;AACH;;;;;EAA8B;AAavB,yFAHmB,MAAM,gBAAO,OAAO,GAClC,OAAO,CASlB;AAYM,+EAHgB,MAAM,gBAAO,OAAO,GAC/B,OAAO,CASlB;AASM,yEAFK,OAAO,CAEqF;AAOjG,qDAAgG;AAQhG,iCAJI,MAAM,YACG,MAAM,8BASzB;AASM,oGAFwB,MAAM,qBAE8B;AAEnE,iDAAoC;AAO7B,+CAAyC;AASzC,uFAkBN"}
|
|
1
|
+
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../array.js"],"names":[],"mappings":"AAeO,8CAAuC;AAMvC,iCAAiD;AAOjD,qCAAqD;AASrD,uDAIN;AAED;;;;;;;GAOG;AACH;;;;;EAA8B;AAavB,yFAHmB,MAAM,gBAAO,OAAO,GAClC,OAAO,CASlB;AAYM,+EAHgB,MAAM,gBAAO,OAAO,GAC/B,OAAO,CASlB;AASM,yEAFK,OAAO,CAEqF;AAOjG,qDAAgG;AAQhG,iCAJI,MAAM,YACG,MAAM,8BASzB;AASM,oGAFwB,MAAM,qBAE8B;AAEnE,iDAAoC;AAO7B,+CAAyC;AASzC,uFAkBN;AASM,4HAL4D,MAAM,gBAAO,GAAG,uDAGtC,GAAG,8BAW/C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binary.test.d.ts","sourceRoot":"","sources":["../binary.test.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"binary.test.d.ts","sourceRoot":"","sources":["../binary.test.js"],"names":[],"mappings":"AAMO,6BAFI,EAAE,QAAQ,QAOpB;AAKM,8BAFI,EAAE,QAAQ,QAWpB;mBAxBkB,cAAc"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var map = require('./map-9a5915e4.cjs');
|
|
4
4
|
var set = require('./set-0f209abb.cjs');
|
|
5
|
-
var encoding = require('./buffer-
|
|
5
|
+
var encoding = require('./buffer-c5d69c70.cjs');
|
|
6
6
|
var storage = require('./storage.cjs');
|
|
7
7
|
|
|
8
8
|
/* eslint-env browser */
|
|
@@ -125,4 +125,4 @@ exports.broadcastchannel = broadcastchannel;
|
|
|
125
125
|
exports.publish = publish;
|
|
126
126
|
exports.subscribe = subscribe;
|
|
127
127
|
exports.unsubscribe = unsubscribe;
|
|
128
|
-
//# sourceMappingURL=broadcastchannel-
|
|
128
|
+
//# sourceMappingURL=broadcastchannel-7801969a.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broadcastchannel-
|
|
1
|
+
{"version":3,"file":"broadcastchannel-7801969a.cjs","sources":["../broadcastchannel.js"],"sourcesContent":["/* eslint-env browser */\n\n/**\n * Helpers for cross-tab communication using broadcastchannel with LocalStorage fallback.\n *\n * ```js\n * // In browser window A:\n * broadcastchannel.subscribe('my events', data => console.log(data))\n * broadcastchannel.publish('my events', 'Hello world!') // => A: 'Hello world!' fires synchronously in same tab\n *\n * // In browser window B:\n * broadcastchannel.publish('my events', 'hello from tab B') // => A: 'hello from tab B'\n * ```\n *\n * @module broadcastchannel\n */\n\n// @todo before next major: use Uint8Array instead as buffer object\n\nimport * as map from './map.js'\nimport * as set from './set.js'\nimport * as buffer from './buffer.js'\nimport * as storage from './storage.js'\n\n/**\n * @typedef {Object} Channel\n * @property {Set<function(any, any):any>} Channel.subs\n * @property {any} Channel.bc\n */\n\n/**\n * @type {Map<string, Channel>}\n */\nconst channels = new Map()\n\n/* c8 ignore start */\nclass LocalStoragePolyfill {\n /**\n * @param {string} room\n */\n constructor (room) {\n this.room = room\n /**\n * @type {null|function({data:ArrayBuffer}):void}\n */\n this.onmessage = null\n /**\n * @param {any} e\n */\n this._onChange = e => e.key === room && this.onmessage !== null && this.onmessage({ data: buffer.fromBase64(e.newValue || '') })\n storage.onChange(this._onChange)\n }\n\n /**\n * @param {ArrayBuffer} buf\n */\n postMessage (buf) {\n storage.varStorage.setItem(this.room, buffer.toBase64(buffer.createUint8ArrayFromArrayBuffer(buf)))\n }\n\n close () {\n storage.offChange(this._onChange)\n }\n}\n/* c8 ignore stop */\n\n// Use BroadcastChannel or Polyfill\n/* c8 ignore next */\nconst BC = typeof BroadcastChannel === 'undefined' ? LocalStoragePolyfill : BroadcastChannel\n\n/**\n * @param {string} room\n * @return {Channel}\n */\nconst getChannel = room =>\n map.setIfUndefined(channels, room, () => {\n const subs = set.create()\n const bc = new BC(room)\n /**\n * @param {{data:ArrayBuffer}} e\n */\n /* c8 ignore next */\n bc.onmessage = e => subs.forEach(sub => sub(e.data, 'broadcastchannel'))\n return {\n bc, subs\n }\n })\n\n/**\n * Subscribe to global `publish` events.\n *\n * @function\n * @param {string} room\n * @param {function(any, any):any} f\n */\nexport const subscribe = (room, f) => {\n getChannel(room).subs.add(f)\n return f\n}\n\n/**\n * Unsubscribe from `publish` global events.\n *\n * @function\n * @param {string} room\n * @param {function(any, any):any} f\n */\nexport const unsubscribe = (room, f) => {\n const channel = getChannel(room)\n const unsubscribed = channel.subs.delete(f)\n if (unsubscribed && channel.subs.size === 0) {\n channel.bc.close()\n channels.delete(room)\n }\n return unsubscribed\n}\n\n/**\n * Publish data to all subscribers (including subscribers on this tab)\n *\n * @function\n * @param {string} room\n * @param {any} data\n * @param {any} [origin]\n */\nexport const publish = (room, data, origin = null) => {\n const c = getChannel(room)\n c.bc.postMessage(data)\n c.subs.forEach(sub => sub(data, origin))\n}\n"],"names":["buffer.fromBase64","storage.onChange","storage.varStorage","buffer.toBase64","buffer.createUint8ArrayFromArrayBuffer","storage.offChange","map.setIfUndefined","set.create"],"mappings":"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"}
|
|
@@ -4,18 +4,18 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
require('./map-9a5915e4.cjs');
|
|
6
6
|
require('./set-0f209abb.cjs');
|
|
7
|
-
require('./buffer-
|
|
7
|
+
require('./buffer-c5d69c70.cjs');
|
|
8
8
|
require('./storage.cjs');
|
|
9
|
-
var broadcastchannel = require('./broadcastchannel-
|
|
10
|
-
require('./string-
|
|
11
|
-
require('./array-
|
|
12
|
-
require('./environment-
|
|
9
|
+
var broadcastchannel = require('./broadcastchannel-7801969a.cjs');
|
|
10
|
+
require('./string-6d104757.cjs');
|
|
11
|
+
require('./array-704ca50e.cjs');
|
|
12
|
+
require('./environment-ad129e4d.cjs');
|
|
13
13
|
require('./conditions-f5c0c102.cjs');
|
|
14
|
-
require('./function-
|
|
15
|
-
require('./object-
|
|
16
|
-
require('./binary-ac8e39e2.cjs');
|
|
14
|
+
require('./function-314fdc56.cjs');
|
|
15
|
+
require('./object-fecf6a7b.cjs');
|
|
17
16
|
require('./math-08e068f9.cjs');
|
|
18
|
-
require('./
|
|
17
|
+
require('./binary-ac8e39e2.cjs');
|
|
18
|
+
require('./number-466d8922.cjs');
|
|
19
19
|
require('./error-8582d695.cjs');
|
|
20
20
|
|
|
21
21
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var string = require('./string-
|
|
4
|
-
var environment = require('./environment-
|
|
5
|
-
var
|
|
3
|
+
var string = require('./string-6d104757.cjs');
|
|
4
|
+
var environment = require('./environment-ad129e4d.cjs');
|
|
5
|
+
var array = require('./array-704ca50e.cjs');
|
|
6
6
|
var math = require('./math-08e068f9.cjs');
|
|
7
|
-
var
|
|
7
|
+
var binary = require('./binary-ac8e39e2.cjs');
|
|
8
|
+
var number = require('./number-466d8922.cjs');
|
|
8
9
|
var error = require('./error-8582d695.cjs');
|
|
9
|
-
var array = require('./array-fd99bc23.cjs');
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Efficient schema-less binary encoding with support for variable length encoding.
|
|
@@ -347,6 +347,48 @@ const _writeVarStringPolyfill = (encoder, str) => {
|
|
|
347
347
|
/* c8 ignore next */
|
|
348
348
|
const writeVarString = (string.utf8TextEncoder && /** @type {any} */ (string.utf8TextEncoder).encodeInto) ? _writeVarStringNative : _writeVarStringPolyfill;
|
|
349
349
|
|
|
350
|
+
/**
|
|
351
|
+
* Write a string terminated by a special byte sequence. This is not very performant and is
|
|
352
|
+
* generally discouraged. However, the resulting byte arrays are lexiographically ordered which
|
|
353
|
+
* makes this a nice feature for databases.
|
|
354
|
+
*
|
|
355
|
+
* The string will be encoded using utf8 and then terminated and escaped using writeTerminatingUint8Array.
|
|
356
|
+
*
|
|
357
|
+
* @function
|
|
358
|
+
* @param {Encoder} encoder
|
|
359
|
+
* @param {String} str The string that is to be encoded.
|
|
360
|
+
*/
|
|
361
|
+
const writeTerminatedString = (encoder, str) =>
|
|
362
|
+
writeTerminatedUint8Array(encoder, string.encodeUtf8(str));
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* Write a terminating Uint8Array. Note that this is not performant and is generally
|
|
366
|
+
* discouraged. There are few situations when this is needed.
|
|
367
|
+
*
|
|
368
|
+
* We use 0x0 as a terminating character. 0x1 serves as an escape character for 0x0 and 0x1.
|
|
369
|
+
*
|
|
370
|
+
* Example: [0,1,2] is encoded to [1,0,1,1,2,0]. 0x0, and 0x1 needed to be escaped using 0x1. Then
|
|
371
|
+
* the result is terminated using the 0x0 character.
|
|
372
|
+
*
|
|
373
|
+
* This is basically how many systems implement null terminated strings. However, we use an escape
|
|
374
|
+
* character 0x1 to avoid issues and potenial attacks on our database (if this is used as a key
|
|
375
|
+
* encoder for NoSql databases).
|
|
376
|
+
*
|
|
377
|
+
* @function
|
|
378
|
+
* @param {Encoder} encoder
|
|
379
|
+
* @param {Uint8Array} buf The string that is to be encoded.
|
|
380
|
+
*/
|
|
381
|
+
const writeTerminatedUint8Array = (encoder, buf) => {
|
|
382
|
+
for (let i = 0; i < buf.length; i++) {
|
|
383
|
+
const b = buf[i];
|
|
384
|
+
if (b === 0 || b === 1) {
|
|
385
|
+
write(encoder, 1);
|
|
386
|
+
}
|
|
387
|
+
write(encoder, buf[i]);
|
|
388
|
+
}
|
|
389
|
+
write(encoder, 0);
|
|
390
|
+
};
|
|
391
|
+
|
|
350
392
|
/**
|
|
351
393
|
* Write the content of another Encoder.
|
|
352
394
|
*
|
|
@@ -899,6 +941,8 @@ var encoding = /*#__PURE__*/Object.freeze({
|
|
|
899
941
|
_writeVarStringNative: _writeVarStringNative,
|
|
900
942
|
_writeVarStringPolyfill: _writeVarStringPolyfill,
|
|
901
943
|
writeVarString: writeVarString,
|
|
944
|
+
writeTerminatedString: writeTerminatedString,
|
|
945
|
+
writeTerminatedUint8Array: writeTerminatedUint8Array,
|
|
902
946
|
writeBinaryEncoder: writeBinaryEncoder,
|
|
903
947
|
writeUint8Array: writeUint8Array,
|
|
904
948
|
writeVarUint8Array: writeVarUint8Array,
|
|
@@ -1297,6 +1341,31 @@ const _readVarStringNative = decoder =>
|
|
|
1297
1341
|
/* c8 ignore next */
|
|
1298
1342
|
const readVarString = string.utf8TextDecoder ? _readVarStringNative : _readVarStringPolyfill;
|
|
1299
1343
|
|
|
1344
|
+
/**
|
|
1345
|
+
* @param {Decoder} decoder
|
|
1346
|
+
* @return {Uint8Array}
|
|
1347
|
+
*/
|
|
1348
|
+
const readTerminatedUint8Array = decoder => {
|
|
1349
|
+
const encoder = createEncoder();
|
|
1350
|
+
let b;
|
|
1351
|
+
while (true) {
|
|
1352
|
+
b = readUint8(decoder);
|
|
1353
|
+
if (b === 0) {
|
|
1354
|
+
return toUint8Array(encoder)
|
|
1355
|
+
}
|
|
1356
|
+
if (b === 1) {
|
|
1357
|
+
b = readUint8(decoder);
|
|
1358
|
+
}
|
|
1359
|
+
write(encoder, b);
|
|
1360
|
+
}
|
|
1361
|
+
};
|
|
1362
|
+
|
|
1363
|
+
/**
|
|
1364
|
+
* @param {Decoder} decoder
|
|
1365
|
+
* @return {string}
|
|
1366
|
+
*/
|
|
1367
|
+
const readTerminatedString = decoder => string.decodeUtf8(readTerminatedUint8Array(decoder));
|
|
1368
|
+
|
|
1300
1369
|
/**
|
|
1301
1370
|
* Look ahead and read varString without incrementing position
|
|
1302
1371
|
*
|
|
@@ -1616,6 +1685,8 @@ var decoding = /*#__PURE__*/Object.freeze({
|
|
|
1616
1685
|
_readVarStringPolyfill: _readVarStringPolyfill,
|
|
1617
1686
|
_readVarStringNative: _readVarStringNative,
|
|
1618
1687
|
readVarString: readVarString,
|
|
1688
|
+
readTerminatedUint8Array: readTerminatedUint8Array,
|
|
1689
|
+
readTerminatedString: readTerminatedString,
|
|
1619
1690
|
peekVarString: peekVarString,
|
|
1620
1691
|
readFromDataView: readFromDataView,
|
|
1621
1692
|
readFloat32: readFloat32,
|
|
@@ -1710,6 +1781,27 @@ const toBase64 = environment.isBrowser ? toBase64Browser : toBase64Node;
|
|
|
1710
1781
|
/* c8 ignore next */
|
|
1711
1782
|
const fromBase64 = environment.isBrowser ? fromBase64Browser : fromBase64Node;
|
|
1712
1783
|
|
|
1784
|
+
/**
|
|
1785
|
+
* Base64 is always a more efficient choice. This exists for utility purposes only.
|
|
1786
|
+
*
|
|
1787
|
+
* @param {Uint8Array} buf
|
|
1788
|
+
*/
|
|
1789
|
+
const toHexString = buf => array.map(buf, b => b.toString(16).padStart(2, '0')).join('');
|
|
1790
|
+
|
|
1791
|
+
/**
|
|
1792
|
+
* Note: This function expects that the hex doesn't start with 0x..
|
|
1793
|
+
*
|
|
1794
|
+
* @param {string} hex
|
|
1795
|
+
*/
|
|
1796
|
+
const fromHexString = hex => {
|
|
1797
|
+
const hlen = hex.length;
|
|
1798
|
+
const buf = new Uint8Array(math.ceil(hlen / 2));
|
|
1799
|
+
for (let i = 0; i < hlen; i += 2) {
|
|
1800
|
+
buf[buf.length - i / 2 - 1] = Number.parseInt(hex.slice(hlen - i - 2, hlen - i), 16);
|
|
1801
|
+
}
|
|
1802
|
+
return buf
|
|
1803
|
+
};
|
|
1804
|
+
|
|
1713
1805
|
/**
|
|
1714
1806
|
* Copy the content of an Uint8Array view to a new ArrayBuffer.
|
|
1715
1807
|
*
|
|
@@ -1743,6 +1835,23 @@ const encodeAny = data => {
|
|
|
1743
1835
|
*/
|
|
1744
1836
|
const decodeAny = buf => readAny(createDecoder(buf));
|
|
1745
1837
|
|
|
1838
|
+
/**
|
|
1839
|
+
* Shift Byte Array {N} bits to the left. Does not expand byte array.
|
|
1840
|
+
*
|
|
1841
|
+
* @param {Uint8Array} bs
|
|
1842
|
+
* @param {number} N should be in the range of [0-7]
|
|
1843
|
+
*/
|
|
1844
|
+
const shiftNBitsLeft = (bs, N) => {
|
|
1845
|
+
if (N === 0) return bs
|
|
1846
|
+
bs = new Uint8Array(bs);
|
|
1847
|
+
bs[0] <<= N;
|
|
1848
|
+
for (let i = 1; i < bs.length; i++) {
|
|
1849
|
+
bs[i - 1] |= bs[i] >>> (8 - N);
|
|
1850
|
+
bs[i] <<= N;
|
|
1851
|
+
}
|
|
1852
|
+
return bs
|
|
1853
|
+
};
|
|
1854
|
+
|
|
1746
1855
|
var buffer = /*#__PURE__*/Object.freeze({
|
|
1747
1856
|
__proto__: null,
|
|
1748
1857
|
createUint8ArrayFromLen: createUint8ArrayFromLen,
|
|
@@ -1750,9 +1859,12 @@ var buffer = /*#__PURE__*/Object.freeze({
|
|
|
1750
1859
|
createUint8ArrayFromArrayBuffer: createUint8ArrayFromArrayBuffer,
|
|
1751
1860
|
toBase64: toBase64,
|
|
1752
1861
|
fromBase64: fromBase64,
|
|
1862
|
+
toHexString: toHexString,
|
|
1863
|
+
fromHexString: fromHexString,
|
|
1753
1864
|
copyUint8Array: copyUint8Array,
|
|
1754
1865
|
encodeAny: encodeAny,
|
|
1755
|
-
decodeAny: decodeAny
|
|
1866
|
+
decodeAny: decodeAny,
|
|
1867
|
+
shiftNBitsLeft: shiftNBitsLeft
|
|
1756
1868
|
});
|
|
1757
1869
|
|
|
1758
1870
|
exports.Decoder = Decoder;
|
|
@@ -1789,6 +1901,7 @@ exports.encode = encode;
|
|
|
1789
1901
|
exports.encodeAny = encodeAny;
|
|
1790
1902
|
exports.encoding = encoding;
|
|
1791
1903
|
exports.fromBase64 = fromBase64;
|
|
1904
|
+
exports.fromHexString = fromHexString;
|
|
1792
1905
|
exports.hasContent = hasContent$1;
|
|
1793
1906
|
exports.hasContent$1 = hasContent;
|
|
1794
1907
|
exports.length = length;
|
|
@@ -1805,6 +1918,8 @@ exports.readFloat32 = readFloat32;
|
|
|
1805
1918
|
exports.readFloat64 = readFloat64;
|
|
1806
1919
|
exports.readFromDataView = readFromDataView;
|
|
1807
1920
|
exports.readTailAsUint8Array = readTailAsUint8Array;
|
|
1921
|
+
exports.readTerminatedString = readTerminatedString;
|
|
1922
|
+
exports.readTerminatedUint8Array = readTerminatedUint8Array;
|
|
1808
1923
|
exports.readUint16 = readUint16;
|
|
1809
1924
|
exports.readUint32 = readUint32;
|
|
1810
1925
|
exports.readUint32BigEndian = readUint32BigEndian;
|
|
@@ -1818,8 +1933,10 @@ exports.set = set;
|
|
|
1818
1933
|
exports.setUint16 = setUint16;
|
|
1819
1934
|
exports.setUint32 = setUint32;
|
|
1820
1935
|
exports.setUint8 = setUint8;
|
|
1936
|
+
exports.shiftNBitsLeft = shiftNBitsLeft;
|
|
1821
1937
|
exports.skip8 = skip8;
|
|
1822
1938
|
exports.toBase64 = toBase64;
|
|
1939
|
+
exports.toHexString = toHexString;
|
|
1823
1940
|
exports.toUint8Array = toUint8Array;
|
|
1824
1941
|
exports.verifyLen = verifyLen;
|
|
1825
1942
|
exports.write = write;
|
|
@@ -1830,6 +1947,8 @@ exports.writeBinaryEncoder = writeBinaryEncoder;
|
|
|
1830
1947
|
exports.writeFloat32 = writeFloat32;
|
|
1831
1948
|
exports.writeFloat64 = writeFloat64;
|
|
1832
1949
|
exports.writeOnDataView = writeOnDataView;
|
|
1950
|
+
exports.writeTerminatedString = writeTerminatedString;
|
|
1951
|
+
exports.writeTerminatedUint8Array = writeTerminatedUint8Array;
|
|
1833
1952
|
exports.writeUint16 = writeUint16;
|
|
1834
1953
|
exports.writeUint32 = writeUint32;
|
|
1835
1954
|
exports.writeUint32BigEndian = writeUint32BigEndian;
|
|
@@ -1839,4 +1958,4 @@ exports.writeVarInt = writeVarInt;
|
|
|
1839
1958
|
exports.writeVarString = writeVarString;
|
|
1840
1959
|
exports.writeVarUint = writeVarUint;
|
|
1841
1960
|
exports.writeVarUint8Array = writeVarUint8Array;
|
|
1842
|
-
//# sourceMappingURL=buffer-
|
|
1961
|
+
//# sourceMappingURL=buffer-c5d69c70.cjs.map
|