@lodestar/utils 1.17.0-dev.eedfaa188f → 1.17.0-dev.f62bc13d89

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.
@@ -0,0 +1,36 @@
1
+ import type { Options, Argv } from "yargs";
2
+ export interface CliExample {
3
+ command: string;
4
+ title?: string;
5
+ description?: string;
6
+ }
7
+ export interface CliOptionDefinition<T = any> extends Options {
8
+ example?: Omit<CliExample, "title">;
9
+ type: T extends string ? "string" : T extends number ? "number" : T extends boolean ? "boolean" : T extends Array<unknown> ? "array" : never;
10
+ }
11
+ export type CliCommandOptions<OwnArgs> = Required<{
12
+ [K in keyof OwnArgs]: undefined extends OwnArgs[K] ? CliOptionDefinition<OwnArgs[K]> : // If arg cannot be undefined it must specify a default value or be provided by the user
13
+ CliOptionDefinition<OwnArgs[K]> & (Required<Pick<Options, "default">> | {
14
+ demandOption: true;
15
+ });
16
+ }>;
17
+ export interface CliCommand<OwnArgs = Record<never, never>, ParentArgs = Record<never, never>, R = any> {
18
+ command: string;
19
+ describe: string;
20
+ /**
21
+ * The folder in docs/pages that the cli.md should be placed in. If not provided no
22
+ * cli flags page will be generated for the command
23
+ */
24
+ docsFolder?: string;
25
+ examples?: CliExample[];
26
+ options?: CliCommandOptions<OwnArgs>;
27
+ subcommands?: CliCommand<any, OwnArgs & ParentArgs>[];
28
+ handler?: (args: OwnArgs & ParentArgs) => Promise<R>;
29
+ }
30
+ /**
31
+ * Register a CliCommand type to yargs. Recursively registers subcommands too.
32
+ * @param yargs
33
+ * @param cliCommand
34
+ */
35
+ export declare function registerCommandToYargs(yargs: Argv, cliCommand: CliCommand<any, any>): void;
36
+ //# sourceMappingURL=command.d.ts.map
package/lib/command.js ADDED
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Register a CliCommand type to yargs. Recursively registers subcommands too.
3
+ * @param yargs
4
+ * @param cliCommand
5
+ */
6
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
+ export function registerCommandToYargs(yargs, cliCommand) {
8
+ yargs.command({
9
+ command: cliCommand.command,
10
+ describe: cliCommand.describe,
11
+ builder: (yargsBuilder) => {
12
+ yargsBuilder.options(cliCommand.options ?? {});
13
+ for (const subcommand of cliCommand.subcommands ?? []) {
14
+ registerCommandToYargs(yargsBuilder, subcommand);
15
+ }
16
+ if (cliCommand.examples) {
17
+ for (const example of cliCommand.examples) {
18
+ yargsBuilder.example(`$0 ${example.command}`, example.description ?? "");
19
+ }
20
+ }
21
+ return yargs;
22
+ },
23
+ handler: cliCommand.handler ?? function emptyHandler() { },
24
+ });
25
+ }
26
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"AAgDA;;;;GAIG;AACH,8DAA8D;AAC9D,MAAM,UAAU,sBAAsB,CAAC,KAAW,EAAE,UAAgC;IAClF,KAAK,CAAC,OAAO,CAAC;QACZ,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,OAAO,EAAE,CAAC,YAAY,EAAE,EAAE;YACxB,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YAC/C,KAAK,MAAM,UAAU,IAAI,UAAU,CAAC,WAAW,IAAI,EAAE,EAAE;gBACrD,sBAAsB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;aAClD;YACD,IAAI,UAAU,CAAC,QAAQ,EAAE;gBACvB,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE;oBACzC,YAAY,CAAC,OAAO,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;iBAC1E;aACF;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,SAAS,YAAY,KAAU,CAAC;KAChE,CAAC,CAAC;AACL,CAAC"}
package/lib/index.d.ts CHANGED
@@ -2,6 +2,7 @@ export * from "./yaml/index.js";
2
2
  export * from "./assert.js";
3
3
  export * from "./base64.js";
4
4
  export * from "./bytes.js";
5
+ export * from "./command.js";
5
6
  export * from "./err.js";
6
7
  export * from "./errors.js";
7
8
  export * from "./format.js";
package/lib/index.js CHANGED
@@ -2,6 +2,7 @@ export * from "./yaml/index.js";
2
2
  export * from "./assert.js";
3
3
  export * from "./base64.js";
4
4
  export * from "./bytes.js";
5
+ export * from "./command.js";
5
6
  export * from "./err.js";
