@leofcoin/workers 1.5.27 → 1.5.28

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.
@@ -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.$bigint ? BigInt(value.$bigint) : value;
7198
+ const jsonParseBigInt$1 = (key, value) => typeof value === 'object' && value?.$bigint ? BigInt(value.$bigint) : value;
7246
7199
 
7247
- const { toString } = index$1;
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 instanceof BigInt)
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['min:'][1] : 0;
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 };
7265
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;
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 new TextEncoder().encode(data.toString());
7276
- // returns the string as UintArray
7231
+ return encoder.encode(data.toString());
7277
7232
  if (typeof data === 'string')
7278
- return new TextEncoder().encode(data);
7279
- // returns the object as UintArray
7233
+ return encoder.encode(data);
7280
7234
  if (typeof data === 'object')
7281
- return new TextEncoder().encode(JSON.stringify(data, jsonStringifyBigInt$1));
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 new TextEncoder().encode(data.toString());
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 keys = Object.keys(proto);
7289
- const values = Object.values(proto);
7241
+ const tokens = getTokens(proto);
7290
7242
  const set = [];
7291
- for (let i = 0; i < values.length; i++) {
7292
- const token = tokenize(keys[i], values[i]);
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
- // always push data to the set.
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 keys = Object.keys(proto);
7311
- const values = Object.values(proto);
7312
- if (keys.length !== deconcated.length)
7313
- console.warn(`length mismatch: expected ${keys.length} got ${uint8Array.length}`);
7314
- for (let i = 0; i < values.length; i++) {
7315
- const token = tokenize(keys[i], values[i]);
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 (isString(token.type))
7323
+ else if (token.type === 'string')
7319
7324
  output[token.key] = toString(deconcated[i]);
7320
- else if (isBoolean(token.type))
7321
- output[token.key] = new TextDecoder().decode(deconcated[i]) === 'true';
7322
- else if (isNumber(token.type))
7323
- output[token.key] = Number(new TextDecoder().decode(deconcated[i]));
7324
- else if (isBigInt(token.type))
7325
- output[token.key] = BigInt(new TextDecoder().decode(deconcated[i]));
7326
- else output[token.key] = JSON.parse(new TextDecoder().decode(deconcated[i]), jsonParseBigInt$1);
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
- const jsonStringifyBigInt = (key, value) => typeof value === 'bigint' ? { $bigint: value.toString() } : value;
7342
- const jsonParseBigInt = (key, value) => typeof value === 'object' && value.$bigint ? BigInt(value.$bigint) : value;
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
- return new Object();
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
- return new Uint8Array();
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
- // check schema
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
- // check schema
7390
- return index.decode(this.proto, data, false);
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
- return this.decode(Uint8Array.from([...array]));
7424
- }
7425
- fromEncoded(encoded) {
7426
- return this.decode(encoded);
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
- return this.encoded.toString();
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
- return toHex(this.encoded
7437
- .toString()
7438
- .split(',')
7439
- .map((number) => Number(number)));
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
- return toBase32(this.encoded);
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
@@ -7703,9 +7816,10 @@ class Codec extends BasicInterface {
7703
7816
  else
7704
7817
  this.fromString(buffer);
7705
7818
  }
7706
- if (!isNaN(buffer))
7819
+ else if (typeof buffer === 'number') {
7707
7820
  if (utils.getCodec(buffer))
7708
7821
  this.fromCodec(buffer);
7822
+ }
7709
7823
  }
7710
7824
  }
7711
7825
  fromEncoded(encoded) {
@@ -7762,11 +7876,603 @@ class Codec extends BasicInterface {
7762
7876
  }
7763
7877
  }
7764
7878
 
