@chainsafe/lodestar 1.9.0-dev.6c10dbeff3 → 1.9.0-dev.6e58fdec4d
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/.git-data.json +1 -1
- package/lib/applyPreset.js +7 -1
- package/lib/applyPreset.js.map +1 -1
- package/lib/cli.js +1 -1
- package/lib/cli.js.map +1 -1
- package/lib/cmds/beacon/handler.d.ts +3 -3
- package/lib/cmds/beacon/handler.js +51 -8
- package/lib/cmds/beacon/handler.js.map +1 -1
- package/lib/cmds/beacon/options.d.ts +4 -1
- package/lib/cmds/beacon/options.js +9 -0
- package/lib/cmds/beacon/options.js.map +1 -1
- package/lib/cmds/dev/options.d.ts +3 -1
- package/lib/cmds/lightclient/handler.js +3 -2
- package/lib/cmds/lightclient/handler.js.map +1 -1
- package/lib/cmds/lightclient/options.d.ts +2 -1
- package/lib/cmds/lightclient/options.js.map +1 -1
- package/lib/cmds/validator/handler.js +11 -10
- package/lib/cmds/validator/handler.js.map +1 -1
- package/lib/cmds/validator/keymanager/decryptKeystoreDefinitions/types.d.ts +2 -2
- package/lib/cmds/validator/options.d.ts +3 -1
- package/lib/cmds/validator/options.js +5 -0
- package/lib/cmds/validator/options.js.map +1 -1
- package/lib/cmds/validator/signers/index.d.ts +2 -2
- package/lib/cmds/validator/signers/index.js.map +1 -1
- package/lib/cmds/validator/signers/logSigners.d.ts +2 -2
- package/lib/cmds/validator/signers/logSigners.js.map +1 -1
- package/lib/cmds/validator/slashingProtection/export.d.ts +1 -1
- package/lib/cmds/validator/slashingProtection/export.js +3 -2
- package/lib/cmds/validator/slashingProtection/export.js.map +1 -1
- package/lib/cmds/validator/slashingProtection/import.d.ts +1 -1
- package/lib/cmds/validator/slashingProtection/import.js +3 -2
- package/lib/cmds/validator/slashingProtection/import.js.map +1 -1
- package/lib/options/beaconNodeOptions/api.d.ts +1 -0
- package/lib/options/beaconNodeOptions/api.js +6 -0
- package/lib/options/beaconNodeOptions/api.js.map +1 -1
- package/lib/options/beaconNodeOptions/builder.d.ts +0 -1
- package/lib/options/beaconNodeOptions/builder.js +0 -9
- package/lib/options/beaconNodeOptions/builder.js.map +1 -1
- package/lib/options/beaconNodeOptions/index.d.ts +2 -1
- package/lib/options/beaconNodeOptions/network.d.ts +1 -0
- package/lib/options/beaconNodeOptions/network.js +19 -9
- package/lib/options/beaconNodeOptions/network.js.map +1 -1
- package/lib/options/logOptions.d.ts +11 -1
- package/lib/options/logOptions.js +7 -6
- package/lib/options/logOptions.js.map +1 -1
- package/lib/util/index.d.ts +1 -0
- package/lib/util/index.js +1 -0
- package/lib/util/index.js.map +1 -1
- package/lib/util/logger.d.ts +7 -23
- package/lib/util/logger.js +53 -80
- package/lib/util/logger.js.map +1 -1
- package/lib/util/pruneOldFilesInDir.d.ts +2 -0
- package/lib/util/pruneOldFilesInDir.js +17 -0
- package/lib/util/pruneOldFilesInDir.js.map +1 -0
- package/package.json +15 -14
- package/lib/util/loggerConsoleTransport.d.ts +0 -24
- package/lib/util/loggerConsoleTransport.js +0 -35
- package/lib/util/loggerConsoleTransport.js.map +0 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { toHexString } from "@chainsafe/ssz";
|
|
3
|
+
import { getNodeLogger } from "@lodestar/logger/node";
|
|
3
4
|
import { YargsError, ensure0xPrefix, isValidatePubkeyHex, writeFile600Perm } from "../../../util/index.js";
|
|
4
|
-
import {
|
|
5
|
+
import { parseLoggerArgs } from "../../../util/logger.js";
|
|
5
6
|
import { getBeaconConfigFromArgs } from "../../../config/index.js";
|
|
6
7
|
import { getValidatorPaths } from "../paths.js";
|
|
7
8
|
import { getGenesisValidatorsRoot, getSlashingProtection } from "./utils.js";
|
|
@@ -37,7 +38,7 @@ export const exportCmd = {
|
|
|
37
38
|
const { config, network } = getBeaconConfigFromArgs(args);
|
|
38
39
|
const validatorPaths = getValidatorPaths(args, network);
|
|
39
40
|
// slashingProtection commands are fast so do not require logFile feature
|
|
40
|
-
const
|
|
41
|
+
const logger = getNodeLogger(parseLoggerArgs(args, { defaultLogFilepath: path.join(validatorPaths.dataDir, "validator.log") }, config));
|
|
41
42
|
const { validatorsDbDir: dbPath } = getValidatorPaths(args, network);
|
|
42
43
|
const formatVersion = { version: "5" };
|
|
43
44
|
logger.info("Exporting slashing protection data", { ...formatVersion, dbPath });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../../../src/cmds/validator/slashingProtection/export.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAa,UAAU,EAAE,cAAc,EAAE,mBAAmB,EAAE,gBAAgB,EAAC,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../../../src/cmds/validator/slashingProtection/export.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CliCommand } from "../../../util/index.js";
|
|
2
2
|
import { GlobalArgs } from "../../../options/index.js";
|
|
3
|
+
import { LogArgs } from "../../../options/logOptions.js";
|
|
3
4
|
import { AccountValidatorArgs } from "../options.js";
|
|
4
|
-
import { LogArgs } from "../../../util/index.js";
|
|
5
5
|
import { ISlashingProtectionArgs } from "./options.js";
|
|
6
6
|
type ImportArgs = {
|
|
7
7
|
file: string;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
import {
|
|
3
|
+
import { getNodeLogger } from "@lodestar/logger/node";
|
|
4
|
+
import { parseLoggerArgs } from "../../../util/logger.js";
|
|
4
5
|
import { getBeaconConfigFromArgs } from "../../../config/index.js";
|
|
5
6
|
import { getValidatorPaths } from "../paths.js";
|
|
6
7
|
import { getGenesisValidatorsRoot, getSlashingProtection } from "./utils.js";
|
|
@@ -25,7 +26,7 @@ export const importCmd = {
|
|
|
25
26
|
const { config, network } = getBeaconConfigFromArgs(args);
|
|
26
27
|
const validatorPaths = getValidatorPaths(args, network);
|
|
27
28
|
// slashingProtection commands are fast so do not require logFile feature
|
|
28
|
-
const
|
|
29
|
+
const logger = getNodeLogger(parseLoggerArgs(args, { defaultLogFilepath: path.join(validatorPaths.dataDir, "validator.log") }, config));
|
|
29
30
|
const { validatorsDbDir: dbPath } = getValidatorPaths(args, network);
|
|
30
31
|
logger.info("Importing slashing protection data", { dbPath });
|
|
31
32
|
const { slashingProtection, metadata } = getSlashingProtection(args, network, logger);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import.js","sourceRoot":"","sources":["../../../../src/cmds/validator/slashingProtection/import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"import.js","sourceRoot":"","sources":["../../../../src/cmds/validator/slashingProtection/import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAC,eAAe,EAAC,MAAM,yBAAyB,CAAC;AAIxD,OAAO,EAAC,uBAAuB,EAAC,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAC,iBAAiB,EAAC,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAC,wBAAwB,EAAE,qBAAqB,EAAC,MAAM,YAAY,CAAC;AAO3E,MAAM,CAAC,MAAM,SAAS,GACpB;IACE,OAAO,EAAE,QAAQ;IAEjB,QAAQ,EAAE,6BAA6B;IAEvC,QAAQ,EAAE;QACR;YACE,OAAO,EAAE,+EAA+E;YACxF,WAAW,EAAE,0DAA0D;SACxE;KACF;IAED,OAAO,EAAE;QACP,IAAI,EAAE;YACJ,WAAW,EAAE,6DAA6D;YAC1E,YAAY,EAAE,IAAI;YAClB,IAAI,EAAE,QAAQ;SACf;KACF;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;;QACtB,MAAM,EAAC,MAAM,EAAE,OAAO,EAAC,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,cAAc,GAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxD,yEAAyE;QACzE,MAAM,MAAM,GAAG,aAAa,CAC1B,eAAe,CAAC,IAAI,EAAE,EAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,eAAe,CAAC,EAAC,EAAE,MAAM,CAAC,CACxG,CAAC;QAEF,MAAM,EAAC,eAAe,EAAE,MAAM,EAAC,GAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAEnE,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE,EAAC,MAAM,EAAC,CAAC,CAAC;QAE5D,MAAM,EAAC,kBAAkB,EAAE,QAAQ,EAAC,GAAG,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAEpF,oCAAoC;QACpC,oCAAoC;QACpC,6CAA6C;QAC7C,gCAAgC;QAChC,MAAM,qBAAqB,GACzB,MAAA,CAAC,MAAM,QAAQ,CAAC,wBAAwB,EAAE,CAAC,mCAAI,CAAC,MAAM,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;QAExF,MAAM,CAAC,OAAO,CAAC,kCAAkC,EAAE,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAC,CAAC,CAAC;QACtE,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACrE,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAgB,CAAC;QAElE,MAAM,kBAAkB,CAAC,iBAAiB,CAAC,eAAe,EAAE,qBAAqB,EAAE,MAAM,CAAC,CAAC;QAC3F,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC/C,CAAC;CACF,CAAC"}
|
|
@@ -9,6 +9,7 @@ export function parseArgs(args) {
|
|
|
9
9
|
enabled: args["rest"],
|
|
10
10
|
address: args["rest.address"],
|
|
11
11
|
port: args["rest.port"],
|
|
12
|
+
headerLimit: args["rest.headerLimit"],
|
|
12
13
|
bodyLimit: args["rest.bodyLimit"],
|
|
13
14
|
},
|
|
14
15
|
};
|
|
@@ -59,6 +60,11 @@ export const options = {
|
|
|
59
60
|
defaultDescription: String(defaultOptions.api.rest.port),
|
|
60
61
|
group: "api",
|
|
61
62
|
},
|
|
63
|
+
"rest.headerLimit": {
|
|
64
|
+
hidden: true,
|
|
65
|
+
type: "number",
|
|
66
|
+
description: "Defines the maximum length of request headers, in bytes, the server is allowed to accept",
|
|
67
|
+
},
|
|
62
68
|
"rest.bodyLimit": {
|
|
63
69
|
hidden: true,
|
|
64
70
|
type: "number",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/options/beaconNodeOptions/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAsB,aAAa,EAAC,MAAM,uBAAuB,CAAC;AAGxF,MAAM,UAAU,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/options/beaconNodeOptions/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAsB,aAAa,EAAC,MAAM,uBAAuB,CAAC;AAGxF,MAAM,UAAU,GAAG,GAAG,CAAC;AAavB,MAAM,UAAU,SAAS,CAAC,IAAa;IACrC,OAAO;QACL,kBAAkB,EAAE,IAAI,CAAC,wBAAwB,CAAC;QAClD,IAAI,EAAE;YACJ,GAAG,EAAE,IAAI,CAAC,gBAAgB,CAA6C;YACvE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC;YACvB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;YACrB,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC;YAC7B,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC;YACvB,WAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC;YACrC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC;SAClC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAA+B;IACjD,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,yBAAyB;QACtC,kBAAkB,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;QAC3D,KAAK,EAAE,KAAK;KACb;IAED,wBAAwB,EAAE;QACxB,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,+EAA+E;QAC5F,kBAAkB,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,kBAAkB,CAAC;QACjE,KAAK,EAAE,KAAK;KACb;IAED,gBAAgB,EAAE;QAChB,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,CAAC,GAAG,aAAa,EAAE,UAAU,CAAC;QACvC,WAAW,EAAE,mDAAmD,UAAU,4BAA4B;QACtG,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;QAC/D,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,CAAC,UAAoB,EAAY,EAAE;YACzC,aAAa;YACb,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,OAAO,aAAa,CAAC;YAC1D,oDAAoD;YACpD,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;KACF;IAED,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,qEAAqE;QAClF,kBAAkB,EAAE,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI;QAChD,KAAK,EAAE,KAAK;KACb;IAED,cAAc,EAAE;QACd,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,uBAAuB;QACpC,kBAAkB,EAAE,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO;QACnD,KAAK,EAAE,KAAK;KACb;IAED,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,uBAAuB;QACpC,kBAAkB,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;QACxD,KAAK,EAAE,KAAK;KACb;IACD,kBAAkB,EAAE;QAClB,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,0FAA0F;KACxG;IACD,gBAAgB,EAAE;QAChB,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,wEAAwE;KACtF;CACF,CAAC"}
|
|
@@ -6,7 +6,6 @@ export type ExecutionBuilderArgs = {
|
|
|
6
6
|
"builder.timeout": number;
|
|
7
7
|
"builder.faultInspectionWindow": number;
|
|
8
8
|
"builder.allowedFaults": number;
|
|
9
|
-
"builder.userAgent": string;
|
|
10
9
|
};
|
|
11
10
|
export declare function parseArgs(args: ExecutionBuilderArgs): IBeaconNodeOptions["executionBuilder"];
|
|
12
11
|
export declare const options: CliCommandOptions<ExecutionBuilderArgs>;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { defaultOptions } from "@lodestar/beacon-node";
|
|
2
|
-
import { getVersionData } from "../../util/version.js";
|
|
3
2
|
export function parseArgs(args) {
|
|
4
3
|
return {
|
|
5
4
|
enabled: args["builder"],
|
|
@@ -7,7 +6,6 @@ export function parseArgs(args) {
|
|
|
7
6
|
timeout: args["builder.timeout"],
|
|
8
7
|
faultInspectionWindow: args["builder.faultInspectionWindow"],
|
|
9
8
|
allowedFaults: args["builder.allowedFaults"],
|
|
10
|
-
userAgent: args["builder.userAgent"],
|
|
11
9
|
};
|
|
12
10
|
}
|
|
13
11
|
export const options = {
|
|
@@ -39,12 +37,5 @@ export const options = {
|
|
|
39
37
|
description: "Number of missed slots allowed in the faultInspectionWindow for builder circuit",
|
|
40
38
|
group: "builder",
|
|
41
39
|
},
|
|
42
|
-
"builder.userAgent": {
|
|
43
|
-
type: "string",
|
|
44
|
-
description: "User-Agent header attached to all builder requests",
|
|
45
|
-
// Casting to `as string` so that if version type changes this line does not compile
|
|
46
|
-
default: `Lodestar/${getVersionData().version}`,
|
|
47
|
-
group: "builder",
|
|
48
|
-
},
|
|
49
40
|
};
|
|
50
41
|
//# sourceMappingURL=builder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/options/beaconNodeOptions/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAqB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/options/beaconNodeOptions/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAqB,MAAM,uBAAuB,CAAC;AAWzE,MAAM,UAAU,SAAS,CAAC,IAA0B;IAClD,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;QACxB,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC;QAC1B,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC;QAChC,qBAAqB,EAAE,IAAI,CAAC,+BAA+B,CAAC;QAC5D,aAAa,EAAE,IAAI,CAAC,uBAAuB,CAAC;KAC7C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAA4C;IAC9D,OAAO,EAAE;QACP,WAAW,EAAE,0BAA0B;QACvC,IAAI,EAAE,SAAS;QACf,kBAAkB,EAAE,GAClB,cAAc,CAAC,gBAAgB,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,KAC9F,EAAE;QACF,KAAK,EAAE,SAAS;KACjB;IAED,cAAc,EAAE;QACd,WAAW,EAAE,8BAA8B;QAC3C,IAAI,EAAE,OAAO;QACb,kBAAkB,EAChB,cAAc,CAAC,gBAAgB,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QACvG,KAAK,EAAE,SAAS;KACjB;IAED,iBAAiB,EAAE;QACjB,WAAW,EAAE,qDAAqD;QAClE,IAAI,EAAE,QAAQ;QACd,kBAAkB,EAChB,cAAc,CAAC,gBAAgB,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;QACxG,KAAK,EAAE,SAAS;KACjB;IAED,+BAA+B,EAAE;QAC/B,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,+EAA+E;QAC5F,KAAK,EAAE,SAAS;KACjB;IAED,uBAAuB,EAAE;QACvB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,iFAAiF;QAC9F,KAAK,EAAE,SAAS;KACjB;CACF,CAAC"}
|
|
@@ -37,6 +37,7 @@ export declare const beaconNodeOptions: {
|
|
|
37
37
|
"network.gossipsubAwaitHandler": import("yargs").Options;
|
|
38
38
|
"network.rateLimitMultiplier": import("yargs").Options;
|
|
39
39
|
"network.maxGossipTopicConcurrency": import("yargs").Options;
|
|
40
|
+
"network.useWorker": import("yargs").Options;
|
|
40
41
|
"network.requestCountPeerLimit": import("yargs").Options;
|
|
41
42
|
"network.blockCountTotalLimit": import("yargs").Options;
|
|
42
43
|
"network.blockCountPeerLimit": import("yargs").Options;
|
|
@@ -54,7 +55,6 @@ export declare const beaconNodeOptions: {
|
|
|
54
55
|
"builder.timeout": import("yargs").Options;
|
|
55
56
|
"builder.faultInspectionWindow": import("yargs").Options;
|
|
56
57
|
"builder.allowedFaults": import("yargs").Options;
|
|
57
|
-
"builder.userAgent": import("yargs").Options;
|
|
58
58
|
"execution.urls": import("yargs").Options;
|
|
59
59
|
"execution.timeout": import("yargs").Options;
|
|
60
60
|
"execution.retryAttempts": import("yargs").Options;
|
|
@@ -88,6 +88,7 @@ export declare const beaconNodeOptions: {
|
|
|
88
88
|
rest: import("yargs").Options;
|
|
89
89
|
"rest.address": import("yargs").Options;
|
|
90
90
|
"rest.port": import("yargs").Options;
|
|
91
|
+
"rest.headerLimit": import("yargs").Options;
|
|
91
92
|
"rest.bodyLimit": import("yargs").Options;
|
|
92
93
|
};
|
|
93
94
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -22,6 +22,7 @@ export type NetworkArgs = {
|
|
|
22
22
|
"network.gossipsubAwaitHandler": boolean;
|
|
23
23
|
"network.rateLimitMultiplier": number;
|
|
24
24
|
"network.maxGossipTopicConcurrency"?: number;
|
|
25
|
+
"network.useWorker": boolean;
|
|
25
26
|
/** @deprecated This option is deprecated and should be removed in next major release. */
|
|
26
27
|
"network.requestCountPeerLimit": number;
|
|
27
28
|
/** @deprecated This option is deprecated and should be removed in next major release. */
|
|
@@ -3,7 +3,7 @@ import { YargsError } from "../../util/index.js";
|
|
|
3
3
|
const defaultListenAddress = "0.0.0.0";
|
|
4
4
|
export const defaultP2pPort = 9000;
|
|
5
5
|
export function parseArgs(args) {
|
|
6
|
-
var _a, _b, _c, _d, _e;
|
|
6
|
+
var _a, _b, _c, _d, _e, _f;
|
|
7
7
|
const listenAddress = args.listenAddress || defaultListenAddress;
|
|
8
8
|
const udpPort = (_b = (_a = args.discoveryPort) !== null && _a !== void 0 ? _a : args.port) !== null && _b !== void 0 ? _b : defaultP2pPort;
|
|
9
9
|
const tcpPort = (_c = args.port) !== null && _c !== void 0 ? _c : defaultP2pPort;
|
|
@@ -12,15 +12,19 @@ export function parseArgs(args) {
|
|
|
12
12
|
if (targetPeers != null && maxPeers != null && targetPeers > maxPeers) {
|
|
13
13
|
throw new YargsError("network.maxPeers must be greater than or equal to targetPeers");
|
|
14
14
|
}
|
|
15
|
+
// Set discv5 opts to null to disable only if explicitly disabled
|
|
16
|
+
const enableDiscv5 = (_e = args["discv5"]) !== null && _e !== void 0 ? _e : true;
|
|
15
17
|
return {
|
|
16
|
-
discv5:
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
discv5: enableDiscv5
|
|
19
|
+
? {
|
|
20
|
+
config: {},
|
|
21
|
+
bindAddr: `/ip4/${listenAddress}/udp/${udpPort}`,
|
|
22
|
+
// TODO: Okay to set to empty array?
|
|
23
|
+
bootEnrs: (_f = args["bootnodes"]) !== null && _f !== void 0 ? _f : [],
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any
|
|
25
|
+
enr: undefined,
|
|
26
|
+
}
|
|
27
|
+
: null,
|
|
24
28
|
maxPeers,
|
|
25
29
|
targetPeers,
|
|
26
30
|
localMultiaddrs: [`/ip4/${listenAddress}/tcp/${tcpPort}`],
|
|
@@ -37,6 +41,7 @@ export function parseArgs(args) {
|
|
|
37
41
|
mdns: args["mdns"],
|
|
38
42
|
rateLimitMultiplier: args["network.rateLimitMultiplier"],
|
|
39
43
|
maxGossipTopicConcurrency: args["network.maxGossipTopicConcurrency"],
|
|
44
|
+
useWorker: args["network.useWorker"],
|
|
40
45
|
};
|
|
41
46
|
}
|
|
42
47
|
export const options = {
|
|
@@ -196,5 +201,10 @@ export const options = {
|
|
|
196
201
|
hidden: true,
|
|
197
202
|
group: "network",
|
|
198
203
|
},
|
|
204
|
+
"network.useWorker": {
|
|
205
|
+
type: "boolean",
|
|
206
|
+
hidden: true,
|
|
207
|
+
group: "network",
|
|
208
|
+
},
|
|
199
209
|
};
|
|
200
210
|
//# sourceMappingURL=network.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/options/beaconNodeOptions/network.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAqB,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAoB,UAAU,EAAC,MAAM,qBAAqB,CAAC;AAElE,MAAM,oBAAoB,GAAG,SAAS,CAAC;AACvC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/options/beaconNodeOptions/network.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAqB,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAoB,UAAU,EAAC,MAAM,qBAAqB,CAAC;AAElE,MAAM,oBAAoB,GAAG,SAAS,CAAC;AACvC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAmCnC,MAAM,UAAU,SAAS,CAAC,IAAiB;;IACzC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,oBAAoB,CAAC;IACjE,MAAM,OAAO,GAAG,MAAA,MAAA,IAAI,CAAC,aAAa,mCAAI,IAAI,CAAC,IAAI,mCAAI,cAAc,CAAC;IAClE,MAAM,OAAO,GAAG,MAAA,IAAI,CAAC,IAAI,mCAAI,cAAc,CAAC;IAE5C,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,MAAA,IAAI,CAAC,kBAAkB,CAAC,mCAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACrH,IAAI,WAAW,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,WAAW,GAAG,QAAQ,EAAE;QACrE,MAAM,IAAI,UAAU,CAAC,+DAA+D,CAAC,CAAC;KACvF;IACD,iEAAiE;IACjE,MAAM,YAAY,GAAG,MAAA,IAAI,CAAC,QAAQ,CAAC,mCAAI,IAAI,CAAC;IAC5C,OAAO;QACL,MAAM,EAAE,YAAY;YAClB,CAAC,CAAC;gBACE,MAAM,EAAE,EAAE;gBACV,QAAQ,EAAE,QAAQ,aAAa,QAAQ,OAAO,EAAE;gBAChD,oCAAoC;gBACpC,QAAQ,EAAE,MAAA,IAAI,CAAC,WAAW,CAAC,mCAAI,EAAE;gBACjC,uGAAuG;gBACvG,GAAG,EAAE,SAAgB;aACtB;YACH,CAAC,CAAC,IAAI;QACR,QAAQ;QACR,WAAW;QACX,eAAe,EAAE,CAAC,QAAQ,aAAa,QAAQ,OAAO,EAAE,CAAC;QACzD,mBAAmB,EAAE,IAAI,CAAC,qBAAqB,CAAC;QAChD,kBAAkB,EAAE,IAAI,CAAC,oBAAoB,CAAC;QAC9C,wBAAwB,EAAE,IAAI,CAAC,kCAAkC,CAAC;QAClE,uBAAuB,EAAE,IAAI,CAAC,iCAAiC,CAAC;QAChE,sCAAsC,EAAE,IAAI,CAAC,gDAAgD,CAAC;QAC9F,uBAAuB,EAAE,IAAI,CAAC,iCAAiC,CAAC;QAChE,UAAU,EAAE,IAAI,CAAC,oBAAoB,CAAC;QACtC,aAAa,EAAE,IAAI,CAAC,uBAAuB,CAAC;QAC5C,cAAc,EAAE,IAAI,CAAC,wBAAwB,CAAC;QAC9C,qBAAqB,EAAE,IAAI,CAAC,+BAA+B,CAAC;QAC5D,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;QAClB,mBAAmB,EAAE,IAAI,CAAC,6BAA6B,CAAC;QACxD,yBAAyB,EAAE,IAAI,CAAC,mCAAmC,CAAC;QACpE,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC;KACrC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAmC;IACrD,MAAM,EAAE;QACN,IAAI,EAAE,SAAS;QACf,gFAAgF;QAChF,WAAW,EAAE,eAAe;QAC5B,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC;QAChC,KAAK,EAAE,SAAS;KACjB;IAED,aAAa,EAAE;QACb,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,uDAAuD;QACpE,kBAAkB,EAAE,oBAAoB;QACxC,KAAK,EAAE,SAAS;KACjB;IAED,IAAI,EAAE;QACJ,WAAW,EAAE,2FAA2F;QACxG,IAAI,EAAE,QAAQ;QACd,wCAAwC;QACxC,kBAAkB,EAAE,MAAM,CAAC,cAAc,CAAC;QAC1C,KAAK,EAAE,SAAS;KACjB;IAED,aAAa,EAAE;QACb,WAAW,EAAE,gEAAgE;QAC7E,IAAI,EAAE,QAAQ;QACd,kBAAkB,EAAE,QAAQ;QAC5B,KAAK,EAAE,SAAS;KACjB;IAED,SAAS,EAAE;QACT,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,gCAAgC;QAC7C,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;QACxF,KAAK,EAAE,SAAS;QAChB,wFAAwF;QACxF,yFAAyF;QACzF,kDAAkD;QAClD,MAAM,EAAE,CAAC,IAAc,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;KACxE;IAED,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,0EAA0E;QACvF,kBAAkB,EAAE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC;QAC9D,KAAK,EAAE,SAAS;KACjB;IAED,mBAAmB,EAAE;QACnB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,wDAAwD;QACrE,kBAAkB,EAAE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,mBAAmB,KAAK,IAAI,CAAC;QAC/E,KAAK,EAAE,SAAS;KACjB;IAED,kBAAkB,EAAE;QAClB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,mDAAmD;QAChE,kBAAkB,EAAE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,KAAK,IAAI,CAAC;QAC9E,KAAK,EAAE,SAAS;KACjB;IAED,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,kCAAkC;QAC/C,kBAAkB,EAAE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC;QAChE,KAAK,EAAE,SAAS;KACjB;IAED,kBAAkB,EAAE;QAClB,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,2CAA2C;QACxD,kBAAkB,EAAE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC3D,KAAK,EAAE,SAAS;KACjB;IAED,kCAAkC,EAAE;QAClC,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,mFAAmF;QAChG,MAAM,EAAE,IAAI;QACZ,kBAAkB,EAAE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,wBAAwB,KAAK,IAAI,CAAC;QACpF,KAAK,EAAE,SAAS;KACjB;IAED,iCAAiC,EAAE;QACjC,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,gEAAgE;QAC7E,MAAM,EAAE,IAAI;QACZ,kBAAkB,EAAE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,uBAAuB,CAAC;QAC1E,KAAK,EAAE,SAAS;KACjB;IAED,+BAA+B,EAAE;QAC/B,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,+DAA+D;QAC5E,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,IAAI;KACjB;IAED,8BAA8B,EAAE;QAC9B,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,oDAAoD;QACjE,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,IAAI;KACjB;IAED,6BAA6B,EAAE;QAC7B,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,6DAA6D;QAC1E,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,IAAI;KACjB;IAED,8BAA8B,EAAE;QAC9B,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,kDAAkD;QAC/D,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,IAAI;KACjB;IAED,gDAAgD,EAAE;QAChD,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,+CAA+C;QAC5D,KAAK,EAAE,SAAS;KACjB;IAED,iCAAiC,EAAE;QACjC,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,2CAA2C;QACxD,KAAK,EAAE,SAAS;KACjB;IAED,oBAAoB,EAAE;QACpB,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,mBAAmB;QAChC,KAAK,EAAE,SAAS;KACjB;IAED,uBAAuB,EAAE;QACvB,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,uBAAuB;QACpC,KAAK,EAAE,SAAS;KACjB;IAED,wBAAwB,EAAE;QACxB,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,wBAAwB;QACrC,KAAK,EAAE,SAAS;KACjB;IAED,+BAA+B,EAAE;QAC/B,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;KACjB;IAED,6BAA6B,EAAE;QAC7B,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,mFAAmF;QAChG,MAAM,EAAE,IAAI;QACZ,kBAAkB,EAAE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,mBAAmB,CAAC;QACtE,KAAK,EAAE,SAAS;KACjB;IAED,mCAAmC,EAAE;QACnC,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,SAAS;KACjB;IAED,mBAAmB,EAAE;QACnB,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,SAAS;KACjB;CACF,CAAC"}
|
|
@@ -1,4 +1,14 @@
|
|
|
1
|
+
import { LogLevel } from "@lodestar/logger";
|
|
1
2
|
import { CliCommandOptions } from "../util/command.js";
|
|
2
|
-
|
|
3
|
+
export type LogArgs = {
|
|
4
|
+
logLevel: LogLevel;
|
|
5
|
+
logFile?: string;
|
|
6
|
+
logFileLevel: LogLevel;
|
|
7
|
+
logFileDailyRotate: number;
|
|
8
|
+
logFormatGenesisTime?: number;
|
|
9
|
+
logPrefix?: string;
|
|
10
|
+
logFormat?: string;
|
|
11
|
+
logLevelModule?: string[];
|
|
12
|
+
};
|
|
3
13
|
export declare const logOptions: CliCommandOptions<LogArgs>;
|
|
4
14
|
//# sourceMappingURL=logOptions.d.ts.map
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { LogLevels } from "@lodestar/utils";
|
|
2
|
+
import { LogLevel, logFormats } from "@lodestar/logger";
|
|
3
|
+
import { LOG_FILE_DISABLE_KEYWORD } from "../util/logger.js";
|
|
3
4
|
export const logOptions = {
|
|
4
5
|
logLevel: {
|
|
5
6
|
choices: LogLevels,
|
|
6
7
|
description: "Logging verbosity level for emittings logs to terminal",
|
|
7
|
-
default:
|
|
8
|
+
default: LogLevel.info,
|
|
8
9
|
type: "string",
|
|
9
10
|
},
|
|
10
11
|
logFile: {
|
|
@@ -14,12 +15,12 @@ export const logOptions = {
|
|
|
14
15
|
logFileLevel: {
|
|
15
16
|
choices: LogLevels,
|
|
16
17
|
description: "Logging verbosity level for emittings logs to file",
|
|
17
|
-
default:
|
|
18
|
+
default: LogLevel.debug,
|
|
18
19
|
type: "string",
|
|
19
20
|
},
|
|
20
21
|
logFileDailyRotate: {
|
|
21
|
-
description: "Daily rotate log files, set to an integer to limit the file count, set to 0(zero) to disable rotation",
|
|
22
|
-
default:
|
|
22
|
+
description: "Daily rotate log files, set to an integer to limit the file count, set to 0 (zero) to disable rotation",
|
|
23
|
+
default: 5,
|
|
23
24
|
type: "number",
|
|
24
25
|
},
|
|
25
26
|
logFormatGenesisTime: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logOptions.js","sourceRoot":"","sources":["../../src/options/logOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"logOptions.js","sourceRoot":"","sources":["../../src/options/logOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,QAAQ,EAAE,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAC,wBAAwB,EAAC,MAAM,mBAAmB,CAAC;AAa3D,MAAM,CAAC,MAAM,UAAU,GAA+B;IACpD,QAAQ,EAAE;QACR,OAAO,EAAE,SAAS;QAClB,WAAW,EAAE,wDAAwD;QACrE,OAAO,EAAE,QAAQ,CAAC,IAAI;QACtB,IAAI,EAAE,QAAQ;KACf;IAED,OAAO,EAAE;QACP,WAAW,EAAE,0DAA0D,wBAAwB,cAAc;QAC7G,IAAI,EAAE,QAAQ;KACf;IAED,YAAY,EAAE;QACZ,OAAO,EAAE,SAAS;QAClB,WAAW,EAAE,oDAAoD;QACjE,OAAO,EAAE,QAAQ,CAAC,KAAK;QACvB,IAAI,EAAE,QAAQ;KACf;IAED,kBAAkB,EAAE;QAClB,WAAW,EACT,wGAAwG;QAC1G,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,QAAQ;KACf;IAED,oBAAoB,EAAE;QACpB,MAAM,EAAE,IAAI;QACZ,WAAW,EACT,kHAAkH;QACpH,IAAI,EAAE,QAAQ;KACf;IAED,SAAS,EAAE;QACT,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,6CAA6C;QAC1D,IAAI,EAAE,QAAQ;KACf;IAED,SAAS,EAAE;QACT,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,kEAAkE;QAC/E,OAAO,EAAE,UAAU;QACnB,IAAI,EAAE,QAAQ;KACf;IAED,cAAc,EAAE;QACd,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,2FAA2F;QACxG,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,CAAC,IAAc,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;KACxE;CACF,CAAC"}
|
package/lib/util/index.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export * from "./logger.js";
|
|
|
10
10
|
export * from "./object.js";
|
|
11
11
|
export * from "./passphrase.js";
|
|
12
12
|
export * from "./process.js";
|
|
13
|
+
export * from "./pruneOldFilesInDir.js";
|
|
13
14
|
export * from "./sleep.js";
|
|
14
15
|
export * from "./stripOffNewlines.js";
|
|
15
16
|
export * from "./types.js";
|
package/lib/util/index.js
CHANGED
|
@@ -10,6 +10,7 @@ export * from "./logger.js";
|
|
|
10
10
|
export * from "./object.js";
|
|
11
11
|
export * from "./passphrase.js";
|
|
12
12
|
export * from "./process.js";
|
|
13
|
+
export * from "./pruneOldFilesInDir.js";
|
|
13
14
|
export * from "./sleep.js";
|
|
14
15
|
export * from "./stripOffNewlines.js";
|
|
15
16
|
export * from "./types.js";
|
package/lib/util/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC"}
|
package/lib/util/logger.d.ts
CHANGED
|
@@ -1,39 +1,23 @@
|
|
|
1
1
|
import { ChainForkConfig } from "@lodestar/config";
|
|
2
|
-
import {
|
|
2
|
+
import { LoggerNodeOpts } from "@lodestar/logger/node";
|
|
3
|
+
import { LogArgs } from "../options/logOptions.js";
|
|
3
4
|
import { GlobalArgs } from "../options/globalOptions.js";
|
|
4
5
|
export declare const LOG_FILE_DISABLE_KEYWORD = "none";
|
|
5
|
-
export declare const LOG_LEVEL_DEFAULT = LogLevel.info;
|
|
6
|
-
export declare const LOG_FILE_LEVEL_DEFAULT = LogLevel.debug;
|
|
7
|
-
export declare const LOG_DAILY_ROTATE_DEFAULT = 5;
|
|
8
|
-
export type LogArgs = {
|
|
9
|
-
logLevel?: LogLevel;
|
|
10
|
-
logFile?: string;
|
|
11
|
-
logFileLevel?: LogLevel;
|
|
12
|
-
logFileDailyRotate?: number;
|
|
13
|
-
logFormatGenesisTime?: number;
|
|
14
|
-
logPrefix?: string;
|
|
15
|
-
logFormat?: string;
|
|
16
|
-
logLevelModule?: string[];
|
|
17
|
-
};
|
|
18
6
|
/**
|
|
19
7
|
* Setup a CLI logger, common for beacon, validator and dev commands
|
|
20
8
|
*/
|
|
21
|
-
export declare function
|
|
9
|
+
export declare function parseLoggerArgs(args: LogArgs & Pick<GlobalArgs, "dataDir">, paths: {
|
|
22
10
|
defaultLogFilepath: string;
|
|
23
11
|
}, config: ChainForkConfig, opts?: {
|
|
24
12
|
hideTimestamp?: boolean;
|
|
25
|
-
}):
|
|
26
|
-
logger: Logger;
|
|
27
|
-
logParams: {
|
|
28
|
-
filename: string;
|
|
29
|
-
rotateMaxFiles: number;
|
|
30
|
-
};
|
|
31
|
-
};
|
|
13
|
+
}): LoggerNodeOpts;
|
|
32
14
|
/**
|
|
33
15
|
* Winston is not able to clean old log files if server is offline for a while
|
|
34
16
|
* so we have to do this manually when starting the node.
|
|
35
17
|
* See https://github.com/ChainSafe/lodestar/issues/4419
|
|
36
18
|
*/
|
|
37
|
-
export declare function cleanOldLogFiles(
|
|
19
|
+
export declare function cleanOldLogFiles(args: LogArgs, paths: {
|
|
20
|
+
defaultLogFilepath: string;
|
|
21
|
+
}): void;
|
|
38
22
|
export declare function shouldDeleteLogFile(prefix: string, extension: string, logFileName: string, maxFiles: number): boolean;
|
|
39
23
|
//# sourceMappingURL=logger.d.ts.map
|
package/lib/util/logger.js
CHANGED
|
@@ -1,91 +1,70 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import fs from "node:fs";
|
|
3
|
-
import DailyRotateFile from "winston-daily-rotate-file";
|
|
4
|
-
import winston from "winston";
|
|
5
3
|
import { SLOTS_PER_EPOCH } from "@lodestar/params";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
4
|
+
import { TimestampFormatCode, logFormats } from "@lodestar/logger";
|
|
5
|
+
import { LogLevel } from "@lodestar/utils";
|
|
8
6
|
export const LOG_FILE_DISABLE_KEYWORD = "none";
|
|
9
|
-
export const LOG_LEVEL_DEFAULT = LogLevel.info;
|
|
10
|
-
export const LOG_FILE_LEVEL_DEFAULT = LogLevel.debug;
|
|
11
|
-
export const LOG_DAILY_ROTATE_DEFAULT = 5;
|
|
12
|
-
const DATE_PATTERN = "YYYY-MM-DD";
|
|
13
7
|
/**
|
|
14
8
|
* Setup a CLI logger, common for beacon, validator and dev commands
|
|
15
9
|
*/
|
|
16
|
-
export function
|
|
17
|
-
var _a
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
10
|
+
export function parseLoggerArgs(args, paths, config, opts) {
|
|
11
|
+
var _a;
|
|
12
|
+
return {
|
|
13
|
+
level: parseLogLevel(args.logLevel),
|
|
14
|
+
file: args.logFile === LOG_FILE_DISABLE_KEYWORD
|
|
15
|
+
? undefined
|
|
16
|
+
: {
|
|
17
|
+
filepath: (_a = args.logFile) !== null && _a !== void 0 ? _a : paths.defaultLogFilepath,
|
|
18
|
+
level: parseLogLevel(args.logFileLevel),
|
|
19
|
+
dailyRotate: args.logFileDailyRotate,
|
|
20
|
+
},
|
|
21
|
+
module: args.logPrefix,
|
|
22
|
+
format: args.logFormat ? parseLogFormat(args.logFormat) : undefined,
|
|
23
|
+
levelModule: args.logLevelModule && parseLogLevelModule(args.logLevelModule),
|
|
24
|
+
timestampFormat: (opts === null || opts === void 0 ? void 0 : opts.hideTimestamp)
|
|
25
|
+
? { format: TimestampFormatCode.Hidden }
|
|
26
|
+
: args.logFormatGenesisTime !== undefined
|
|
27
|
+
? {
|
|
28
|
+
format: TimestampFormatCode.EpochSlot,
|
|
29
|
+
genesisTime: args.logFormatGenesisTime,
|
|
30
|
+
secondsPerSlot: config.SECONDS_PER_SLOT,
|
|
31
|
+
slotsPerEpoch: SLOTS_PER_EPOCH,
|
|
32
|
+
}
|
|
33
|
+
: {
|
|
34
|
+
format: TimestampFormatCode.DateRegular,
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function parseLogFormat(format) {
|
|
39
|
+
if (!logFormats.includes(format)) {
|
|
40
|
+
throw Error(`Unknown log format ${format}`);
|
|
33
41
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
// }
|
|
40
|
-
// `lodestar --logFileDailyRotate` -> enabled daily rotate with default value
|
|
41
|
-
// `lodestar --logFileDailyRotate 10` -> set daily rotate to custom value 10
|
|
42
|
-
// `lodestar --logFileDailyRotate 0` -> disable daily rotate and accumulate in same file
|
|
43
|
-
const rotateMaxFiles = (_c = args.logFileDailyRotate) !== null && _c !== void 0 ? _c : LOG_DAILY_ROTATE_DEFAULT;
|
|
44
|
-
const filename = (_d = args.logFile) !== null && _d !== void 0 ? _d : paths.defaultLogFilepath;
|
|
45
|
-
if (args.logFile !== LOG_FILE_DISABLE_KEYWORD) {
|
|
46
|
-
const logFileLevel = (_e = args.logFileLevel) !== null && _e !== void 0 ? _e : LOG_FILE_LEVEL_DEFAULT;
|
|
47
|
-
transports.push(rotateMaxFiles > 0
|
|
48
|
-
? new DailyRotateFile({
|
|
49
|
-
level: logFileLevel,
|
|
50
|
-
//insert the date pattern in filename before the file extension.
|
|
51
|
-
filename: filename.replace(/\.(?=[^.]*$)|$/, "-%DATE%$&"),
|
|
52
|
-
datePattern: DATE_PATTERN,
|
|
53
|
-
handleExceptions: true,
|
|
54
|
-
maxFiles: rotateMaxFiles,
|
|
55
|
-
auditFile: path.join(path.dirname(filename), ".log_rotate_audit.json"),
|
|
56
|
-
})
|
|
57
|
-
: new winston.transports.File({
|
|
58
|
-
level: logFileLevel,
|
|
59
|
-
filename: filename,
|
|
60
|
-
handleExceptions: true,
|
|
61
|
-
}));
|
|
42
|
+
return format;
|
|
43
|
+
}
|
|
44
|
+
function parseLogLevel(level) {
|
|
45
|
+
if (LogLevel[level] === undefined) {
|
|
46
|
+
throw Error(`Unknown log level '${level}'`);
|
|
62
47
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
};
|
|
73
|
-
const logger = createWinstonLogger({
|
|
74
|
-
module: args.logPrefix,
|
|
75
|
-
format: args.logFormat ? parseLogFormat(args.logFormat) : "human",
|
|
76
|
-
timestampFormat,
|
|
77
|
-
hideTimestamp: opts === null || opts === void 0 ? void 0 : opts.hideTimestamp,
|
|
78
|
-
}, transports);
|
|
79
|
-
return { logger, logParams: { filename, rotateMaxFiles } };
|
|
48
|
+
return level;
|
|
49
|
+
}
|
|
50
|
+
function parseLogLevelModule(logLevelModuleArr) {
|
|
51
|
+
const levelModule = {};
|
|
52
|
+
for (const logLevelModule of logLevelModuleArr) {
|
|
53
|
+
const [module, levelStr] = logLevelModule.split("=");
|
|
54
|
+
levelModule[module] = parseLogLevel(levelStr);
|
|
55
|
+
}
|
|
56
|
+
return levelModule;
|
|
80
57
|
}
|
|
81
58
|
/**
|
|
82
59
|
* Winston is not able to clean old log files if server is offline for a while
|
|
83
60
|
* so we have to do this manually when starting the node.
|
|
84
61
|
* See https://github.com/ChainSafe/lodestar/issues/4419
|
|
85
62
|
*/
|
|
86
|
-
export function cleanOldLogFiles(
|
|
87
|
-
|
|
88
|
-
const
|
|
63
|
+
export function cleanOldLogFiles(args, paths) {
|
|
64
|
+
var _a;
|
|
65
|
+
const filepath = (_a = args.logFile) !== null && _a !== void 0 ? _a : paths.defaultLogFilepath;
|
|
66
|
+
const folder = path.dirname(filepath);
|
|
67
|
+
const filename = path.basename(filepath);
|
|
89
68
|
const lastIndexDot = filename.lastIndexOf(".");
|
|
90
69
|
const prefix = filename.substring(0, lastIndexDot);
|
|
91
70
|
const extension = filename.substring(lastIndexDot + 1, filename.length);
|
|
@@ -93,7 +72,7 @@ export function cleanOldLogFiles(filePath, maxFiles) {
|
|
|
93
72
|
.readdirSync(folder, { withFileTypes: true })
|
|
94
73
|
.filter((de) => de.isFile())
|
|
95
74
|
.map((de) => de.name)
|
|
96
|
-
.filter((logFileName) => shouldDeleteLogFile(prefix, extension, logFileName,
|
|
75
|
+
.filter((logFileName) => shouldDeleteLogFile(prefix, extension, logFileName, args.logFileDailyRotate))
|
|
97
76
|
.map((logFileName) => path.join(folder, logFileName));
|
|
98
77
|
// delete files
|
|
99
78
|
toDelete.forEach((filename) => fs.unlinkSync(filename));
|
|
@@ -107,10 +86,4 @@ export function shouldDeleteLogFile(prefix, extension, logFileName, maxFiles) {
|
|
|
107
86
|
}
|
|
108
87
|
return false;
|
|
109
88
|
}
|
|
110
|
-
function parseLogFormat(format) {
|
|
111
|
-
if (!logFormats.includes(format)) {
|
|
112
|
-
throw Error(`Invalid log format '${format}'`);
|
|
113
|
-
}
|
|
114
|
-
return format;
|
|
115
|
-
}
|
|
116
89
|
//# sourceMappingURL=logger.js.map
|
package/lib/util/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/util/logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/util/logger.ts"],"names":[],"mappings":"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"}
|