6
7
  export * from "./errors.js";
7
8
  export * from "./format.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,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,UAAU,CAAC;AACzB,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,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,cAAc,CAAC;AAC7B,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,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,UAAU,CAAC;AACzB,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC"}
package/lib/retry.d.ts CHANGED
@@ -19,6 +19,9 @@ export type RetryOptions = {
19
19
  * Milliseconds to wait before retrying again
20
20
  */
21
21
  retryDelay?: number;
22
+ /**
23
+ * Abort signal to stop retrying
24
+ */
22
25
  signal?: AbortSignal;
23
26
  };
24
27
  /**
package/lib/retry.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { ErrorAborted } from "./errors.js";
1
2
  import { sleep } from "./sleep.js";
2
3
  /**
3
4
  * Retry a given function on error.
@@ -13,10 +14,15 @@ export async function retry(fn, opts) {
13
14
  const onRetry = opts?.onRetry;
14
15
  let lastError = Error("RetryError");
15
16
  for (let i = 1; i <= maxAttempts; i++) {
17
+ // If not the first attempt
18
+ if (i > 1) {
19
+ if (opts?.signal?.aborted) {
20
+ throw new ErrorAborted("retry");
21
+ }
22
+ // Invoke right before retrying
23
+ onRetry?.(lastError, i);
24
+ }
16
25
  try {
17
- // If not the first attempt, invoke right before retrying
18
- if (i > 1)
19
- onRetry?.(lastError, i);
20
26
  return await fn(i);
21
27
  }
22
28
  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;AA0BjC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAI,EAAuC,EAAE,IAAmB;IACzF,MAAM,UAAU,GAAG,IAAI,EAAE,OAAO,IAAI,CAAC,CAAC;IACtC,0CAA0C;IAC1C,MAAM,WAAW,GAAG,UAAU,GAAG,CAAC,CAAC;IACnC,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,WAAW,EAAE,CAAC,EAAE,EAAE;QACrC,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;YAEvB,IAAI,CAAC,KAAK,WAAW,EAAE;gBACrB,kFAAkF;gBAClF,MAAM;aACP;iBAAM,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;gBACjD,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,YAAY,EAAC,MAAM,aAAa,CAAC;AACzC,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AA6BjC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAI,EAAuC,EAAE,IAAmB;IACzF,MAAM,UAAU,GAAG,IAAI,EAAE,OAAO,IAAI,CAAC,CAAC;IACtC,0CAA0C;IAC1C,MAAM,WAAW,GAAG,UAAU,GAAG,CAAC,CAAC;IACnC,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,WAAW,EAAE,CAAC,EAAE,EAAE;QACrC,2BAA2B;QAC3B,IAAI,CAAC,GAAG,CAAC,EAAE;YACT,IAAI,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;gBACzB,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;aACjC;YACD,+BAA+B;YAC/B,OAAO,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;SACzB;QAED,IAAI;YACF,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;SACpB;QAAC,OAAO,CAAC,EAAE;YACV,SAAS,GAAG,CAAU,CAAC;YAEvB,IAAI,CAAC,KAAK,WAAW,EAAE;gBACrB,kFAAkF;gBAClF,MAAM;aACP;iBAAM,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;gBACjD,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/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "bugs": {
12
12
  "url": "https://github.com/ChainSafe/lodestar/issues"
13
13
  },
14
- "version": "1.17.0-dev.eedfaa188f",
14
+ "version": "1.17.0-dev.f62bc13d89",
15
15
  "type": "module",
16
16
  "exports": "./lib/index.js",
17
17
  "files": [
@@ -43,14 +43,12 @@
43
43
  "any-signal": "3.0.1",
44
44
  "bigint-buffer": "^1.1.5",
45
45
  "case": "^1.6.3",
46
- "chalk": "^5.2.0",
47
46
  "js-yaml": "^4.1.0"
48
47
  },
49
48
  "devDependencies": {
50
49
  "@types/js-yaml": "^4.0.5",
51
- "@types/triple-beam": "^1.3.2",
52
- "prom-client": "^15.1.0",
53
- "triple-beam": "^1.3.0"
50
+ "@types/yargs": "^17.0.24",
51
+ "prom-client": "^15.1.0"
54
52
  },
55
53
  "keywords": [
56
54
  "ethereum",
@@ -58,5 +56,5 @@
58
56
  "beacon",
59
57
  "blockchain"
60
58
  ],
61
- "gitHead": "eb3c150b099bc9d65f894cf16ad9df766e58912f"
59
+ "gitHead": "8dc957a84d6bd0d7ab0aa78563bd689647793e15"
62
60
  }