@leofcoin/chain 1.8.8 → 1.8.11
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/exports/browser/chain.js +18 -12
- package/exports/browser/{flags-wmeqg14g.js → constants-ByuwyBVy.js} +772 -82
- package/exports/browser/node-browser.js +84 -4
- package/exports/chain.js +14 -7
- package/exports/constants-eo0U5-D_.js +12 -0
- package/exports/constants.d.ts +2 -0
- package/exports/node.js +2 -9
- package/package.json +4 -4
- package/exports/browser/browser-CfYI-6aD-DHRKebpJ.js +0 -132
- package/exports/browser/browser-Qcpp3EKK-DOtgsScX.js +0 -38
- package/exports/browser/client-CWkdUcxK-BEmg-tGc.js +0 -989
- package/exports/browser/identity-nIyW_Xm8-BU8xakCv.js +0 -17199
- package/exports/browser/index-ChRjMyiM-EjbBu23l.js +0 -36
- package/exports/browser/index-DTbjK0sK-BK_5FT46.js +0 -7580
- package/exports/browser/messages-C507MMRx-ypXoH7gN.js +0 -207
- package/exports/browser/networks-F1y7bMrB.js +0 -25
- package/exports/browser/node-browser-A1KVCavN.js +0 -9132
- package/exports/browser/password-oDixGC8h.js +0 -3
- package/exports/browser/qr-scanner-worker.min-Dy0qkKA4-Dy0qkKA4.js +0 -100
- package/exports/flags-DKVwPDLE.js +0 -3
- package/exports/flags.d.ts +0 -2
|
@@ -7338,8 +7338,20 @@ var index = {
|
|
|
7338
7338
|
decode
|
|
7339
7339
|
};
|
|
7340
7340
|
|
|
7341
|
-
const jsonStringifyBigInt = (key, value) =>
|
|
7342
|
-
|
|
7341
|
+
const jsonStringifyBigInt = (key, value) => {
|
|
7342
|
+
if (typeof value === 'bigint')
|
|
7343
|
+
return { $bigint: value.toString() };
|
|
7344
|
+
return value;
|
|
7345
|
+
};
|
|
7346
|
+
const jsonParseBigInt = (key, value) => {
|
|
7347
|
+
if (typeof value === 'object' && value) {
|
|
7348
|
+
if (value.$bigint)
|
|
7349
|
+
return BigInt(value.$bigint);
|
|
7350
|
+
}
|
|
7351
|
+
return value;
|
|
7352
|
+
};
|
|
7353
|
+
const _textEncoder = new TextEncoder();
|
|
7354
|
+
const _textDecoder = new TextDecoder();
|
|
7343
7355
|
class BasicInterface {
|
|
7344
7356
|
#encoded;
|
|
7345
7357
|
#decoded;
|
|
@@ -7374,20 +7386,49 @@ class BasicInterface {
|
|
|
7374
7386
|
}
|
|
7375
7387
|
decode(encoded) {
|
|
7376
7388
|
encoded = encoded || this.encoded;
|
|
7377
|
-
|
|
7389
|
+
// Example: decode as JSON if possible (override in subclass)
|
|
7390
|
+
try {
|
|
7391
|
+
return JSON.parse(_textDecoder.decode(encoded), jsonParseBigInt);
|
|
7392
|
+
}
|
|
7393
|
+
catch {
|
|
7394
|
+
return new Object();
|
|
7395
|
+
}
|
|
7378
7396
|
}
|
|
7379
7397
|
encode(decoded) {
|
|
7380
7398
|
decoded = decoded || this.decoded;
|
|
7381
|
-
|
|
7399
|
+
// Example: encode as JSON (override in subclass)
|
|
7400
|
+
return _textEncoder.encode(JSON.stringify(decoded, jsonStringifyBigInt));
|
|
7382
7401
|
}
|
|
7383
7402
|
// get Codec(): Codec {}
|
|
7403
|
+
// Cache proto keys/values for reuse
|
|
7404
|
+
static _protoCache = new WeakMap();
|
|
7384
7405
|
protoEncode(data) {
|
|
7385
|
-
|
|
7406
|
+
let cache = BasicInterface._protoCache.get(this.proto);
|
|
7407
|
+
if (!cache) {
|
|
7408
|
+
cache = {
|
|
7409
|
+
keys: Object.keys(this.proto),
|
|
7410
|
+
values: Object.values(this.proto)
|
|
7411
|
+
};
|
|
7412
|
+
BasicInterface._protoCache.set(this.proto, cache);
|
|
7413
|
+
}
|
|
7414
|
+
// Use proto.encode directly, but avoid new array allocations inside encode if possible
|
|
7386
7415
|
return index.encode(this.proto, data, false);
|
|
7387
7416
|
}
|
|
7388
7417
|
protoDecode(data) {
|
|
7389
|
-
//
|
|
7390
|
-
|
|
7418
|
+
// Use a static output object if possible (not thread-safe, but safe for single-threaded use)
|
|
7419
|
+
if (!this._decodeOutput)
|
|
7420
|
+
this._decodeOutput = {};
|
|
7421
|
+
const result = index.decode(this.proto, data, false);
|
|
7422
|
+
// Copy properties to static object to avoid new allocations
|
|
7423
|
+
Object.keys(result).forEach((k) => {
|
|
7424
|
+
this._decodeOutput[k] = result[k];
|
|
7425
|
+
});
|
|
7426
|
+
// Remove any keys not in result
|
|
7427
|
+
Object.keys(this._decodeOutput).forEach((k) => {
|
|
7428
|
+
if (!(k in result))
|
|
7429
|
+
delete this._decodeOutput[k];
|
|
7430
|
+
});
|
|
7431
|
+
return this._decodeOutput;
|
|
7391
7432
|
}
|
|
7392
7433
|
isHex(string) {
|
|
7393
7434
|
return isHex(string);
|
|
@@ -7420,7 +7461,10 @@ class BasicInterface {
|
|
|
7420
7461
|
return this.decode(fromHex(string));
|
|
7421
7462
|
}
|
|
7422
7463
|
fromArray(array) {
|
|
7423
|
-
|
|
7464
|
+
// Avoid unnecessary copy if already Uint8Array
|
|
7465
|
+
if (array instanceof Uint8Array)
|
|
7466
|
+
return this.decode(array);
|
|
7467
|
+
return this.decode(Uint8Array.from(array));
|
|
7424
7468
|
}
|
|
7425
7469
|
fromEncoded(encoded) {
|
|
7426
7470
|
return this.decode(encoded);
|
|
@@ -7428,15 +7472,21 @@ class BasicInterface {
|
|
|
7428
7472
|
toString() {
|
|
7429
7473
|
if (!this.encoded)
|
|
7430
7474
|
this.encode();
|
|
7431
|
-
|
|
7475
|
+
// Use cached string if available
|
|
7476
|
+
if (!this._string)
|
|
7477
|
+
this._string = Array.prototype.join.call(this.encoded, ',');
|
|
7478
|
+
return this._string;
|
|
7432
7479
|
}
|
|
7433
7480
|
toHex() {
|
|
7434
7481
|
if (!this.encoded)
|
|
7435
7482
|
this.encode();
|
|
7436
|
-
|
|
7437
|
-
|
|
7438
|
-
.
|
|
7439
|
-
|
|
7483
|
+
// Use cached hex if available
|
|
7484
|
+
if (!this._hex) {
|
|
7485
|
+
if (!this._string)
|
|
7486
|
+
this._string = Array.prototype.join.call(this.encoded, ',');
|
|
7487
|
+
this._hex = toHex(this._string.split(',').map(Number));
|
|
7488
|
+
}
|
|
7489
|
+
return this._hex;
|
|
7440
7490
|
}
|
|
7441
7491
|
/**
|
|
7442
7492
|
* @return {String} encoded
|
|
@@ -7444,7 +7494,10 @@ class BasicInterface {
|
|
|
7444
7494
|
toBs32() {
|
|
7445
7495
|
if (!this.encoded)
|
|
7446
7496
|
this.encode();
|
|
7447
|
-
|
|
7497
|
+
// Use cached bs32 if available
|
|
7498
|
+
if (!this._bs32)
|
|
7499
|
+
this._bs32 = toBase32(this.encoded);
|
|
7500
|
+
return this._bs32;
|
|
7448
7501
|
}
|
|
7449
7502
|
/**
|
|
7450
7503
|
* @return {String} encoded
|
|
@@ -7703,9 +7756,10 @@ class Codec extends BasicInterface {
|
|
|
7703
7756
|
else
|
|
7704
7757
|
this.fromString(buffer);
|
|
7705
7758
|
}
|
|
7706
|
-
if (
|
|
7759
|
+
else if (typeof buffer === 'number') {
|
|
7707
7760
|
if (utils.getCodec(buffer))
|
|
7708
7761
|
this.fromCodec(buffer);
|
|
7762
|
+
}
|
|
7709
7763
|
}
|
|
7710
7764
|
}
|
|
7711
7765
|
fromEncoded(encoded) {
|
|
@@ -7762,11 +7816,603 @@ class Codec extends BasicInterface {
|
|
|
7762
7816
|
}
|
|
7763
7817
|
}
|
|
7764
7818
|
|
|
7819
|
+
/*!
|
|
7820
|
+
* hash-wasm (https://www.npmjs.com/package/hash-wasm)
|
|
7821
|
+
* (c) Dani Biro
|
|
7822
|
+
* @license MIT
|
|
7823
|
+
*/
|
|
7824
|
+
|
|
7825
|
+
|
|
7826
|
+
/******************************************************************************
|
|
7827
|
+
Copyright (c) Microsoft Corporation.
|
|
7828
|
+
|
|
7829
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
7830
|
+
purpose with or without fee is hereby granted.
|
|
7831
|
+
|
|
7832
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
7833
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
7834
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
7835
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
7836
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
7837
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
7838
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
7839
|
+
***************************************************************************** */
|
|
7840
|
+
/* global Reflect, Promise, SuppressedError, Symbol, Iterator */
|
|
7841
|
+
|
|
7842
|
+
|
|
7843
|
+
function __awaiter(thisArg, _arguments, P, generator) {
|
|
7844
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
7845
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
7846
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
7847
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7848
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7849
|
+
step((generator = generator.apply(thisArg, [])).next());
|
|
7850
|
+
});
|
|
7851
|
+
}
|
|
7852
|
+
|
|
7853
|
+
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
7854
|
+
var e = new Error(message);
|
|
7855
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
7856
|
+
};
|
|
7857
|
+
|
|
7858
|
+
class Mutex {
|
|
7859
|
+
constructor() {
|
|
7860
|
+
this.mutex = Promise.resolve();
|
|
7861
|
+
}
|
|
7862
|
+
lock() {
|
|
7863
|
+
let begin = () => { };
|
|
7864
|
+
this.mutex = this.mutex.then(() => new Promise(begin));
|
|
7865
|
+
return new Promise((res) => {
|
|
7866
|
+
begin = res;
|
|
7867
|
+
});
|
|
7868
|
+
}
|
|
7869
|
+
dispatch(fn) {
|
|
7870
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
7871
|
+
const unlock = yield this.lock();
|
|
7872
|
+
try {
|
|
7873
|
+
return yield Promise.resolve(fn());
|
|
7874
|
+
}
|
|
7875
|
+
finally {
|
|
7876
|
+
unlock();
|
|
7877
|
+
}
|
|
7878
|
+
});
|
|
7879
|
+
}
|
|
7880
|
+
}
|
|
7881
|
+
|
|
7882
|
+
var _a;
|
|
7883
|
+
function getGlobal() {
|
|
7884
|
+
if (typeof globalThis !== "undefined")
|
|
7885
|
+
return globalThis;
|
|
7886
|
+
if (typeof self !== "undefined")
|
|
7887
|
+
return self;
|
|
7888
|
+
if (typeof window !== "undefined")
|
|
7889
|
+
return window;
|
|
7890
|
+
return global;
|
|
7891
|
+
}
|
|
7892
|
+
const globalObject = getGlobal();
|
|
7893
|
+
const nodeBuffer = (_a = globalObject.Buffer) !== null && _a !== void 0 ? _a : null;
|
|
7894
|
+
const textEncoder = globalObject.TextEncoder
|
|
7895
|
+
? new globalObject.TextEncoder()
|
|
7896
|
+
: null;
|
|
7897
|
+
function hexCharCodesToInt(a, b) {
|
|
7898
|
+
return ((((a & 0xf) + ((a >> 6) | ((a >> 3) & 0x8))) << 4) |
|
|
7899
|
+
((b & 0xf) + ((b >> 6) | ((b >> 3) & 0x8))));
|
|
7900
|
+
}
|
|
7901
|
+
function writeHexToUInt8(buf, str) {
|
|
7902
|
+
const size = str.length >> 1;
|
|
7903
|
+
for (let i = 0; i < size; i++) {
|
|
7904
|
+
const index = i << 1;
|
|
7905
|
+
buf[i] = hexCharCodesToInt(str.charCodeAt(index), str.charCodeAt(index + 1));
|
|
7906
|
+
}
|
|
7907
|
+
}
|
|
7908
|
+
function hexStringEqualsUInt8(str, buf) {
|
|
7909
|
+
if (str.length !== buf.length * 2) {
|
|
7910
|
+
return false;
|
|
7911
|
+
}
|
|
7912
|
+
for (let i = 0; i < buf.length; i++) {
|
|
7913
|
+
const strIndex = i << 1;
|
|
7914
|
+
if (buf[i] !==
|
|
7915
|
+
hexCharCodesToInt(str.charCodeAt(strIndex), str.charCodeAt(strIndex + 1))) {
|
|
7916
|
+
return false;
|
|
7917
|
+
}
|
|
7918
|
+
}
|
|
7919
|
+
return true;
|
|
7920
|
+
}
|
|
7921
|
+
const alpha = "a".charCodeAt(0) - 10;
|
|
7922
|
+
const digit = "0".charCodeAt(0);
|
|
7923
|
+
function getDigestHex(tmpBuffer, input, hashLength) {
|
|
7924
|
+
let p = 0;
|
|
7925
|
+
for (let i = 0; i < hashLength; i++) {
|
|
7926
|
+
let nibble = input[i] >>> 4;
|
|
7927
|
+
tmpBuffer[p++] = nibble > 9 ? nibble + alpha : nibble + digit;
|
|
7928
|
+
nibble = input[i] & 0xf;
|
|
7929
|
+
tmpBuffer[p++] = nibble > 9 ? nibble + alpha : nibble + digit;
|
|
7930
|
+
}
|
|
7931
|
+
return String.fromCharCode.apply(null, tmpBuffer);
|
|
7932
|
+
}
|
|
7933
|
+
const getUInt8Buffer = nodeBuffer !== null
|
|
7934
|
+
? (data) => {
|
|
7935
|
+
if (typeof data === "string") {
|
|
7936
|
+
const buf = nodeBuffer.from(data, "utf8");
|
|
7937
|
+
return new Uint8Array(buf.buffer, buf.byteOffset, buf.length);
|
|
7938
|
+
}
|
|
7939
|
+
if (nodeBuffer.isBuffer(data)) {
|
|
7940
|
+
return new Uint8Array(data.buffer, data.byteOffset, data.length);
|
|
7941
|
+
}
|
|
7942
|
+
if (ArrayBuffer.isView(data)) {
|
|
7943
|
+
return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
|
|
7944
|
+
}
|
|
7945
|
+
throw new Error("Invalid data type!");
|
|
7946
|
+
}
|
|
7947
|
+
: (data) => {
|
|
7948
|
+
if (typeof data === "string") {
|
|
7949
|
+
return textEncoder.encode(data);
|
|
7950
|
+
}
|
|
7951
|
+
if (ArrayBuffer.isView(data)) {
|
|
7952
|
+
return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
|
|
7953
|
+
}
|
|
7954
|
+
throw new Error("Invalid data type!");
|
|
7955
|
+
};
|
|
7956
|
+
const base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
|
7957
|
+
const base64Lookup = new Uint8Array(256);
|
|
7958
|
+
for (let i = 0; i < base64Chars.length; i++) {
|
|
7959
|
+
base64Lookup[base64Chars.charCodeAt(i)] = i;
|
|
7960
|
+
}
|
|
7961
|
+
function getDecodeBase64Length(data) {
|
|
7962
|
+
let bufferLength = Math.floor(data.length * 0.75);
|
|
7963
|
+
const len = data.length;
|
|
7964
|
+
if (data[len - 1] === "=") {
|
|
7965
|
+
bufferLength -= 1;
|
|
7966
|
+
if (data[len - 2] === "=") {
|
|
7967
|
+
bufferLength -= 1;
|
|
7968
|
+
}
|
|
7969
|
+
}
|
|
7970
|
+
return bufferLength;
|
|
7971
|
+
}
|
|
7972
|
+
function decodeBase64(data) {
|
|
7973
|
+
const bufferLength = getDecodeBase64Length(data);
|
|
7974
|
+
const len = data.length;
|
|
7975
|
+
const bytes = new Uint8Array(bufferLength);
|
|
7976
|
+
let p = 0;
|
|
7977
|
+
for (let i = 0; i < len; i += 4) {
|
|
7978
|
+
const encoded1 = base64Lookup[data.charCodeAt(i)];
|
|
7979
|
+
const encoded2 = base64Lookup[data.charCodeAt(i + 1)];
|
|
7980
|
+
const encoded3 = base64Lookup[data.charCodeAt(i + 2)];
|
|
7981
|
+
const encoded4 = base64Lookup[data.charCodeAt(i + 3)];
|
|
7982
|
+
bytes[p] = (encoded1 << 2) | (encoded2 >> 4);
|
|
7983
|
+
p += 1;
|
|
7984
|
+
bytes[p] = ((encoded2 & 15) << 4) | (encoded3 >> 2);
|
|
7985
|
+
p += 1;
|
|
7986
|
+
bytes[p] = ((encoded3 & 3) << 6) | (encoded4 & 63);
|
|
7987
|
+
p += 1;
|
|
7988
|
+
}
|
|
7989
|
+
return bytes;
|
|
7990
|
+
}
|
|
7991
|
+
|
|
7992
|
+
const MAX_HEAP = 16 * 1024;
|
|
7993
|
+
const WASM_FUNC_HASH_LENGTH = 4;
|
|
7994
|
+
const wasmMutex = new Mutex();
|
|
7995
|
+
const wasmModuleCache = new Map();
|
|
7996
|
+
function WASMInterface(binary, hashLength) {
|
|
7997
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
7998
|
+
let wasmInstance = null;
|
|
7999
|
+
let memoryView = null;
|
|
8000
|
+
let initialized = false;
|
|
8001
|
+
if (typeof WebAssembly === "undefined") {
|
|
8002
|
+
throw new Error("WebAssembly is not supported in this environment!");
|
|
8003
|
+
}
|
|
8004
|
+
const writeMemory = (data, offset = 0) => {
|
|
8005
|
+
memoryView.set(data, offset);
|
|
8006
|
+
};
|
|
8007
|
+
const getMemory = () => memoryView;
|
|
8008
|
+
const getExports = () => wasmInstance.exports;
|
|
8009
|
+
const setMemorySize = (totalSize) => {
|
|
8010
|
+
wasmInstance.exports.Hash_SetMemorySize(totalSize);
|
|
8011
|
+
const arrayOffset = wasmInstance.exports.Hash_GetBuffer();
|
|
8012
|
+
const memoryBuffer = wasmInstance.exports.memory.buffer;
|
|
8013
|
+
memoryView = new Uint8Array(memoryBuffer, arrayOffset, totalSize);
|
|
8014
|
+
};
|
|
8015
|
+
const getStateSize = () => {
|
|
8016
|
+
const view = new DataView(wasmInstance.exports.memory.buffer);
|
|
8017
|
+
const stateSize = view.getUint32(wasmInstance.exports.STATE_SIZE, true);
|
|
8018
|
+
return stateSize;
|
|
8019
|
+
};
|
|
8020
|
+
const loadWASMPromise = wasmMutex.dispatch(() => __awaiter(this, void 0, void 0, function* () {
|
|
8021
|
+
if (!wasmModuleCache.has(binary.name)) {
|
|
8022
|
+
const asm = decodeBase64(binary.data);
|
|
8023
|
+
const promise = WebAssembly.compile(asm);
|
|
8024
|
+
wasmModuleCache.set(binary.name, promise);
|
|
8025
|
+
}
|
|
8026
|
+
const module = yield wasmModuleCache.get(binary.name);
|
|
8027
|
+
wasmInstance = yield WebAssembly.instantiate(module, {
|
|
8028
|
+
// env: {
|
|
8029
|
+
// emscripten_memcpy_big: (dest, src, num) => {
|
|
8030
|
+
// const memoryBuffer = wasmInstance.exports.memory.buffer;
|
|
8031
|
+
// const memView = new Uint8Array(memoryBuffer, 0);
|
|
8032
|
+
// memView.set(memView.subarray(src, src + num), dest);
|
|
8033
|
+
// },
|
|
8034
|
+
// print_memory: (offset, len) => {
|
|
8035
|
+
// const memoryBuffer = wasmInstance.exports.memory.buffer;
|
|
8036
|
+
// const memView = new Uint8Array(memoryBuffer, 0);
|
|
8037
|
+
// console.log('print_int32', memView.subarray(offset, offset + len));
|
|
8038
|
+
// },
|
|
8039
|
+
// },
|
|
8040
|
+
});
|
|
8041
|
+
// wasmInstance.exports._start();
|
|
8042
|
+
}));
|
|
8043
|
+
const setupInterface = () => __awaiter(this, void 0, void 0, function* () {
|
|
8044
|
+
if (!wasmInstance) {
|
|
8045
|
+
yield loadWASMPromise;
|
|
8046
|
+
}
|
|
8047
|
+
const arrayOffset = wasmInstance.exports.Hash_GetBuffer();
|
|
8048
|
+
const memoryBuffer = wasmInstance.exports.memory.buffer;
|
|
8049
|
+
memoryView = new Uint8Array(memoryBuffer, arrayOffset, MAX_HEAP);
|
|
8050
|
+
});
|
|
8051
|
+
const init = (bits = null) => {
|
|
8052
|
+
initialized = true;
|
|
8053
|
+
wasmInstance.exports.Hash_Init(bits);
|
|
8054
|
+
};
|
|
8055
|
+
const updateUInt8Array = (data) => {
|
|
8056
|
+
let read = 0;
|
|
8057
|
+
while (read < data.length) {
|
|
8058
|
+
const chunk = data.subarray(read, read + MAX_HEAP);
|
|
8059
|
+
read += chunk.length;
|
|
8060
|
+
memoryView.set(chunk);
|
|
8061
|
+
wasmInstance.exports.Hash_Update(chunk.length);
|
|
8062
|
+
}
|
|
8063
|
+
};
|
|
8064
|
+
const update = (data) => {
|
|
8065
|
+
if (!initialized) {
|
|
8066
|
+
throw new Error("update() called before init()");
|
|
8067
|
+
}
|
|
8068
|
+
const Uint8Buffer = getUInt8Buffer(data);
|
|
8069
|
+
updateUInt8Array(Uint8Buffer);
|
|
8070
|
+
};
|
|
8071
|
+
const digestChars = new Uint8Array(hashLength * 2);
|
|
8072
|
+
const digest = (outputType, padding = null) => {
|
|
8073
|
+
if (!initialized) {
|
|
8074
|
+
throw new Error("digest() called before init()");
|
|
8075
|
+
}
|
|
8076
|
+
initialized = false;
|
|
8077
|
+
wasmInstance.exports.Hash_Final(padding);
|
|
8078
|
+
if (outputType === "binary") {
|
|
8079
|
+
// the data is copied to allow GC of the original memory object
|
|
8080
|
+
return memoryView.slice(0, hashLength);
|
|
8081
|
+
}
|
|
8082
|
+
return getDigestHex(digestChars, memoryView, hashLength);
|
|
8083
|
+
};
|
|
8084
|
+
const save = () => {
|
|
8085
|
+
if (!initialized) {
|
|
8086
|
+
throw new Error("save() can only be called after init() and before digest()");
|
|
8087
|
+
}
|
|
8088
|
+
const stateOffset = wasmInstance.exports.Hash_GetState();
|
|
8089
|
+
const stateLength = getStateSize();
|
|
8090
|
+
const memoryBuffer = wasmInstance.exports.memory.buffer;
|
|
8091
|
+
const internalState = new Uint8Array(memoryBuffer, stateOffset, stateLength);
|
|
8092
|
+
// prefix is 4 bytes from SHA1 hash of the WASM binary
|
|
8093
|
+
// it is used to detect incompatible internal states between different versions of hash-wasm
|
|
8094
|
+
const prefixedState = new Uint8Array(WASM_FUNC_HASH_LENGTH + stateLength);
|
|
8095
|
+
writeHexToUInt8(prefixedState, binary.hash);
|
|
8096
|
+
prefixedState.set(internalState, WASM_FUNC_HASH_LENGTH);
|
|
8097
|
+
return prefixedState;
|
|
8098
|
+
};
|
|
8099
|
+
const load = (state) => {
|
|
8100
|
+
if (!(state instanceof Uint8Array)) {
|
|
8101
|
+
throw new Error("load() expects an Uint8Array generated by save()");
|
|
8102
|
+
}
|
|
8103
|
+
const stateOffset = wasmInstance.exports.Hash_GetState();
|
|
8104
|
+
const stateLength = getStateSize();
|
|
8105
|
+
const overallLength = WASM_FUNC_HASH_LENGTH + stateLength;
|
|
8106
|
+
const memoryBuffer = wasmInstance.exports.memory.buffer;
|
|
8107
|
+
if (state.length !== overallLength) {
|
|
8108
|
+
throw new Error(`Bad state length (expected ${overallLength} bytes, got ${state.length})`);
|
|
8109
|
+
}
|
|
8110
|
+
if (!hexStringEqualsUInt8(binary.hash, state.subarray(0, WASM_FUNC_HASH_LENGTH))) {
|
|
8111
|
+
throw new Error("This state was written by an incompatible hash implementation");
|
|
8112
|
+
}
|
|
8113
|
+
const internalState = state.subarray(WASM_FUNC_HASH_LENGTH);
|
|
8114
|
+
new Uint8Array(memoryBuffer, stateOffset, stateLength).set(internalState);
|
|
8115
|
+
initialized = true;
|
|
8116
|
+
};
|
|
8117
|
+
const isDataShort = (data) => {
|
|
8118
|
+
if (typeof data === "string") {
|
|
8119
|
+
// worst case is 4 bytes / char
|
|
8120
|
+
return data.length < MAX_HEAP / 4;
|
|
8121
|
+
}
|
|
8122
|
+
return data.byteLength < MAX_HEAP;
|
|
8123
|
+
};
|
|
8124
|
+
let canSimplify = isDataShort;
|
|
8125
|
+
switch (binary.name) {
|
|
8126
|
+
case "argon2":
|
|
8127
|
+
case "scrypt":
|
|
8128
|
+
canSimplify = () => true;
|
|
8129
|
+
break;
|
|
8130
|
+
case "blake2b":
|
|
8131
|
+
case "blake2s":
|
|
8132
|
+
// if there is a key at blake2 then cannot simplify
|
|
8133
|
+
canSimplify = (data, initParam) => initParam <= 512 && isDataShort(data);
|
|
8134
|
+
break;
|
|
8135
|
+
case "blake3":
|
|
8136
|
+
// if there is a key at blake3 then cannot simplify
|
|
8137
|
+
canSimplify = (data, initParam) => initParam === 0 && isDataShort(data);
|
|
8138
|
+
break;
|
|
8139
|
+
case "xxhash64": // cannot simplify
|
|
8140
|
+
case "xxhash3":
|
|
8141
|
+
case "xxhash128":
|
|
8142
|
+
case "crc64":
|
|
8143
|
+
canSimplify = () => false;
|
|
8144
|
+
break;
|
|
8145
|
+
}
|
|
8146
|
+
// shorthand for (init + update + digest) for better performance
|
|
8147
|
+
const calculate = (data, initParam = null, digestParam = null) => {
|
|
8148
|
+
if (!canSimplify(data, initParam)) {
|
|
8149
|
+
init(initParam);
|
|
8150
|
+
update(data);
|
|
8151
|
+
return digest("hex", digestParam);
|
|
8152
|
+
}
|
|
8153
|
+
const buffer = getUInt8Buffer(data);
|
|
8154
|
+
memoryView.set(buffer);
|
|
8155
|
+
wasmInstance.exports.Hash_Calculate(buffer.length, initParam, digestParam);
|
|
8156
|
+
return getDigestHex(digestChars, memoryView, hashLength);
|
|
8157
|
+
};
|
|
8158
|
+
yield setupInterface();
|
|
8159
|
+
return {
|
|
8160
|
+
getMemory,
|
|
8161
|
+
writeMemory,
|
|
8162
|
+
getExports,
|
|
8163
|
+
setMemorySize,
|
|
8164
|
+
init,
|
|
8165
|
+
update,
|
|
8166
|
+
digest,
|
|
8167
|
+
save,
|
|
8168
|
+
load,
|
|
8169
|
+
calculate,
|
|
8170
|
+
hashLength,
|
|
8171
|
+
};
|
|
8172
|
+
});
|
|
8173
|
+
}
|
|
8174
|
+
|
|
8175
|
+
new Mutex();
|
|
8176
|
+
|
|
8177
|
+
new Mutex();
|
|
8178
|
+
|
|
8179
|
+
new Mutex();
|
|
8180
|
+
|
|
8181
|
+
new Mutex();
|
|
8182
|
+
|
|
8183
|
+
new Mutex();
|
|
8184
|
+
|
|
8185
|
+
new Mutex();
|
|
8186
|
+
|
|
8187
|
+
new Mutex();
|
|
8188
|
+
|
|
8189
|
+
new Mutex();
|
|
8190
|
+
|
|
8191
|
+
var name$c = "sha1";
|
|
8192
|
+
var data$c = "AGFzbQEAAAABEQRgAAF/YAF/AGAAAGACf38AAwkIAAECAwECAAEFBAEBAgIGDgJ/AUHgiQULfwBBgAgLB3AIBm1lbW9yeQIADkhhc2hfR2V0QnVmZmVyAAAJSGFzaF9Jbml0AAILSGFzaF9VcGRhdGUABApIYXNoX0ZpbmFsAAUNSGFzaF9HZXRTdGF0ZQAGDkhhc2hfQ2FsY3VsYXRlAAcKU1RBVEVfU0laRQMBCpoqCAUAQYAJC68iCgF+An8BfgF/AX4DfwF+AX8Bfkd/QQAgACkDECIBQiCIpyICQRh0IAJBgP4DcUEIdHIgAUIoiKdBgP4DcSABQjiIp3JyIgMgACkDCCIEQiCIpyICQRh0IAJBgP4DcUEIdHIgBEIoiKdBgP4DcSAEQjiIp3JyIgVzIAApAygiBkIgiKciAkEYdCACQYD+A3FBCHRyIAZCKIinQYD+A3EgBkI4iKdyciIHcyAEpyICQRh0IAJBgP4DcUEIdHIgAkEIdkGA/gNxIAJBGHZyciIIIAApAwAiBKciAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnIiCXMgACkDICIKpyICQRh0IAJBgP4DcUEIdHIgAkEIdkGA/gNxIAJBGHZyciILcyAAKQMwIgxCIIinIgJBGHQgAkGA/gNxQQh0ciAMQiiIp0GA/gNxIAxCOIincnIiAnNBAXciDXNBAXciDiAFIARCIIinIg9BGHQgD0GA/gNxQQh0ciAEQiiIp0GA/gNxIARCOIincnIiEHMgCkIgiKciD0EYdCAPQYD+A3FBCHRyIApCKIinQYD+A3EgCkI4iKdyciIRcyAAKQM4IgSnIg9BGHQgD0GA/gNxQQh0ciAPQQh2QYD+A3EgD0EYdnJyIg9zQQF3IhJzIAcgEXMgEnMgCyAAKQMYIgqnIgBBGHQgAEGA/gNxQQh0ciAAQQh2QYD+A3EgAEEYdnJyIhNzIA9zIA5zQQF3IgBzQQF3IhRzIA0gD3MgAHMgAiAHcyAOcyAGpyIVQRh0IBVBgP4DcUEIdHIgFUEIdkGA/gNxIBVBGHZyciIWIAtzIA1zIApCIIinIhVBGHQgFUGA/gNxQQh0ciAKQiiIp0GA/gNxIApCOIincnIiFyADcyACcyABpyIVQRh0IBVBgP4DcUEIdHIgFUEIdkGA/gNxIBVBGHZyciIYIAhzIBZzIARCIIinIhVBGHQgFUGA/gNxQQh0ciAEQiiIp0GA/gNxIARCOIincnIiFXNBAXciGXNBAXciGnNBAXciG3NBAXciHHNBAXciHXNBAXciHiASIBVzIBEgF3MgFXMgEyAYcyAMpyIfQRh0IB9BgP4DcUEIdHIgH0EIdkGA/gNxIB9BGHZyciIgcyASc0EBdyIfc0EBdyIhcyAPICBzIB9zIBRzQQF3IiJzQQF3IiNzIBQgIXMgI3MgACAfcyAicyAec0EBdyIkc0EBdyIlcyAdICJzICRzIBwgFHMgHnMgGyAAcyAdcyAaIA5zIBxzIBkgDXMgG3MgFSACcyAacyAgIBZzIBlzICFzQQF3IiZzQQF3IidzQQF3IihzQQF3IilzQQF3IipzQQF3IitzQQF3IixzQQF3Ii0gIyAncyAhIBpzICdzIB8gGXMgJnMgI3NBAXciLnNBAXciL3MgIiAmcyAucyAlc0EBdyIwc0EBdyIxcyAlIC9zIDFzICQgLnMgMHMgLXNBAXciMnNBAXciM3MgLCAwcyAycyArICVzIC1zICogJHMgLHMgKSAecyArcyAoIB1zICpzICcgHHMgKXMgJiAbcyAocyAvc0EBdyI0c0EBdyI1c0EBdyI2c0EBdyI3c0EBdyI4c0EBdyI5c0EBdyI6c0EBdyI7IDEgNXMgLyApcyA1cyAuIChzIDRzIDFzQQF3IjxzQQF3Ij1zIDAgNHMgPHMgM3NBAXciPnNBAXciP3MgMyA9cyA/cyAyIDxzID5zIDtzQQF3IkBzQQF3IkFzIDogPnMgQHMgOSAzcyA7cyA4IDJzIDpzIDcgLXMgOXMgNiAscyA4cyA1ICtzIDdzIDQgKnMgNnMgPXNBAXciQnNBAXciQ3NBAXciRHNBAXciRXNBAXciRnNBAXciR3NBAXciSHNBAXciSSA+IEJzIDwgNnMgQnMgP3NBAXciSnMgQXNBAXciSyA9IDdzIENzIEpzQQF3IkwgRCA5IDIgMSA0ICkgHSAUIB8gFSAWQQAoAoCJASJNQQV3QQAoApCJASJOaiAJakEAKAKMiQEiT0EAKAKIiQEiCXNBACgChIkBIlBxIE9zakGZ84nUBWoiUUEedyJSIANqIFBBHnciAyAFaiBPIAMgCXMgTXEgCXNqIBBqIFFBBXdqQZnzidQFaiIQIFIgTUEedyIFc3EgBXNqIAkgCGogUSADIAVzcSADc2ogEEEFd2pBmfOJ1AVqIlFBBXdqQZnzidQFaiJTIFFBHnciAyAQQR53IghzcSAIc2ogBSAYaiBRIAggUnNxIFJzaiBTQQV3akGZ84nUBWoiBUEFd2pBmfOJ1AVqIhhBHnciUmogU0EedyIWIAtqIAggE2ogBSAWIANzcSADc2ogGEEFd2pBmfOJ1AVqIgggUiAFQR53IgtzcSALc2ogAyAXaiAYIAsgFnNxIBZzaiAIQQV3akGZ84nUBWoiBUEFd2pBmfOJ1AVqIhMgBUEedyIWIAhBHnciA3NxIANzaiALIBFqIAUgAyBSc3EgUnNqIBNBBXdqQZnzidQFaiIRQQV3akGZ84nUBWoiUkEedyILaiACIBNBHnciFWogByADaiARIBUgFnNxIBZzaiBSQQV3akGZ84nUBWoiByALIBFBHnciAnNxIAJzaiAgIBZqIFIgAiAVc3EgFXNqIAdBBXdqQZnzidQFaiIRQQV3akGZ84nUBWoiFiARQR53IhUgB0EedyIHc3EgB3NqIA8gAmogESAHIAtzcSALc2ogFkEFd2pBmfOJ1AVqIgtBBXdqQZnzidQFaiIRQR53IgJqIBIgFWogESALQR53Ig8gFkEedyISc3EgEnNqIA0gB2ogCyASIBVzcSAVc2ogEUEFd2pBmfOJ1AVqIg1BBXdqQZnzidQFaiIVQR53Ih8gDUEedyIHcyAZIBJqIA0gAiAPc3EgD3NqIBVBBXdqQZnzidQFaiINc2ogDiAPaiAVIAcgAnNxIAJzaiANQQV3akGZ84nUBWoiAkEFd2pBodfn9gZqIg5BHnciD2ogACAfaiACQR53IgAgDUEedyINcyAOc2ogGiAHaiANIB9zIAJzaiAOQQV3akGh1+f2BmoiAkEFd2pBodfn9gZqIg5BHnciEiACQR53IhRzICEgDWogDyAAcyACc2ogDkEFd2pBodfn9gZqIgJzaiAbIABqIBQgD3MgDnNqIAJBBXdqQaHX5/YGaiIAQQV3akGh1+f2BmoiDUEedyIOaiAcIBJqIABBHnciDyACQR53IgJzIA1zaiAmIBRqIAIgEnMgAHNqIA1BBXdqQaHX5/YGaiIAQQV3akGh1+f2BmoiDUEedyISIABBHnciFHMgIiACaiAOIA9zIABzaiANQQV3akGh1+f2BmoiAHNqICcgD2ogFCAOcyANc2ogAEEFd2pBodfn9gZqIgJBBXdqQaHX5/YGaiINQR53Ig5qICggEmogAkEedyIPIABBHnciAHMgDXNqICMgFGogACAScyACc2ogDUEFd2pBodfn9gZqIgJBBXdqQaHX5/YGaiINQR53IhIgAkEedyIUcyAeIABqIA4gD3MgAnNqIA1BBXdqQaHX5/YGaiIAc2ogLiAPaiAUIA5zIA1zaiAAQQV3akGh1+f2BmoiAkEFd2pBodfn9gZqIg1BHnciDmogKiAAQR53IgBqIA4gAkEedyIPcyAkIBRqIAAgEnMgAnNqIA1BBXdqQaHX5/YGaiIUc2ogLyASaiAPIABzIA1zaiAUQQV3akGh1+f2BmoiDUEFd2pBodfn9gZqIgAgDUEedyICciAUQR53IhJxIAAgAnFyaiAlIA9qIBIgDnMgDXNqIABBBXdqQaHX5/YGaiINQQV3akHc+e74eGoiDkEedyIPaiA1IABBHnciAGogKyASaiANIAByIAJxIA0gAHFyaiAOQQV3akHc+e74eGoiEiAPciANQR53Ig1xIBIgD3FyaiAwIAJqIA4gDXIgAHEgDiANcXJqIBJBBXdqQdz57vh4aiIAQQV3akHc+e74eGoiAiAAQR53Ig5yIBJBHnciEnEgAiAOcXJqICwgDWogACASciAPcSAAIBJxcmogAkEFd2pB3Pnu+HhqIgBBBXdqQdz57vh4aiINQR53Ig9qIDwgAkEedyICaiA2IBJqIAAgAnIgDnEgACACcXJqIA1BBXdqQdz57vh4aiISIA9yIABBHnciAHEgEiAPcXJqIC0gDmogDSAAciACcSANIABxcmogEkEFd2pB3Pnu+HhqIgJBBXdqQdz57vh4aiINIAJBHnciDnIgEkEedyIScSANIA5xcmogNyAAaiACIBJyIA9xIAIgEnFyaiANQQV3akHc+e74eGoiAEEFd2pB3Pnu+HhqIgJBHnciD2ogMyANQR53Ig1qID0gEmogACANciAOcSAAIA1xcmogAkEFd2pB3Pnu+HhqIhIgD3IgAEEedyIAcSASIA9xcmogOCAOaiACIAByIA1xIAIgAHFyaiASQQV3akHc+e74eGoiAkEFd2pB3Pnu+HhqIg0gAkEedyIOciASQR53IhJxIA0gDnFyaiBCIABqIAIgEnIgD3EgAiAScXJqIA1BBXdqQdz57vh4aiIAQQV3akHc+e74eGoiAkEedyIPaiBDIA5qIAIgAEEedyIUciANQR53Ig1xIAIgFHFyaiA+IBJqIAAgDXIgDnEgACANcXJqIAJBBXdqQdz57vh4aiIAQQV3akHc+e74eGoiAkEedyISIABBHnciDnMgOiANaiAAIA9yIBRxIAAgD3FyaiACQQV3akHc+e74eGoiAHNqID8gFGogAiAOciAPcSACIA5xcmogAEEFd2pB3Pnu+HhqIgJBBXdqQdaDi9N8aiINQR53Ig9qIEogEmogAkEedyIUIABBHnciAHMgDXNqIDsgDmogACAScyACc2ogDUEFd2pB1oOL03xqIgJBBXdqQdaDi9N8aiINQR53Ig4gAkEedyIScyBFIABqIA8gFHMgAnNqIA1BBXdqQdaDi9N8aiIAc2ogQCAUaiASIA9zIA1zaiAAQQV3akHWg4vTfGoiAkEFd2pB1oOL03xqIg1BHnciD2ogQSAOaiACQR53IhQgAEEedyIAcyANc2ogRiASaiAAIA5zIAJzaiANQQV3akHWg4vTfGoiAkEFd2pB1oOL03xqIg1BHnciDiACQR53IhJzIEIgOHMgRHMgTHNBAXciFSAAaiAPIBRzIAJzaiANQQV3akHWg4vTfGoiAHNqIEcgFGogEiAPcyANc2ogAEEFd2pB1oOL03xqIgJBBXdqQdaDi9N8aiINQR53Ig9qIEggDmogAkEedyIUIABBHnciAHMgDXNqIEMgOXMgRXMgFXNBAXciGSASaiAAIA5zIAJzaiANQQV3akHWg4vTfGoiAkEFd2pB1oOL03xqIg1BHnciDiACQR53IhJzID8gQ3MgTHMgS3NBAXciGiAAaiAPIBRzIAJzaiANQQV3akHWg4vTfGoiAHNqIEQgOnMgRnMgGXNBAXciGyAUaiASIA9zIA1zaiAAQQV3akHWg4vTfGoiAkEFd2pB1oOL03xqIg1BHnciDyBOajYCkIkBQQAgTyBKIERzIBVzIBpzQQF3IhQgEmogAEEedyIAIA5zIAJzaiANQQV3akHWg4vTfGoiEkEedyIVajYCjIkBQQAgCSBFIDtzIEdzIBtzQQF3IA5qIAJBHnciAiAAcyANc2ogEkEFd2pB1oOL03xqIg1BHndqNgKIiQFBACBQIEAgSnMgS3MgSXNBAXcgAGogDyACcyASc2ogDUEFd2pB1oOL03xqIgBqNgKEiQFBACBNIEwgRXMgGXMgFHNBAXdqIAJqIBUgD3MgDXNqIABBBXdqQdaDi9N8ajYCgIkBCzoAQQBC/rnrxemOlZkQNwKIiQFBAEKBxpS6lvHq5m83AoCJAUEAQvDDy54MNwKQiQFBAEEANgKYiQELqAMBCH9BACECQQBBACgClIkBIgMgAUEDdGoiBDYClIkBQQBBACgCmIkBIAQgA0lqIAFBHXZqNgKYiQECQCADQQN2QT9xIgUgAWpBwABJDQBBwAAgBWsiAkEDcSEGQQAhAwJAIAVBP3NBA0kNACAFQYCJAWohByACQfwAcSEIQQAhAwNAIAcgA2oiBEEcaiAAIANqIgktAAA6AAAgBEEdaiAJQQFqLQAAOgAAIARBHmogCUECai0AADoAACAEQR9qIAlBA2otAAA6AAAgCCADQQRqIgNHDQALCwJAIAZFDQAgACADaiEEIAMgBWpBnIkBaiEDA0AgAyAELQAAOgAAIARBAWohBCADQQFqIQMgBkF/aiIGDQALC0GciQEQASAFQf8AcyEDQQAhBSADIAFPDQADQCAAIAJqEAEgAkH/AGohAyACQcAAaiIEIQIgAyABSQ0ACyAEIQILAkAgASACRg0AIAEgAmshCSAAIAJqIQIgBUGciQFqIQNBACEEA0AgAyACLQAAOgAAIAJBAWohAiADQQFqIQMgCSAEQQFqIgRB/wFxSw0ACwsLCQBBgAkgABADC6YDAQJ/IwBBEGsiACQAIABBgAE6AAcgAEEAKAKYiQEiAUEYdCABQYD+A3FBCHRyIAFBCHZBgP4DcSABQRh2cnI2AAggAEEAKAKUiQEiAUEYdCABQYD+A3FBCHRyIAFBCHZBgP4DcSABQRh2cnI2AAwgAEEHakEBEAMCQEEAKAKUiQFB+ANxQcADRg0AA0AgAEEAOgAHIABBB2pBARADQQAoApSJAUH4A3FBwANHDQALCyAAQQhqQQgQA0EAQQAoAoCJASIBQRh0IAFBgP4DcUEIdHIgAUEIdkGA/gNxIAFBGHZycjYCgAlBAEEAKAKEiQEiAUEYdCABQYD+A3FBCHRyIAFBCHZBgP4DcSABQRh2cnI2AoQJQQBBACgCiIkBIgFBGHQgAUGA/gNxQQh0ciABQQh2QYD+A3EgAUEYdnJyNgKICUEAQQAoAoyJASIBQRh0IAFBgP4DcUEIdHIgAUEIdkGA/gNxIAFBGHZycjYCjAlBAEEAKAKQiQEiAUEYdCABQYD+A3FBCHRyIAFBCHZBgP4DcSABQRh2cnI2ApAJIABBEGokAAsGAEGAiQELQwBBAEL+uevF6Y6VmRA3AoiJAUEAQoHGlLqW8ermbzcCgIkBQQBC8MPLngw3ApCJAUEAQQA2ApiJAUGACSAAEAMQBQsLCwEAQYAICwRcAAAA";
|
|
8193
|
+
var hash$c = "6b530c24";
|
|
8194
|
+
var wasmJson$c = {
|
|
8195
|
+
name: name$c,
|
|
8196
|
+
data: data$c,
|
|
8197
|
+
hash: hash$c
|
|
8198
|
+
};
|
|
8199
|
+
|
|
8200
|
+
new Mutex();
|
|
8201
|
+
/**
|
|
8202
|
+
* Creates a new SHA-1 hash instance
|
|
8203
|
+
*/
|
|
8204
|
+
function createSHA1() {
|
|
8205
|
+
return WASMInterface(wasmJson$c, 20).then((wasm) => {
|
|
8206
|
+
wasm.init();
|
|
8207
|
+
const obj = {
|
|
8208
|
+
init: () => {
|
|
8209
|
+
wasm.init();
|
|
8210
|
+
return obj;
|
|
8211
|
+
},
|
|
8212
|
+
update: (data) => {
|
|
8213
|
+
wasm.update(data);
|
|
8214
|
+
return obj;
|
|
8215
|
+
},
|
|
8216
|
+
// biome-ignore lint/suspicious/noExplicitAny: Conflict with IHasher type
|
|
8217
|
+
digest: (outputType) => wasm.digest(outputType),
|
|
8218
|
+
save: () => wasm.save(),
|
|
8219
|
+
load: (data) => {
|
|
8220
|
+
wasm.load(data);
|
|
8221
|
+
return obj;
|
|
8222
|
+
},
|
|
8223
|
+
blockSize: 64,
|
|
8224
|
+
digestSize: 20,
|
|
8225
|
+
};
|
|
8226
|
+
return obj;
|
|
8227
|
+
});
|
|
8228
|
+
}
|
|
8229
|
+
|
|
8230
|
+
new Mutex();
|
|
8231
|
+
|
|
8232
|
+
new Mutex();
|
|
8233
|
+
|
|
8234
|
+
var name$a = "sha256";
|
|
8235
|
+
var data$a = "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c2pBx6KerX1qIhkgASADcyACcSABIANxcyABQR53IAFBE3dzIAFBCndzaiAaaiICaiIJIBMgEnNxIBJzaiAJQRp3IAlBFXdzIAlBB3dzakHRxqk2aiIaIAIgAXMgA3EgAiABcXMgAkEedyACQRN3cyACQQp3c2ogGGoiA2oiESAJIBNzcSATc2ogEUEadyARQRV3cyARQQd3c2pB59KkoQFqIhggAyACcyABcSADIAJxcyADQR53IANBE3dzIANBCndzaiAUaiIBaiISIBEgCXNxIAlzaiASQRp3IBJBFXdzIBJBB3dzakGFldy9AmoiFCABIANzIAJxIAEgA3FzIAFBHncgAUETd3MgAUEKd3NqIBdqIgJqIhMgI2ogJiASaiAiIBFqICUgCWogEyASIBFzcSARc2ogE0EadyATQRV3cyATQQd3c2pBuMLs8AJqIhcgAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAZaiIDaiIJIBMgEnNxIBJzaiAJQRp3IAlBFXdzIAlBB3dzakH827HpBGoiGSADIAJzIAFxIAMgAnFzIANBHncgA0ETd3MgA0EKd3NqIBpqIgFqIhEgCSATc3EgE3NqIBFBGncgEUEVd3MgEUEHd3NqQZOa4JkFaiIaIAEgA3MgAnEgASADcXMgAUEedyABQRN3cyABQQp3c2ogGGoiAmoiEiARIAlzcSAJc2ogEkEadyASQRV3cyASQQd3c2pB1OapqAZqIhggAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAUaiIDaiITaiAoIBJqICQgEWogJyAJaiATIBIgEXNxIBFzaiATQRp3IBNBFXdzIBNBB3dzakG7laizB2oiFCADIAJzIAFxIAMgAnFzIANBHncgA0ETd3MgA0EKd3NqIBdqIgFqIgkgEyASc3EgEnNqIAlBGncgCUEVd3MgCUEHd3NqQa6Si454aiIXIAEgA3MgAnEgASADcXMgAUEedyABQRN3cyABQQp3c2ogGWoiAmoiESAJIBNzcSATc2ogEUEadyARQRV3cyARQQd3c2pBhdnIk3lqIhkgAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAaaiIDaiISIBEgCXNxIAlzaiASQRp3IBJBFXdzIBJBB3dzakGh0f+VemoiGiADIAJz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";
|
|
8236
|
+
var hash$a = "8c18dd94";
|
|
8237
|
+
var wasmJson$a = {
|
|
8238
|
+
name: name$a,
|
|
8239
|
+
data: data$a,
|
|
8240
|
+
hash: hash$a
|
|
8241
|
+
};
|
|
8242
|
+
|
|
8243
|
+
new Mutex();
|
|
8244
|
+
/**
|
|
8245
|
+
* Creates a new SHA-2 (SHA-224) hash instance
|
|
8246
|
+
*/
|
|
8247
|
+
function createSHA224() {
|
|
8248
|
+
return WASMInterface(wasmJson$a, 28).then((wasm) => {
|
|
8249
|
+
wasm.init(224);
|
|
8250
|
+
const obj = {
|
|
8251
|
+
init: () => {
|
|
8252
|
+
wasm.init(224);
|
|
8253
|
+
return obj;
|
|
8254
|
+
},
|
|
8255
|
+
update: (data) => {
|
|
8256
|
+
wasm.update(data);
|
|
8257
|
+
return obj;
|
|
8258
|
+
},
|
|
8259
|
+
// biome-ignore lint/suspicious/noExplicitAny: Conflict with IHasher type
|
|
8260
|
+
digest: (outputType) => wasm.digest(outputType),
|
|
8261
|
+
save: () => wasm.save(),
|
|
8262
|
+
load: (data) => {
|
|
8263
|
+
wasm.load(data);
|
|
8264
|
+
return obj;
|
|
8265
|
+
},
|
|
8266
|
+
blockSize: 64,
|
|
8267
|
+
digestSize: 28,
|
|
8268
|
+
};
|
|
8269
|
+
return obj;
|
|
8270
|
+
});
|
|
8271
|
+
}
|
|
8272
|
+
|
|
8273
|
+
new Mutex();
|
|
8274
|
+
/**
|
|
8275
|
+
* Creates a new SHA-2 (SHA-256) hash instance
|
|
8276
|
+
*/
|
|
8277
|
+
function createSHA256() {
|
|
8278
|
+
return WASMInterface(wasmJson$a, 32).then((wasm) => {
|
|
8279
|
+
wasm.init(256);
|
|
8280
|
+
const obj = {
|
|
8281
|
+
init: () => {
|
|
8282
|
+
wasm.init(256);
|
|
8283
|
+
return obj;
|
|
8284
|
+
},
|
|
8285
|
+
update: (data) => {
|
|
8286
|
+
wasm.update(data);
|
|
8287
|
+
return obj;
|
|
8288
|
+
},
|
|
8289
|
+
// biome-ignore lint/suspicious/noExplicitAny: Conflict with IHasher type
|
|
8290
|
+
digest: (outputType) => wasm.digest(outputType),
|
|
8291
|
+
save: () => wasm.save(),
|
|
8292
|
+
load: (data) => {
|
|
8293
|
+
wasm.load(data);
|
|
8294
|
+
return obj;
|
|
8295
|
+
},
|
|
8296
|
+
blockSize: 64,
|
|
8297
|
+
digestSize: 32,
|
|
8298
|
+
};
|
|
8299
|
+
return obj;
|
|
8300
|
+
});
|
|
8301
|
+
}
|
|
8302
|
+
|
|
8303
|
+
var name$9 = "sha512";
|
|
8304
|
+
var data$9 = "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";
|
|
8305
|
+
var hash$9 = "f2e40eb1";
|
|
8306
|
+
var wasmJson$9 = {
|
|
8307
|
+
name: name$9,
|
|
8308
|
+
data: data$9,
|
|
8309
|
+
hash: hash$9
|
|
8310
|
+
};
|
|
8311
|
+
|
|
8312
|
+
new Mutex();
|
|
8313
|
+
/**
|
|
8314
|
+
* Creates a new SHA-2 (SHA-384) hash instance
|
|
8315
|
+
*/
|
|
8316
|
+
function createSHA384() {
|
|
8317
|
+
return WASMInterface(wasmJson$9, 48).then((wasm) => {
|
|
8318
|
+
wasm.init(384);
|
|
8319
|
+
const obj = {
|
|
8320
|
+
init: () => {
|
|
8321
|
+
wasm.init(384);
|
|
8322
|
+
return obj;
|
|
8323
|
+
},
|
|
8324
|
+
update: (data) => {
|
|
8325
|
+
wasm.update(data);
|
|
8326
|
+
return obj;
|
|
8327
|
+
},
|
|
8328
|
+
// biome-ignore lint/suspicious/noExplicitAny: Conflict with IHasher type
|
|
8329
|
+
digest: (outputType) => wasm.digest(outputType),
|
|
8330
|
+
save: () => wasm.save(),
|
|
8331
|
+
load: (data) => {
|
|
8332
|
+
wasm.load(data);
|
|
8333
|
+
return obj;
|
|
8334
|
+
},
|
|
8335
|
+
blockSize: 128,
|
|
8336
|
+
digestSize: 48,
|
|
8337
|
+
};
|
|
8338
|
+
return obj;
|
|
8339
|
+
});
|
|
8340
|
+
}
|
|
8341
|
+
|
|
8342
|
+
new Mutex();
|
|
8343
|
+
/**
|
|
8344
|
+
* Creates a new SHA-2 (SHA-512) hash instance
|
|
8345
|
+
*/
|
|
8346
|
+
function createSHA512() {
|
|
8347
|
+
return WASMInterface(wasmJson$9, 64).then((wasm) => {
|
|
8348
|
+
wasm.init(512);
|
|
8349
|
+
const obj = {
|
|
8350
|
+
init: () => {
|
|
8351
|
+
wasm.init(512);
|
|
8352
|
+
return obj;
|
|
8353
|
+
},
|
|
8354
|
+
update: (data) => {
|
|
8355
|
+
wasm.update(data);
|
|
8356
|
+
return obj;
|
|
8357
|
+
},
|
|
8358
|
+
// biome-ignore lint/suspicious/noExplicitAny: Conflict with IHasher type
|
|
8359
|
+
digest: (outputType) => wasm.digest(outputType),
|
|
8360
|
+
save: () => wasm.save(),
|
|
8361
|
+
load: (data) => {
|
|
8362
|
+
wasm.load(data);
|
|
8363
|
+
return obj;
|
|
8364
|
+
},
|
|
8365
|
+
blockSize: 128,
|
|
8366
|
+
digestSize: 64,
|
|
8367
|
+
};
|
|
8368
|
+
return obj;
|
|
8369
|
+
});
|
|
8370
|
+
}
|
|
8371
|
+
|
|
8372
|
+
new Mutex();
|
|
8373
|
+
|
|
8374
|
+
new Mutex();
|
|
8375
|
+
|
|
8376
|
+
new Mutex();
|
|
8377
|
+
|
|
8378
|
+
new Mutex();
|
|
8379
|
+
|
|
8380
|
+
new Mutex();
|
|
8381
|
+
|
|
8382
|
+
new Mutex();
|
|
8383
|
+
|
|
8384
|
+
new Mutex();
|
|
8385
|
+
|
|
8386
|
+
const createHasher = (hashVariant) => {
|
|
8387
|
+
switch (hashVariant) {
|
|
8388
|
+
case 1:
|
|
8389
|
+
return createSHA1();
|
|
8390
|
+
case 224:
|
|
8391
|
+
return createSHA224();
|
|
8392
|
+
case 256:
|
|
8393
|
+
return createSHA256();
|
|
8394
|
+
case 384:
|
|
8395
|
+
return createSHA384();
|
|
8396
|
+
case 512:
|
|
8397
|
+
return createSHA512();
|
|
8398
|
+
default:
|
|
8399
|
+
throw new Error(`unsupported hash variant: ${hashVariant}`);
|
|
8400
|
+
}
|
|
8401
|
+
};
|
|
8402
|
+
const digestBuffer = async (hashVariant, buffer) => {
|
|
8403
|
+
const view = buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);
|
|
8404
|
+
const hasher = await createHasher(hashVariant);
|
|
8405
|
+
hasher.init();
|
|
8406
|
+
hasher.update(view);
|
|
8407
|
+
const digest = hasher.digest('binary');
|
|
8408
|
+
return digest instanceof Uint8Array ? digest : new Uint8Array(digest);
|
|
8409
|
+
};
|
|
7765
8410
|
class CodecHash extends BasicInterface {
|
|
7766
8411
|
codec;
|
|
7767
8412
|
discoCodec;
|
|
7768
8413
|
size;
|
|
7769
|
-
|
|
8414
|
+
codecs;
|
|
8415
|
+
constructor(options = { name: 'disco-hash', codecs: {} }) {
|
|
7770
8416
|
super();
|
|
7771
8417
|
if (options?.name)
|
|
7772
8418
|
this.name = options.name;
|
|
@@ -7774,33 +8420,24 @@ class CodecHash extends BasicInterface {
|
|
|
7774
8420
|
this.name = 'disco-hash';
|
|
7775
8421
|
if (options?.codecs)
|
|
7776
8422
|
this.codecs = options.codecs;
|
|
7777
|
-
return this.init(buffer);
|
|
7778
8423
|
}
|
|
7779
8424
|
async init(uint8Array) {
|
|
7780
8425
|
if (uint8Array) {
|
|
7781
|
-
if (uint8Array instanceof Uint8Array) {
|
|
7782
|
-
|
|
7783
|
-
const name = this.discoCodec.name;
|
|
7784
|
-
if (name) {
|
|
7785
|
-
this.name = name;
|
|
7786
|
-
this.decode(uint8Array);
|
|
7787
|
-
}
|
|
7788
|
-
else {
|
|
7789
|
-
await this.encode(uint8Array);
|
|
7790
|
-
}
|
|
8426
|
+
if (!(uint8Array instanceof Uint8Array)) {
|
|
8427
|
+
throw new Error('CodecHash only supports Uint8Array input');
|
|
7791
8428
|
}
|
|
7792
|
-
|
|
7793
|
-
|
|
7794
|
-
|
|
7795
|
-
|
|
7796
|
-
|
|
7797
|
-
|
|
7798
|
-
|
|
7799
|
-
|
|
7800
|
-
|
|
8429
|
+
// For large buffers, only check first bytes for codec prefix
|
|
8430
|
+
// Codec prefixes are small (varint encoded), so 100 bytes is more than enough
|
|
8431
|
+
const checkBuffer = uint8Array.length > 100 ? uint8Array.subarray(0, 100) : uint8Array;
|
|
8432
|
+
this.discoCodec = new Codec(checkBuffer);
|
|
8433
|
+
const name = this.discoCodec.name;
|
|
8434
|
+
if (name) {
|
|
8435
|
+
this.name = name;
|
|
8436
|
+
this.decode(uint8Array);
|
|
8437
|
+
}
|
|
8438
|
+
else {
|
|
8439
|
+
await this.encode(uint8Array);
|
|
7801
8440
|
}
|
|
7802
|
-
else if (typeof uint8Array === 'object')
|
|
7803
|
-
await this.fromJSON(uint8Array);
|
|
7804
8441
|
}
|
|
7805
8442
|
return this;
|
|
7806
8443
|
}
|
|
@@ -7820,34 +8457,19 @@ class CodecHash extends BasicInterface {
|
|
|
7820
8457
|
get hash() {
|
|
7821
8458
|
return this.encoded;
|
|
7822
8459
|
}
|
|
7823
|
-
fromJSON(json) {
|
|
7824
|
-
return this.encode(new TextEncoder().encode(JSON.stringify(json, jsonStringifyBigInt)));
|
|
7825
|
-
}
|
|
7826
8460
|
async encode(buffer, name) {
|
|
7827
8461
|
if (!this.name && name)
|
|
7828
8462
|
this.name = name;
|
|
7829
8463
|
if (!buffer)
|
|
7830
|
-
buffer
|
|
8464
|
+
throw new Error('buffer is required for encoding');
|
|
7831
8465
|
this.discoCodec = new Codec(this.name);
|
|
7832
|
-
this.discoCodec.fromName(this.name);
|
|
7833
8466
|
let hashAlg = this.discoCodec.hashAlg;
|
|
7834
8467
|
const hashVariant = Number(hashAlg.split('-')[hashAlg.split('-').length - 1]);
|
|
7835
8468
|
if (hashAlg.includes('dbl')) {
|
|
7836
8469
|
hashAlg = hashAlg.replace('dbl-', '');
|
|
7837
|
-
|
|
7838
|
-
// await hasher.init()
|
|
7839
|
-
// hasher.update(buffer)
|
|
7840
|
-
// buffer = hasher.digest('binary')
|
|
7841
|
-
buffer = await crypto.subtle.digest(`SHA-${hashVariant}`, buffer);
|
|
7842
|
-
}
|
|
7843
|
-
// const hasher = await createKeccak(hashVariant)
|
|
7844
|
-
// await hasher.init()
|
|
7845
|
-
// hasher.update(buffer)
|
|
7846
|
-
// this.digest = hasher.digest('binary')
|
|
7847
|
-
this.digest = await crypto.subtle.digest(`SHA-${hashVariant}`, buffer);
|
|
7848
|
-
if (this.digest instanceof ArrayBuffer) {
|
|
7849
|
-
this.digest = new Uint8Array(this.digest);
|
|
8470
|
+
buffer = await digestBuffer(hashVariant, buffer);
|
|
7850
8471
|
}
|
|
8472
|
+
this.digest = await digestBuffer(hashVariant, buffer);
|
|
7851
8473
|
this.size = this.digest.length;
|
|
7852
8474
|
this.codec = this.discoCodec.encode();
|
|
7853
8475
|
this.codec = this.discoCodec.codecBuffer;
|
|
@@ -7858,23 +8480,16 @@ class CodecHash extends BasicInterface {
|
|
|
7858
8480
|
return this.encoded;
|
|
7859
8481
|
}
|
|
7860
8482
|
async validate(buffer) {
|
|
7861
|
-
if (
|
|
7862
|
-
|
|
7863
|
-
if (this.codecs[codec]) {
|
|
7864
|
-
this.decode(buffer);
|
|
7865
|
-
}
|
|
7866
|
-
else {
|
|
7867
|
-
await this.encode(buffer);
|
|
7868
|
-
}
|
|
8483
|
+
if (!(buffer instanceof Uint8Array)) {
|
|
8484
|
+
throw new Error('CodecHash only supports Uint8Array input');
|
|
7869
8485
|
}
|
|
7870
|
-
|
|
7871
|
-
|
|
7872
|
-
|
|
7873
|
-
|
|
7874
|
-
|
|
8486
|
+
const codec = index$4.decode(buffer);
|
|
8487
|
+
if (this.codecs[codec]) {
|
|
8488
|
+
this.decode(buffer);
|
|
8489
|
+
}
|
|
8490
|
+
else {
|
|
8491
|
+
await this.encode(buffer);
|
|
7875
8492
|
}
|
|
7876
|
-
if (typeof buffer === 'object')
|
|
7877
|
-
this.fromJSON(buffer);
|
|
7878
8493
|
}
|
|
7879
8494
|
decode(buffer) {
|
|
7880
8495
|
this.encoded = buffer;
|
|
@@ -7885,7 +8500,7 @@ class CodecHash extends BasicInterface {
|
|
|
7885
8500
|
this.size = index$4.decode(buffer);
|
|
7886
8501
|
this.digest = buffer.slice(index$4.decode.bytes);
|
|
7887
8502
|
if (this.digest.length !== this.size) {
|
|
7888
|
-
throw new Error(`hash length inconsistent: 0x${this.encoded.toString(
|
|
8503
|
+
throw new Error(`hash length inconsistent: 0x${this.encoded.toString()}`);
|
|
7889
8504
|
}
|
|
7890
8505
|
// const discoCodec = new Codec(codec, this.codecs)
|
|
7891
8506
|
this.name = this.discoCodec.name;
|
|
@@ -7911,12 +8526,15 @@ let FormatInterface$1 = class FormatInterface extends BasicInterface {
|
|
|
7911
8526
|
this.#encoded = value;
|
|
7912
8527
|
}
|
|
7913
8528
|
init(buffer) {
|
|
7914
|
-
if (buffer instanceof FormatInterface && buffer?.name === this.name)
|
|
8529
|
+
if (buffer instanceof FormatInterface && buffer?.name === this.name) {
|
|
7915
8530
|
return buffer;
|
|
7916
|
-
|
|
8531
|
+
}
|
|
8532
|
+
else if (buffer instanceof Uint8Array) {
|
|
7917
8533
|
this.fromUint8Array(buffer);
|
|
7918
|
-
|
|
8534
|
+
}
|
|
8535
|
+
else if (buffer instanceof ArrayBuffer) {
|
|
7919
8536
|
this.fromArrayBuffer(buffer);
|
|
8537
|
+
}
|
|
7920
8538
|
else if (typeof buffer === 'string') {
|
|
7921
8539
|
if (this.isHex(buffer))
|
|
7922
8540
|
this.fromHex(buffer);
|
|
@@ -7927,9 +8545,13 @@ let FormatInterface$1 = class FormatInterface extends BasicInterface {
|
|
|
7927
8545
|
else
|
|
7928
8546
|
this.fromString(buffer);
|
|
7929
8547
|
}
|
|
7930
|
-
else {
|
|
8548
|
+
else if (typeof buffer === 'object' && buffer !== null) {
|
|
7931
8549
|
this.create(buffer);
|
|
7932
8550
|
}
|
|
8551
|
+
else {
|
|
8552
|
+
// Explicitly reject all other types (number, boolean, undefined, symbol, function, null)
|
|
8553
|
+
throw new TypeError(`Invalid input type for FormatInterface: ${typeof buffer}`);
|
|
8554
|
+
}
|
|
7933
8555
|
return this;
|
|
7934
8556
|
}
|
|
7935
8557
|
hasCodec() {
|
|
@@ -7992,17 +8614,46 @@ let FormatInterface$1 = class FormatInterface extends BasicInterface {
|
|
|
7992
8614
|
const upper = this.hashFormat.charAt(0).toUpperCase();
|
|
7993
8615
|
return `${upper}${this.hashFormat.substring(1, this.hashFormat.length)}`;
|
|
7994
8616
|
}
|
|
8617
|
+
/**
|
|
8618
|
+
* Extract content bytes without codec prefix
|
|
8619
|
+
*/
|
|
8620
|
+
get contentBytes() {
|
|
8621
|
+
if (!this.encoded)
|
|
8622
|
+
return new Uint8Array(0);
|
|
8623
|
+
const codec = new Codec(this.encoded);
|
|
8624
|
+
if (codec.codecBuffer) {
|
|
8625
|
+
return this.encoded.slice(codec.codecBuffer.length);
|
|
8626
|
+
}
|
|
8627
|
+
return this.encoded;
|
|
8628
|
+
}
|
|
7995
8629
|
beforeHashing(decoded) {
|
|
7996
|
-
|
|
8630
|
+
// Avoid copying if not needed
|
|
8631
|
+
if (decoded && Object.prototype.hasOwnProperty.call(decoded, 'hash')) {
|
|
8632
|
+
// Only copy if hash is present
|
|
8633
|
+
const rest = { ...decoded };
|
|
8634
|
+
delete rest.hash;
|
|
8635
|
+
return rest;
|
|
8636
|
+
}
|
|
7997
8637
|
return decoded;
|
|
7998
8638
|
}
|
|
7999
8639
|
/**
|
|
8000
8640
|
* @return {PeernetHash}
|
|
8001
8641
|
*/
|
|
8002
8642
|
get peernetHash() {
|
|
8643
|
+
// Optimize: if decoded has no hash property, contentBytes are already correct
|
|
8644
|
+
// Since protoEncode is deterministic (varint-based), we can use them directly
|
|
8645
|
+
if (this.encoded &&
|
|
8646
|
+
this.decoded &&
|
|
8647
|
+
!Object.prototype.hasOwnProperty.call(this.decoded, 'hash')) {
|
|
8648
|
+
// @ts-ignore
|
|
8649
|
+
const hash = new CodecHash({ name: this.name });
|
|
8650
|
+
return hash.init(this.contentBytes);
|
|
8651
|
+
}
|
|
8652
|
+
// Fallback: must re-encode without hash property
|
|
8003
8653
|
const decoded = this.beforeHashing({ ...this.decoded });
|
|
8004
8654
|
// @ts-ignore
|
|
8005
|
-
|
|
8655
|
+
const hash = new CodecHash({ name: this.name });
|
|
8656
|
+
return hash.init(decoded);
|
|
8006
8657
|
}
|
|
8007
8658
|
/**
|
|
8008
8659
|
* @return {peernetHash}
|
|
@@ -8019,13 +8670,13 @@ let FormatInterface$1 = class FormatInterface extends BasicInterface {
|
|
|
8019
8670
|
this.encoded = buffer;
|
|
8020
8671
|
return this.hasCodec()
|
|
8021
8672
|
? this.decode()
|
|
8022
|
-
: this.create(JSON.parse(
|
|
8673
|
+
: this.create(JSON.parse(BasicInterface._textDecoder.decode(this.encoded), jsonParseBigInt));
|
|
8023
8674
|
}
|
|
8024
8675
|
fromArrayBuffer(buffer) {
|
|
8025
8676
|
this.encoded = new Uint8Array(buffer, buffer.byteOffset, buffer.byteLength);
|
|
8026
8677
|
return this.hasCodec()
|
|
8027
8678
|
? this.decode()
|
|
8028
|
-
: this.create(JSON.parse(
|
|
8679
|
+
: this.create(JSON.parse(BasicInterface._textDecoder.decode(this.encoded), jsonParseBigInt));
|
|
8029
8680
|
}
|
|
8030
8681
|
/**
|
|
8031
8682
|
* @param {Object} data
|
|
@@ -8045,6 +8696,9 @@ let FormatInterface$1 = class FormatInterface extends BasicInterface {
|
|
|
8045
8696
|
}
|
|
8046
8697
|
};
|
|
8047
8698
|
|
|
8699
|
+
/**
|
|
8700
|
+
* Interface for defining codec formats
|
|
8701
|
+
*/
|
|
8048
8702
|
const FormatInterface = FormatInterface$1;
|
|
8049
8703
|
|
|
8050
8704
|
var proto$6 = {
|
|
@@ -8211,6 +8865,42 @@ class RawTransactionMessage extends FormatInterface {
|
|
|
8211
8865
|
}
|
|
8212
8866
|
}
|
|
8213
8867
|
|
|
8214
|
-
|
|
8868
|
+
// todo only one star needed, no need to have one for each network
|
|
8869
|
+
// unless we change anything to the star protocol
|
|
8870
|
+
// version differences should be handled in the chain
|
|
8871
|
+
// maybe a good way to handle could be in p2pt-swarm
|
|
8872
|
+
var networks = {
|
|
8873
|
+
leofcoin: {
|
|
8874
|
+
mainnet: {
|
|
8875
|
+
// ports don't really matter since it is favorable to have it begind a ngninx proxy but if we change something to the proto it's easier maybe?
|
|
8876
|
+
port: 44444,
|
|
8877
|
+
// todo a versionhash would be nice to have as a double check?
|
|
8878
|
+
versionHash: '0',
|
|
8879
|
+
// a short description identifying the version
|
|
8880
|
+
description: 'Main net current version',
|
|
8881
|
+
stars: ['wss://star.leofcoin.org'] // todo webrtc and bittorent stars
|
|
8882
|
+
},
|
|
8883
|
+
peach: {
|
|
8884
|
+
port: 44444,
|
|
8885
|
+
description: 'Main testnet: latest step before merging into main',
|
|
8886
|
+
versionHash: '1',
|
|
8887
|
+
stars: ['wss://star.leofcoin.org'] // todo webrtc and bittorent stars
|
|
8888
|
+
}
|
|
8889
|
+
}
|
|
8890
|
+
};
|
|
8891
|
+
|
|
8892
|
+
var networks$1 = /*#__PURE__*/Object.freeze({
|
|
8893
|
+
__proto__: null,
|
|
8894
|
+
default: networks
|
|
8895
|
+
});
|
|
8896
|
+
|
|
8897
|
+
const PROTOCOL_VERSION = '0.1.1';
|
|
8898
|
+
const REACHED_ONE_ZERO_ZERO = false; // set to true when protocol reaches v1.0.0
|
|
8899
|
+
const DEFAULT_NODE_OPTIONS = {
|
|
8900
|
+
network: 'leofcoin:peach',
|
|
8901
|
+
networkVersion: 'peach',
|
|
8902
|
+
version: PROTOCOL_VERSION,
|
|
8903
|
+
stars: networks.leofcoin.peach.stars
|
|
8904
|
+
};
|
|
8215
8905
|
|
|
8216
|
-
export { BlockMessage as B, ContractMessage as C, FormatInterface as F, RawTransactionMessage as R, TransactionMessage as T, ValidatorMessage as V,
|
|
8906
|
+
export { BlockMessage as B, ContractMessage as C, DEFAULT_NODE_OPTIONS as D, FormatInterface as F, PROTOCOL_VERSION as P, RawTransactionMessage as R, TransactionMessage as T, ValidatorMessage as V, REACHED_ONE_ZERO_ZERO as a, BWMessage as b, BWRequestMessage as c, networks$1 as n, toBase58 as t };
|