@lodestar/utils 1.12.0-dev.f77b774be2 → 1.12.0-rc.0

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
@@ -8,4 +8,10 @@ export declare function prettyBytes(root: Uint8Array | string): string;
8
8
  * Paired with block numbers or slots, it can still act as a decent identify-able format
9
9
  */
10
10
  export declare function prettyBytesShort(root: Uint8Array | string): string;
11
+ /**
12
+ * Truncate and format bytes as `0x123456789abc`
13
+ * 6 bytes is sufficient to avoid collisions and it allows to easily look up
14
+ * values on explorers like beaconcha.in while improving readability of logs
15
+ */
16
+ export declare function truncBytes(root: Uint8Array | string): string;
11
17
  //# sourceMappingURL=format.d.ts.map
package/lib/format.js CHANGED
@@ -15,4 +15,13 @@ export function prettyBytesShort(root) {
15
15
  const str = typeof root === "string" ? root : toHexString(root);
16
16
  return `${str.slice(0, 6)}…`;
17
17
  }
18
+ /**
19
+ * Truncate and format bytes as `0x123456789abc`
20
+ * 6 bytes is sufficient to avoid collisions and it allows to easily look up
21
+ * values on explorers like beaconcha.in while improving readability of logs
22
+ */
23
+ export function truncBytes(root) {
24
+ const str = typeof root === "string" ? root : toHexString(root);
25
+ return str.slice(0, 14);
26
+ }
18
27
  //# sourceMappingURL=format.js.map
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;AAEvC;;;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"}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,YAAY,CAAC;AAEvC;;;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"}
package/lib/index.d.ts CHANGED
@@ -9,12 +9,12 @@ export * from "./logger.js";
9
9
  export * from "./map.js";
10
10
  export * from "./math.js";
11
11
  export * from "./objects.js";
12
- export { retry, RetryOptions } from "./retry.js";
12
+ export { retry, type RetryOptions } from "./retry.js";
13
13
  export * from "./notNullish.js";
14
14
  export * from "./sleep.js";
15
15
  export * from "./sort.js";
16
16
  export * from "./timeout.js";
17
- export { RecursivePartial, bnToNum } from "./types.js";
17
+ export { type RecursivePartial, bnToNum } from "./types.js";
18
18
  export * from "./validation.js";
19
19
  export * from "./verifyMerkleBranch.js";
20
20
  export * from "./promise.js";
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAC,KAAK,EAAe,MAAM,YAAY,CAAC;AAC/C,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAmB,OAAO,EAAC,MAAM,YAAY,CAAC;AACrD,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAC,KAAK,EAAoB,MAAM,YAAY,CAAC;AACpD,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAwB,OAAO,EAAC,MAAM,YAAY,CAAC;AAC1D,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC"}
package/lib/logger.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Interface of a generic Lodestar logger. For implementations, see `@lodestar/logger`
3
3
  */
4
- export type Logger = Record<LogLevel, LogHandler>;
4
+ export type Logger = Record<Exclude<LogLevel, LogLevel.trace>, LogHandler>;
5
5
  export declare enum LogLevel {
6
6
  error = "error",
7
7
  warn = "warn",
package/lib/objects.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export type KeyCase = "snake" | "constant" | "camel" | "param" | "header" | "pascal" | "dot" | "notransform";
2
2
  export declare function toExpectedCase(value: string, expectedCase?: KeyCase, customCasingMap?: Record<string, string>): string;
3
- export declare function isPlainObject(o: unknown): boolean;
3
+ export declare function isPlainObject(o: unknown): o is object;
4
+ export declare function isEmptyObject(value: unknown): boolean;
4
5
  /**
5
6
  * Creates an object with the same keys as object and values generated by running each own enumerable
6
7
  * string keyed property of object thru iteratee.
package/lib/objects.js CHANGED
@@ -34,6 +34,9 @@ export function isPlainObject(o) {
34
34
  // Most likely a plain Object
35
35
  return true;
36
36
  }
37
+ export function isEmptyObject(value) {
38
+ return isObjectObject(value) && Object.keys(value).length === 0;
39
+ }
37
40
  /**
38
41
  * Creates an object with the same keys as object and values generated by running each own enumerable
39
42
  * string keyed property of object thru iteratee.
@@ -1 +1 @@
1
- {"version":3,"file":"objects.js","sourceRoot":"","sources":["../src/objects.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"objects.js","sourceRoot":"","sources":["../src/objects.ts"],"names":[],"mappings":"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"}
package/lib/retry.d.ts CHANGED
@@ -13,6 +13,7 @@ export type RetryOptions = {
13
13
  * Milliseconds to wait before retrying again
14
14
  */
15
15
  retryDelay?: number;
16
+ signal?: AbortSignal;
16
17
  };
17
18
  /**
18
19
  * Retry a given function on error.
package/lib/retry.js CHANGED
@@ -19,7 +19,7 @@ export async function retry(fn, opts) {
19
19
  break;
20
20
  }
21
21
  else if (opts?.retryDelay !== undefined) {
22
- await sleep(opts?.retryDelay);
22
+ await sleep(opts?.retryDelay, opts?.signal);
23
23
  }
24
24
  }
25
25
  }
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;AAmBjC;;;;;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,CAAC,CAAC;aAC/B;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;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"}
package/lib/waitFor.d.ts CHANGED
@@ -10,4 +10,17 @@ export type WaitForOpts = {
10
10
  * Wait for a condition to be true
11
11
  */
