@leofcoin/workers 1.5.27 → 1.5.29
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/block-worker.d.ts +1 -0
- package/exports/block-worker.js +14 -24
- package/exports/browser/block-worker.js +14 -24
- package/exports/browser/machine-worker.js +76 -52
- package/exports/browser/{worker-CPvGlmOu.js → worker-Bsi6vKgF.js} +1243 -470
- package/exports/machine-worker.js +76 -52
- package/exports/pool-worker.d.ts +1 -0
- package/exports/transaction-worker.d.ts +1 -0
- package/exports/{worker-CPvGlmOu.js → worker-Bsi6vKgF.js} +1243 -470
- package/exports/workers.d.ts +8 -0
- package/package.json +6 -6
|
@@ -325,53 +325,6 @@ var index$3 = (input, prefix) => {
|
|
|
325
325
|
return typedArray;
|
|
326
326
|
};
|
|
327
327
|
|
|
328
|
-
var index$2 = (typedArray, prefix) => {
|
|
329
|
-
const set = [];
|
|
330
|
-
const varintAndSub = (typedArray) => {
|
|
331
|
-
const length = index$4.decode(typedArray);
|
|
332
|
-
// remove length
|
|
333
|
-
typedArray = typedArray.subarray(index$4.decode.bytes);
|
|
334
|
-
// push value
|
|
335
|
-
set.push(typedArray.subarray(0, length));
|
|
336
|
-
// remove value
|
|
337
|
-
typedArray = typedArray.subarray(length);
|
|
338
|
-
if (typedArray.length !== 0)
|
|
339
|
-
return varintAndSub(typedArray);
|
|
340
|
-
return set;
|
|
341
|
-
};
|
|
342
|
-
return varintAndSub(typedArray);
|
|
343
|
-
};
|
|
344
|
-
|
|
345
|
-
const ALPHABET$1 = '0123456789ABCDEF';
|
|
346
|
-
base(ALPHABET$1);
|
|
347
|
-
|
|
348
|
-
const ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';
|
|
349
|
-
base(ALPHABET);
|
|
350
|
-
|
|
351
|
-
/**
|
|
352
|
-
* Returns a Uint8Array as String
|
|
353
|
-
* @param uint8Array Uint8Array to encode to String
|
|
354
|
-
* @returns String
|
|
355
|
-
*/
|
|
356
|
-
const toString$3 = (uint8Array) => new TextDecoder().decode(uint8Array);
|
|
357
|
-
/**
|
|
358
|
-
* hexString -> uint8Array
|
|
359
|
-
* @param string hex encoded string
|
|
360
|
-
* @returns UintArray
|
|
361
|
-
*/
|
|
362
|
-
const fromHex = (string) => Uint8Array.from(string.match(/.{1,2}/g).map((byte) => parseInt(byte, 16)));
|
|
363
|
-
/**
|
|
364
|
-
* uint8Array -> hexString
|
|
365
|
-
* @param bytes number[]
|
|
366
|
-
* @returns hexString
|
|
367
|
-
*/
|
|
368
|
-
const toHex = (bytes) => bytes.reduce((string, byte) => string + byte.toString(16).padStart(2, '0'), '');
|
|
369
|
-
const toBase58 = (uint8Array) => base58$1.encode(uint8Array);
|
|
370
|
-
const fromBase58 = (string) => base58$1.decode(string);
|
|
371
|
-
const toBase32 = (uint8Array) => index$5.encode(uint8Array);
|
|
372
|
-
var index$1 = {
|
|
373
|
-
toString: toString$3};
|
|
374
|
-
|
|
375
328
|
/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */
|
|
376
329
|
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
|
|
377
330
|
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
|
|
@@ -4101,7 +4054,7 @@ function ZStream() {
|
|
|
4101
4054
|
|
|
4102
4055
|
var zstream = ZStream;
|
|
4103
4056
|
|
|
4104
|
-
const toString$1 = Object.prototype.toString;
|
|
4057
|
+
const toString$1$1 = Object.prototype.toString;
|
|
4105
4058
|
|
|
4106
4059
|
/* Public constants ==========================================================*/
|
|
4107
4060
|
/* ===========================================================================*/
|
|
@@ -4253,7 +4206,7 @@ function Deflate$1(options) {
|
|
|
4253
4206
|
if (typeof opt.dictionary === 'string') {
|
|
4254
4207
|
// If we need to compress text, change encoding to utf8.
|
|
4255
4208
|
dict = strings.string2buf(opt.dictionary);
|
|
4256
|
-
} else if (toString$1.call(opt.dictionary) === '[object ArrayBuffer]') {
|
|
4209
|
+
} else if (toString$1$1.call(opt.dictionary) === '[object ArrayBuffer]') {
|
|
4257
4210
|
dict = new Uint8Array(opt.dictionary);
|
|
4258
4211
|
} else {
|
|
4259
4212
|
dict = opt.dictionary;
|
|
@@ -4305,7 +4258,7 @@ Deflate$1.prototype.push = function (data, flush_mode) {
|
|
|
4305
4258
|
if (typeof data === 'string') {
|
|
4306
4259
|
// If we need to compress text, change encoding to utf8.
|
|
4307
4260
|
strm.input = strings.string2buf(data);
|
|
4308
|
-
} else if (toString$1.call(data) === '[object ArrayBuffer]') {
|
|
4261
|
+
} else if (toString$1$1.call(data) === '[object ArrayBuffer]') {
|
|
4309
4262
|
strm.input = new Uint8Array(data);
|
|
4310
4263
|
} else {
|
|
4311
4264
|
strm.input = data;
|
|
@@ -7242,88 +7195,141 @@ var pako = {
|
|
|
7242
7195
|
};
|
|
7243
7196
|
|
|
7244
7197
|
const jsonStringifyBigInt$1 = (key, value) => (typeof value === 'bigint' ? { $bigint: value.toString() } : value);
|
|
7245
|
-
const jsonParseBigInt$1 = (key, value) => typeof value === 'object' && value
|
|
7198
|
+
const jsonParseBigInt$1 = (key, value) => typeof value === 'object' && value?.$bigint ? BigInt(value.$bigint) : value;
|
|
7246
7199
|
|
|
7247
|
-
const
|
|
7248
|
-
const isString = (type) => type === 'string';
|
|
7249
|
-
const isNumber = (type) => type === 'number';
|
|
7250
|
-
const isBoolean = (type) => type === 'boolean';
|
|
7251
|
-
const isUint8Array = (type) => type === 'uint8Array';
|
|
7252
|
-
const isBigInt = (type) => type === 'bigint';
|
|
7200
|
+
const tokenCache = new WeakMap();
|
|
7253
7201
|
const tokenize = (key, value) => {
|
|
7254
7202
|
const optional = key.endsWith('?');
|
|
7255
7203
|
let type = value === undefined ? key : value;
|
|
7256
7204
|
if (type instanceof Uint8Array)
|
|
7257
7205
|
type = 'uint8Array';
|
|
7258
|
-
else if (type
|
|
7206
|
+
else if (typeof type === 'bigint')
|
|
7259
7207
|
type = 'bigint';
|
|
7260
7208
|
else
|
|
7261
7209
|
type = Array.isArray(type) ? 'array' : typeof type;
|
|
7262
7210
|
const parts = key.split('?');
|
|
7263
|
-
const minimumLength = parts[2]?.includes('min') ? parts[2].split
|
|
7264
|
-
return { type, optional, key: parts[0], minimumLength };
|
|
7211
|
+
const minimumLength = parts[2]?.includes('min') ? Number(parts[2].split('min:')[1]) : 0;
|
|
7212
|
+
return { type, optional, key: parts[0], minimumLength, defaultValue: value };
|
|
7213
|
+
};
|
|
7214
|
+
const getTokens = (proto) => {
|
|
7215
|
+
if (tokenCache.has(proto))
|
|
7216
|
+
return tokenCache.get(proto);
|
|
7217
|
+
const keys = Object.keys(proto);
|
|
7218
|
+
const values = Object.values(proto);
|
|
7219
|
+
const tokens = keys.map((k, i) => tokenize(k, values[i]));
|
|
7220
|
+
tokenCache.set(proto, tokens);
|
|
7221
|
+
return tokens;
|
|
7265
7222
|
};
|
|
7223
|
+
|
|
7224
|
+
const encoder = new TextEncoder();
|
|
7266
7225
|
const toType = (data) => {
|
|
7267
|
-
// always return uint8Arrays as they are
|
|
7268
7226
|
if (data instanceof Uint8Array)
|
|
7269
7227
|
return data;
|
|
7270
|
-
// returns the ArrayBuffer as UintArray
|
|
7271
7228
|
if (data instanceof ArrayBuffer)
|
|
7272
7229
|
return new Uint8Array(data);
|
|
7273
|
-
// returns the BigTnt string as UintArray
|
|
7274
7230
|
if (typeof data === 'bigint')
|
|
7275
|
-
return
|
|
7276
|
-
// returns the string as UintArray
|
|
7231
|
+
return encoder.encode(data.toString());
|
|
7277
7232
|
if (typeof data === 'string')
|
|
7278
|
-
return
|
|
7279
|
-
// returns the object as UintArray
|
|
7233
|
+
return encoder.encode(data);
|
|
7280
7234
|
if (typeof data === 'object')
|
|
7281
|
-
return
|
|
7282
|
-
// returns the number as UintArray
|
|
7235
|
+
return encoder.encode(JSON.stringify(data, jsonStringifyBigInt$1));
|
|
7283
7236
|
if (typeof data === 'number' || typeof data === 'boolean')
|
|
7284
|
-
return
|
|
7237
|
+
return encoder.encode(data.toString());
|
|
7285
7238
|
throw new Error(`unsuported type ${typeof data || data}`);
|
|
7286
7239
|
};
|
|
7287
7240
|
const encode = (proto, input, compress) => {
|
|
7288
|
-
const
|
|
7289
|
-
const values = Object.values(proto);
|
|
7241
|
+
const tokens = getTokens(proto);
|
|
7290
7242
|
const set = [];
|
|
7291
|
-
for (let i = 0; i <
|
|
7292
|
-
const token =
|
|
7243
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
7244
|
+
const token = tokens[i];
|
|
7293
7245
|
const data = input[token.key];
|
|
7294
7246
|
if (!token.optional && data === undefined)
|
|
7295
7247
|
throw new Error(`missing required property: ${token.key}`);
|
|
7296
7248
|
if ((token.type === 'array' && token.minimumLength > data?.length) ||
|
|
7297
7249
|
(token.type === 'object' && token.minimumLength > Object.keys(data).length))
|
|
7298
7250
|
throw new Error(`minimumLength for ${token.key} is set to ${token.minimumLength} but got ${data.length}`);
|
|
7299
|
-
|
|
7300
|
-
// when data is undefined push the default value of the proto
|
|
7301
|
-
set.push(toType(data || values[i]));
|
|
7251
|
+
set.push(toType(data !== undefined ? data : token.defaultValue));
|
|
7302
7252
|
}
|
|
7303
7253
|
return compress ? pako.deflate(index$3(set)) : index$3(set);
|
|
7304
7254
|
};
|
|
7255
|
+
|
|
7256
|
+
var index$2 = (typedArray, prefix) => {
|
|
7257
|
+
const set = [];
|
|
7258
|
+
const varintAndSub = (typedArray) => {
|
|
7259
|
+
const length = index$4.decode(typedArray);
|
|
7260
|
+
// remove length
|
|
7261
|
+
typedArray = typedArray.subarray(index$4.decode.bytes);
|
|
7262
|
+
// push value
|
|
7263
|
+
set.push(typedArray.subarray(0, length));
|
|
7264
|
+
// remove value
|
|
7265
|
+
typedArray = typedArray.subarray(length);
|
|
7266
|
+
if (typedArray.length !== 0)
|
|
7267
|
+
return varintAndSub(typedArray);
|
|
7268
|
+
return set;
|
|
7269
|
+
};
|
|
7270
|
+
return varintAndSub(typedArray);
|
|
7271
|
+
};
|
|
7272
|
+
|
|
7273
|
+
const ALPHABET$1 = '0123456789ABCDEF';
|
|
7274
|
+
base(ALPHABET$1);
|
|
7275
|
+
|
|
7276
|
+
const ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';
|
|
7277
|
+
base(ALPHABET);
|
|
7278
|
+
|
|
7279
|
+
/**
|
|
7280
|
+
* Returns a Uint8Array as String
|
|
7281
|
+
* @param uint8Array Uint8Array to encode to String
|
|
7282
|
+
* @returns String
|
|
7283
|
+
*/
|
|
7284
|
+
const toString$1 = (uint8Array) => new TextDecoder().decode(uint8Array);
|
|
7285
|
+
/**
|
|
7286
|
+
* hexString -> uint8Array
|
|
7287
|
+
* @param string hex encoded string
|
|
7288
|
+
* @returns UintArray
|
|
7289
|
+
*/
|
|
7290
|
+
const fromHex = (string) => Uint8Array.from(string.match(/.{1,2}/g).map((byte) => parseInt(byte, 16)));
|
|
7291
|
+
/**
|
|
7292
|
+
* uint8Array -> hexString
|
|
7293
|
+
* @param bytes number[]
|
|
7294
|
+
* @returns hexString
|
|
7295
|
+
*/
|
|
7296
|
+
const toHex = (bytes) => bytes.reduce((string, byte) => string + byte.toString(16).padStart(2, '0'), '');
|
|
7297
|
+
/**
|
|
7298
|
+
* number[] -> Uint8Array
|
|
7299
|
+
* @param array number[]
|
|
7300
|
+
* @returns Uint8Array
|
|
7301
|
+
*/
|
|
7302
|
+
const fromArrayLike = (array) => Uint8Array.from(array);
|
|
7303
|
+
const toBase58 = (uint8Array) => base58$1.encode(uint8Array);
|
|
7304
|
+
const fromBase58 = (string) => base58$1.decode(string);
|
|
7305
|
+
const toBase32 = (uint8Array) => index$5.encode(uint8Array);
|
|
7306
|
+
var index$1 = {
|
|
7307
|
+
toString: toString$1};
|
|
7308
|
+
|
|
7309
|
+
const { toString } = index$1;
|
|
7310
|
+
const decoder = new TextDecoder();
|
|
7305
7311
|
const decode = (proto, uint8Array, compressed) => {
|
|
7306
7312
|
if (compressed)
|
|
7307
7313
|
uint8Array = pako.inflate(uint8Array);
|
|
7308
7314
|
let deconcated = index$2(uint8Array);
|
|
7309
7315
|
const output = {};
|
|
7310
|
-
const
|
|
7311
|
-
|
|
7312
|
-
|
|
7313
|
-
|
|
7314
|
-
|
|
7315
|
-
|
|
7316
|
-
if (isUint8Array(token.type))
|
|
7316
|
+
const tokens = getTokens(proto);
|
|
7317
|
+
if (tokens.length !== deconcated.length)
|
|
7318
|
+
console.warn(`length mismatch: expected ${tokens.length} got ${uint8Array.length}`);
|
|
7319
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
7320
|
+
const token = tokens[i];
|
|
7321
|
+
if (token.type === 'uint8Array')
|
|
7317
7322
|
output[token.key] = deconcated[i];
|
|
7318
|
-
else if (
|
|
7323
|
+
else if (token.type === 'string')
|
|
7319
7324
|
output[token.key] = toString(deconcated[i]);
|
|
7320
|
-
else if (
|
|
7321
|
-
output[token.key] =
|
|
7322
|
-
else if (
|
|
7323
|
-
output[token.key] = Number(
|
|
7324
|
-
else if (
|
|
7325
|
-
output[token.key] = BigInt(
|
|
7326
|
-
else
|
|
7325
|
+
else if (token.type === 'boolean')
|
|
7326
|
+
output[token.key] = decoder.decode(deconcated[i]) === 'true';
|
|
7327
|
+
else if (token.type === 'number')
|
|
7328
|
+
output[token.key] = Number(decoder.decode(deconcated[i]));
|
|
7329
|
+
else if (token.type === 'bigint')
|
|
7330
|
+
output[token.key] = BigInt(decoder.decode(deconcated[i]));
|
|
7331
|
+
else if (token.type === 'object' || token.type === 'array')
|
|
7332
|
+
output[token.key] = JSON.parse(decoder.decode(deconcated[i]), jsonParseBigInt$1);
|
|
7327
7333
|
if (token.optional) {
|
|
7328
7334
|
if (!output[token.key] || output[token.key].length === 0)
|
|
7329
7335
|
delete output[token.key];
|
|
@@ -7333,18 +7339,28 @@ const decode = (proto, uint8Array, compressed) => {
|
|
|
7333
7339
|
}
|
|
7334
7340
|
return output;
|
|
7335
7341
|
};
|
|
7336
|
-
var index = {
|
|
7337
|
-
encode,
|
|
7338
|
-
decode
|
|
7339
|
-
};
|
|
7340
7342
|
|
|
7341
|
-
|
|
7342
|
-
|
|
7343
|
+
var index = { encode, decode };
|
|
7344
|
+
|
|
7345
|
+
const jsonStringifyBigInt = (key, value) => {
|
|
7346
|
+
if (typeof value === 'bigint')
|
|
7347
|
+
return { $bigint: value.toString() };
|
|
7348
|
+
return value;
|
|
7349
|
+
};
|
|
7350
|
+
const jsonParseBigInt = (key, value) => {
|
|
7351
|
+
if (typeof value === 'object' && value) {
|
|
7352
|
+
if (value.$bigint)
|
|
7353
|
+
return BigInt(value.$bigint);
|
|
7354
|
+
}
|
|
7355
|
+
return value;
|
|
7356
|
+
};
|
|
7343
7357
|
class BasicInterface {
|
|
7344
7358
|
#encoded;
|
|
7345
7359
|
#decoded;
|
|
7346
7360
|
name;
|
|
7347
7361
|
#proto;
|
|
7362
|
+
textEncoder = new TextEncoder();
|
|
7363
|
+
textDecoder = new TextDecoder();
|
|
7348
7364
|
get keys() {
|
|
7349
7365
|
// handles proto keys
|
|
7350
7366
|
// protokey -> key
|
|
@@ -7372,22 +7388,89 @@ class BasicInterface {
|
|
|
7372
7388
|
get proto() {
|
|
7373
7389
|
return this.#proto;
|
|
7374
7390
|
}
|
|
7391
|
+
from(value) {
|
|
7392
|
+
if (value instanceof Uint8Array)
|
|
7393
|
+
this.fromUint8Array(value);
|
|
7394
|
+
else if (value instanceof ArrayBuffer)
|
|
7395
|
+
this.fromArrayBuffer(value);
|
|
7396
|
+
else if (typeof value === 'string' && isHex(value)) {
|
|
7397
|
+
this.fromHex(value);
|
|
7398
|
+
}
|
|
7399
|
+
else if (typeof value === 'string') {
|
|
7400
|
+
if (base58$1.isBase58(value)) {
|
|
7401
|
+
try {
|
|
7402
|
+
this.fromBs58(value);
|
|
7403
|
+
}
|
|
7404
|
+
catch {
|
|
7405
|
+
if (index$5.isBase32(value))
|
|
7406
|
+
this.fromBs32(value);
|
|
7407
|
+
else
|
|
7408
|
+
throw new Error('Invalid base58/base32 input');
|
|
7409
|
+
}
|
|
7410
|
+
}
|
|
7411
|
+
else if (index$5.isBase32(value))
|
|
7412
|
+
this.fromBs32(value);
|
|
7413
|
+
else
|
|
7414
|
+
this.fromString(value);
|
|
7415
|
+
}
|
|
7416
|
+
else if (Array.isArray(value))
|
|
7417
|
+
this.fromArray(value);
|
|
7418
|
+
else if (typeof value === 'object')
|
|
7419
|
+
this.create(value);
|
|
7420
|
+
return this;
|
|
7421
|
+
}
|
|
7375
7422
|
decode(encoded) {
|
|
7376
7423
|
encoded = encoded || this.encoded;
|
|
7377
|
-
|
|
7424
|
+
// Example: decode as JSON if possible (override in subclass)
|
|
7425
|
+
try {
|
|
7426
|
+
return JSON.parse(this.textDecoder.decode(encoded), jsonParseBigInt);
|
|
7427
|
+
}
|
|
7428
|
+
catch {
|
|
7429
|
+
return new Object();
|
|
7430
|
+
}
|
|
7378
7431
|
}
|
|
7379
7432
|
encode(decoded) {
|
|
7380
7433
|
decoded = decoded || this.decoded;
|
|
7381
|
-
|
|
7434
|
+
// Example: encode as JSON (override in subclass)
|
|
7435
|
+
return this.textEncoder.encode(JSON.stringify(decoded, jsonStringifyBigInt));
|
|
7382
7436
|
}
|
|
7383
7437
|
// get Codec(): Codec {}
|
|
7438
|
+
create(options) {
|
|
7439
|
+
for (const key of this.keys) {
|
|
7440
|
+
if (options[key]) {
|
|
7441
|
+
this[key] = options[key];
|
|
7442
|
+
}
|
|
7443
|
+
}
|
|
7444
|
+
}
|
|
7445
|
+
// Cache proto keys/values for reuse
|
|
7446
|
+
static _protoCache = new WeakMap();
|
|
7384
7447
|
protoEncode(data) {
|
|
7385
|
-
|
|
7448
|
+
let cache = BasicInterface._protoCache.get(this.proto);
|
|
7449
|
+
if (!cache) {
|
|
7450
|
+
cache = {
|
|
7451
|
+
keys: Object.keys(this.proto),
|
|
7452
|
+
values: Object.values(this.proto)
|
|
7453
|
+
};
|
|
7454
|
+
BasicInterface._protoCache.set(this.proto, cache);
|
|
7455
|
+
}
|
|
7456
|
+
// Use proto.encode directly, but avoid new array allocations inside encode if possible
|
|
7386
7457
|
return index.encode(this.proto, data, false);
|
|
7387
7458
|
}
|
|
7388
7459
|
protoDecode(data) {
|
|
7389
|
-
//
|
|
7390
|
-
|
|
7460
|
+
// Use a static output object if possible (not thread-safe, but safe for single-threaded use)
|
|
7461
|
+
if (!this._decodeOutput)
|
|
7462
|
+
this._decodeOutput = {};
|
|
7463
|
+
const result = index.decode(this.proto, data, false);
|
|
7464
|
+
// Copy properties to static object to avoid new allocations
|
|
7465
|
+
Object.keys(result).forEach((k) => {
|
|
7466
|
+
this._decodeOutput[k] = result[k];
|
|
7467
|
+
});
|
|
7468
|
+
// Remove any keys not in result
|
|
7469
|
+
Object.keys(this._decodeOutput).forEach((k) => {
|
|
7470
|
+
if (!(k in result))
|
|
7471
|
+
delete this._decodeOutput[k];
|
|
7472
|
+
});
|
|
7473
|
+
return this._decodeOutput;
|
|
7391
7474
|
}
|
|
7392
7475
|
isHex(string) {
|
|
7393
7476
|
return isHex(string);
|
|
@@ -7420,23 +7503,50 @@ class BasicInterface {
|
|
|
7420
7503
|
return this.decode(fromHex(string));
|
|
7421
7504
|
}
|
|
7422
7505
|
fromArray(array) {
|
|
7423
|
-
|
|
7424
|
-
|
|
7425
|
-
|
|
7426
|
-
return this.decode(
|
|
7506
|
+
// Avoid unnecessary copy if already Uint8Array
|
|
7507
|
+
if (array instanceof Uint8Array)
|
|
7508
|
+
return this.decode(array);
|
|
7509
|
+
return this.decode(Uint8Array.from(array));
|
|
7510
|
+
}
|
|
7511
|
+
fromArrayBuffer(uint8Array) {
|
|
7512
|
+
return fromArrayLike(new Uint8Array(uint8Array));
|
|
7513
|
+
}
|
|
7514
|
+
fromUint8Array(uint8Array) {
|
|
7515
|
+
return fromArrayLike(uint8Array);
|
|
7516
|
+
}
|
|
7517
|
+
toUint8Array(format) {
|
|
7518
|
+
if (format === 'bs32')
|
|
7519
|
+
return toBase32(this.encoded);
|
|
7520
|
+
if (format === 'bs58')
|
|
7521
|
+
return toBase58(this.encoded);
|
|
7522
|
+
if (format === 'hex')
|
|
7523
|
+
return toHex(this.encoded);
|
|
7524
|
+
if (format === 'utf8')
|
|
7525
|
+
return this.encoded.toString();
|
|
7526
|
+
if (format === 'uint8Array')
|
|
7527
|
+
return this.encoded;
|
|
7528
|
+
if (format === 'uint8ArrayString')
|
|
7529
|
+
return this.encoded.toString();
|
|
7530
|
+
throw new Error(`Unknown format: ${format}`);
|
|
7427
7531
|
}
|
|
7428
7532
|
toString() {
|
|
7429
7533
|
if (!this.encoded)
|
|
7430
7534
|
this.encode();
|
|
7431
|
-
|
|
7535
|
+
// Use cached string if available
|
|
7536
|
+
if (!this._string)
|
|
7537
|
+
this._string = Array.prototype.join.call(this.encoded, ',');
|
|
7538
|
+
return this._string;
|
|
7432
7539
|
}
|
|
7433
7540
|
toHex() {
|
|
7434
7541
|
if (!this.encoded)
|
|
7435
7542
|
this.encode();
|
|
7436
|
-
|
|
7437
|
-
|
|
7438
|
-
.
|
|
7439
|
-
|
|
7543
|
+
// Use cached hex if available
|
|
7544
|
+
if (!this._hex) {
|
|
7545
|
+
if (!this._string)
|
|
7546
|
+
this._string = Array.prototype.join.call(this.encoded, ',');
|
|
7547
|
+
this._hex = toHex(this._string.split(',').map(Number));
|
|
7548
|
+
}
|
|
7549
|
+
return this._hex;
|
|
7440
7550
|
}
|
|
7441
7551
|
/**
|
|
7442
7552
|
* @return {String} encoded
|
|
@@ -7444,7 +7554,10 @@ class BasicInterface {
|
|
|
7444
7554
|
toBs32() {
|
|
7445
7555
|
if (!this.encoded)
|
|
7446
7556
|
this.encode();
|
|
7447
|
-
|
|
7557
|
+
// Use cached bs32 if available
|
|
7558
|
+
if (!this._bs32)
|
|
7559
|
+
this._bs32 = toBase32(this.encoded);
|
|
7560
|
+
return this._bs32;
|
|
7448
7561
|
}
|
|
7449
7562
|
/**
|
|
7450
7563
|
* @return {String} encoded
|
|
@@ -7456,209 +7569,237 @@ class BasicInterface {
|
|
|
7456
7569
|
}
|
|
7457
7570
|
}
|
|
7458
7571
|
|
|
7459
|
-
const blockchainCodecs = [
|
|
7460
|
-
{
|
|
7461
|
-
name: 'leofcoin-block',
|
|
7462
|
-
codec: '0x6c62',
|
|
7463
|
-
hashAlg: 'dbl-keccak-512'
|
|
7464
|
-
},
|
|
7465
|
-
{
|
|
7466
|
-
name: 'leofcoin-tx',
|
|
7467
|
-
codec: '0x6c74',
|
|
7468
|
-
hashAlg: 'dbl-keccak-512'
|
|
7469
|
-
},
|
|
7470
|
-
{
|
|
7471
|
-
name: 'leofcoin-itx',
|
|
7472
|
-
codec: '0x6c69',
|
|
7473
|
-
hashAlg: 'keccak-512'
|
|
7474
|
-
},
|
|
7475
|
-
{
|
|
7476
|
-
name: 'leofcoin-pr',
|
|
7477
|
-
codec: '0x6c70',
|
|
7478
|
-
hashAlg: 'keccak-256'
|
|
7479
|
-
},
|
|
7480
|
-
{
|
|
7481
|
-
name: 'contract-message',
|
|
7482
|
-
codec: '0x63636d',
|
|
7483
|
-
hashAlg: 'keccak-256'
|
|
7484
|
-
},
|
|
7485
|
-
{
|
|
7486
|
-
name: 'transaction-message',
|
|
7487
|
-
codec: '0x746d',
|
|
7488
|
-
hashAlg: 'keccak-256'
|
|
7489
|
-
},
|
|
7490
|
-
{
|
|
7491
|
-
name: 'raw-transaction-message',
|
|
7492
|
-
codec: '0x772746d',
|
|
7493
|
-
hashAlg: 'keccak-256'
|
|
7494
|
-
},
|
|
7495
|
-
{
|
|
7496
|
-
name: 'block-message',
|
|
7497
|
-
codec: '0x626d',
|
|
7498
|
-
hashAlg: 'keccak-256'
|
|
7499
|
-
},
|
|
7500
|
-
{
|
|
7501
|
-
name: 'bw-message',
|
|
7502
|
-
codec: '0x62776d',
|
|
7503
|
-
hashAlg: 'keccak-256'
|
|
7504
|
-
},
|
|
7505
|
-
{
|
|
7506
|
-
name: 'bw-request-message',
|
|
7507
|
-
codec: '0x6277726d',
|
|
7508
|
-
hashAlg: 'keccak-256'
|
|
7509
|
-
},
|
|
7510
|
-
{
|
|
7511
|
-
name: 'validator-message',
|
|
7512
|
-
codec: '0x766d',
|
|
7513
|
-
hashAlg: 'keccak-256'
|
|
7514
|
-
}
|
|
7572
|
+
const blockchainCodecs = [
|
|
7573
|
+
{
|
|
7574
|
+
name: 'leofcoin-block',
|
|
7575
|
+
codec: '0x6c62',
|
|
7576
|
+
hashAlg: 'dbl-keccak-512'
|
|
7577
|
+
},
|
|
7578
|
+
{
|
|
7579
|
+
name: 'leofcoin-tx',
|
|
7580
|
+
codec: '0x6c74',
|
|
7581
|
+
hashAlg: 'dbl-keccak-512'
|
|
7582
|
+
},
|
|
7583
|
+
{
|
|
7584
|
+
name: 'leofcoin-itx',
|
|
7585
|
+
codec: '0x6c69',
|
|
7586
|
+
hashAlg: 'keccak-512'
|
|
7587
|
+
},
|
|
7588
|
+
{
|
|
7589
|
+
name: 'leofcoin-pr',
|
|
7590
|
+
codec: '0x6c70',
|
|
7591
|
+
hashAlg: 'keccak-256'
|
|
7592
|
+
},
|
|
7593
|
+
{
|
|
7594
|
+
name: 'contract-message',
|
|
7595
|
+
codec: '0x63636d',
|
|
7596
|
+
hashAlg: 'keccak-256'
|
|
7597
|
+
},
|
|
7598
|
+
{
|
|
7599
|
+
name: 'transaction-message',
|
|
7600
|
+
codec: '0x746d',
|
|
7601
|
+
hashAlg: 'keccak-256'
|
|
7602
|
+
},
|
|
7603
|
+
{
|
|
7604
|
+
name: 'raw-transaction-message',
|
|
7605
|
+
codec: '0x772746d',
|
|
7606
|
+
hashAlg: 'keccak-256'
|
|
7607
|
+
},
|
|
7608
|
+
{
|
|
7609
|
+
name: 'block-message',
|
|
7610
|
+
codec: '0x626d',
|
|
7611
|
+
hashAlg: 'keccak-256'
|
|
7612
|
+
},
|
|
7613
|
+
{
|
|
7614
|
+
name: 'bw-message',
|
|
7615
|
+
codec: '0x62776d',
|
|
7616
|
+
hashAlg: 'keccak-256'
|
|
7617
|
+
},
|
|
7618
|
+
{
|
|
7619
|
+
name: 'bw-request-message',
|
|
7620
|
+
codec: '0x6277726d',
|
|
7621
|
+
hashAlg: 'keccak-256'
|
|
7622
|
+
},
|
|
7623
|
+
{
|
|
7624
|
+
name: 'validator-message',
|
|
7625
|
+
codec: '0x766d',
|
|
7626
|
+
hashAlg: 'keccak-256'
|
|
7627
|
+
},
|
|
7628
|
+
{
|
|
7629
|
+
name: 'last-block-message',
|
|
7630
|
+
codec: '0x6c626d',
|
|
7631
|
+
hashAlg: 'keccak-256'
|
|
7632
|
+
},
|
|
7633
|
+
{
|
|
7634
|
+
name: 'last-block-request-message',
|
|
7635
|
+
codec: '0x6c62726d',
|
|
7636
|
+
hashAlg: 'keccak-256'
|
|
7637
|
+
},
|
|
7638
|
+
{
|
|
7639
|
+
name: 'state-message',
|
|
7640
|
+
codec: '0x73746d',
|
|
7641
|
+
hashAlg: 'keccak-256'
|
|
7642
|
+
},
|
|
7643
|
+
{
|
|
7644
|
+
name: 'publish-message',
|
|
7645
|
+
codec: '0x70626d',
|
|
7646
|
+
hashAlg: 'keccak-256'
|
|
7647
|
+
}
|
|
7515
7648
|
];
|
|
7516
|
-
|
|
7517
|
-
|
|
7518
|
-
|
|
7519
|
-
|
|
7520
|
-
|
|
7521
|
-
|
|
7522
|
-
|
|
7523
|
-
|
|
7524
|
-
|
|
7525
|
-
|
|
7526
|
-
|
|
7527
|
-
|
|
7649
|
+
const consensusCodecs = [
|
|
7650
|
+
{
|
|
7651
|
+
name: 'proposal-message',
|
|
7652
|
+
codec: '0x70726d',
|
|
7653
|
+
hashAlg: 'keccak-256'
|
|
7654
|
+
},
|
|
7655
|
+
{
|
|
7656
|
+
name: 'prevote-message',
|
|
7657
|
+
codec: '0x70766d',
|
|
7658
|
+
hashAlg: 'keccak-256'
|
|
7659
|
+
},
|
|
7660
|
+
{
|
|
7661
|
+
name: 'precommit-message',
|
|
7662
|
+
codec: '0x7063636d',
|
|
7663
|
+
hashAlg: 'keccak-256'
|
|
7664
|
+
}
|
|
7528
7665
|
];
|
|
7529
|
-
|
|
7530
|
-
|
|
7531
|
-
name: '
|
|
7532
|
-
codec: '
|
|
7533
|
-
hashAlg: '
|
|
7534
|
-
}
|
|
7535
|
-
|
|
7536
|
-
|
|
7537
|
-
|
|
7538
|
-
|
|
7539
|
-
|
|
7540
|
-
hashAlg: 'dbl-keccak-256',
|
|
7541
|
-
},
|
|
7542
|
-
{
|
|
7543
|
-
name: 'peernet-peer-response',
|
|
7544
|
-
codec: '0x707072',
|
|
7545
|
-
hashAlg: 'keccak-256',
|
|
7546
|
-
},
|
|
7547
|
-
{
|
|
7548
|
-
name: 'peernet-peer',
|
|
7549
|
-
codec: '0x7070',
|
|
7550
|
-
hashAlg: 'keccak-256',
|
|
7551
|
-
},
|
|
7552
|
-
{
|
|
7553
|
-
name: 'peernet-dht',
|
|
7554
|
-
codec: '0x706468',
|
|
7555
|
-
hashAlg: 'keccak-256',
|
|
7556
|
-
},
|
|
7557
|
-
{
|
|
7558
|
-
name: 'peernet-dht-response',
|
|
7559
|
-
codec: '0x706472',
|
|
7560
|
-
hashAlg: 'keccak-256',
|
|
7561
|
-
},
|
|
7562
|
-
{
|
|
7563
|
-
name: 'peernet-data',
|
|
7564
|
-
codec: '0x706461',
|
|
7565
|
-
hashAlg: 'keccak-256',
|
|
7566
|
-
},
|
|
7567
|
-
{
|
|
7568
|
-
name: 'peernet-data-response',
|
|
7569
|
-
codec: '0x70646172',
|
|
7570
|
-
hashAlg: 'keccak-256',
|
|
7571
|
-
},
|
|
7572
|
-
{
|
|
7573
|
-
name: 'peernet-message',
|
|
7574
|
-
codec: '0x706d65',
|
|
7575
|
-
hashAlg: 'keccak-256',
|
|
7576
|
-
},
|
|
7577
|
-
{
|
|
7578
|
-
name: 'peernet-ps',
|
|
7579
|
-
codec: '707073',
|
|
7580
|
-
hashAlg: 'keccak-256',
|
|
7581
|
-
},
|
|
7582
|
-
{
|
|
7583
|
-
name: 'peernet-response',
|
|
7584
|
-
codec: '0x7072',
|
|
7585
|
-
hashAlg: 'keccak-256',
|
|
7586
|
-
},
|
|
7587
|
-
{
|
|
7588
|
-
name: 'peernet-request',
|
|
7589
|
-
codec: '0x707271',
|
|
7590
|
-
hashAlg: 'keccak-256',
|
|
7591
|
-
},
|
|
7592
|
-
{
|
|
7593
|
-
name: 'peernet-file',
|
|
7594
|
-
codec: '0x7066',
|
|
7595
|
-
hashAlg: 'keccak-256',
|
|
7596
|
-
},
|
|
7597
|
-
{
|
|
7598
|
-
name: 'peernet-file-response',
|
|
7599
|
-
codec: '0x706672',
|
|
7600
|
-
hashAlg: 'keccak-256',
|
|
7601
|
-
}
|
|
7666
|
+
const internalCodecs = [
|
|
7667
|
+
{
|
|
7668
|
+
name: 'pubsub-request',
|
|
7669
|
+
codec: '0x70737271',
|
|
7670
|
+
hashAlg: 'keccak-256'
|
|
7671
|
+
},
|
|
7672
|
+
{
|
|
7673
|
+
name: 'pubsub-response',
|
|
7674
|
+
codec: '0x707372',
|
|
7675
|
+
hashAlg: 'keccak-256'
|
|
7676
|
+
}
|
|
7602
7677
|
];
|
|
7603
|
-
|
|
7604
|
-
|
|
7605
|
-
|
|
7606
|
-
|
|
7607
|
-
|
|
7608
|
-
|
|
7678
|
+
const socialCodecs = [
|
|
7679
|
+
{
|
|
7680
|
+
name: 'chat-message',
|
|
7681
|
+
codec: '0x70636d',
|
|
7682
|
+
hashAlg: 'dbl-keccak-256'
|
|
7683
|
+
}
|
|
7684
|
+
];
|
|
7685
|
+
const peernetCodecs = [
|
|
7686
|
+
{
|
|
7687
|
+
name: 'disco-hash',
|
|
7688
|
+
codec: '0x30',
|
|
7689
|
+
hashAlg: 'dbl-keccak-256'
|
|
7690
|
+
},
|
|
7691
|
+
{
|
|
7692
|
+
name: 'peernet-peer-response',
|
|
7693
|
+
codec: '0x707072',
|
|
7694
|
+
hashAlg: 'keccak-256'
|
|
7695
|
+
},
|
|
7696
|
+
{
|
|
7697
|
+
name: 'peernet-peer',
|
|
7698
|
+
codec: '0x7070',
|
|
7699
|
+
hashAlg: 'keccak-256'
|
|
7700
|
+
},
|
|
7701
|
+
{
|
|
7702
|
+
name: 'peernet-dht',
|
|
7703
|
+
codec: '0x706468',
|
|
7704
|
+
hashAlg: 'keccak-256'
|
|
7705
|
+
},
|
|
7706
|
+
{
|
|
7707
|
+
name: 'peernet-dht-response',
|
|
7708
|
+
codec: '0x706472',
|
|
7709
|
+
hashAlg: 'keccak-256'
|
|
7710
|
+
},
|
|
7711
|
+
{
|
|
7712
|
+
name: 'peernet-data',
|
|
7713
|
+
codec: '0x706461',
|
|
7714
|
+
hashAlg: 'keccak-256'
|
|
7715
|
+
},
|
|
7716
|
+
{
|
|
7717
|
+
name: 'peernet-data-response',
|
|
7718
|
+
codec: '0x70646172',
|
|
7719
|
+
hashAlg: 'keccak-256'
|
|
7720
|
+
},
|
|
7721
|
+
{
|
|
7722
|
+
name: 'peernet-message',
|
|
7723
|
+
codec: '0x706d65',
|
|
7724
|
+
hashAlg: 'keccak-256'
|
|
7725
|
+
},
|
|
7726
|
+
{
|
|
7727
|
+
name: 'peernet-ps',
|
|
7728
|
+
codec: '707073',
|
|
7729
|
+
hashAlg: 'keccak-256'
|
|
7730
|
+
},
|
|
7731
|
+
{
|
|
7732
|
+
name: 'peernet-response',
|
|
7733
|
+
codec: '0x7072',
|
|
7734
|
+
hashAlg: 'keccak-256'
|
|
7735
|
+
},
|
|
7736
|
+
{
|
|
7737
|
+
name: 'peernet-request',
|
|
7738
|
+
codec: '0x707271',
|
|
7739
|
+
hashAlg: 'keccak-256'
|
|
7740
|
+
},
|
|
7741
|
+
{
|
|
7742
|
+
name: 'peernet-file',
|
|
7743
|
+
codec: '0x7066',
|
|
7744
|
+
hashAlg: 'keccak-256'
|
|
7745
|
+
},
|
|
7746
|
+
{
|
|
7747
|
+
name: 'peernet-file-response',
|
|
7748
|
+
codec: '0x706672',
|
|
7749
|
+
hashAlg: 'keccak-256'
|
|
7750
|
+
}
|
|
7751
|
+
];
|
|
7752
|
+
const codecs = [
|
|
7753
|
+
...internalCodecs,
|
|
7754
|
+
...blockchainCodecs,
|
|
7755
|
+
...consensusCodecs,
|
|
7756
|
+
...socialCodecs,
|
|
7757
|
+
...peernetCodecs
|
|
7609
7758
|
];
|
|
7610
7759
|
|
|
7611
|
-
const
|
|
7612
|
-
const addCodec = (codecInput) => {
|
|
7613
|
-
|
|
7614
|
-
if (!
|
|
7615
|
-
|
|
7616
|
-
hashAlg,
|
|
7617
|
-
codec: typeof codec === 'string' ? parseInt(codec, 16) : codec
|
|
7618
|
-
};
|
|
7619
|
-
};
|
|
7620
|
-
for (const codec of codecs
|
|
7621
|
-
addCodec(codec);
|
|
7622
|
-
}
|
|
7623
|
-
const
|
|
7624
|
-
|
|
7625
|
-
|
|
7626
|
-
|
|
7627
|
-
};
|
|
7628
|
-
|
|
7629
|
-
|
|
7630
|
-
|
|
7631
|
-
|
|
7632
|
-
|
|
7633
|
-
|
|
7634
|
-
|
|
7635
|
-
|
|
7636
|
-
|
|
7637
|
-
|
|
7638
|
-
|
|
7639
|
-
|
|
7640
|
-
|
|
7641
|
-
|
|
7642
|
-
|
|
7643
|
-
|
|
7644
|
-
|
|
7645
|
-
|
|
7646
|
-
|
|
7647
|
-
|
|
7648
|
-
|
|
7649
|
-
|
|
7650
|
-
|
|
7651
|
-
|
|
7652
|
-
|
|
7653
|
-
|
|
7654
|
-
var utils = {
|
|
7655
|
-
isCodec,
|
|
7656
|
-
addCodec,
|
|
7657
|
-
getCodec,
|
|
7658
|
-
getHashAlg,
|
|
7659
|
-
getCodecName,
|
|
7660
|
-
validateCodec,
|
|
7661
|
-
codecs: codecs
|
|
7760
|
+
const registry = {};
|
|
7761
|
+
const addCodec = (codecInput) => {
|
|
7762
|
+
const { hashAlg, codec, name } = codecInput;
|
|
7763
|
+
if (!registry[name])
|
|
7764
|
+
registry[name] = {
|
|
7765
|
+
hashAlg,
|
|
7766
|
+
codec: typeof codec === 'string' ? parseInt(codec, 16) : codec
|
|
7767
|
+
};
|
|
7768
|
+
};
|
|
7769
|
+
for (const codec of codecs) {
|
|
7770
|
+
addCodec(codec);
|
|
7771
|
+
}
|
|
7772
|
+
const getCodecByName = (name) => registry[name];
|
|
7773
|
+
const getCodecName = (codec) => {
|
|
7774
|
+
return Object.keys(registry).reduce((p, c) => {
|
|
7775
|
+
return registry[c].codec === codec ? c : p;
|
|
7776
|
+
}, undefined);
|
|
7777
|
+
};
|
|
7778
|
+
const getCodec = (name) => {
|
|
7779
|
+
if (typeof name === 'number')
|
|
7780
|
+
return name;
|
|
7781
|
+
return getCodecByName(name).codec;
|
|
7782
|
+
};
|
|
7783
|
+
const getHashAlg = (name) => {
|
|
7784
|
+
if (typeof name === 'number')
|
|
7785
|
+
return getCodecByName(getCodecName(name)).hashAlg;
|
|
7786
|
+
return getCodecByName(name).hashAlg;
|
|
7787
|
+
};
|
|
7788
|
+
const isCodec = (codec) => {
|
|
7789
|
+
return codec.codec !== undefined && !!codec.hashAlg;
|
|
7790
|
+
};
|
|
7791
|
+
const validateCodec = (codec) => {
|
|
7792
|
+
if (codec.codec === undefined || codec.hashAlg === undefined || codec.name === undefined)
|
|
7793
|
+
throw new Error(`invalid codecInput: ${codec}`);
|
|
7794
|
+
};
|
|
7795
|
+
const utils = {
|
|
7796
|
+
isCodec,
|
|
7797
|
+
addCodec,
|
|
7798
|
+
getCodec,
|
|
7799
|
+
getHashAlg,
|
|
7800
|
+
getCodecName,
|
|
7801
|
+
validateCodec,
|
|
7802
|
+
codecs: registry
|
|
7662
7803
|
};
|
|
7663
7804
|
|
|
7664
7805
|
class Codec extends BasicInterface {
|
|
@@ -7703,9 +7844,10 @@ class Codec extends BasicInterface {
|
|
|
7703
7844
|
else
|
|
7704
7845
|
this.fromString(buffer);
|
|
7705
7846
|
}
|
|
7706
|
-
if (
|
|
7847
|
+
else if (typeof buffer === 'number') {
|
|
7707
7848
|
if (utils.getCodec(buffer))
|
|
7708
7849
|
this.fromCodec(buffer);
|
|
7850
|
+
}
|
|
7709
7851
|
}
|
|
7710
7852
|
}
|
|
7711
7853
|
fromEncoded(encoded) {
|
|
@@ -7762,11 +7904,603 @@ class Codec extends BasicInterface {
|
|
|
7762
7904
|
}
|
|
7763
7905
|
}
|
|
7764
7906
|
|
|
7907
|
+
/*!
|
|
7908
|
+
* hash-wasm (https://www.npmjs.com/package/hash-wasm)
|
|
7909
|
+
* (c) Dani Biro
|
|
7910
|
+
* @license MIT
|
|
7911
|
+
*/
|
|
7912
|
+
|
|
7913
|
+
|
|
7914
|
+
/******************************************************************************
|
|
7915
|
+
Copyright (c) Microsoft Corporation.
|
|
7916
|
+
|
|
7917
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
7918
|
+
purpose with or without fee is hereby granted.
|
|
7919
|
+
|
|
7920
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
7921
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
7922
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
7923
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
7924
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
7925
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
7926
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
7927
|
+
***************************************************************************** */
|
|
7928
|
+
/* global Reflect, Promise, SuppressedError, Symbol, Iterator */
|
|
7929
|
+
|
|
7930
|
+
|
|
7931
|
+
function __awaiter(thisArg, _arguments, P, generator) {
|
|
7932
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
7933
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
7934
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
7935
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7936
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7937
|
+
step((generator = generator.apply(thisArg, [])).next());
|
|
7938
|
+
});
|
|
7939
|
+
}
|
|
7940
|
+
|
|
7941
|
+
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
7942
|
+
var e = new Error(message);
|
|
7943
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
7944
|
+
};
|
|
7945
|
+
|
|
7946
|
+
class Mutex {
|
|
7947
|
+
constructor() {
|
|
7948
|
+
this.mutex = Promise.resolve();
|
|
7949
|
+
}
|
|
7950
|
+
lock() {
|
|
7951
|
+
let begin = () => { };
|
|
7952
|
+
this.mutex = this.mutex.then(() => new Promise(begin));
|
|
7953
|
+
return new Promise((res) => {
|
|
7954
|
+
begin = res;
|
|
7955
|
+
});
|
|
7956
|
+
}
|
|
7957
|
+
dispatch(fn) {
|
|
7958
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
7959
|
+
const unlock = yield this.lock();
|
|
7960
|
+
try {
|
|
7961
|
+
return yield Promise.resolve(fn());
|
|
7962
|
+
}
|
|
7963
|
+
finally {
|
|
7964
|
+
unlock();
|
|
7965
|
+
}
|
|
7966
|
+
});
|
|
7967
|
+
}
|
|
7968
|
+
}
|
|
7969
|
+
|
|
7970
|
+
var _a;
|
|
7971
|
+
function getGlobal() {
|
|
7972
|
+
if (typeof globalThis !== "undefined")
|
|
7973
|
+
return globalThis;
|
|
7974
|
+
if (typeof self !== "undefined")
|
|
7975
|
+
return self;
|
|
7976
|
+
if (typeof window !== "undefined")
|
|
7977
|
+
return window;
|
|
7978
|
+
return global;
|
|
7979
|
+
}
|
|
7980
|
+
const globalObject = getGlobal();
|
|
7981
|
+
const nodeBuffer = (_a = globalObject.Buffer) !== null && _a !== void 0 ? _a : null;
|
|
7982
|
+
const textEncoder = globalObject.TextEncoder
|
|
7983
|
+
? new globalObject.TextEncoder()
|
|
7984
|
+
: null;
|
|
7985
|
+
function hexCharCodesToInt(a, b) {
|
|
7986
|
+
return ((((a & 0xf) + ((a >> 6) | ((a >> 3) & 0x8))) << 4) |
|
|
7987
|
+
((b & 0xf) + ((b >> 6) | ((b >> 3) & 0x8))));
|
|
7988
|
+
}
|
|
7989
|
+
function writeHexToUInt8(buf, str) {
|
|
7990
|
+
const size = str.length >> 1;
|
|
7991
|
+
for (let i = 0; i < size; i++) {
|
|
7992
|
+
const index = i << 1;
|
|
7993
|
+
buf[i] = hexCharCodesToInt(str.charCodeAt(index), str.charCodeAt(index + 1));
|
|
7994
|
+
}
|
|
7995
|
+
}
|
|
7996
|
+
function hexStringEqualsUInt8(str, buf) {
|
|
7997
|
+
if (str.length !== buf.length * 2) {
|
|
7998
|
+
return false;
|
|
7999
|
+
}
|
|
8000
|
+
for (let i = 0; i < buf.length; i++) {
|
|
8001
|
+
const strIndex = i << 1;
|
|
8002
|
+
if (buf[i] !==
|
|
8003
|
+
hexCharCodesToInt(str.charCodeAt(strIndex), str.charCodeAt(strIndex + 1))) {
|
|
8004
|
+
return false;
|
|
8005
|
+
}
|
|
8006
|
+
}
|
|
8007
|
+
return true;
|
|
8008
|
+
}
|
|
8009
|
+
const alpha = "a".charCodeAt(0) - 10;
|
|
8010
|
+
const digit = "0".charCodeAt(0);
|
|
8011
|
+
function getDigestHex(tmpBuffer, input, hashLength) {
|
|
8012
|
+
let p = 0;
|
|
8013
|
+
for (let i = 0; i < hashLength; i++) {
|
|
8014
|
+
let nibble = input[i] >>> 4;
|
|
8015
|
+
tmpBuffer[p++] = nibble > 9 ? nibble + alpha : nibble + digit;
|
|
8016
|
+
nibble = input[i] & 0xf;
|
|
8017
|
+
tmpBuffer[p++] = nibble > 9 ? nibble + alpha : nibble + digit;
|
|
8018
|
+
}
|
|
8019
|
+
return String.fromCharCode.apply(null, tmpBuffer);
|
|
8020
|
+
}
|
|
8021
|
+
const getUInt8Buffer = nodeBuffer !== null
|
|
8022
|
+
? (data) => {
|
|
8023
|
+
if (typeof data === "string") {
|
|
8024
|
+
const buf = nodeBuffer.from(data, "utf8");
|
|
8025
|
+
return new Uint8Array(buf.buffer, buf.byteOffset, buf.length);
|
|
8026
|
+
}
|
|
8027
|
+
if (nodeBuffer.isBuffer(data)) {
|
|
8028
|
+
return new Uint8Array(data.buffer, data.byteOffset, data.length);
|
|
8029
|
+
}
|
|
8030
|
+
if (ArrayBuffer.isView(data)) {
|
|
8031
|
+
return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
|
|
8032
|
+
}
|
|
8033
|
+
throw new Error("Invalid data type!");
|
|
8034
|
+
}
|
|
8035
|
+
: (data) => {
|
|
8036
|
+
if (typeof data === "string") {
|
|
8037
|
+
return textEncoder.encode(data);
|
|
8038
|
+
}
|
|
8039
|
+
if (ArrayBuffer.isView(data)) {
|
|
8040
|
+
return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
|
|
8041
|
+
}
|
|
8042
|
+
throw new Error("Invalid data type!");
|
|
8043
|
+
};
|
|
8044
|
+
const base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
|
8045
|
+
const base64Lookup = new Uint8Array(256);
|
|
8046
|
+
for (let i = 0; i < base64Chars.length; i++) {
|
|
8047
|
+
base64Lookup[base64Chars.charCodeAt(i)] = i;
|
|
8048
|
+
}
|
|
8049
|
+
function getDecodeBase64Length(data) {
|
|
8050
|
+
let bufferLength = Math.floor(data.length * 0.75);
|
|
8051
|
+
const len = data.length;
|
|
8052
|
+
if (data[len - 1] === "=") {
|
|
8053
|
+
bufferLength -= 1;
|
|
8054
|
+
if (data[len - 2] === "=") {
|
|
8055
|
+
bufferLength -= 1;
|
|
8056
|
+
}
|
|
8057
|
+
}
|
|
8058
|
+
return bufferLength;
|
|
8059
|
+
}
|
|
8060
|
+
function decodeBase64(data) {
|
|
8061
|
+
const bufferLength = getDecodeBase64Length(data);
|
|
8062
|
+
const len = data.length;
|
|
8063
|
+
const bytes = new Uint8Array(bufferLength);
|
|
8064
|
+
let p = 0;
|
|
8065
|
+
for (let i = 0; i < len; i += 4) {
|
|
8066
|
+
const encoded1 = base64Lookup[data.charCodeAt(i)];
|
|
8067
|
+
const encoded2 = base64Lookup[data.charCodeAt(i + 1)];
|
|
8068
|
+
const encoded3 = base64Lookup[data.charCodeAt(i + 2)];
|
|
8069
|
+
const encoded4 = base64Lookup[data.charCodeAt(i + 3)];
|
|
8070
|
+
bytes[p] = (encoded1 << 2) | (encoded2 >> 4);
|
|
8071
|
+
p += 1;
|
|
8072
|
+
bytes[p] = ((encoded2 & 15) << 4) | (encoded3 >> 2);
|
|
8073
|
+
p += 1;
|
|
8074
|
+
bytes[p] = ((encoded3 & 3) << 6) | (encoded4 & 63);
|
|
8075
|
+
p += 1;
|
|
8076
|
+
}
|
|
8077
|
+
return bytes;
|
|
8078
|
+
}
|
|
8079
|
+
|
|
8080
|
+
const MAX_HEAP = 16 * 1024;
|
|
8081
|
+
const WASM_FUNC_HASH_LENGTH = 4;
|
|
8082
|
+
const wasmMutex = new Mutex();
|
|
8083
|
+
const wasmModuleCache = new Map();
|
|
8084
|
+
function WASMInterface(binary, hashLength) {
|
|
8085
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
8086
|
+
let wasmInstance = null;
|
|
8087
|
+
let memoryView = null;
|
|
8088
|
+
let initialized = false;
|
|
8089
|
+
if (typeof WebAssembly === "undefined") {
|
|
8090
|
+
throw new Error("WebAssembly is not supported in this environment!");
|
|
8091
|
+
}
|
|
8092
|
+
const writeMemory = (data, offset = 0) => {
|
|
8093
|
+
memoryView.set(data, offset);
|
|
8094
|
+
};
|
|
8095
|
+
const getMemory = () => memoryView;
|
|
8096
|
+
const getExports = () => wasmInstance.exports;
|
|
8097
|
+
const setMemorySize = (totalSize) => {
|
|
8098
|
+
wasmInstance.exports.Hash_SetMemorySize(totalSize);
|
|
8099
|
+
const arrayOffset = wasmInstance.exports.Hash_GetBuffer();
|
|
8100
|
+
const memoryBuffer = wasmInstance.exports.memory.buffer;
|
|
8101
|
+
memoryView = new Uint8Array(memoryBuffer, arrayOffset, totalSize);
|
|
8102
|
+
};
|
|
8103
|
+
const getStateSize = () => {
|
|
8104
|
+
const view = new DataView(wasmInstance.exports.memory.buffer);
|
|
8105
|
+
const stateSize = view.getUint32(wasmInstance.exports.STATE_SIZE, true);
|
|
8106
|
+
return stateSize;
|
|
8107
|
+
};
|
|
8108
|
+
const loadWASMPromise = wasmMutex.dispatch(() => __awaiter(this, void 0, void 0, function* () {
|
|
8109
|
+
if (!wasmModuleCache.has(binary.name)) {
|
|
8110
|
+
const asm = decodeBase64(binary.data);
|
|
8111
|
+
const promise = WebAssembly.compile(asm);
|
|
8112
|
+
wasmModuleCache.set(binary.name, promise);
|
|
8113
|
+
}
|
|
8114
|
+
const module = yield wasmModuleCache.get(binary.name);
|
|
8115
|
+
wasmInstance = yield WebAssembly.instantiate(module, {
|
|
8116
|
+
// env: {
|
|
8117
|
+
// emscripten_memcpy_big: (dest, src, num) => {
|
|
8118
|
+
// const memoryBuffer = wasmInstance.exports.memory.buffer;
|
|
8119
|
+
// const memView = new Uint8Array(memoryBuffer, 0);
|
|
8120
|
+
// memView.set(memView.subarray(src, src + num), dest);
|
|
8121
|
+
// },
|
|
8122
|
+
// print_memory: (offset, len) => {
|
|
8123
|
+
// const memoryBuffer = wasmInstance.exports.memory.buffer;
|
|
8124
|
+
// const memView = new Uint8Array(memoryBuffer, 0);
|
|
8125
|
+
// console.log('print_int32', memView.subarray(offset, offset + len));
|
|
8126
|
+
// },
|
|
8127
|
+
// },
|
|
8128
|
+
});
|
|
8129
|
+
// wasmInstance.exports._start();
|
|
8130
|
+
}));
|
|
8131
|
+
const setupInterface = () => __awaiter(this, void 0, void 0, function* () {
|
|
8132
|
+
if (!wasmInstance) {
|
|
8133
|
+
yield loadWASMPromise;
|
|
8134
|
+
}
|
|
8135
|
+
const arrayOffset = wasmInstance.exports.Hash_GetBuffer();
|
|
8136
|
+
const memoryBuffer = wasmInstance.exports.memory.buffer;
|
|
8137
|
+
memoryView = new Uint8Array(memoryBuffer, arrayOffset, MAX_HEAP);
|
|
8138
|
+
});
|
|
8139
|
+
const init = (bits = null) => {
|
|
8140
|
+
initialized = true;
|
|
8141
|
+
wasmInstance.exports.Hash_Init(bits);
|
|
8142
|
+
};
|
|
8143
|
+
const updateUInt8Array = (data) => {
|
|
8144
|
+
let read = 0;
|
|
8145
|
+
while (read < data.length) {
|
|
8146
|
+
const chunk = data.subarray(read, read + MAX_HEAP);
|
|
8147
|
+
read += chunk.length;
|
|
8148
|
+
memoryView.set(chunk);
|
|
8149
|
+
wasmInstance.exports.Hash_Update(chunk.length);
|
|
8150
|
+
}
|
|
8151
|
+
};
|
|
8152
|
+
const update = (data) => {
|
|
8153
|
+
if (!initialized) {
|
|
8154
|
+
throw new Error("update() called before init()");
|
|
8155
|
+
}
|
|
8156
|
+
const Uint8Buffer = getUInt8Buffer(data);
|
|
8157
|
+
updateUInt8Array(Uint8Buffer);
|
|
8158
|
+
};
|
|
8159
|
+
const digestChars = new Uint8Array(hashLength * 2);
|
|
8160
|
+
const digest = (outputType, padding = null) => {
|
|
8161
|
+
if (!initialized) {
|
|
8162
|
+
throw new Error("digest() called before init()");
|
|
8163
|
+
}
|
|
8164
|
+
initialized = false;
|
|
8165
|
+
wasmInstance.exports.Hash_Final(padding);
|
|
8166
|
+
if (outputType === "binary") {
|
|
8167
|
+
// the data is copied to allow GC of the original memory object
|
|
8168
|
+
return memoryView.slice(0, hashLength);
|
|
8169
|
+
}
|
|
8170
|
+
return getDigestHex(digestChars, memoryView, hashLength);
|
|
8171
|
+
};
|
|
8172
|
+
const save = () => {
|
|
8173
|
+
if (!initialized) {
|
|
8174
|
+
throw new Error("save() can only be called after init() and before digest()");
|
|
8175
|
+
}
|
|
8176
|
+
const stateOffset = wasmInstance.exports.Hash_GetState();
|
|
8177
|
+
const stateLength = getStateSize();
|
|
8178
|
+
const memoryBuffer = wasmInstance.exports.memory.buffer;
|
|
8179
|
+
const internalState = new Uint8Array(memoryBuffer, stateOffset, stateLength);
|
|
8180
|
+
// prefix is 4 bytes from SHA1 hash of the WASM binary
|
|
8181
|
+
// it is used to detect incompatible internal states between different versions of hash-wasm
|
|
8182
|
+
const prefixedState = new Uint8Array(WASM_FUNC_HASH_LENGTH + stateLength);
|
|
8183
|
+
writeHexToUInt8(prefixedState, binary.hash);
|
|
8184
|
+
prefixedState.set(internalState, WASM_FUNC_HASH_LENGTH);
|
|
8185
|
+
return prefixedState;
|
|
8186
|
+
};
|
|
8187
|
+
const load = (state) => {
|
|
8188
|
+
if (!(state instanceof Uint8Array)) {
|
|
8189
|
+
throw new Error("load() expects an Uint8Array generated by save()");
|
|
8190
|
+
}
|
|
8191
|
+
const stateOffset = wasmInstance.exports.Hash_GetState();
|
|
8192
|
+
const stateLength = getStateSize();
|
|
8193
|
+
const overallLength = WASM_FUNC_HASH_LENGTH + stateLength;
|
|
8194
|
+
const memoryBuffer = wasmInstance.exports.memory.buffer;
|
|
8195
|
+
if (state.length !== overallLength) {
|
|
8196
|
+
throw new Error(`Bad state length (expected ${overallLength} bytes, got ${state.length})`);
|
|
8197
|
+
}
|
|
8198
|
+
if (!hexStringEqualsUInt8(binary.hash, state.subarray(0, WASM_FUNC_HASH_LENGTH))) {
|
|
8199
|
+
throw new Error("This state was written by an incompatible hash implementation");
|
|
8200
|
+
}
|
|
8201
|
+
const internalState = state.subarray(WASM_FUNC_HASH_LENGTH);
|
|
8202
|
+
new Uint8Array(memoryBuffer, stateOffset, stateLength).set(internalState);
|
|
8203
|
+
initialized = true;
|
|
8204
|
+
};
|
|
8205
|
+
const isDataShort = (data) => {
|
|
8206
|
+
if (typeof data === "string") {
|
|
8207
|
+
// worst case is 4 bytes / char
|
|
8208
|
+
return data.length < MAX_HEAP / 4;
|
|
8209
|
+
}
|
|
8210
|
+
return data.byteLength < MAX_HEAP;
|
|
8211
|
+
};
|
|
8212
|
+
let canSimplify = isDataShort;
|
|
8213
|
+
switch (binary.name) {
|
|
8214
|
+
case "argon2":
|
|
8215
|
+
case "scrypt":
|
|
8216
|
+
canSimplify = () => true;
|
|
8217
|
+
break;
|
|
8218
|
+
case "blake2b":
|
|
8219
|
+
case "blake2s":
|
|
8220
|
+
// if there is a key at blake2 then cannot simplify
|
|
8221
|
+
canSimplify = (data, initParam) => initParam <= 512 && isDataShort(data);
|
|
8222
|
+
break;
|
|
8223
|
+
case "blake3":
|
|
8224
|
+
// if there is a key at blake3 then cannot simplify
|
|
8225
|
+
canSimplify = (data, initParam) => initParam === 0 && isDataShort(data);
|
|
8226
|
+
break;
|
|
8227
|
+
case "xxhash64": // cannot simplify
|
|
8228
|
+
case "xxhash3":
|
|
8229
|
+
case "xxhash128":
|
|
8230
|
+
case "crc64":
|
|
8231
|
+
canSimplify = () => false;
|
|
8232
|
+
break;
|
|
8233
|
+
}
|
|
8234
|
+
// shorthand for (init + update + digest) for better performance
|
|
8235
|
+
const calculate = (data, initParam = null, digestParam = null) => {
|
|
8236
|
+
if (!canSimplify(data, initParam)) {
|
|
8237
|
+
init(initParam);
|
|
8238
|
+
update(data);
|
|
8239
|
+
return digest("hex", digestParam);
|
|
8240
|
+
}
|
|
8241
|
+
const buffer = getUInt8Buffer(data);
|
|
8242
|
+
memoryView.set(buffer);
|
|
8243
|
+
wasmInstance.exports.Hash_Calculate(buffer.length, initParam, digestParam);
|
|
8244
|
+
return getDigestHex(digestChars, memoryView, hashLength);
|
|
8245
|
+
};
|
|
8246
|
+
yield setupInterface();
|
|
8247
|
+
return {
|
|
8248
|
+
getMemory,
|
|
8249
|
+
writeMemory,
|
|
8250
|
+
getExports,
|
|
8251
|
+
setMemorySize,
|
|
8252
|
+
init,
|
|
8253
|
+
update,
|
|
8254
|
+
digest,
|
|
8255
|
+
save,
|
|
8256
|
+
load,
|
|
8257
|
+
calculate,
|
|
8258
|
+
hashLength,
|
|
8259
|
+
};
|
|
8260
|
+
});
|
|
8261
|
+
}
|
|
8262
|
+
|
|
8263
|
+
new Mutex();
|
|
8264
|
+
|
|
8265
|
+
new Mutex();
|
|
8266
|
+
|
|
8267
|
+
new Mutex();
|
|
8268
|
+
|
|
8269
|
+
new Mutex();
|
|
8270
|
+
|
|
8271
|
+
new Mutex();
|
|
8272
|
+
|
|
8273
|
+
new Mutex();
|
|
8274
|
+
|
|
8275
|
+
new Mutex();
|
|
8276
|
+
|
|
8277
|
+
new Mutex();
|
|
8278
|
+
|
|
8279
|
+
var name$c = "sha1";
|
|
8280
|
+
var data$c = "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";
|
|
8281
|
+
var hash$c = "6b530c24";
|
|
8282
|
+
var wasmJson$c = {
|
|
8283
|
+
name: name$c,
|
|
8284
|
+
data: data$c,
|
|
8285
|
+
hash: hash$c
|
|
8286
|
+
};
|
|
8287
|
+
|
|
8288
|
+
new Mutex();
|
|
8289
|
+
/**
|
|
8290
|
+
* Creates a new SHA-1 hash instance
|
|
8291
|
+
*/
|
|
8292
|
+
function createSHA1() {
|
|
8293
|
+
return WASMInterface(wasmJson$c, 20).then((wasm) => {
|
|
8294
|
+
wasm.init();
|
|
8295
|
+
const obj = {
|
|
8296
|
+
init: () => {
|
|
8297
|
+
wasm.init();
|
|
8298
|
+
return obj;
|
|
8299
|
+
},
|
|
8300
|
+
update: (data) => {
|
|
8301
|
+
wasm.update(data);
|
|
8302
|
+
return obj;
|
|
8303
|
+
},
|
|
8304
|
+
// biome-ignore lint/suspicious/noExplicitAny: Conflict with IHasher type
|
|
8305
|
+
digest: (outputType) => wasm.digest(outputType),
|
|
8306
|
+
save: () => wasm.save(),
|
|
8307
|
+
load: (data) => {
|
|
8308
|
+
wasm.load(data);
|
|
8309
|
+
return obj;
|
|
8310
|
+
},
|
|
8311
|
+
blockSize: 64,
|
|
8312
|
+
digestSize: 20,
|
|
8313
|
+
};
|
|
8314
|
+
return obj;
|
|
8315
|
+
});
|
|
8316
|
+
}
|
|
8317
|
+
|
|
8318
|
+
new Mutex();
|
|
8319
|
+
|
|
8320
|
+
new Mutex();
|
|
8321
|
+
|
|
8322
|
+
var name$a = "sha256";
|
|
8323
|
+
var data$a = "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c2pBx6KerX1qIhkgASADcyACcSABIANxcyABQR53IAFBE3dzIAFBCndzaiAaaiICaiIJIBMgEnNxIBJzaiAJQRp3IAlBFXdzIAlBB3dzakHRxqk2aiIaIAIgAXMgA3EgAiABcXMgAkEedyACQRN3cyACQQp3c2ogGGoiA2oiESAJIBNzcSATc2ogEUEadyARQRV3cyARQQd3c2pB59KkoQFqIhggAyACcyABcSADIAJxcyADQR53IANBE3dzIANBCndzaiAUaiIBaiISIBEgCXNxIAlzaiASQRp3IBJBFXdzIBJBB3dzakGFldy9AmoiFCABIANzIAJxIAEgA3FzIAFBHncgAUETd3MgAUEKd3NqIBdqIgJqIhMgI2ogJiASaiAiIBFqICUgCWogEyASIBFzcSARc2ogE0EadyATQRV3cyATQQd3c2pBuMLs8AJqIhcgAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAZaiIDaiIJIBMgEnNxIBJzaiAJQRp3IAlBFXdzIAlBB3dzakH827HpBGoiGSADIAJzIAFxIAMgAnFzIANBHncgA0ETd3MgA0EKd3NqIBpqIgFqIhEgCSATc3EgE3NqIBFBGncgEUEVd3MgEUEHd3NqQZOa4JkFaiIaIAEgA3MgAnEgASADcXMgAUEedyABQRN3cyABQQp3c2ogGGoiAmoiEiARIAlzcSAJc2ogEkEadyASQRV3cyASQQd3c2pB1OapqAZqIhggAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAUaiIDaiITaiAoIBJqICQgEWogJyAJaiATIBIgEXNxIBFzaiATQRp3IBNBFXdzIBNBB3dzakG7laizB2oiFCADIAJzIAFxIAMgAnFzIANBHncgA0ETd3MgA0EKd3NqIBdqIgFqIgkgEyASc3EgEnNqIAlBGncgCUEVd3MgCUEHd3NqQa6Si454aiIXIAEgA3MgAnEgASADcXMgAUEedyABQRN3cyABQQp3c2ogGWoiAmoiESAJIBNzcSATc2ogEUEadyARQRV3cyARQQd3c2pBhdnIk3lqIhkgAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAaaiIDaiISIBEgCXNxIAlzaiASQRp3IBJBFXdzIBJBB3dzakGh0f+VemoiGiADIAJz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";
|
|
8324
|
+
var hash$a = "8c18dd94";
|
|
8325
|
+
var wasmJson$a = {
|
|
8326
|
+
name: name$a,
|
|
8327
|
+
data: data$a,
|
|
8328
|
+
hash: hash$a
|
|
8329
|
+
};
|
|
8330
|
+
|
|
8331
|
+
new Mutex();
|
|
8332
|
+
/**
|
|
8333
|
+
* Creates a new SHA-2 (SHA-224) hash instance
|
|
8334
|
+
*/
|
|
8335
|
+
function createSHA224() {
|
|
8336
|
+
return WASMInterface(wasmJson$a, 28).then((wasm) => {
|
|
8337
|
+
wasm.init(224);
|
|
8338
|
+
const obj = {
|
|
8339
|
+
init: () => {
|
|
8340
|
+
wasm.init(224);
|
|
8341
|
+
return obj;
|
|
8342
|
+
},
|
|
8343
|
+
update: (data) => {
|
|
8344
|
+
wasm.update(data);
|
|
8345
|
+
return obj;
|
|
8346
|
+
},
|
|
8347
|
+
// biome-ignore lint/suspicious/noExplicitAny: Conflict with IHasher type
|
|
8348
|
+
digest: (outputType) => wasm.digest(outputType),
|
|
8349
|
+
save: () => wasm.save(),
|
|
8350
|
+
load: (data) => {
|
|
8351
|
+
wasm.load(data);
|
|
8352
|
+
return obj;
|
|
8353
|
+
},
|
|
8354
|
+
blockSize: 64,
|
|
8355
|
+
digestSize: 28,
|
|
8356
|
+
};
|
|
8357
|
+
return obj;
|
|
8358
|
+
});
|
|
8359
|
+
}
|
|
8360
|
+
|
|
8361
|
+
new Mutex();
|
|
8362
|
+
/**
|
|
8363
|
+
* Creates a new SHA-2 (SHA-256) hash instance
|
|
8364
|
+
*/
|
|
8365
|
+
function createSHA256() {
|
|
8366
|
+
return WASMInterface(wasmJson$a, 32).then((wasm) => {
|
|
8367
|
+
wasm.init(256);
|
|
8368
|
+
const obj = {
|
|
8369
|
+
init: () => {
|
|
8370
|
+
wasm.init(256);
|
|
8371
|
+
return obj;
|
|
8372
|
+
},
|
|
8373
|
+
update: (data) => {
|
|
8374
|
+
wasm.update(data);
|
|
8375
|
+
return obj;
|
|
8376
|
+
},
|
|
8377
|
+
// biome-ignore lint/suspicious/noExplicitAny: Conflict with IHasher type
|
|
8378
|
+
digest: (outputType) => wasm.digest(outputType),
|
|
8379
|
+
save: () => wasm.save(),
|
|
8380
|
+
load: (data) => {
|
|
8381
|
+
wasm.load(data);
|
|
8382
|
+
return obj;
|
|
8383
|
+
},
|
|
8384
|
+
blockSize: 64,
|
|
8385
|
+
digestSize: 32,
|
|
8386
|
+
};
|
|
8387
|
+
return obj;
|
|
8388
|
+
});
|
|
8389
|
+
}
|
|
8390
|
+
|
|
8391
|
+
var name$9 = "sha512";
|
|
8392
|
+
var data$9 = "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";
|
|
8393
|
+
var hash$9 = "f2e40eb1";
|
|
8394
|
+
var wasmJson$9 = {
|
|
8395
|
+
name: name$9,
|
|
8396
|
+
data: data$9,
|
|
8397
|
+
hash: hash$9
|
|
8398
|
+
};
|
|
8399
|
+
|
|
8400
|
+
new Mutex();
|
|
8401
|
+
/**
|
|
8402
|
+
* Creates a new SHA-2 (SHA-384) hash instance
|
|
8403
|
+
*/
|
|
8404
|
+
function createSHA384() {
|
|
8405
|
+
return WASMInterface(wasmJson$9, 48).then((wasm) => {
|
|
8406
|
+
wasm.init(384);
|
|
8407
|
+
const obj = {
|
|
8408
|
+
init: () => {
|
|
8409
|
+
wasm.init(384);
|
|
8410
|
+
return obj;
|
|
8411
|
+
},
|
|
8412
|
+
update: (data) => {
|
|
8413
|
+
wasm.update(data);
|
|
8414
|
+
return obj;
|
|
8415
|
+
},
|
|
8416
|
+
// biome-ignore lint/suspicious/noExplicitAny: Conflict with IHasher type
|
|
8417
|
+
digest: (outputType) => wasm.digest(outputType),
|
|
8418
|
+
save: () => wasm.save(),
|
|
8419
|
+
load: (data) => {
|
|
8420
|
+
wasm.load(data);
|
|
8421
|
+
return obj;
|
|
8422
|
+
},
|
|
8423
|
+
blockSize: 128,
|
|
8424
|
+
digestSize: 48,
|
|
8425
|
+
};
|
|
8426
|
+
return obj;
|
|
8427
|
+
});
|
|
8428
|
+
}
|
|
8429
|
+
|
|
8430
|
+
new Mutex();
|
|
8431
|
+
/**
|
|
8432
|
+
* Creates a new SHA-2 (SHA-512) hash instance
|
|
8433
|
+
*/
|
|
8434
|
+
function createSHA512() {
|
|
8435
|
+
return WASMInterface(wasmJson$9, 64).then((wasm) => {
|
|
8436
|
+
wasm.init(512);
|
|
8437
|
+
const obj = {
|
|
8438
|
+
init: () => {
|
|
8439
|
+
wasm.init(512);
|
|
8440
|
+
return obj;
|
|
8441
|
+
},
|
|
8442
|
+
update: (data) => {
|
|
8443
|
+
wasm.update(data);
|
|
8444
|
+
return obj;
|
|
8445
|
+
},
|
|
8446
|
+
// biome-ignore lint/suspicious/noExplicitAny: Conflict with IHasher type
|
|
8447
|
+
digest: (outputType) => wasm.digest(outputType),
|
|
8448
|
+
save: () => wasm.save(),
|
|
8449
|
+
load: (data) => {
|
|
8450
|
+
wasm.load(data);
|
|
8451
|
+
return obj;
|
|
8452
|
+
},
|
|
8453
|
+
blockSize: 128,
|
|
8454
|
+
digestSize: 64,
|
|
8455
|
+
};
|
|
8456
|
+
return obj;
|
|
8457
|
+
});
|
|
8458
|
+
}
|
|
8459
|
+
|
|
8460
|
+
new Mutex();
|
|
8461
|
+
|
|
8462
|
+
new Mutex();
|
|
8463
|
+
|
|
8464
|
+
new Mutex();
|
|
8465
|
+
|
|
8466
|
+
new Mutex();
|
|
8467
|
+
|
|
8468
|
+
new Mutex();
|
|
8469
|
+
|
|
8470
|
+
new Mutex();
|
|
8471
|
+
|
|
8472
|
+
new Mutex();
|
|
8473
|
+
|
|
8474
|
+
const createHasher = (hashVariant) => {
|
|
8475
|
+
switch (hashVariant) {
|
|
8476
|
+
case 1:
|
|
8477
|
+
return createSHA1();
|
|
8478
|
+
case 224:
|
|
8479
|
+
return createSHA224();
|
|
8480
|
+
case 256:
|
|
8481
|
+
return createSHA256();
|
|
8482
|
+
case 384:
|
|
8483
|
+
return createSHA384();
|
|
8484
|
+
case 512:
|
|
8485
|
+
return createSHA512();
|
|
8486
|
+
default:
|
|
8487
|
+
throw new Error(`unsupported hash variant: ${hashVariant}`);
|
|
8488
|
+
}
|
|
8489
|
+
};
|
|
8490
|
+
const digestBuffer = async (hashVariant, buffer) => {
|
|
8491
|
+
const view = buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);
|
|
8492
|
+
const hasher = await createHasher(hashVariant);
|
|
8493
|
+
hasher.init();
|
|
8494
|
+
hasher.update(view);
|
|
8495
|
+
const digest = hasher.digest('binary');
|
|
8496
|
+
return digest instanceof Uint8Array ? digest : new Uint8Array(digest);
|
|
8497
|
+
};
|
|
7765
8498
|
class CodecHash extends BasicInterface {
|
|
7766
8499
|
codec;
|
|
7767
8500
|
discoCodec;
|
|
7768
8501
|
size;
|
|
7769
|
-
|
|
8502
|
+
codecs;
|
|
8503
|
+
constructor(options = { name: 'disco-hash', codecs: {} }) {
|
|
7770
8504
|
super();
|
|
7771
8505
|
if (options?.name)
|
|
7772
8506
|
this.name = options.name;
|
|
@@ -7774,33 +8508,24 @@ class CodecHash extends BasicInterface {
|
|
|
7774
8508
|
this.name = 'disco-hash';
|
|
7775
8509
|
if (options?.codecs)
|
|
7776
8510
|
this.codecs = options.codecs;
|
|
7777
|
-
return this.init(buffer);
|
|
7778
8511
|
}
|
|
7779
8512
|
async init(uint8Array) {
|
|
7780
8513
|
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
|
-
}
|
|
8514
|
+
if (!(uint8Array instanceof Uint8Array)) {
|
|
8515
|
+
throw new Error('CodecHash only supports Uint8Array input');
|
|
7791
8516
|
}
|
|
7792
|
-
|
|
7793
|
-
|
|
7794
|
-
|
|
7795
|
-
|
|
7796
|
-
|
|
7797
|
-
|
|
7798
|
-
|
|
7799
|
-
|
|
7800
|
-
|
|
8517
|
+
// For large buffers, only check first bytes for codec prefix
|
|
8518
|
+
// Codec prefixes are small (varint encoded), so 100 bytes is more than enough
|
|
8519
|
+
const checkBuffer = uint8Array.length > 100 ? uint8Array.subarray(0, 100) : uint8Array;
|
|
8520
|
+
this.discoCodec = new Codec(checkBuffer);
|
|
8521
|
+
const name = this.discoCodec.name;
|
|
8522
|
+
if (name) {
|
|
8523
|
+
this.name = name;
|
|
8524
|
+
this.decode(uint8Array);
|
|
8525
|
+
}
|
|
8526
|
+
else {
|
|
8527
|
+
await this.encode(uint8Array);
|
|
7801
8528
|
}
|
|
7802
|
-
else if (typeof uint8Array === 'object')
|
|
7803
|
-
await this.fromJSON(uint8Array);
|
|
7804
8529
|
}
|
|
7805
8530
|
return this;
|
|
7806
8531
|
}
|
|
@@ -7820,34 +8545,19 @@ class CodecHash extends BasicInterface {
|
|
|
7820
8545
|
get hash() {
|
|
7821
8546
|
return this.encoded;
|
|
7822
8547
|
}
|
|
7823
|
-
fromJSON(json) {
|
|
7824
|
-
return this.encode(new TextEncoder().encode(JSON.stringify(json, jsonStringifyBigInt)));
|
|
7825
|
-
}
|
|
7826
8548
|
async encode(buffer, name) {
|
|
7827
8549
|
if (!this.name && name)
|
|
7828
8550
|
this.name = name;
|
|
7829
8551
|
if (!buffer)
|
|
7830
|
-
buffer
|
|
8552
|
+
throw new Error('buffer is required for encoding');
|
|
7831
8553
|
this.discoCodec = new Codec(this.name);
|
|
7832
|
-
this.discoCodec.fromName(this.name);
|
|
7833
8554
|
let hashAlg = this.discoCodec.hashAlg;
|
|
7834
8555
|
const hashVariant = Number(hashAlg.split('-')[hashAlg.split('-').length - 1]);
|
|
7835
8556
|
if (hashAlg.includes('dbl')) {
|
|
7836
8557
|
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);
|
|
8558
|
+
buffer = await digestBuffer(hashVariant, buffer);
|
|
7850
8559
|
}
|
|
8560
|
+
this.digest = await digestBuffer(hashVariant, buffer);
|
|
7851
8561
|
this.size = this.digest.length;
|
|
7852
8562
|
this.codec = this.discoCodec.encode();
|
|
7853
8563
|
this.codec = this.discoCodec.codecBuffer;
|
|
@@ -7858,23 +8568,16 @@ class CodecHash extends BasicInterface {
|
|
|
7858
8568
|
return this.encoded;
|
|
7859
8569
|
}
|
|
7860
8570
|
async validate(buffer) {
|
|
7861
|
-
if (
|
|
7862
|
-
|
|
7863
|
-
|
|
7864
|
-
|
|
7865
|
-
|
|
7866
|
-
|
|
7867
|
-
await this.encode(buffer);
|
|
7868
|
-
}
|
|
8571
|
+
if (!(buffer instanceof Uint8Array)) {
|
|
8572
|
+
throw new Error('CodecHash only supports Uint8Array input');
|
|
8573
|
+
}
|
|
8574
|
+
const codec = index$4.decode(buffer);
|
|
8575
|
+
if (this.codecs[codec]) {
|
|
8576
|
+
this.decode(buffer);
|
|
7869
8577
|
}
|
|
7870
|
-
|
|
7871
|
-
|
|
7872
|
-
this.fromHex(buffer);
|
|
7873
|
-
if (this.isBase32(buffer))
|
|
7874
|
-
this.fromBs32(buffer);
|
|
8578
|
+
else {
|
|
8579
|
+
await this.encode(buffer);
|
|
7875
8580
|
}
|
|
7876
|
-
if (typeof buffer === 'object')
|
|
7877
|
-
this.fromJSON(buffer);
|
|
7878
8581
|
}
|
|
7879
8582
|
decode(buffer) {
|
|
7880
8583
|
this.encoded = buffer;
|
|
@@ -7885,7 +8588,7 @@ class CodecHash extends BasicInterface {
|
|
|
7885
8588
|
this.size = index$4.decode(buffer);
|
|
7886
8589
|
this.digest = buffer.slice(index$4.decode.bytes);
|
|
7887
8590
|
if (this.digest.length !== this.size) {
|
|
7888
|
-
throw new Error(`hash length inconsistent: 0x${this.encoded.toString(
|
|
8591
|
+
throw new Error(`hash length inconsistent: 0x${this.encoded.toString()}`);
|
|
7889
8592
|
}
|
|
7890
8593
|
// const discoCodec = new Codec(codec, this.codecs)
|
|
7891
8594
|
this.name = this.discoCodec.name;
|
|
@@ -7910,27 +8613,11 @@ let FormatInterface$1 = class FormatInterface extends BasicInterface {
|
|
|
7910
8613
|
set encoded(value) {
|
|
7911
8614
|
this.#encoded = value;
|
|
7912
8615
|
}
|
|
7913
|
-
init(
|
|
7914
|
-
if (
|
|
7915
|
-
return
|
|
7916
|
-
else if (buffer instanceof Uint8Array)
|
|
7917
|
-
this.fromUint8Array(buffer);
|
|
7918
|
-
else if (buffer instanceof ArrayBuffer)
|
|
7919
|
-
this.fromArrayBuffer(buffer);
|
|
7920
|
-
else if (typeof buffer === 'string') {
|
|
7921
|
-
if (this.isHex(buffer))
|
|
7922
|
-
this.fromHex(buffer);
|
|
7923
|
-
else if (this.isBase58(buffer))
|
|
7924
|
-
this.fromBs58(buffer);
|
|
7925
|
-
else if (this.isBase32(buffer))
|
|
7926
|
-
this.fromBs32(buffer);
|
|
7927
|
-
else
|
|
7928
|
-
this.fromString(buffer);
|
|
8616
|
+
init(value) {
|
|
8617
|
+
if (value instanceof FormatInterface && value?.name === this.name) {
|
|
8618
|
+
return value;
|
|
7929
8619
|
}
|
|
7930
|
-
|
|
7931
|
-
this.create(buffer);
|
|
7932
|
-
}
|
|
7933
|
-
return this;
|
|
8620
|
+
return this.from(value);
|
|
7934
8621
|
}
|
|
7935
8622
|
hasCodec() {
|
|
7936
8623
|
if (!this.encoded)
|
|
@@ -7992,17 +8679,46 @@ let FormatInterface$1 = class FormatInterface extends BasicInterface {
|
|
|
7992
8679
|
const upper = this.hashFormat.charAt(0).toUpperCase();
|
|
7993
8680
|
return `${upper}${this.hashFormat.substring(1, this.hashFormat.length)}`;
|
|
7994
8681
|
}
|
|
8682
|
+
/**
|
|
8683
|
+
* Extract content bytes without codec prefix
|
|
8684
|
+
*/
|
|
8685
|
+
get contentBytes() {
|
|
8686
|
+
if (!this.encoded)
|
|
8687
|
+
return new Uint8Array(0);
|
|
8688
|
+
const codec = new Codec(this.encoded);
|
|
8689
|
+
if (codec.codecBuffer) {
|
|
8690
|
+
return this.encoded.slice(codec.codecBuffer.length);
|
|
8691
|
+
}
|
|
8692
|
+
return this.encoded;
|
|
8693
|
+
}
|
|
7995
8694
|
beforeHashing(decoded) {
|
|
7996
|
-
|
|
8695
|
+
// Avoid copying if not needed
|
|
8696
|
+
if (decoded && Object.prototype.hasOwnProperty.call(decoded, 'hash')) {
|
|
8697
|
+
// Only copy if hash is present
|
|
8698
|
+
const rest = { ...decoded };
|
|
8699
|
+
delete rest.hash;
|
|
8700
|
+
return rest;
|
|
8701
|
+
}
|
|
7997
8702
|
return decoded;
|
|
7998
8703
|
}
|
|
7999
8704
|
/**
|
|
8000
8705
|
* @return {PeernetHash}
|
|
8001
8706
|
*/
|
|
8002
8707
|
get peernetHash() {
|
|
8708
|
+
// Optimize: if decoded has no hash property, contentBytes are already correct
|
|
8709
|
+
// Since protoEncode is deterministic (varint-based), we can use them directly
|
|
8710
|
+
if (this.encoded &&
|
|
8711
|
+
this.decoded &&
|
|
8712
|
+
!Object.prototype.hasOwnProperty.call(this.decoded, 'hash')) {
|
|
8713
|
+
// @ts-ignore
|
|
8714
|
+
const hash = new CodecHash({ name: this.name });
|
|
8715
|
+
return hash.init(this.contentBytes);
|
|
8716
|
+
}
|
|
8717
|
+
// Fallback: must re-encode without hash property
|
|
8003
8718
|
const decoded = this.beforeHashing({ ...this.decoded });
|
|
8004
8719
|
// @ts-ignore
|
|
8005
|
-
|
|
8720
|
+
const hash = new CodecHash({ name: this.name });
|
|
8721
|
+
return hash.init(decoded);
|
|
8006
8722
|
}
|
|
8007
8723
|
/**
|
|
8008
8724
|
* @return {peernetHash}
|
|
@@ -8019,13 +8735,13 @@ let FormatInterface$1 = class FormatInterface extends BasicInterface {
|
|
|
8019
8735
|
this.encoded = buffer;
|
|
8020
8736
|
return this.hasCodec()
|
|
8021
8737
|
? this.decode()
|
|
8022
|
-
: this.create(JSON.parse(
|
|
8738
|
+
: this.create(JSON.parse(this.textDecoder.decode(this.encoded), jsonParseBigInt));
|
|
8023
8739
|
}
|
|
8024
8740
|
fromArrayBuffer(buffer) {
|
|
8025
8741
|
this.encoded = new Uint8Array(buffer, buffer.byteOffset, buffer.byteLength);
|
|
8026
8742
|
return this.hasCodec()
|
|
8027
8743
|
? this.decode()
|
|
8028
|
-
: this.create(JSON.parse(
|
|
8744
|
+
: this.create(JSON.parse(this.textDecoder.decode(this.encoded), jsonParseBigInt));
|
|
8029
8745
|
}
|
|
8030
8746
|
/**
|
|
8031
8747
|
* @param {Object} data
|
|
@@ -8045,6 +8761,9 @@ let FormatInterface$1 = class FormatInterface extends BasicInterface {
|
|
|
8045
8761
|
}
|
|
8046
8762
|
};
|
|
8047
8763
|
|
|
8764
|
+
/**
|
|
8765
|
+
* Interface for defining codec formats
|
|
8766
|
+
*/
|
|
8048
8767
|
const FormatInterface = FormatInterface$1;
|
|
8049
8768
|
|
|
8050
8769
|
var proto$3 = {
|
|
@@ -8071,7 +8790,10 @@ var proto$2 = {
|
|
|
8071
8790
|
reward: BigInt(0),
|
|
8072
8791
|
fees: BigInt(0),
|
|
8073
8792
|
transactions: Array(),
|
|
8074
|
-
validators: new Uint8Array()
|
|
8793
|
+
validators: new Uint8Array(),
|
|
8794
|
+
producer: String(),
|
|
8795
|
+
producerProof: String(),
|
|
8796
|
+
protocolVersion: String()
|
|
8075
8797
|
};
|
|
8076
8798
|
|
|
8077
8799
|
class BlockMessage extends FormatInterface {
|
|
@@ -8162,82 +8884,133 @@ class TransactionMessage extends FormatInterface {
|
|
|
8162
8884
|
({
|
|
8163
8885
|
params: Array()});
|
|
8164
8886
|
|
|
8165
|
-
|
|
8166
|
-
|
|
8167
|
-
|
|
8168
|
-
|
|
8169
|
-
|
|
8170
|
-
|
|
8171
|
-
|
|
8172
|
-
|
|
8173
|
-
|
|
8174
|
-
|
|
8175
|
-
|
|
8176
|
-
|
|
8177
|
-
|
|
8178
|
-
|
|
8179
|
-
|
|
8180
|
-
|
|
8181
|
-
|
|
8182
|
-
|
|
8183
|
-
|
|
8184
|
-
|
|
8185
|
-
|
|
8186
|
-
|
|
8187
|
-
|
|
8188
|
-
|
|
8189
|
-
|
|
8190
|
-
}
|
|
8191
|
-
|
|
8192
|
-
|
|
8193
|
-
|
|
8194
|
-
|
|
8195
|
-
|
|
8196
|
-
|
|
8197
|
-
|
|
8198
|
-
|
|
8199
|
-
|
|
8200
|
-
|
|
8201
|
-
|
|
8202
|
-
|
|
8203
|
-
|
|
8204
|
-
|
|
8205
|
-
|
|
8206
|
-
|
|
8207
|
-
|
|
8208
|
-
|
|
8209
|
-
|
|
8210
|
-
|
|
8211
|
-
|
|
8212
|
-
|
|
8213
|
-
|
|
8214
|
-
|
|
8215
|
-
|
|
8216
|
-
|
|
8217
|
-
|
|
8218
|
-
|
|
8219
|
-
|
|
8220
|
-
|
|
8221
|
-
|
|
8222
|
-
|
|
8223
|
-
|
|
8224
|
-
|
|
8225
|
-
|
|
8226
|
-
|
|
8227
|
-
|
|
8228
|
-
|
|
8229
|
-
|
|
8230
|
-
|
|
8231
|
-
|
|
8232
|
-
this
|
|
8233
|
-
|
|
8234
|
-
|
|
8235
|
-
|
|
8236
|
-
|
|
8237
|
-
|
|
8238
|
-
|
|
8239
|
-
|
|
8240
|
-
|
|
8887
|
+
({
|
|
8888
|
+
index: BigInt(0),
|
|
8889
|
+
round: BigInt(0)});
|
|
8890
|
+
|
|
8891
|
+
({
|
|
8892
|
+
index: BigInt(0),
|
|
8893
|
+
round: BigInt(0)});
|
|
8894
|
+
|
|
8895
|
+
({
|
|
8896
|
+
index: BigInt(0),
|
|
8897
|
+
round: BigInt(0)});
|
|
8898
|
+
|
|
8899
|
+
class EasyWorker {
|
|
8900
|
+
#messageEvent = 'message';
|
|
8901
|
+
#errorEvent = 'error';
|
|
8902
|
+
#isBrowser = false;
|
|
8903
|
+
#isWorker = false;
|
|
8904
|
+
#messageHandler = null;
|
|
8905
|
+
#errorHandler = null;
|
|
8906
|
+
worker;
|
|
8907
|
+
get isWorker() {
|
|
8908
|
+
return this.#isWorker;
|
|
8909
|
+
}
|
|
8910
|
+
constructor(url, options) {
|
|
8911
|
+
return this.#init(url, options);
|
|
8912
|
+
}
|
|
8913
|
+
#init(url, options = {}) {
|
|
8914
|
+
if (url) {
|
|
8915
|
+
if (globalThis.Worker) {
|
|
8916
|
+
this.#isBrowser = true;
|
|
8917
|
+
this.worker = new Worker(url, { ...options });
|
|
8918
|
+
}
|
|
8919
|
+
else {
|
|
8920
|
+
return new Promise((resolve, reject) => {
|
|
8921
|
+
import('child_process').then(({ fork }) => {
|
|
8922
|
+
const child = fork(url, ['easy-worker-child'], options);
|
|
8923
|
+
child.once('error', reject);
|
|
8924
|
+
this.worker = child;
|
|
8925
|
+
resolve(this);
|
|
8926
|
+
}).catch(reject);
|
|
8927
|
+
});
|
|
8928
|
+
}
|
|
8929
|
+
}
|
|
8930
|
+
else {
|
|
8931
|
+
this.#isWorker = true;
|
|
8932
|
+
if (globalThis.process?.argv[2] === 'easy-worker-child') {
|
|
8933
|
+
this.worker = process;
|
|
8934
|
+
}
|
|
8935
|
+
else {
|
|
8936
|
+
this.#isBrowser = true;
|
|
8937
|
+
this.worker = globalThis;
|
|
8938
|
+
}
|
|
8939
|
+
}
|
|
8940
|
+
return this;
|
|
8941
|
+
}
|
|
8942
|
+
onmessage(fn) {
|
|
8943
|
+
if (this.#isBrowser) {
|
|
8944
|
+
this.worker.onmessage = ({ data }) => fn(data);
|
|
8945
|
+
}
|
|
8946
|
+
else {
|
|
8947
|
+
if (this.#messageHandler)
|
|
8948
|
+
this.worker.off(this.#messageEvent, this.#messageHandler);
|
|
8949
|
+
this.#messageHandler = fn;
|
|
8950
|
+
this.worker.on(this.#messageEvent, fn);
|
|
8951
|
+
}
|
|
8952
|
+
}
|
|
8953
|
+
postMessage(message) {
|
|
8954
|
+
if (this.#isBrowser)
|
|
8955
|
+
this.worker.postMessage(message);
|
|
8956
|
+
else
|
|
8957
|
+
this.worker.send(message);
|
|
8958
|
+
}
|
|
8959
|
+
terminate() {
|
|
8960
|
+
if (this.#isBrowser)
|
|
8961
|
+
this.worker.terminate();
|
|
8962
|
+
else
|
|
8963
|
+
this.worker.kill();
|
|
8964
|
+
}
|
|
8965
|
+
onerror(fn) {
|
|
8966
|
+
if (this.#isBrowser) {
|
|
8967
|
+
this.worker.onerror = fn;
|
|
8968
|
+
}
|
|
8969
|
+
else {
|
|
8970
|
+
if (this.#errorHandler)
|
|
8971
|
+
this.worker.off(this.#errorEvent, this.#errorHandler);
|
|
8972
|
+
this.#errorHandler = fn;
|
|
8973
|
+
this.worker.on(this.#errorEvent, fn);
|
|
8974
|
+
}
|
|
8975
|
+
}
|
|
8976
|
+
/**
|
|
8977
|
+
*
|
|
8978
|
+
* @param {*} data
|
|
8979
|
+
* @returns {Promise} resolves result onmessage & rejects on error
|
|
8980
|
+
*/
|
|
8981
|
+
once(data) {
|
|
8982
|
+
return new Promise((resolve, reject) => {
|
|
8983
|
+
if (this.#isBrowser) {
|
|
8984
|
+
const handleMessage = ({ data: result }) => {
|
|
8985
|
+
this.worker.onerror = null;
|
|
8986
|
+
resolve(result);
|
|
8987
|
+
this.terminate();
|
|
8988
|
+
};
|
|
8989
|
+
const handleError = (error) => {
|
|
8990
|
+
this.worker.onmessage = null;
|
|
8991
|
+
reject(error);
|
|
8992
|
+
this.terminate();
|
|
8993
|
+
};
|
|
8994
|
+
this.worker.onmessage = handleMessage;
|
|
8995
|
+
this.worker.onerror = handleError;
|
|
8996
|
+
}
|
|
8997
|
+
else {
|
|
8998
|
+
const handleMessage = (result) => {
|
|
8999
|
+
this.worker.off(this.#errorEvent, handleError);
|
|
9000
|
+
resolve(result);
|
|
9001
|
+
this.terminate();
|
|
9002
|
+
};
|
|
9003
|
+
const handleError = (error) => {
|
|
9004
|
+
this.worker.off(this.#messageEvent, handleMessage);
|
|
9005
|
+
reject(error);
|
|
9006
|
+
this.terminate();
|
|
9007
|
+
};
|
|
9008
|
+
this.worker.once(this.#messageEvent, handleMessage);
|
|
9009
|
+
this.worker.once(this.#errorEvent, handleError);
|
|
9010
|
+
}
|
|
9011
|
+
this.postMessage(data);
|
|
9012
|
+
});
|
|
9013
|
+
}
|
|
8241
9014
|
}
|
|
8242
9015
|
|
|
8243
9016
|
export { BlockMessage as B, ContractMessage as C, EasyWorker as E, TransactionMessage as T };
|