@lodestar/logger 1.51.0-dev.2593063a82 → 1.51.0-dev.2b933d3b9a

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.
@@ -12,6 +12,8 @@ export type EpochSlotOpts = {
12
12
  genesisTime: number;
13
13
  secondsPerSlot: number;
14
14
  slotsPerEpoch: number;
15
+ /** Slot durations by activation epoch, ascending */
16
+ slotDurations?: [epoch: number, secondsPerSlot: number][];
15
17
  };
16
18
  export declare enum TimestampFormatCode {
17
19
  DateRegular = "regular",
@@ -1 +1 @@
1
- {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../src/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,OAAO,EAAC,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEtE,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAC,CAAC;AAClC,YAAY,EAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAC,CAAC;AAE1C,eAAO,MAAM,WAAW,EAAE;KAAE,CAAC,IAAI,QAAQ,GAAG,MAAM;CAQjD,CAAC;AAEF,eAAO,MAAM,SAAS,YAA0B,CAAC;AAEjD,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AACzC,eAAO,MAAM,UAAU,EAAE,SAAS,EAAsB,CAAC;AAEzD,MAAM,MAAM,aAAa,GAAG;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AACF,oBAAY,mBAAmB;IAC7B,WAAW,YAAY;IACvB,MAAM,WAAW;IACjB,SAAS,UAAU;CACpB;AACD,MAAM,MAAM,eAAe,GACvB;IAAC,MAAM,EAAE,mBAAmB,CAAC,WAAW,CAAA;CAAC,GACzC;IAAC,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAA;CAAC,GACpC,CAAC;IAAC,MAAM,EAAE,mBAAmB,CAAC,SAAS,CAAA;CAAC,GAAG,aAAa,CAAC,CAAC;AAE9D,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;IAClB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CACnB"}
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../src/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,OAAO,EAAC,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEtE,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAC,CAAC;AAClC,YAAY,EAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAC,CAAC;AAE1C,eAAO,MAAM,WAAW,EAAE;KAAE,CAAC,IAAI,QAAQ,GAAG,MAAM;CAQjD,CAAC;AAEF,eAAO,MAAM,SAAS,YAA0B,CAAC;AAEjD,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AACzC,eAAO,MAAM,UAAU,EAAE,SAAS,EAAsB,CAAC;AAEzD,MAAM,MAAM,aAAa,GAAG;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,CAAC;CAC3D,CAAC;AACF,oBAAY,mBAAmB;IAC7B,WAAW,YAAY;IACvB,MAAM,WAAW;IACjB,SAAS,UAAU;CACpB;AACD,MAAM,MAAM,eAAe,GACvB;IAAC,MAAM,EAAE,mBAAmB,CAAC,WAAW,CAAA;CAAC,GACzC;IAAC,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAA;CAAC,GACpC,CAAC;IAAC,MAAM,EAAE,mBAAmB,CAAC,SAAS,CAAA;CAAC,GAAG,aAAa,CAAC,CAAC;AAE9D,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;IAClB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CACnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"interface.js","sourceRoot":"","sources":["../src/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,OAAO,EAAC,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAsB,QAAQ,EAAS,MAAM,iBAAiB,CAAC;AAEtE,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAC,CAAC;AAGlC,MAAM,CAAC,MAAM,WAAW,GAA8B;IACpD,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;IACnB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IAClB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IAClB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;IACrB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;IACnB,iFAAiF;IACjF,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAGjD,MAAM,CAAC,MAAM,UAAU,GAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAOzD,MAAM,CAAN,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,8CAAuB,CAAA;IACvB,wCAAiB,CAAA;IACjB,0CAAmB,CAAA;AACrB,CAAC,EAJW,mBAAmB,KAAnB,mBAAmB,QAI9B"}
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../src/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,OAAO,EAAC,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAsB,QAAQ,EAAS,MAAM,iBAAiB,CAAC;AAEtE,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAC,CAAC;AAGlC,MAAM,CAAC,MAAM,WAAW,GAA8B;IACpD,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;IACnB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IAClB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IAClB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;IACrB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;IACnB,iFAAiF;IACjF,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAGjD,MAAM,CAAC,MAAM,UAAU,GAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AASzD,MAAM,CAAN,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,8CAAuB,CAAA;IACvB,wCAAiB,CAAA;IACjB,0CAAmB,CAAA;AACrB,CAAC,EAJW,mBAAmB,KAAnB,mBAAmB,QAI9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"timeFormat.d.ts","sourceRoot":"","sources":["../../src/utils/timeFormat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAE9C;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,SAAa,GAAG,MAAM,CASjF"}
1
+ {"version":3,"file":"timeFormat.d.ts","sourceRoot":"","sources":["../../src/utils/timeFormat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAE9C;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,SAAa,GAAG,MAAM,CAkBjF"}
@@ -3,12 +3,22 @@
3
3
  */
4
4
  export function formatEpochSlotTime(opts, now = Date.now()) {
5
5
  const nowSec = now / 1000;
6
- const secSinceGenesis = nowSec - opts.genesisTime;
7
- const epoch = Math.floor(secSinceGenesis / (opts.slotsPerEpoch * opts.secondsPerSlot));
8
- const epochStartSec = opts.genesisTime + epoch * opts.slotsPerEpoch * opts.secondsPerSlot;
9
- const secSinceStartEpoch = nowSec - epochStartSec;
10
- const slotIndex = Math.floor(secSinceStartEpoch / opts.secondsPerSlot);
11
- const slotSec = secSinceStartEpoch % opts.secondsPerSlot;
6
+ let eraStartSlot = 0;
7
+ let eraStartSec = opts.genesisTime;
8
+ let secondsPerSlot = opts.secondsPerSlot;
9
+ for (const [forkEpoch, forkSecondsPerSlot] of opts.slotDurations ?? []) {
10
+ const forkSlot = forkEpoch * opts.slotsPerEpoch;
11
+ const forkSec = eraStartSec + (forkSlot - eraStartSlot) * secondsPerSlot;
12
+ if (nowSec < forkSec)
13
+ break;
14
+ eraStartSlot = forkSlot;
15
+ eraStartSec = forkSec;
16
+ secondsPerSlot = forkSecondsPerSlot;
17
+ }
18
+ const slot = eraStartSlot + Math.floor((nowSec - eraStartSec) / secondsPerSlot);
19
+ const epoch = Math.floor(slot / opts.slotsPerEpoch);
20
+ const slotIndex = slot - epoch * opts.slotsPerEpoch;
21
+ const slotSec = nowSec - (eraStartSec + (slot - eraStartSlot) * secondsPerSlot);
12
22
  return `Eph ${epoch}/${slotIndex} ${slotSec.toFixed(3)}`;
13
23
  }
14
24
  //# sourceMappingURL=timeFormat.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"timeFormat.js","sourceRoot":"","sources":["../../src/utils/timeFormat.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAmB,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IACvE,MAAM,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC;IAC1B,MAAM,eAAe,GAAG,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IACvF,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,GAAG,KAAK,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC;IAC1F,MAAM,kBAAkB,GAAG,MAAM,GAAG,aAAa,CAAC;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC;IACzD,OAAO,OAAO,KAAK,IAAI,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"timeFormat.js","sourceRoot":"","sources":["../../src/utils/timeFormat.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAmB,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IACvE,MAAM,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC;IAC1B,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IACnC,IAAI,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;IACzC,KAAK,MAAM,CAAC,SAAS,EAAE,kBAAkB,CAAC,IAAI,IAAI,CAAC,aAAa,IAAI,EAAE,EAAE,CAAC;QACvE,MAAM,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC;QAChD,MAAM,OAAO,GAAG,WAAW,GAAG,CAAC,QAAQ,GAAG,YAAY,CAAC,GAAG,cAAc,CAAC;QACzE,IAAI,MAAM,GAAG,OAAO;YAAE,MAAM;QAC5B,YAAY,GAAG,QAAQ,CAAC;QACxB,WAAW,GAAG,OAAO,CAAC;QACtB,cAAc,GAAG,kBAAkB,CAAC;IACtC,CAAC;IACD,MAAM,IAAI,GAAG,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,WAAW,CAAC,GAAG,cAAc,CAAC,CAAC;IAChF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;IACpD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,WAAW,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC,GAAG,cAAc,CAAC,CAAC;IAChF,OAAO,OAAO,KAAK,IAAI,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3D,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.51.0-dev.2593063a82",
14
+ "version": "1.51.0-dev.2b933d3b9a",
15
15
  "type": "module",
16
16
  "exports": {
17
17
  ".": {
@@ -67,7 +67,7 @@
67
67
  },
68
68
  "types": "lib/index.d.ts",
69
69
  "dependencies": {
70
- "@lodestar/utils": "^1.51.0-dev.2593063a82",
70
+ "@lodestar/utils": "^1.51.0-dev.2b933d3b9a",
71
71
  "triple-beam": "^1.3.0",
72
72
  "winston": "^3.8.2",
73
73
  "winston-daily-rotate-file": "^4.7.1",
@@ -76,7 +76,7 @@
76
76
  "devDependencies": {
77
77
  "@chainsafe/ssz": "^1.8.1",
78
78
  "@chainsafe/threads": "^1.11.3",
79
- "@lodestar/test-utils": "^1.51.0-dev.2593063a82",
79
+ "@lodestar/test-utils": "^1.51.0-dev.2b933d3b9a",
80
80
  "@types/triple-beam": "^1.3.2"
81
81
  },
82
82
  "keywords": [
@@ -85,5 +85,5 @@
85
85
  "beacon",
86
86
  "blockchain"
87
87
  ],
88
- "gitHead": "9ef629e5938036e197e32f9dd5c99eeeb89a9e48"
88
+ "gitHead": "a052574f95ae3cd10608f7acd46f680792604377"
89
89
  }
package/src/interface.ts CHANGED
@@ -23,6 +23,8 @@ export type EpochSlotOpts = {
23
23
  genesisTime: number;
24
24
  secondsPerSlot: number;
25
25
  slotsPerEpoch: number;
26
+ /** Slot durations by activation epoch, ascending */
27
+ slotDurations?: [epoch: number, secondsPerSlot: number][];
26
28
  };
27
29
  export enum TimestampFormatCode {
28
30
  DateRegular = "regular",
@@ -5,11 +5,20 @@ import {EpochSlotOpts} from "../interface.js";
5
5
  */
6
6
  export function formatEpochSlotTime(opts: EpochSlotOpts, now = Date.now()): string {
7
7
  const nowSec = now / 1000;
8
- const secSinceGenesis = nowSec - opts.genesisTime;
9
- const epoch = Math.floor(secSinceGenesis / (opts.slotsPerEpoch * opts.secondsPerSlot));
10
- const epochStartSec = opts.genesisTime + epoch * opts.slotsPerEpoch * opts.secondsPerSlot;
11
- const secSinceStartEpoch = nowSec - epochStartSec;
12
- const slotIndex = Math.floor(secSinceStartEpoch / opts.secondsPerSlot);
13
- const slotSec = secSinceStartEpoch % opts.secondsPerSlot;
8
+ let eraStartSlot = 0;
9
+ let eraStartSec = opts.genesisTime;
10
+ let secondsPerSlot = opts.secondsPerSlot;
11
+ for (const [forkEpoch, forkSecondsPerSlot] of opts.slotDurations ?? []) {
12
+ const forkSlot = forkEpoch * opts.slotsPerEpoch;
13
+ const forkSec = eraStartSec + (forkSlot - eraStartSlot) * secondsPerSlot;
14
+ if (nowSec < forkSec) break;
15
+ eraStartSlot = forkSlot;
16
+ eraStartSec = forkSec;
17
+ secondsPerSlot = forkSecondsPerSlot;
18
+ }
19
+ const slot = eraStartSlot + Math.floor((nowSec - eraStartSec) / secondsPerSlot);
20
+ const epoch = Math.floor(slot / opts.slotsPerEpoch);
21
+ const slotIndex = slot - epoch * opts.slotsPerEpoch;
22
+ const slotSec = nowSec - (eraStartSec + (slot - eraStartSlot) * secondsPerSlot);
14
23
  return `Eph ${epoch}/${slotIndex} ${slotSec.toFixed(3)}`;
15
24
  }