@lodestar/utils 1.16.0-dev.d1caa1f617 → 1.16.0-dev.d1dc217d00

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/lib/format.d.ts CHANGED
@@ -19,11 +19,9 @@ export declare function truncBytes(root: Uint8Array | string): string;
19
19
  */
20
20
  export declare function formatBigDecimal(numerator: bigint, denominator: bigint, maxDecimalFactor: bigint): string;
21
21
  /**
22
- * Format wei as ETH, with up to 5 decimals
23
- *
24
- * if suffix is true, append ' ETH'
22
+ * Format wei as ETH, with up to 5 decimals and append ' ETH'
25
23
  */
26
- export declare function prettyWeiToEth(wei: bigint, suffix?: boolean): string;
24
+ export declare function prettyWeiToEth(wei: bigint): string;
27
25
  /**
28
26
  * Format milliseconds to time format HH:MM:SS.ms
29
27
  */
package/lib/format.js CHANGED
@@ -38,15 +38,10 @@ export function formatBigDecimal(numerator, denominator, maxDecimalFactor) {
38
38
  // display upto 5 decimal places
39
39
  const MAX_DECIMAL_FACTOR = BigInt("100000");
40
40
  /**
41
- * Format wei as ETH, with up to 5 decimals
42
- *
43
- * if suffix is true, append ' ETH'
41
+ * Format wei as ETH, with up to 5 decimals and append ' ETH'
44
42
  */
45
- export function prettyWeiToEth(wei, suffix = false) {
46
- let eth = formatBigDecimal(wei, ETH_TO_WEI, MAX_DECIMAL_FACTOR);
47
- if (suffix)
48
- eth += " ETH";
49
- return eth;
43
+ export function prettyWeiToEth(wei) {
44
+ return `${formatBigDecimal(wei, ETH_TO_WEI, MAX_DECIMAL_FACTOR)} ETH`;
50
45
  }
51
46
  /**
52
47
  * Format milliseconds to time format HH:MM:SS.ms
package/lib/format.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,YAAY,CAAC;AACvC,OAAO,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAE9C;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,IAAyB;IACnD,MAAM,GAAG,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChE,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAyB;IACxD,MAAM,GAAG,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChE,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,IAAyB;IAClD,MAAM,GAAG,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChE,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB,EAAE,WAAmB,EAAE,gBAAwB;IAC/F,MAAM,IAAI,GAAG,SAAS,GAAG,WAAW,CAAC;IACrC,MAAM,QAAQ,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI,GAAG,WAAW,CAAC,GAAG,gBAAgB,CAAC,GAAG,WAAW,CAAC;IAErF,wGAAwG;IACxG,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;IACvF,OAAO,GAAG,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,QAAQ,EAAE,CAAC;AAC9D,CAAC;AAED,gCAAgC;AAChC,MAAM,kBAAkB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAE5C;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,MAAM,GAAG,KAAK;IACxD,IAAI,GAAG,GAAG,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAChE,IAAI,MAAM;QAAE,GAAG,IAAI,MAAM,CAAC;IAC1B,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAChD,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;AAClG,CAAC"}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,YAAY,CAAC;AACvC,OAAO,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAE9C;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,IAAyB;IACnD,MAAM,GAAG,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChE,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAyB;IACxD,MAAM,GAAG,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChE,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,IAAyB;IAClD,MAAM,GAAG,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChE,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB,EAAE,WAAmB,EAAE,gBAAwB;IAC/F,MAAM,IAAI,GAAG,SAAS,GAAG,WAAW,CAAC;IACrC,MAAM,QAAQ,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI,GAAG,WAAW,CAAC,GAAG,gBAAgB,CAAC,GAAG,WAAW,CAAC;IAErF,wGAAwG;IACxG,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;IACvF,OAAO,GAAG,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,QAAQ,EAAE,CAAC;AAC9D,CAAC;AAED,gCAAgC;AAChC,MAAM,kBAAkB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAE5C;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,OAAO,GAAG,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,kBAAkB,CAAC,MAAM,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAChD,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;AAClG,CAAC"}
package/lib/metrics.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { NonEmptyArray } from "./types.js";
1
2
  export type NoLabels = Record<string, never>;
2
3
  export type LabelsGeneric = Record<string, string | number>;
3
4
  export type LabelKeys<Labels extends LabelsGeneric> = Extract<keyof Labels, string>;
@@ -30,7 +31,7 @@ export type GaugeConfig<Labels extends LabelsGeneric> = {
30
31
  } & (NoLabels extends Labels ? {
31
32
  labelNames?: never;
32
33
  } : {
33
- labelNames: [LabelKeys<Labels>, ...LabelKeys<Labels>[]];
34
+ labelNames: NonEmptyArray<LabelKeys<Labels>>;
34
35
  });
35
36
  export type HistogramConfig<Labels extends LabelsGeneric> = GaugeConfig<Labels> & {
36
37
  buckets?: number[];
package/lib/promise.d.ts CHANGED
@@ -26,11 +26,6 @@ export type PromiseRejectedResult<T> = PromiseResult<T> & {
26
26
  * Wrap a promise to an object to track the status and value of the promise
27
27
  */
28
28
  export declare function wrapPromise<T>(promise: PromiseLike<T>): PromiseResult<T>;
29
- /**
30
- * ArrayToTuple converts an `Array<T>` to `[T, ...T]`
31
- *
32
- * eg: `[1, 2, 3]` from type `number[]` to `[number, number, number]`
33
- */
34
29
  type ReturnPromiseWithTuple<Tuple extends NonEmptyArray<PromiseLike<unknown>>> = {
35
30
  [Index in keyof ArrayToTuple<Tuple>]: PromiseResult<Awaited<Tuple[Index]>>;
36
31
  };
package/lib/promise.js CHANGED
@@ -55,6 +55,8 @@ export async function resolveOrRacePromises(promises, { resolveTimeoutMs, raceTi
55
55
  const resolveTimeoutError = new TimeoutError(`Given promises can't be resolved within resolveTimeoutMs=${resolveTimeoutMs}`);
56
56
  const raceTimeoutError = new TimeoutError(`Not a any single promise be resolved in given raceTimeoutMs=${raceTimeoutMs}`);
57
57
  const promiseResults = promises.map((p) => wrapPromise(p));
58
+ // We intentionally want an array of promises here
59
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
58
60
  promises = promiseResults.map((p) => p.promise);
59
61
  try {
60
62
  await Promise.race([
@@ -1 +1 @@
1
- {"version":3,"file":"promise.js","sourceRoot":"","sources":["../src/promise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,YAAY,EAAC,MAAM,aAAa,CAAC;AACvD,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AAGjC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,CAA0B,EAC1B,EAAc,EACd,QAAgB;IAEhB,IAAI,CAAC,GAA+B,SAAS,CAAC;IAC9C,MAAM,KAAK,GAAG,KAAK,IAAwB,EAAE;QAC3C,OAAO,CAAC,KAAK,SAAS,EAAE;YACtB,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;YACtB,IAAI,CAAC,KAAK,SAAS;gBAAE,EAAE,EAAE,CAAC;SAC3B;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,CAAC,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACrC,2DAA2D;IAC3D,IAAI,CAAC,KAAK,SAAS,EAAE;QACnB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;KAC9C;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAsBD;;GAEG;AACH,MAAM,UAAU,WAAW,CAAI,OAAuB;IACpD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,MAAM,MAAM,GAAG;QACb,OAAO,EAAE,OAAO,CAAC,IAAI,CACnB,CAAC,KAAK,EAAE,EAAE;YACR,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC;YAC3B,MAAoC,CAAC,KAAK,GAAG,KAAK,CAAC;YACnD,MAAoC,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAC1E,OAAO,KAAK,CAAC;QACf,CAAC,EACD,CAAC,MAAe,EAAE,EAAE;YAClB,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;YAC1B,MAAmC,CAAC,MAAM,GAAG,MAAe,CAAC;YAC7D,MAAmC,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACzE,MAAM,MAAM,CAAC;QACf,CAAC,CACF;QACD,MAAM,EAAE,SAAS;KACE,CAAC;IAEtB,OAAO,MAAM,CAAC;AAChB,CAAC;AAWD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,QAAW,EACX,EACE,gBAAgB,EAChB,aAAa,EACb,MAAM,GAKP;IAED,IAAI,aAAa,IAAI,gBAAgB,EAAE;QACrC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;KAChE;IACD,MAAM,mBAAmB,GAAG,IAAI,YAAY,CAC1C,4DAA4D,gBAAgB,EAAE,CAC/E,CAAC;IACF,MAAM,gBAAgB,GAAG,IAAI,YAAY,CACvC,+DAA+D,aAAa,EAAE,CAC/E,CAAC;IAEF,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAA8B,CAAC;IACxF,QAAQ,GAAI,cAAqC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAiB,CAAC;IAExF,IAAI;QACF,MAAM,OAAO,CAAC,IAAI,CAAC;YACjB,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC5B,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBACxC,MAAM,mBAAmB,CAAC;YAC5B,CAAC,CAAC;SACH,CAAC,CAAC;QAEH,OAAO,cAAc,CAAC;KACvB;IAAC,OAAO,GAAG,EAAE;QACZ,IAAI,GAAG,YAAY,YAAY,EAAE;YAC/B,OAAO,cAAc,CAAC;SACvB;QACD,IAAI,GAAG,KAAK,mBAAmB,EAAE;YAC/B,MAAM,GAAG,CAAC;SACX;KACF;IAED,IAAI;QACF,MAAM,OAAO,CAAC,IAAI,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;YACrB,KAAK,CAAC,aAAa,GAAG,gBAAgB,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBACxD,MAAM,gBAAgB,CAAC;YACzB,CAAC,CAAC;SACH,CAAC,CAAC;QAEH,OAAO,cAAc,CAAC;KACvB;IAAC,OAAO,GAAG,EAAE;QACZ,IAAI,GAAG,YAAY,YAAY,EAAE;YAC/B,OAAO,cAAc,CAAC;SACvB;QACD,IAAI,GAAG,KAAK,gBAAgB,IAAI,CAAC,CAAC,GAAG,YAAY,cAAc,CAAC,EAAE;YAChE,MAAM,GAAG,CAAC;SACX;KACF;IAED,OAAO,cAAc,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"promise.js","sourceRoot":"","sources":["../src/promise.ts"],"names":[],"mappings":"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"}
package/lib/retry.d.ts CHANGED
@@ -4,11 +4,17 @@ export type RetryOptions = {
4
4
  */
5
5
  retries?: number;
6
6
  /**
7
- * An optional Function that is invoked after the provided callback throws
8
- * It expects a boolean to know if it should retry or not
9
- * Useful to make retrying conditional on the type of error thrown
7
+ * An optional Function that is invoked after the provided callback throws.
8
+ * It expects a boolean to know if it should retry or not.
9
+ * Useful to make retrying conditional on the type of error thrown.
10
10
  */
11
11
  shouldRetry?: (lastError: Error) => boolean;
12
+ /**
13
+ * An optional Function that is invoked right before a retry is performed.
14
+ * It's passed the Error that triggered it and a number identifying the attempt.
15
+ * Useful to track number of retries and errors in logs or metrics.
16
+ */
17
+ onRetry?: (lastError: Error, attempt: number) => unknown;
12
18
  /**
13
19
  * Milliseconds to wait before retrying again
14
20
  */
package/lib/retry.js CHANGED
@@ -8,9 +8,13 @@ import { sleep } from "./sleep.js";
8
8
  export async function retry(fn, opts) {
9
9
  const maxRetries = opts?.retries ?? 5;
10
10
  const shouldRetry = opts?.shouldRetry;
11
+ const onRetry = opts?.onRetry;
11
12
  let lastError = Error("RetryError");
12
13
  for (let i = 1; i <= maxRetries; i++) {
13
14
  try {
15
+ // If not the first attempt, invoke right before retrying
16
+ if (i > 1)
17
+ onRetry?.(lastError, i);
14
18
  return await fn(i);
15
19
  }
16
20
  catch (e) {
package/lib/retry.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"retry.js","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AAoBjC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAI,EAAuC,EAAE,IAAmB;IACzF,MAAM,UAAU,GAAG,IAAI,EAAE,OAAO,IAAI,CAAC,CAAC;IACtC,MAAM,WAAW,GAAG,IAAI,EAAE,WAAW,CAAC;IAEtC,IAAI,SAAS,GAAU,KAAK,CAAC,YAAY,CAAC,CAAC;IAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,EAAE,EAAE;QACpC,IAAI;YACF,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;SACpB;QAAC,OAAO,CAAC,EAAE;YACV,SAAS,GAAG,CAAU,CAAC;YACvB,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;gBAC1C,MAAM;aACP;iBAAM,IAAI,IAAI,EAAE,UAAU,KAAK,SAAS,EAAE;gBACzC,MAAM,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;aAC7C;SACF;KACF;IACD,MAAM,SAAS,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AA0BjC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAI,EAAuC,EAAE,IAAmB;IACzF,MAAM,UAAU,GAAG,IAAI,EAAE,OAAO,IAAI,CAAC,CAAC;IACtC,MAAM,WAAW,GAAG,IAAI,EAAE,WAAW,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,CAAC;IAE9B,IAAI,SAAS,GAAU,KAAK,CAAC,YAAY,CAAC,CAAC;IAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,EAAE,EAAE;QACpC,IAAI;YACF,yDAAyD;YACzD,IAAI,CAAC,GAAG,CAAC;gBAAE,OAAO,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YAEnC,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;SACpB;QAAC,OAAO,CAAC,EAAE;YACV,SAAS,GAAG,CAAU,CAAC;YACvB,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;gBAC1C,MAAM;aACP;iBAAM,IAAI,IAAI,EAAE,UAAU,KAAK,SAAS,EAAE;gBACzC,MAAM,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;aAC7C;SACF;KACF;IACD,MAAM,SAAS,CAAC;AAClB,CAAC"}
package/lib/sleep.js CHANGED
@@ -10,7 +10,6 @@ export async function sleep(ms, signal) {
10
10
  return new Promise((resolve, reject) => {
11
11
  if (signal && signal.aborted)
12
12
  return reject(new ErrorAborted());
13
- // eslint-disable-next-line @typescript-eslint/no-empty-function
14
13
  let onDone = () => { };
15
14
  const timeout = setTimeout(() => {
16
15
  onDone();
package/lib/sleep.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sleep.js","sourceRoot":"","sources":["../src/sleep.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAEzC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,EAAU,EAAE,MAAoB;IAC1D,IAAI,EAAE,GAAG,CAAC,EAAE;QACV,OAAO;KACR;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO;YAAE,OAAO,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;QAEhE,gEAAgE;QAChE,IAAI,MAAM,GAAe,GAAG,EAAE,GAAE,CAAC,CAAC;QAElC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,MAAM,EAAE,CAAC;YACT,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,MAAM,OAAO,GAAG,GAAS,EAAE;YACzB,MAAM,EAAE,CAAC;YACT,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC;QACF,IAAI,MAAM;YAAE,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEtD,MAAM,GAAG,GAAG,EAAE;YACZ,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,IAAI,MAAM;gBAAE,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3D,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"sleep.js","sourceRoot":"","sources":["../src/sleep.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAEzC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,EAAU,EAAE,MAAoB;IAC1D,IAAI,EAAE,GAAG,CAAC,EAAE;QACV,OAAO;KACR;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO;YAAE,OAAO,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;QAEhE,IAAI,MAAM,GAAe,GAAG,EAAE,GAAE,CAAC,CAAC;QAElC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,MAAM,EAAE,CAAC;YACT,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,MAAM,OAAO,GAAG,GAAS,EAAE;YACzB,MAAM,EAAE,CAAC;YACT,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC;QACF,IAAI,MAAM;YAAE,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEtD,MAAM,GAAG,GAAG,EAAE;YACZ,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,IAAI,MAAM;gBAAE,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3D,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
package/lib/types.d.ts CHANGED
@@ -8,6 +8,11 @@ export type RecursivePartial<T> = {
8
8
  /** Type safe wrapper for Number constructor that takes 'any' */
9
9
  export declare function bnToNum(bn: bigint): number;
10
10
  export type NonEmptyArray<T> = [T, ...T[]];
11
+ /**
12
+ * ArrayToTuple converts an `Array<T>` to `[T, ...T]`
13
+ *
14
+ * eg: `[1, 2, 3]` from type `number[]` to `[number, number, number]`
15
+ */
11
16
  export type ArrayToTuple<Tuple extends NonEmptyArray<unknown>> = {
12
17
  [Index in keyof Tuple]: Tuple[Index];
13
18
  };
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "bugs": {
12
12
  "url": "https://github.com/ChainSafe/lodestar/issues"
13
13
  },
14
- "version": "1.16.0-dev.d1caa1f617",
14
+ "version": "1.16.0-dev.d1dc217d00",
15
15
  "type": "module",
16
16
  "exports": "./lib/index.js",
17
17
  "files": [
@@ -58,5 +58,5 @@
58
58
  "beacon",
59
59
  "blockchain"
60
60
  ],
61
- "gitHead": "4f7fe87df56a9b31bcdd5fd6ba8c1e7afc4ec123"
61
+ "gitHead": "9845c7490603e9ec480880682de0fdc6a71885bd"
62
62
  }