12
12
  export declare function waitFor(condition: () => boolean, opts?: WaitForOpts): Promise<void>;
13
+ export interface ElapsedTimeTracker {
14
+ (): boolean;
15
+ msSinceLastCall: number;
16
+ }
17
+ /**
18
+ * Create a tracker which keeps track of the last time a function was called
19
+ *
20
+ * @param durationMs
21
+ * @returns
22
+ */
23
+ export declare function createElapsedTimeTracker({ minElapsedTime }: {
24
+ minElapsedTime: number;
25
+ }): ElapsedTimeTracker;
13
26
  //# sourceMappingURL=waitFor.d.ts.map
package/lib/waitFor.js CHANGED
@@ -36,4 +36,25 @@ export function waitFor(condition, opts = {}) {
36
36
  };
37
37
  });
38
38
  }
39
+ /**
40
+ * Create a tracker which keeps track of the last time a function was called
41
+ *
42
+ * @param durationMs
43
+ * @returns
44
+ */
45
+ export function createElapsedTimeTracker({ minElapsedTime }) {
46
+ // Initialized with undefined as the function has not been called yet
47
+ let lastTimeCalled = undefined;
48
+ function elapsedTimeTracker() {
49
+ const now = Date.now();
50
+ const msSinceLastCall = now - (lastTimeCalled ?? 0);
51
+ lastTimeCalled = now;
52
+ return msSinceLastCall > minElapsedTime;
53
+ }
54
+ return Object.assign(elapsedTimeTracker, {
55
+ get msSinceLastCall() {
56
+ return Date.now() - (lastTimeCalled ?? 0);
57
+ },
58
+ });
59
+ }
39
60
  //# sourceMappingURL=waitFor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"waitFor.js","sourceRoot":"","sources":["../src/waitFor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,YAAY,EAAC,MAAM,aAAa,CAAC;AAWvD;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,SAAwB,EAAE,OAAoB,EAAE;IACtE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,EAAC,QAAQ,GAAG,EAAE,EAAE,OAAO,GAAG,QAAQ,EAAE,MAAM,EAAC,GAAG,IAAI,CAAC;QAEzD,IAAI,MAAM,EAAE,OAAO,EAAE;YACnB,OAAO,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;SACnC;QAED,IAAI,SAAS,EAAE,EAAE;YACf,OAAO,OAAO,EAAE,CAAC;SAClB;QAED,IAAI,MAAM,GAAe,GAAG,EAAE,GAAE,CAAC,CAAC;QAElC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,CAAC;YACT,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;QAC7B,CAAC,EAAE,OAAO,CAAC,CAAC;QAEZ,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;YAClC,IAAI,SAAS,EAAE,EAAE;gBACf,MAAM,EAAE,CAAC;gBACT,OAAO,EAAE,CAAC;aACX;QACH,CAAC,EAAE,QAAQ,CAAC,CAAC;QAEb,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,SAAS,CAAC,CAAC;YACxB,aAAa,CAAC,UAAU,CAAC,CAAC;YAC1B,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":"waitFor.js","sourceRoot":"","sources":["../src/waitFor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,YAAY,EAAC,MAAM,aAAa,CAAC;AAWvD;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,SAAwB,EAAE,OAAoB,EAAE;IACtE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,EAAC,QAAQ,GAAG,EAAE,EAAE,OAAO,GAAG,QAAQ,EAAE,MAAM,EAAC,GAAG,IAAI,CAAC;QAEzD,IAAI,MAAM,EAAE,OAAO,EAAE;YACnB,OAAO,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;SACnC;QAED,IAAI,SAAS,EAAE,EAAE;YACf,OAAO,OAAO,EAAE,CAAC;SAClB;QAED,IAAI,MAAM,GAAe,GAAG,EAAE,GAAE,CAAC,CAAC;QAElC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,CAAC;YACT,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;QAC7B,CAAC,EAAE,OAAO,CAAC,CAAC;QAEZ,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;YAClC,IAAI,SAAS,EAAE,EAAE;gBACf,MAAM,EAAE,CAAC;gBACT,OAAO,EAAE,CAAC;aACX;QACH,CAAC,EAAE,QAAQ,CAAC,CAAC;QAEb,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,SAAS,CAAC,CAAC;YACxB,aAAa,CAAC,UAAU,CAAC,CAAC;YAC1B,IAAI,MAAM;gBAAE,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3D,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAOD;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,EAAC,cAAc,EAA2B;IACjF,qEAAqE;IACrE,IAAI,cAAc,GAAuB,SAAS,CAAC;IAEnD,SAAS,kBAAkB;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,eAAe,GAAG,GAAG,GAAG,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC;QACpD,cAAc,GAAG,GAAG,CAAC;QAErB,OAAO,eAAe,GAAG,cAAc,CAAC;IAC1C,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE;QACvC,IAAI,eAAe;YACjB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC;QAC5C,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
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.12.0-dev.f77b774be2",
14
+ "version": "1.12.0-rc.0",
15
15
  "type": "module",
16
16
  "exports": "./lib/index.js",
17
17
  "files": [
@@ -55,5 +55,5 @@
55
55
  "beacon",
56
56
  "blockchain"
57
57
  ],
58
- "gitHead": "38b7149bfaec4d3687871a656b3a6f928edc8c23"
58
+ "gitHead": "26744e003f0bc60171fb9f39b0c72072b42c868b"
59
59
  }