7879
+ /*!
7880
+ * hash-wasm (https://www.npmjs.com/package/hash-wasm)
7881
+ * (c) Dani Biro
7882
+ * @license MIT
7883
+ */
7884
+
7885
+
7886
+ /******************************************************************************
7887
+ Copyright (c) Microsoft Corporation.
7888
+
7889
+ Permission to use, copy, modify, and/or distribute this software for any
7890
+ purpose with or without fee is hereby granted.
7891
+
7892
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
7893
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
7894
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
7895
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
7896
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
7897
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
7898
+ PERFORMANCE OF THIS SOFTWARE.
7899
+ ***************************************************************************** */
7900
+ /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
7901
+
7902
+
7903
+ function __awaiter(thisArg, _arguments, P, generator) {
7904
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
7905
+ return new (P || (P = Promise))(function (resolve, reject) {
7906
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7907
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7908
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7909
+ step((generator = generator.apply(thisArg, [])).next());
7910
+ });
7911
+ }
7912
+
7913
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
7914
+ var e = new Error(message);
7915
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
7916
+ };
7917
+
7918
+ class Mutex {
7919
+ constructor() {
7920
+ this.mutex = Promise.resolve();
7921
+ }
7922
+ lock() {
7923
+ let begin = () => { };
7924
+ this.mutex = this.mutex.then(() => new Promise(begin));
7925
+ return new Promise((res) => {
7926
+ begin = res;
7927
+ });
7928
+ }
7929
+ dispatch(fn) {
7930
+ return __awaiter(this, void 0, void 0, function* () {
7931
+ const unlock = yield this.lock();
7932
+ try {
7933
+ return yield Promise.resolve(fn());
7934
+ }
7935
+ finally {
7936
+ unlock();
7937
+ }
7938
+ });
7939
+ }
7940
+ }
7941
+
7942
+ var _a;
7943
+ function getGlobal() {
7944
+ if (typeof globalThis !== "undefined")
7945
+ return globalThis;
7946
+ if (typeof self !== "undefined")
7947
+ return self;
7948
+ if (typeof window !== "undefined")
7949
+ return window;
7950
+ return global;
7951
+ }
7952
+ const globalObject = getGlobal();
7953
+ const nodeBuffer = (_a = globalObject.Buffer) !== null && _a !== void 0 ? _a : null;
7954
+ const textEncoder = globalObject.TextEncoder
7955
+ ? new globalObject.TextEncoder()
7956
+ : null;
7957
+ function hexCharCodesToInt(a, b) {
7958
+ return ((((a & 0xf) + ((a >> 6) | ((a >> 3) & 0x8))) << 4) |
7959
+ ((b & 0xf) + ((b >> 6) | ((b >> 3) & 0x8))));
7960
+ }
7961
+ function writeHexToUInt8(buf, str) {
7962
+ const size = str.length >> 1;
7963
+ for (let i = 0; i < size; i++) {
7964
+ const index = i << 1;
7965
+ buf[i] = hexCharCodesToInt(str.charCodeAt(index), str.charCodeAt(index + 1));
7966
+ }
7967
+ }
7968
+ function hexStringEqualsUInt8(str, buf) {
7969
+ if (str.length !== buf.length * 2) {
7970
+ return false;
7971
+ }
7972
+ for (let i = 0; i < buf.length; i++) {
7973
+ const strIndex = i << 1;
7974
+ if (buf[i] !==
7975
+ hexCharCodesToInt(str.charCodeAt(strIndex), str.charCodeAt(strIndex + 1))) {
7976
+ return false;
7977
+ }
7978
+ }
7979
+ return true;
7980
+ }
7981
+ const alpha = "a".charCodeAt(0) - 10;
7982
+ const digit = "0".charCodeAt(0);
7983
+ function getDigestHex(tmpBuffer, input, hashLength) {
7984
+ let p = 0;
7985
+ for (let i = 0; i < hashLength; i++) {
7986
+ let nibble = input[i] >>> 4;
7987
+ tmpBuffer[p++] = nibble > 9 ? nibble + alpha : nibble + digit;
7988
+ nibble = input[i] & 0xf;
7989
+ tmpBuffer[p++] = nibble > 9 ? nibble + alpha : nibble + digit;
7990
+ }
7991
+ return String.fromCharCode.apply(null, tmpBuffer);
7992
+ }
7993
+ const getUInt8Buffer = nodeBuffer !== null
7994
+ ? (data) => {
7995
+ if (typeof data === "string") {
7996
+ const buf = nodeBuffer.from(data, "utf8");
7997
+ return new Uint8Array(buf.buffer, buf.byteOffset, buf.length);
7998
+ }
7999
+ if (nodeBuffer.isBuffer(data)) {
8000
+ return new Uint8Array(data.buffer, data.byteOffset, data.length);
8001
+ }
8002
+ if (ArrayBuffer.isView(data)) {
8003
+ return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
8004
+ }
8005
+ throw new Error("Invalid data type!");
8006
+ }
8007
+ : (data) => {
8008
+ if (typeof data === "string") {
8009
+ return textEncoder.encode(data);
8010
+ }
8011
+ if (ArrayBuffer.isView(data)) {
8012
+ return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
8013
+ }
8014
+ throw new Error("Invalid data type!");
8015
+ };
8016
+ const base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
8017
+ const base64Lookup = new Uint8Array(256);
8018
+ for (let i = 0; i < base64Chars.length; i++) {
8019
+ base64Lookup[base64Chars.charCodeAt(i)] = i;
8020
+ }
8021
+ function getDecodeBase64Length(data) {
8022
+ let bufferLength = Math.floor(data.length * 0.75);
8023
+ const len = data.length;
8024
+ if (data[len - 1] === "=") {
8025
+ bufferLength -= 1;
8026
+ if (data[len - 2] === "=") {
8027
+ bufferLength -= 1;
8028
+ }
8029
+ }
8030
+ return bufferLength;
8031
+ }
8032
+ function decodeBase64(data) {
8033
+ const bufferLength = getDecodeBase64Length(data);
8034
+ const len = data.length;
8035
+ const bytes = new Uint8Array(bufferLength);
8036
+ let p = 0;
8037
+ for (let i = 0; i < len; i += 4) {
8038
+ const encoded1 = base64Lookup[data.charCodeAt(i)];
8039
+ const encoded2 = base64Lookup[data.charCodeAt(i + 1)];
8040
+ const encoded3 = base64Lookup[data.charCodeAt(i + 2)];
8041
+ const encoded4 = base64Lookup[data.charCodeAt(i + 3)];
8042
+ bytes[p] = (encoded1 << 2) | (encoded2 >> 4);
8043
+ p += 1;
8044
+ bytes[p] = ((encoded2 & 15) << 4) | (encoded3 >> 2);
8045
+ p += 1;
8046
+ bytes[p] = ((encoded3 & 3) << 6) | (encoded4 & 63);
8047
+ p += 1;
8048
+ }
8049
+ return bytes;
8050
+ }
8051
+
8052
+ const MAX_HEAP = 16 * 1024;
8053
+ const WASM_FUNC_HASH_LENGTH = 4;
8054
+ const wasmMutex = new Mutex();
8055
+ const wasmModuleCache = new Map();
8056
+ function WASMInterface(binary, hashLength) {
8057
+ return __awaiter(this, void 0, void 0, function* () {
8058
+ let wasmInstance = null;
8059
+ let memoryView = null;
8060
+ let initialized = false;
8061
+ if (typeof WebAssembly === "undefined") {
8062
+ throw new Error("WebAssembly is not supported in this environment!");
8063
+ }
8064
+ const writeMemory = (data, offset = 0) => {
8065
+ memoryView.set(data, offset);
8066
+ };
8067
+ const getMemory = () => memoryView;
8068
+ const getExports = () => wasmInstance.exports;
8069
+ const setMemorySize = (totalSize) => {
8070
+ wasmInstance.exports.Hash_SetMemorySize(totalSize);
8071
+ const arrayOffset = wasmInstance.exports.Hash_GetBuffer();
8072
+ const memoryBuffer = wasmInstance.exports.memory.buffer;
8073
+ memoryView = new Uint8Array(memoryBuffer, arrayOffset, totalSize);
8074
+ };
8075
+ const getStateSize = () => {
8076
+ const view = new DataView(wasmInstance.exports.memory.buffer);
8077
+ const stateSize = view.getUint32(wasmInstance.exports.STATE_SIZE, true);
8078
+ return stateSize;
8079
+ };
8080
+ const loadWASMPromise = wasmMutex.dispatch(() => __awaiter(this, void 0, void 0, function* () {
8081
+ if (!wasmModuleCache.has(binary.name)) {
8082
+ const asm = decodeBase64(binary.data);
8083
+ const promise = WebAssembly.compile(asm);
8084
+ wasmModuleCache.set(binary.name, promise);
8085
+ }
8086
+ const module = yield wasmModuleCache.get(binary.name);
8087
+ wasmInstance = yield WebAssembly.instantiate(module, {
8088
+ // env: {
8089
+ // emscripten_memcpy_big: (dest, src, num) => {
8090
+ // const memoryBuffer = wasmInstance.exports.memory.buffer;
8091
+ // const memView = new Uint8Array(memoryBuffer, 0);
8092
+ // memView.set(memView.subarray(src, src + num), dest);
8093
+ // },
8094
+ // print_memory: (offset, len) => {
8095
+ // const memoryBuffer = wasmInstance.exports.memory.buffer;
8096
+ // const memView = new Uint8Array(memoryBuffer, 0);
8097
+ // console.log('print_int32', memView.subarray(offset, offset + len));
8098
+ // },
8099
+ // },
8100
+ });
8101
+ // wasmInstance.exports._start();
8102
+ }));
8103
+ const setupInterface = () => __awaiter(this, void 0, void 0, function* () {
8104
+ if (!wasmInstance) {
8105
+ yield loadWASMPromise;
8106
+ }
8107
+ const arrayOffset = wasmInstance.exports.Hash_GetBuffer();
8108
+ const memoryBuffer = wasmInstance.exports.memory.buffer;
8109
+ memoryView = new Uint8Array(memoryBuffer, arrayOffset, MAX_HEAP);
8110
+ });
8111
+ const init = (bits = null) => {
8112
+ initialized = true;
8113
+ wasmInstance.exports.Hash_Init(bits);
8114
+ };
8115
+ const updateUInt8Array = (data) => {
8116
+ let read = 0;
8117
+ while (read < data.length) {
8118
+ const chunk = data.subarray(read, read + MAX_HEAP);
8119
+ read += chunk.length;
8120
+ memoryView.set(chunk);
8121
+ wasmInstance.exports.Hash_Update(chunk.length);
8122
+ }
8123
+ };
8124
+ const update = (data) => {
8125
+ if (!initialized) {
8126
+ throw new Error("update() called before init()");
8127
+ }
8128
+ const Uint8Buffer = getUInt8Buffer(data);
8129
+ updateUInt8Array(Uint8Buffer);
8130
+ };
8131
+ const digestChars = new Uint8Array(hashLength * 2);
8132
+ const digest = (outputType, padding = null) => {
8133
+ if (!initialized) {
8134
+ throw new Error("digest() called before init()");
8135
+ }
8136
+ initialized = false;
8137
+ wasmInstance.exports.Hash_Final(padding);
8138
+ if (outputType === "binary") {
8139
+ // the data is copied to allow GC of the original memory object
8140
+ return memoryView.slice(0, hashLength);
8141
+ }
8142
+ return getDigestHex(digestChars, memoryView, hashLength);
8143
+ };
8144
+ const save = () => {
8145
+ if (!initialized) {
8146
+ throw new Error("save() can only be called after init() and before digest()");
8147
+ }
8148
+ const stateOffset = wasmInstance.exports.Hash_GetState();
8149
+ const stateLength = getStateSize();
8150
+ const memoryBuffer = wasmInstance.exports.memory.buffer;
8151
+ const internalState = new Uint8Array(memoryBuffer, stateOffset, stateLength);
8152
+ // prefix is 4 bytes from SHA1 hash of the WASM binary
8153
+ // it is used to detect incompatible internal states between different versions of hash-wasm
8154
+ const prefixedState = new Uint8Array(WASM_FUNC_HASH_LENGTH + stateLength);
8155
+ writeHexToUInt8(prefixedState, binary.hash);
8156
+ prefixedState.set(internalState, WASM_FUNC_HASH_LENGTH);
8157
+ return prefixedState;
8158
+ };
8159
+ const load = (state) => {
8160
+ if (!(state instanceof Uint8Array)) {
8161
+ throw new Error("load() expects an Uint8Array generated by save()");
8162
+ }
8163
+ const stateOffset = wasmInstance.exports.Hash_GetState();
8164
+ const stateLength = getStateSize();
8165
+ const overallLength = WASM_FUNC_HASH_LENGTH + stateLength;
8166
+ const memoryBuffer = wasmInstance.exports.memory.buffer;
8167
+ if (state.length !== overallLength) {
8168
+ throw new Error(`Bad state length (expected ${overallLength} bytes, got ${state.length})`);
8169
+ }
8170
+ if (!hexStringEqualsUInt8(binary.hash, state.subarray(0, WASM_FUNC_HASH_LENGTH))) {
8171
+ throw new Error("This state was written by an incompatible hash implementation");
8172
+ }
8173
+ const internalState = state.subarray(WASM_FUNC_HASH_LENGTH);
8174
+ new Uint8Array(memoryBuffer, stateOffset, stateLength).set(internalState);
8175
+ initialized = true;
8176
+ };
8177
+ const isDataShort = (data) => {
8178
+ if (typeof data === "string") {
8179
+ // worst case is 4 bytes / char
8180
+ return data.length < MAX_HEAP / 4;
8181
+ }
8182
+ return data.byteLength < MAX_HEAP;
8183
+ };
8184
+ let canSimplify = isDataShort;
8185
+ switch (binary.name) {
8186
+ case "argon2":
8187
+ case "scrypt":
8188
+ canSimplify = () => true;
8189
+ break;
8190
+ case "blake2b":
8191
+ case "blake2s":
8192
+ // if there is a key at blake2 then cannot simplify
8193
+ canSimplify = (data, initParam) => initParam <= 512 && isDataShort(data);
8194
+ break;
8195
+ case "blake3":
8196
+ // if there is a key at blake3 then cannot simplify
8197
+ canSimplify = (data, initParam) => initParam === 0 && isDataShort(data);
8198
+ break;
8199
+ case "xxhash64": // cannot simplify
8200
+ case "xxhash3":
8201
+ case "xxhash128":
8202
+ case "crc64":
8203
+ canSimplify = () => false;
8204
+ break;
8205
+ }
8206
+ // shorthand for (init + update + digest) for better performance
8207
+ const calculate = (data, initParam = null, digestParam = null) => {
8208
+ if (!canSimplify(data, initParam)) {
8209
+ init(initParam);
8210
+ update(data);
8211
+ return digest("hex", digestParam);
8212
+ }
8213
+ const buffer = getUInt8Buffer(data);
8214
+ memoryView.set(buffer);
8215
+ wasmInstance.exports.Hash_Calculate(buffer.length, initParam, digestParam);
8216
+ return getDigestHex(digestChars, memoryView, hashLength);
8217
+ };
8218
+ yield setupInterface();
8219
+ return {
8220
+ getMemory,
8221
+ writeMemory,
8222
+ getExports,
8223
+ setMemorySize,
8224
+ init,
8225
+ update,
8226
+ digest,
8227
+ save,
8228
+ load,
8229
+ calculate,
8230
+ hashLength,
8231
+ };
8232
+ });
8233
+ }
8234
+
8235
+ new Mutex();
8236
+
8237
+ new Mutex();
8238
+
8239
+ new Mutex();
8240
+
8241
+ new Mutex();
8242
+
8243
+ new Mutex();
8244
+
8245
+ new Mutex();
8246
+
8247
+ new Mutex();
8248
+
8249
+ new Mutex();
8250
+
8251
+ var name$c = "sha1";
8252
+ var data$c = "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";
8253
+ var hash$c = "6b530c24";
8254
+ var wasmJson$c = {
8255
+ name: name$c,
8256
+ data: data$c,
8257
+ hash: hash$c
8258
+ };
8259
+
8260
+ new Mutex();
8261
+ /**
8262
+ * Creates a new SHA-1 hash instance
8263
+ */
8264
+ function createSHA1() {
8265
+ return WASMInterface(wasmJson$c, 20).then((wasm) => {
8266
+ wasm.init();
8267
+ const obj = {
8268
+ init: () => {
8269
+ wasm.init();
8270
+ return obj;
8271
+ },
8272
+ update: (data) => {
8273
+ wasm.update(data);
8274
+ return obj;
8275
+ },
8276
+ // biome-ignore lint/suspicious/noExplicitAny: Conflict with IHasher type
8277
+ digest: (outputType) => wasm.digest(outputType),
8278
+ save: () => wasm.save(),
8279
+ load: (data) => {
8280
+ wasm.load(data);
8281
+ return obj;
8282
+ },
8283
+ blockSize: 64,
8284
+ digestSize: 20,
8285
+ };
8286
+ return obj;
8287
+ });
8288
+ }
8289
+
8290
+ new Mutex();
8291
+
8292
+ new Mutex();
8293
+
8294
+ var name$a = "sha256";
8295
+ var data$a = "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c2pBx6KerX1qIhkgASADcyACcSABIANxcyABQR53IAFBE3dzIAFBCndzaiAaaiICaiIJIBMgEnNxIBJzaiAJQRp3IAlBFXdzIAlBB3dzakHRxqk2aiIaIAIgAXMgA3EgAiABcXMgAkEedyACQRN3cyACQQp3c2ogGGoiA2oiESAJIBNzcSATc2ogEUEadyARQRV3cyARQQd3c2pB59KkoQFqIhggAyACcyABcSADIAJxcyADQR53IANBE3dzIANBCndzaiAUaiIBaiISIBEgCXNxIAlzaiASQRp3IBJBFXdzIBJBB3dzakGFldy9AmoiFCABIANzIAJxIAEgA3FzIAFBHncgAUETd3MgAUEKd3NqIBdqIgJqIhMgI2ogJiASaiAiIBFqICUgCWogEyASIBFzcSARc2ogE0EadyATQRV3cyATQQd3c2pBuMLs8AJqIhcgAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAZaiIDaiIJIBMgEnNxIBJzaiAJQRp3IAlBFXdzIAlBB3dzakH827HpBGoiGSADIAJzIAFxIAMgAnFzIANBHncgA0ETd3MgA0EKd3NqIBpqIgFqIhEgCSATc3EgE3NqIBFBGncgEUEVd3MgEUEHd3NqQZOa4JkFaiIaIAEgA3MgAnEgASADcXMgAUEedyABQRN3cyABQQp3c2ogGGoiAmoiEiARIAlzcSAJc2ogEkEadyASQRV3cyASQQd3c2pB1OapqAZqIhggAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAUaiIDaiITaiAoIBJqICQgEWogJyAJaiATIBIgEXNxIBFzaiATQRp3IBNBFXdzIBNBB3dzakG7laizB2oiFCADIAJzIAFxIAMgAnFzIANBHncgA0ETd3MgA0EKd3NqIBdqIgFqIgkgEyASc3EgEnNqIAlBGncgCUEVd3MgCUEHd3NqQa6Si454aiIXIAEgA3MgAnEgASADcXMgAUEedyABQRN3cyABQQp3c2ogGWoiAmoiESAJIBNzcSATc2ogEUEadyARQRV3cyARQQd3c2pBhdnIk3lqIhkgAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAaaiIDaiISIBEgCXNxIAlzaiASQRp3IBJBFXdzIBJBB3dzakGh0f+VemoiGiADIAJz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";
8296
+ var hash$a = "8c18dd94";
8297
+ var wasmJson$a = {
8298
+ name: name$a,
8299
+ data: data$a,
8300
+ hash: hash$a
8301
+ };
8302
+
8303
+ new Mutex();
8304
+ /**
8305
+ * Creates a new SHA-2 (SHA-224) hash instance
8306
+ */
8307
+ function createSHA224() {
8308
+ return WASMInterface(wasmJson$a, 28).then((wasm) => {
8309
+ wasm.init(224);
8310
+ const obj = {
8311
+ init: () => {
8312
+ wasm.init(224);
8313
+ return obj;
8314
+ },
8315
+ update: (data) => {
8316
+ wasm.update(data);
8317
+ return obj;
8318
+ },
8319
+ // biome-ignore lint/suspicious/noExplicitAny: Conflict with IHasher type
8320
+ digest: (outputType) => wasm.digest(outputType),
8321
+ save: () => wasm.save(),
8322
+ load: (data) => {
8323
+ wasm.load(data);
8324
+ return obj;
8325
+ },
8326
+ blockSize: 64,
8327
+ digestSize: 28,
8328
+ };
8329
+ return obj;
8330
+ });
8331
+ }
8332
+
8333
+ new Mutex();
8334
+ /**
8335
+ * Creates a new SHA-2 (SHA-256) hash instance
8336
+ */
8337
+ function createSHA256() {
8338
+ return WASMInterface(wasmJson$a, 32).then((wasm) => {
8339
+ wasm.init(256);
8340
+ const obj = {
8341
+ init: () => {
8342
+ wasm.init(256);
8343
+ return obj;
8344
+ },
8345
+ update: (data) => {
8346
+ wasm.update(data);
8347
+ return obj;
8348
+ },
8349
+ // biome-ignore lint/suspicious/noExplicitAny: Conflict with IHasher type
8350
+ digest: (outputType) => wasm.digest(outputType),
8351
+ save: () => wasm.save(),
8352
+ load: (data) => {
8353
+ wasm.load(data);
8354
+ return obj;
8355
+ },
8356
+ blockSize: 64,
8357
+ digestSize: 32,
8358
+ };
8359
+ return obj;
8360
+ });
8361
+ }
8362
+
8363
+ var name$9 = "sha512";
8364
+ var data$9 = "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";
8365
+ var hash$9 = "f2e40eb1";
8366
+ var wasmJson$9 = {
8367
+ name: name$9,
8368
+ data: data$9,
8369
+ hash: hash$9
8370
+ };
8371
+
8372
+ new Mutex();
8373
+ /**
8374
+ * Creates a new SHA-2 (SHA-384) hash instance
8375
+ */
8376
+ function createSHA384() {
8377
+ return WASMInterface(wasmJson$9, 48).then((wasm) => {
8378
+ wasm.init(384);
8379
+ const obj = {
8380
+ init: () => {
8381
+ wasm.init(384);
8382
+ return obj;
8383
+ },
8384
+ update: (data) => {
8385
+ wasm.update(data);
8386
+ return obj;
8387
+ },
8388
+ // biome-ignore lint/suspicious/noExplicitAny: Conflict with IHasher type
8389
+ digest: (outputType) => wasm.digest(outputType),
8390
+ save: () => wasm.save(),
8391
+ load: (data) => {
8392
+ wasm.load(data);
8393
+ return obj;
8394
+ },
8395
+ blockSize: 128,
8396
+ digestSize: 48,
8397
+ };
8398
+ return obj;
8399
+ });
8400
+ }
8401
+
8402
+ new Mutex();
8403
+ /**
8404
+ * Creates a new SHA-2 (SHA-512) hash instance
8405
+ */
8406
+ function createSHA512() {
8407
+ return WASMInterface(wasmJson$9, 64).then((wasm) => {
8408
+ wasm.init(512);
8409
+ const obj = {
8410
+ init: () => {
8411
+ wasm.init(512);
8412
+ return obj;
8413
+ },
8414
+ update: (data) => {
8415
+ wasm.update(data);
8416
+ return obj;
8417
+ },
8418
+ // biome-ignore lint/suspicious/noExplicitAny: Conflict with IHasher type
8419
+ digest: (outputType) => wasm.digest(outputType),
8420
+ save: () => wasm.save(),
8421
+ load: (data) => {
8422
+ wasm.load(data);
8423
+ return obj;
8424
+ },
8425
+ blockSize: 128,
8426
+ digestSize: 64,
8427
+ };
8428
+ return obj;
8429
+ });
8430
+ }
8431
+
8432
+ new Mutex();
8433
+
8434
+ new Mutex();
8435
+
8436
+ new Mutex();
8437
+
8438
+ new Mutex();
8439
+
8440
+ new Mutex();
8441
+
8442
+ new Mutex();
8443
+
8444
+ new Mutex();
8445
+
8446
+ const createHasher = (hashVariant) => {
8447
+ switch (hashVariant) {
8448
+ case 1:
8449
+ return createSHA1();
8450
+ case 224:
8451
+ return createSHA224();
8452
+ case 256:
8453
+ return createSHA256();
8454
+ case 384:
8455
+ return createSHA384();
8456
+ case 512:
8457
+ return createSHA512();
8458
+ default:
8459
+ throw new Error(`unsupported hash variant: ${hashVariant}`);
8460
+ }
8461
+ };
8462
+ const digestBuffer = async (hashVariant, buffer) => {
8463
+ const view = buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);
8464
+ const hasher = await createHasher(hashVariant);
8465
+ hasher.init();
8466
+ hasher.update(view);
8467
+ const digest = hasher.digest('binary');
8468
+ return digest instanceof Uint8Array ? digest : new Uint8Array(digest);
8469
+ };
7765
8470
  class CodecHash extends BasicInterface {
7766
8471
  codec;
7767
8472
  discoCodec;
7768
8473
  size;
7769
- constructor(buffer, options) {
8474
+ codecs;
8475
+ constructor(options = { name: 'disco-hash', codecs: {} }) {
7770
8476
  super();
7771
8477
  if (options?.name)
7772
8478
  this.name = options.name;
@@ -7774,33 +8480,24 @@ class CodecHash extends BasicInterface {
7774
8480
  this.name = 'disco-hash';
7775
8481
  if (options?.codecs)
7776
8482
  this.codecs = options.codecs;
7777
- return this.init(buffer);
7778
8483
  }
7779
8484
  async init(uint8Array) {
7780
8485
  if (uint8Array) {
7781
- if (uint8Array instanceof Uint8Array) {
7782
- this.discoCodec = new Codec(uint8Array);
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
- }
8486
+ if (!(uint8Array instanceof Uint8Array)) {
8487
+ throw new Error('CodecHash only supports Uint8Array input');
7791
8488
  }
7792
- if (typeof uint8Array === 'string') {
7793
- if (this.isHex(uint8Array))
7794
- await this.fromHex(uint8Array);
7795
- if (this.isBase32(uint8Array))
7796
- await this.fromBs32(uint8Array);
7797
- else if (this.isBase58(uint8Array))
7798
- await this.fromBs58(uint8Array);
7799
- else
7800
- throw new Error(`unsupported string ${uint8Array}`);
8489
+ // For large buffers, only check first bytes for codec prefix
8490
+ // Codec prefixes are small (varint encoded), so 100 bytes is more than enough
8491
+ const checkBuffer = uint8Array.length > 100 ? uint8Array.subarray(0, 100) : uint8Array;
8492
+ this.discoCodec = new Codec(checkBuffer);
8493
+ const name = this.discoCodec.name;
8494
+ if (name) {
8495
+ this.name = name;
8496
+ this.decode(uint8Array);
8497
+ }
8498
+ else {
8499
+ await this.encode(uint8Array);
7801
8500
  }
7802
- else if (typeof uint8Array === 'object')
7803
- await this.fromJSON(uint8Array);
7804
8501
  }
7805
8502
  return this;
7806
8503
  }
@@ -7820,34 +8517,19 @@ class CodecHash extends BasicInterface {
7820
8517
  get hash() {
7821
8518
  return this.encoded;
7822
8519
  }
7823
- fromJSON(json) {
7824
- return this.encode(new TextEncoder().encode(JSON.stringify(json, jsonStringifyBigInt)));
7825
- }
7826
8520
  async encode(buffer, name) {
7827
8521
  if (!this.name && name)
7828
8522
  this.name = name;
7829
8523
  if (!buffer)
7830
- buffer = this.buffer;
8524
+ throw new Error('buffer is required for encoding');
7831
8525
  this.discoCodec = new Codec(this.name);
7832
- this.discoCodec.fromName(this.name);
7833
8526
  let hashAlg = this.discoCodec.hashAlg;
7834
8527
  const hashVariant = Number(hashAlg.split('-')[hashAlg.split('-').length - 1]);
7835
8528
  if (hashAlg.includes('dbl')) {
7836
8529
  hashAlg = hashAlg.replace('dbl-', '');
7837
- // const hasher = await createKeccak(hashVariant)
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);
8530
+ buffer = await digestBuffer(hashVariant, buffer);
7850
8531
  }
8532
+ this.digest = await digestBuffer(hashVariant, buffer);
7851
8533
  this.size = this.digest.length;
7852
8534
  this.codec = this.discoCodec.encode();
7853
8535
  this.codec = this.discoCodec.codecBuffer;
@@ -7858,23 +8540,16 @@ class CodecHash extends BasicInterface {
7858
8540
  return this.encoded;
7859
8541
  }
7860
8542
  async validate(buffer) {
7861
- if (Buffer.isBuffer(buffer)) {
7862
- const codec = index$4.decode(buffer);
7863
- if (this.codecs[codec]) {
7864
- this.decode(buffer);
7865
- }
7866
- else {
7867
- await this.encode(buffer);
7868
- }
8543
+ if (!(buffer instanceof Uint8Array)) {
8544
+ throw new Error('CodecHash only supports Uint8Array input');
8545
+ }
8546
+ const codec = index$4.decode(buffer);
8547
+ if (this.codecs[codec]) {
8548
+ this.decode(buffer);
7869
8549
  }
7870
- if (typeof buffer === 'string') {
7871
- if (this.isHex(buffer))
7872
- this.fromHex(buffer);
7873
- if (this.isBase32(buffer))
7874
- this.fromBs32(buffer);
8550
+ else {
8551
+ await this.encode(buffer);
7875
8552
  }
7876
- if (typeof buffer === 'object')
7877
- this.fromJSON(buffer);
7878
8553
  }
7879
8554
  decode(buffer) {
7880
8555
  this.encoded = buffer;
@@ -7885,7 +8560,7 @@ class CodecHash extends BasicInterface {
7885
8560
  this.size = index$4.decode(buffer);
7886
8561
  this.digest = buffer.slice(index$4.decode.bytes);
7887
8562
  if (this.digest.length !== this.size) {
7888
- throw new Error(`hash length inconsistent: 0x${this.encoded.toString('hex')}`);
8563
+ throw new Error(`hash length inconsistent: 0x${this.encoded.toString()}`);
7889
8564
  }
7890
8565
  // const discoCodec = new Codec(codec, this.codecs)
7891
8566
  this.name = this.discoCodec.name;
@@ -7910,27 +8585,11 @@ let FormatInterface$1 = class FormatInterface extends BasicInterface {
7910
8585
  set encoded(value) {
7911
8586
  this.#encoded = value;
7912
8587
  }
7913
- init(buffer) {
7914
- if (buffer instanceof FormatInterface && buffer?.name === this.name)
7915
- return buffer;
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);
7929
- }
7930
- else {
7931
- this.create(buffer);
8588
+ init(value) {
8589
+ if (value instanceof FormatInterface && value?.name === this.name) {
8590
+ return value;
7932
8591
  }
7933
- return this;
8592
+ return this.from(value);
7934
8593
  }
7935
8594
  hasCodec() {
7936
8595
  if (!this.encoded)
@@ -7992,17 +8651,46 @@ let FormatInterface$1 = class FormatInterface extends BasicInterface {
7992
8651
  const upper = this.hashFormat.charAt(0).toUpperCase();
7993
8652
  return `${upper}${this.hashFormat.substring(1, this.hashFormat.length)}`;
7994
8653
  }
8654
+ /**
8655
+ * Extract content bytes without codec prefix
8656
+ */
8657
+ get contentBytes() {
8658
+ if (!this.encoded)
8659
+ return new Uint8Array(0);
8660
+ const codec = new Codec(this.encoded);
8661
+ if (codec.codecBuffer) {
8662
+ return this.encoded.slice(codec.codecBuffer.length);
8663
+ }
8664
+ return this.encoded;
8665
+ }
7995
8666
  beforeHashing(decoded) {
7996
- delete decoded.hash;
8667
+ // Avoid copying if not needed
8668
+ if (decoded && Object.prototype.hasOwnProperty.call(decoded, 'hash')) {
8669
+ // Only copy if hash is present
8670
+ const rest = { ...decoded };
8671
+ delete rest.hash;
8672
+ return rest;
8673
+ }
7997
8674
  return decoded;
7998
8675
  }
7999
8676
  /**
8000
8677
  * @return {PeernetHash}
8001
8678
  */
8002
8679
  get peernetHash() {
8680
+ // Optimize: if decoded has no hash property, contentBytes are already correct
8681
+ // Since protoEncode is deterministic (varint-based), we can use them directly
8682
+ if (this.encoded &&
8683
+ this.decoded &&
8684
+ !Object.prototype.hasOwnProperty.call(this.decoded, 'hash')) {
8685
+ // @ts-ignore
8686
+ const hash = new CodecHash({ name: this.name });
8687
+ return hash.init(this.contentBytes);
8688
+ }
8689
+ // Fallback: must re-encode without hash property
8003
8690
  const decoded = this.beforeHashing({ ...this.decoded });
8004
8691
  // @ts-ignore
8005
- return new CodecHash(decoded, { name: this.name });
8692
+ const hash = new CodecHash({ name: this.name });
8693
+ return hash.init(decoded);
8006
8694
  }
8007
8695
  /**
8008
8696
  * @return {peernetHash}
@@ -8019,13 +8707,13 @@ let FormatInterface$1 = class FormatInterface extends BasicInterface {
8019
8707
  this.encoded = buffer;
8020
8708
  return this.hasCodec()
8021
8709
  ? this.decode()
8022
- : this.create(JSON.parse(new TextDecoder().decode(this.encoded), jsonParseBigInt));
8710
+ : this.create(JSON.parse(this.textDecoder.decode(this.encoded), jsonParseBigInt));
8023
8711
  }
8024
8712
  fromArrayBuffer(buffer) {
8025
8713
  this.encoded = new Uint8Array(buffer, buffer.byteOffset, buffer.byteLength);
8026
8714
  return this.hasCodec()
8027
8715
  ? this.decode()
8028
- : this.create(JSON.parse(new TextDecoder().decode(this.encoded), jsonParseBigInt));
8716
+ : this.create(JSON.parse(this.textDecoder.decode(this.encoded), jsonParseBigInt));
8029
8717
  }
8030
8718
  /**
8031
8719
  * @param {Object} data
@@ -8045,6 +8733,9 @@ let FormatInterface$1 = class FormatInterface extends BasicInterface {
8045
8733
  }
8046
8734
  };
8047
8735
 
8736
+ /**
8737
+ * Interface for defining codec formats
8738
+ */
8048
8739
  const FormatInterface = FormatInterface$1;
8049
8740
 
8050
8741
  var proto$3 = {
@@ -8071,7 +8762,10 @@ var proto$2 = {
8071
8762
  reward: BigInt(0),
8072
8763
  fees: BigInt(0),
8073
8764
  transactions: Array(),
8074
- validators: new Uint8Array()
8765
+ validators: new Uint8Array(),
8766
+ producer: String(),
8767
+ producerProof: String(),
8768
+ protocolVersion: String()
8075
8769
  };
8076
8770
 
8077
8771
  class BlockMessage extends FormatInterface {
@@ -8162,82 +8856,121 @@ class TransactionMessage extends FormatInterface {
8162
8856
  ({
8163
8857
  params: Array()});
8164
8858
 
8165
- class EasyWorker {
8166
- #messageEvent = 'message'
8167
- #errorEvent = 'error'
8168
- #isBrowser = false
8169
- #isWorker = false
8170
-
8171
- get isWorker() {
8172
- return this.#isWorker
8173
- }
8174
- constructor(url, options) {
8175
- return this.#init(url, options)
8176
- }
8177
-
8178
- #init(url, options = {}) {
8179
- if (url) {
8180
- if (globalThis.Worker) {
8181
- this.#isBrowser = true;
8182
- this.worker = new Worker(url, {...options});
8183
- } else {
8184
- return new Promise(async (resolve, reject) => {
8185
- const {fork} = await import('child_process');
8186
- this.worker = fork(url, ['easy-worker-child'], options);
8187
- resolve(this);
8188
- })
8189
- }
8190
- } else {
8191
- this.#isWorker = true;
8192
- if (globalThis.process?.argv[2] === 'easy-worker-child') {
8193
- this.worker = process;
8194
- } else {
8195
- this.#isBrowser = true;
8196
- this.worker = globalThis;
8197
- }
8198
- }
8199
-
8200
- return this
8201
- }
8202
-
8203
- onmessage(fn) {
8204
- if (this.#isBrowser) this.worker.onmessage = ({data}) => fn(data);
8205
- else this.worker.on(this.#messageEvent, fn);
8206
- }
8207
-
8208
- postMessage(message) {
8209
- if (this.#isBrowser) this.worker.postMessage(message);
8210
- else this.worker.send(message);
8211
- }
8212
-
8213
- terminate() {
8214
- if (this.#isBrowser) this.worker.terminate();
8215
- else this.worker.kill();
8216
- }
8217
-
8218
- onerror(fn) {
8219
- if (this.#isBrowser) this.worker.onerror = fn;
8220
- else this.worker.on(this.#errorEvent, fn);
8221
- }
8222
-
8223
- /**
8224
- *
8225
- * @param {*} data
8226
- * @returns {Promise} resolves result onmessage & rejects on error
8227
- */
8228
- once(data) {
8229
- return new Promise((resolve, reject) => {
8230
- this.onmessage(message => {
8231
- resolve(message);
8232
- this.terminate();
8233
- });
8234
- this.onerror(error => {
8235
- reject(error);
8236
- this.terminate();
8237
- });
8238
- this.postMessage(data);
8239
- })
8240
- }
8859
+ class EasyWorker {
8860
+ #messageEvent = 'message';
8861
+ #errorEvent = 'error';
8862
+ #isBrowser = false;
8863
+ #isWorker = false;
8864
+ #messageHandler = null;
8865
+ #errorHandler = null;
8866
+ worker;
8867
+ get isWorker() {
8868
+ return this.#isWorker;
8869
+ }
8870
+ constructor(url, options) {
8871
+ return this.#init(url, options);
8872
+ }
8873
+ #init(url, options = {}) {
8874
+ if (url) {
8875
+ if (globalThis.Worker) {
8876
+ this.#isBrowser = true;
8877
+ this.worker = new Worker(url, { ...options });
8878
+ }
8879
+ else {
8880
+ return new Promise((resolve, reject) => {
8881
+ import('child_process').then(({ fork }) => {
8882
+ const child = fork(url, ['easy-worker-child'], options);
8883
+ child.once('error', reject);
8884
+ this.worker = child;
8885
+ resolve(this);
8886
+ }).catch(reject);
8887
+ });
8888
+ }
8889
+ }
8890
+ else {
8891
+ this.#isWorker = true;
8892
+ if (globalThis.process?.argv[2] === 'easy-worker-child') {
8893
+ this.worker = process;
8894
+ }
8895
+ else {
8896
+ this.#isBrowser = true;
8897
+ this.worker = globalThis;
8898
+ }
8899
+ }
8900
+ return this;
8901
+ }
8902
+ onmessage(fn) {
8903
+ if (this.#isBrowser) {
8904
+ this.worker.onmessage = ({ data }) => fn(data);
8905
+ }
8906
+ else {
8907
+ if (this.#messageHandler)
8908
+ this.worker.off(this.#messageEvent, this.#messageHandler);
8909
+ this.#messageHandler = fn;
8910
+ this.worker.on(this.#messageEvent, fn);
8911
+ }
8912
+ }
8913
+ postMessage(message) {
8914
+ if (this.#isBrowser)
8915
+ this.worker.postMessage(message);
8916
+ else
8917
+ this.worker.send(message);
8918
+ }
8919
+ terminate() {
8920
+ if (this.#isBrowser)
8921
+ this.worker.terminate();
8922
+ else
8923
+ this.worker.kill();
8924
+ }
8925
+ onerror(fn) {
8926
+ if (this.#isBrowser) {
8927
+ this.worker.onerror = fn;
8928
+ }
8929
+ else {
8930
+ if (this.#errorHandler)
8931
+ this.worker.off(this.#errorEvent, this.#errorHandler);
8932
+ this.#errorHandler = fn;
8933
+ this.worker.on(this.#errorEvent, fn);
8934
+ }
8935
+ }
8936
+ /**
8937
+ *
8938
+ * @param {*} data
8939
+ * @returns {Promise} resolves result onmessage & rejects on error
8940
+ */
8941
+ once(data) {
8942
+ return new Promise((resolve, reject) => {
8943
+ if (this.#isBrowser) {
8944
+ const handleMessage = ({ data: result }) => {
8945
+ this.worker.onerror = null;
8946
+ resolve(result);
8947
+ this.terminate();
8948
+ };
8949
+ const handleError = (error) => {
8950
+ this.worker.onmessage = null;
8951
+ reject(error);
8952
+ this.terminate();
8953
+ };
8954
+ this.worker.onmessage = handleMessage;
8955
+ this.worker.onerror = handleError;
8956
+ }
8957
+ else {
8958
+ const handleMessage = (result) => {
8959
+ this.worker.off(this.#errorEvent, handleError);
8960
+ resolve(result);
8961
+ this.terminate();
8962
+ };
8963
+ const handleError = (error) => {
8964
+ this.worker.off(this.#messageEvent, handleMessage);
8965
+ reject(error);
8966
+ this.terminate();
8967
+ };
8968
+ this.worker.once(this.#messageEvent, handleMessage);
8969
+ this.worker.once(this.#errorEvent, handleError);
8970
+ }
8971
+ this.postMessage(data);
8972
+ });
8973
+ }
8241
8974
  }
8242
8975
 
8243
8976
  export { BlockMessage as B, ContractMessage as C, EasyWorker as E, TransactionMessage as T };