@xyo-network/xl1-cli 5.2.0 → 5.2.1
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/dist/cli-min.mjs +1027 -994
- package/dist/cli-min.mjs.map +1 -1
- package/package.json +2 -2
package/dist/cli-min.mjs
CHANGED
|
@@ -23,9 +23,9 @@ import fs$1, { readFileSync as readFileSync$1, readdirSync as readdirSync$1 } fr
|
|
|
23
23
|
import http$1 from "node:http";
|
|
24
24
|
import { notStrictEqual, strictEqual } from "assert";
|
|
25
25
|
import { MongoClient, ObjectId } from "mongodb";
|
|
26
|
-
import FS from "node:fs/promises";
|
|
27
26
|
import { AlwaysOnSampler, BasicTracerProvider, BatchSpanProcessor, ConsoleSpanExporter } from "@opentelemetry/sdk-trace-base";
|
|
28
27
|
import tty from "node:tty";
|
|
28
|
+
import FS from "node:fs/promises";
|
|
29
29
|
import { AsyncLocalStorageContextManager } from "@opentelemetry/context-async-hooks";
|
|
30
30
|
import { CompositePropagator, W3CBaggagePropagator, W3CTraceContextPropagator } from "@opentelemetry/core";
|
|
31
31
|
import { PrometheusExporter } from "@opentelemetry/exporter-prometheus";
|
|
@@ -224749,7 +224749,7 @@ var import_cjs$1 = (/* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
224749
224749
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
224750
224750
|
(init_tslib_es6(), __toCommonJS(tslib_es6_exports)).__exportStar(require_bullMQOtel(), exports);
|
|
224751
224751
|
})))();
|
|
224752
|
-
var DEFAULT_HEARTBEAT_INTERVAL = 15e3;
|
|
224752
|
+
var DEFAULT_HEARTBEAT_INTERVAL$1 = 15e3;
|
|
224753
224753
|
var DEFAULT_RECONNECT_BASE_DELAY = 1e3;
|
|
224754
224754
|
var DEFAULT_RECONNECT_JITTER = .25;
|
|
224755
224755
|
var DEFAULT_RECONNECT_MAX_DELAY = 3e4;
|
|
@@ -224928,7 +224928,7 @@ var ManagedWebSocketEventTransport = class {
|
|
|
224928
224928
|
this.webSocketUrl = webSocketUrl;
|
|
224929
224929
|
this.network = network;
|
|
224930
224930
|
this.options = {
|
|
224931
|
-
heartbeatInterval: options.heartbeatInterval ?? DEFAULT_HEARTBEAT_INTERVAL,
|
|
224931
|
+
heartbeatInterval: options.heartbeatInterval ?? DEFAULT_HEARTBEAT_INTERVAL$1,
|
|
224932
224932
|
reconnectBaseDelay: options.reconnectBaseDelay ?? DEFAULT_RECONNECT_BASE_DELAY,
|
|
224933
224933
|
reconnectJitter: options.reconnectJitter ?? DEFAULT_RECONNECT_JITTER,
|
|
224934
224934
|
reconnectMaxDelay: options.reconnectMaxDelay ?? DEFAULT_RECONNECT_MAX_DELAY,
|
|
@@ -228695,6 +228695,7 @@ var ChainHeadSelector = class _ChainHeadSelector extends ChainFinalizer {
|
|
|
228695
228695
|
admission;
|
|
228696
228696
|
allowedProducers;
|
|
228697
228697
|
backoffMs;
|
|
228698
|
+
heartbeatInterval;
|
|
228698
228699
|
minCandidates;
|
|
228699
228700
|
_timeSinceLastUncle = Date.now();
|
|
228700
228701
|
constructor(params) {
|
|
@@ -228702,6 +228703,7 @@ var ChainHeadSelector = class _ChainHeadSelector extends ChainFinalizer {
|
|
|
228702
228703
|
this.admission = params.admission ?? "allowlist";
|
|
228703
228704
|
this.allowedProducers = params.allowedProducers;
|
|
228704
228705
|
this.backoffMs = params.backoffMs;
|
|
228706
|
+
this.heartbeatInterval = params.heartbeatInterval;
|
|
228705
228707
|
this.minCandidates = params.minCandidates;
|
|
228706
228708
|
}
|
|
228707
228709
|
get context() {
|
|
@@ -228716,8 +228718,9 @@ var ChainHeadSelector = class _ChainHeadSelector extends ChainFinalizer {
|
|
|
228716
228718
|
const allowed = allProposedBlocks.filter((pb) => this.isAllowed(pb));
|
|
228717
228719
|
const proposedBlocks = await this.admit(allProposedBlocks, allowed);
|
|
228718
228720
|
this.windowedFinalizedChain = await getWindowedChain$1(this.context, this.blockViewer, this.maxWindowSize, this.windowedFinalizedChain);
|
|
228719
|
-
const
|
|
228720
|
-
this.
|
|
228721
|
+
const pacedBlocks = this.filterPacedHeartbeatCandidates(proposedBlocks);
|
|
228722
|
+
const uncles = findUncles$1(this.context, this.windowedFinalizedChain, pacedBlocks);
|
|
228723
|
+
this.reportSilentUncleRejections(pacedBlocks, uncles.length);
|
|
228721
228724
|
return findBestUncle(this.windowedFinalizedChain, uncles, {
|
|
228722
228725
|
backoffMs: this.backoffMs,
|
|
228723
228726
|
minCandidates: this.minCandidates
|
|
@@ -228771,6 +228774,28 @@ var ChainHeadSelector = class _ChainHeadSelector extends ChainFinalizer {
|
|
|
228771
228774
|
producer: candidate[0].addresses[0]
|
|
228772
228775
|
})));
|
|
228773
228776
|
}
|
|
228777
|
+
/**
|
|
228778
|
+
* Defense against unwanted heartbeat rates: a transaction-less (heartbeat) candidate qualifies
|
|
228779
|
+
* only when its signing epoch is at least heartbeatInterval after the current head's. Measured
|
|
228780
|
+
* on chain data, so every finalizer applies the same pace deterministically regardless of wall
|
|
228781
|
+
* clock. A producer heartbeating faster than the network's pace — misconfigured or hostile —
|
|
228782
|
+
* cannot drive the chain's block rate: its candidates never qualify and age out of the pool,
|
|
228783
|
+
* while transaction-carrying candidates are exempt and finalize immediately.
|
|
228784
|
+
*/
|
|
228785
|
+
filterPacedHeartbeatCandidates(proposedBlocks) {
|
|
228786
|
+
const interval = this.heartbeatInterval;
|
|
228787
|
+
if (interval === void 0 || proposedBlocks.length === 0) return proposedBlocks;
|
|
228788
|
+
const headEpoch = this.windowedFinalizedChain.at(-1)?.[0].$epoch;
|
|
228789
|
+
if (!isDefined$1(headEpoch)) return proposedBlocks;
|
|
228790
|
+
const paced = proposedBlocks.filter((candidate) => {
|
|
228791
|
+
if (candidate[1].some((payload) => isTransactionBoundWitness$1(payload))) return true;
|
|
228792
|
+
const candidateEpoch = candidate[0].$epoch;
|
|
228793
|
+
if (!isDefined$1(candidateEpoch)) return true;
|
|
228794
|
+
return candidateEpoch - headEpoch >= interval;
|
|
228795
|
+
});
|
|
228796
|
+
if (paced.length < proposedBlocks.length) this.context.logger?.debug(`findBestHead: paced out ${proposedBlocks.length - paced.length} heartbeat candidate(s) younger than ${interval}ms since the head`);
|
|
228797
|
+
return paced;
|
|
228798
|
+
}
|
|
228774
228799
|
/** Whether the configured allow-list admits a candidate. An empty list admits everyone. */
|
|
228775
228800
|
isAllowed(candidate) {
|
|
228776
228801
|
const allowedProducers = this.allowedProducers;
|
|
@@ -228818,6 +228843,574 @@ var ChainHeadSelector = class _ChainHeadSelector extends ChainFinalizer {
|
|
|
228818
228843
|
asSchema$1("network.xyo.chain.summary.producers", true);
|
|
228819
228844
|
asSchema$1("network.xyo.chain.summary.staked.intent", true);
|
|
228820
228845
|
asSchema$1("network.xyo.chain.summary.transfers", true);
|
|
228846
|
+
(/* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
228847
|
+
module.exports = function shallowEqual(objA, objB, compare, compareContext) {
|
|
228848
|
+
var ret = compare ? compare.call(compareContext, objA, objB) : void 0;
|
|
228849
|
+
if (ret !== void 0) return !!ret;
|
|
228850
|
+
if (objA === objB) return true;
|
|
228851
|
+
if (typeof objA !== "object" || !objA || typeof objB !== "object" || !objB) return false;
|
|
228852
|
+
var keysA = Object.keys(objA);
|
|
228853
|
+
var keysB = Object.keys(objB);
|
|
228854
|
+
if (keysA.length !== keysB.length) return false;
|
|
228855
|
+
var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);
|
|
228856
|
+
for (var idx = 0; idx < keysA.length; idx++) {
|
|
228857
|
+
var key = keysA[idx];
|
|
228858
|
+
if (!bHasOwnProperty(key)) return false;
|
|
228859
|
+
var valueA = objA[key];
|
|
228860
|
+
var valueB = objB[key];
|
|
228861
|
+
ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;
|
|
228862
|
+
if (ret === false || ret === void 0 && valueA !== valueB) return false;
|
|
228863
|
+
}
|
|
228864
|
+
return true;
|
|
228865
|
+
};
|
|
228866
|
+
})))();
|
|
228867
|
+
function stringReplaceAll(string, substring, postfix) {
|
|
228868
|
+
let index = string.indexOf(substring);
|
|
228869
|
+
if (index === -1) return string;
|
|
228870
|
+
const substringLength = substring.length;
|
|
228871
|
+
let endIndex = 0;
|
|
228872
|
+
let returnValue = "";
|
|
228873
|
+
do {
|
|
228874
|
+
returnValue += string.slice(endIndex, index) + substring + postfix;
|
|
228875
|
+
endIndex = index + substringLength;
|
|
228876
|
+
index = string.indexOf(substring, endIndex);
|
|
228877
|
+
} while (index !== -1);
|
|
228878
|
+
returnValue += string.slice(endIndex);
|
|
228879
|
+
return returnValue;
|
|
228880
|
+
}
|
|
228881
|
+
function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {
|
|
228882
|
+
let endIndex = 0;
|
|
228883
|
+
let returnValue = "";
|
|
228884
|
+
do {
|
|
228885
|
+
const isGotCR = string[index - 1] === "\r";
|
|
228886
|
+
returnValue += string.slice(endIndex, isGotCR ? index - 1 : index) + prefix + (isGotCR ? "\r\n" : "\n") + postfix;
|
|
228887
|
+
endIndex = index + 1;
|
|
228888
|
+
index = string.indexOf("\n", endIndex);
|
|
228889
|
+
} while (index !== -1);
|
|
228890
|
+
returnValue += string.slice(endIndex);
|
|
228891
|
+
return returnValue;
|
|
228892
|
+
}
|
|
228893
|
+
//#endregion
|
|
228894
|
+
//#region ../../node_modules/.pnpm/chalk@6.0.0/node_modules/chalk/source/vendor/ansi-styles/index.js
|
|
228895
|
+
const ANSI_BACKGROUND_OFFSET$1 = 10;
|
|
228896
|
+
const ANSI_UNDERLINE_OFFSET = 20;
|
|
228897
|
+
const wrapAnsi16$1 = (offset = 0) => (code) => `\u{1B}[${code + offset}m`;
|
|
228898
|
+
const wrapAnsi256$1 = (offset = 0) => (code) => `\u{1B}[${38 + offset};5;${code}m`;
|
|
228899
|
+
const wrapAnsi16m$1 = (offset = 0) => (red, green, blue) => `\u{1B}[${38 + offset};2;${red};${green};${blue}m`;
|
|
228900
|
+
const wrapUnderlineAnsi = (code) => `\u{1B}[58;5;${code < 90 ? code - 30 : code - 90 + 8}m`;
|
|
228901
|
+
const styles$2 = {
|
|
228902
|
+
modifier: {
|
|
228903
|
+
reset: [0, 0],
|
|
228904
|
+
bold: [1, 22],
|
|
228905
|
+
dim: [2, 22],
|
|
228906
|
+
italic: [3, 23],
|
|
228907
|
+
underline: [4, 24],
|
|
228908
|
+
underlineDouble: ["4:2", 24],
|
|
228909
|
+
underlineCurly: ["4:3", 24],
|
|
228910
|
+
underlineDotted: ["4:4", 24],
|
|
228911
|
+
underlineDashed: ["4:5", 24],
|
|
228912
|
+
overline: [53, 55],
|
|
228913
|
+
inverse: [7, 27],
|
|
228914
|
+
hidden: [8, 28],
|
|
228915
|
+
strikethrough: [9, 29]
|
|
228916
|
+
},
|
|
228917
|
+
color: {
|
|
228918
|
+
black: [30, 39],
|
|
228919
|
+
red: [31, 39],
|
|
228920
|
+
green: [32, 39],
|
|
228921
|
+
yellow: [33, 39],
|
|
228922
|
+
blue: [34, 39],
|
|
228923
|
+
magenta: [35, 39],
|
|
228924
|
+
cyan: [36, 39],
|
|
228925
|
+
white: [37, 39],
|
|
228926
|
+
blackBright: [90, 39],
|
|
228927
|
+
gray: [90, 39],
|
|
228928
|
+
grey: [90, 39],
|
|
228929
|
+
redBright: [91, 39],
|
|
228930
|
+
greenBright: [92, 39],
|
|
228931
|
+
yellowBright: [93, 39],
|
|
228932
|
+
blueBright: [94, 39],
|
|
228933
|
+
magentaBright: [95, 39],
|
|
228934
|
+
cyanBright: [96, 39],
|
|
228935
|
+
whiteBright: [97, 39]
|
|
228936
|
+
},
|
|
228937
|
+
bgColor: {
|
|
228938
|
+
bgBlack: [40, 49],
|
|
228939
|
+
bgRed: [41, 49],
|
|
228940
|
+
bgGreen: [42, 49],
|
|
228941
|
+
bgYellow: [43, 49],
|
|
228942
|
+
bgBlue: [44, 49],
|
|
228943
|
+
bgMagenta: [45, 49],
|
|
228944
|
+
bgCyan: [46, 49],
|
|
228945
|
+
bgWhite: [47, 49],
|
|
228946
|
+
bgBlackBright: [100, 49],
|
|
228947
|
+
bgGray: [100, 49],
|
|
228948
|
+
bgGrey: [100, 49],
|
|
228949
|
+
bgRedBright: [101, 49],
|
|
228950
|
+
bgGreenBright: [102, 49],
|
|
228951
|
+
bgYellowBright: [103, 49],
|
|
228952
|
+
bgBlueBright: [104, 49],
|
|
228953
|
+
bgMagentaBright: [105, 49],
|
|
228954
|
+
bgCyanBright: [106, 49],
|
|
228955
|
+
bgWhiteBright: [107, 49]
|
|
228956
|
+
},
|
|
228957
|
+
underlineColor: {
|
|
228958
|
+
underlineBlack: ["58;5;0", 59],
|
|
228959
|
+
underlineRed: ["58;5;1", 59],
|
|
228960
|
+
underlineGreen: ["58;5;2", 59],
|
|
228961
|
+
underlineYellow: ["58;5;3", 59],
|
|
228962
|
+
underlineBlue: ["58;5;4", 59],
|
|
228963
|
+
underlineMagenta: ["58;5;5", 59],
|
|
228964
|
+
underlineCyan: ["58;5;6", 59],
|
|
228965
|
+
underlineWhite: ["58;5;7", 59],
|
|
228966
|
+
underlineBlackBright: ["58;5;8", 59],
|
|
228967
|
+
underlineGray: ["58;5;8", 59],
|
|
228968
|
+
underlineGrey: ["58;5;8", 59],
|
|
228969
|
+
underlineRedBright: ["58;5;9", 59],
|
|
228970
|
+
underlineGreenBright: ["58;5;10", 59],
|
|
228971
|
+
underlineYellowBright: ["58;5;11", 59],
|
|
228972
|
+
underlineBlueBright: ["58;5;12", 59],
|
|
228973
|
+
underlineMagentaBright: ["58;5;13", 59],
|
|
228974
|
+
underlineCyanBright: ["58;5;14", 59],
|
|
228975
|
+
underlineWhiteBright: ["58;5;15", 59]
|
|
228976
|
+
}
|
|
228977
|
+
};
|
|
228978
|
+
Object.keys(styles$2.modifier);
|
|
228979
|
+
const foregroundColorNames$1 = Object.keys(styles$2.color);
|
|
228980
|
+
const backgroundColorNames$1 = Object.keys(styles$2.bgColor);
|
|
228981
|
+
Object.keys(styles$2.underlineColor);
|
|
228982
|
+
[...foregroundColorNames$1, ...backgroundColorNames$1];
|
|
228983
|
+
function assembleStyles$1() {
|
|
228984
|
+
const codes = /* @__PURE__ */ new Map();
|
|
228985
|
+
for (const [groupName, group] of Object.entries(styles$2)) {
|
|
228986
|
+
for (const [styleName, style] of Object.entries(group)) {
|
|
228987
|
+
styles$2[styleName] = {
|
|
228988
|
+
open: `\u{1B}[${style[0]}m`,
|
|
228989
|
+
close: `\u{1B}[${style[1]}m`
|
|
228990
|
+
};
|
|
228991
|
+
group[styleName] = styles$2[styleName];
|
|
228992
|
+
codes.set(Number.parseInt(style[0], 10), style[1]);
|
|
228993
|
+
}
|
|
228994
|
+
Object.defineProperty(styles$2, groupName, {
|
|
228995
|
+
value: group,
|
|
228996
|
+
enumerable: false
|
|
228997
|
+
});
|
|
228998
|
+
}
|
|
228999
|
+
Object.defineProperty(styles$2, "codes", {
|
|
229000
|
+
value: codes,
|
|
229001
|
+
enumerable: false
|
|
229002
|
+
});
|
|
229003
|
+
styles$2.color.close = "\x1B[39m";
|
|
229004
|
+
styles$2.bgColor.close = "\x1B[49m";
|
|
229005
|
+
styles$2.underlineColor.close = "\x1B[59m";
|
|
229006
|
+
styles$2.color.ansi = wrapAnsi16$1();
|
|
229007
|
+
styles$2.color.ansi256 = wrapAnsi256$1();
|
|
229008
|
+
styles$2.color.ansi16m = wrapAnsi16m$1();
|
|
229009
|
+
styles$2.bgColor.ansi = wrapAnsi16$1(ANSI_BACKGROUND_OFFSET$1);
|
|
229010
|
+
styles$2.bgColor.ansi256 = wrapAnsi256$1(ANSI_BACKGROUND_OFFSET$1);
|
|
229011
|
+
styles$2.bgColor.ansi16m = wrapAnsi16m$1(ANSI_BACKGROUND_OFFSET$1);
|
|
229012
|
+
styles$2.underlineColor.ansi = wrapUnderlineAnsi;
|
|
229013
|
+
styles$2.underlineColor.ansi256 = wrapAnsi256$1(ANSI_UNDERLINE_OFFSET);
|
|
229014
|
+
styles$2.underlineColor.ansi16m = wrapAnsi16m$1(ANSI_UNDERLINE_OFFSET);
|
|
229015
|
+
Object.defineProperties(styles$2, {
|
|
229016
|
+
rgbToAnsi256: {
|
|
229017
|
+
value(red, green, blue) {
|
|
229018
|
+
if (red === green && green === blue) {
|
|
229019
|
+
if (red < 8) return 16;
|
|
229020
|
+
if (red > 248) return 231;
|
|
229021
|
+
return Math.round((red - 8) / 247 * 24) + 232;
|
|
229022
|
+
}
|
|
229023
|
+
return 16 + 36 * Math.round(red / 255 * 5) + 6 * Math.round(green / 255 * 5) + Math.round(blue / 255 * 5);
|
|
229024
|
+
},
|
|
229025
|
+
enumerable: false
|
|
229026
|
+
},
|
|
229027
|
+
hexToRgb: {
|
|
229028
|
+
value(hex) {
|
|
229029
|
+
const matches = /[\da-f]{6}|[\da-f]{3}/i.exec(hex.toString(16));
|
|
229030
|
+
if (!matches) return [
|
|
229031
|
+
0,
|
|
229032
|
+
0,
|
|
229033
|
+
0
|
|
229034
|
+
];
|
|
229035
|
+
let [colorString] = matches;
|
|
229036
|
+
if (colorString.length === 3) colorString = [...colorString].map((character) => character + character).join("");
|
|
229037
|
+
const integer = Number.parseInt(colorString, 16);
|
|
229038
|
+
return [
|
|
229039
|
+
integer >> 16 & 255,
|
|
229040
|
+
integer >> 8 & 255,
|
|
229041
|
+
integer & 255
|
|
229042
|
+
];
|
|
229043
|
+
},
|
|
229044
|
+
enumerable: false
|
|
229045
|
+
},
|
|
229046
|
+
hexToAnsi256: {
|
|
229047
|
+
value: (hex) => styles$2.rgbToAnsi256(...styles$2.hexToRgb(hex)),
|
|
229048
|
+
enumerable: false
|
|
229049
|
+
},
|
|
229050
|
+
ansi256ToAnsi: {
|
|
229051
|
+
value(code) {
|
|
229052
|
+
if (code < 8) return 30 + code;
|
|
229053
|
+
if (code < 16) return 90 + (code - 8);
|
|
229054
|
+
let red;
|
|
229055
|
+
let green;
|
|
229056
|
+
let blue;
|
|
229057
|
+
if (code >= 232) {
|
|
229058
|
+
red = ((code - 232) * 10 + 8) / 255;
|
|
229059
|
+
green = red;
|
|
229060
|
+
blue = red;
|
|
229061
|
+
} else {
|
|
229062
|
+
code -= 16;
|
|
229063
|
+
const remainder = code % 36;
|
|
229064
|
+
red = Math.floor(code / 36) / 5;
|
|
229065
|
+
green = Math.floor(remainder / 6) / 5;
|
|
229066
|
+
blue = remainder % 6 / 5;
|
|
229067
|
+
}
|
|
229068
|
+
const value = Math.max(red, green, blue) * 2;
|
|
229069
|
+
if (value === 0) return 30;
|
|
229070
|
+
let result = 30 + (Math.round(blue) << 2 | Math.round(green) << 1 | Math.round(red));
|
|
229071
|
+
if (value === 2) result += 60;
|
|
229072
|
+
return result;
|
|
229073
|
+
},
|
|
229074
|
+
enumerable: false
|
|
229075
|
+
},
|
|
229076
|
+
rgbToAnsi: {
|
|
229077
|
+
value: (red, green, blue) => styles$2.ansi256ToAnsi(styles$2.rgbToAnsi256(red, green, blue)),
|
|
229078
|
+
enumerable: false
|
|
229079
|
+
},
|
|
229080
|
+
hexToAnsi: {
|
|
229081
|
+
value: (hex) => styles$2.ansi256ToAnsi(styles$2.hexToAnsi256(hex)),
|
|
229082
|
+
enumerable: false
|
|
229083
|
+
}
|
|
229084
|
+
});
|
|
229085
|
+
return styles$2;
|
|
229086
|
+
}
|
|
229087
|
+
const ansiStyles$1 = assembleStyles$1();
|
|
229088
|
+
//#endregion
|
|
229089
|
+
//#region ../../node_modules/.pnpm/chalk@6.0.0/node_modules/chalk/source/vendor/supports-color/index.js
|
|
229090
|
+
function hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process$1.argv) {
|
|
229091
|
+
const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
|
|
229092
|
+
const position = argv.indexOf(prefix + flag);
|
|
229093
|
+
const terminatorPosition = argv.indexOf("--");
|
|
229094
|
+
return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);
|
|
229095
|
+
}
|
|
229096
|
+
const { env: env$1 } = process$1;
|
|
229097
|
+
let flagForceColor;
|
|
229098
|
+
if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) flagForceColor = 0;
|
|
229099
|
+
else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) flagForceColor = 1;
|
|
229100
|
+
function hasNumericForceColor() {
|
|
229101
|
+
return /^\d+$/.test(env$1.FORCE_COLOR);
|
|
229102
|
+
}
|
|
229103
|
+
function envForceColor() {
|
|
229104
|
+
if (!("FORCE_COLOR" in env$1)) return;
|
|
229105
|
+
if (env$1.FORCE_COLOR === "false") return 0;
|
|
229106
|
+
if (env$1.FORCE_COLOR === "true" || env$1.FORCE_COLOR.length === 0) return 1;
|
|
229107
|
+
if (!hasNumericForceColor()) return;
|
|
229108
|
+
return Math.min(Number.parseInt(env$1.FORCE_COLOR, 10), 3);
|
|
229109
|
+
}
|
|
229110
|
+
function translateLevel(level) {
|
|
229111
|
+
if (level === 0) return false;
|
|
229112
|
+
return {
|
|
229113
|
+
level,
|
|
229114
|
+
hasBasic: true,
|
|
229115
|
+
has256: level >= 2,
|
|
229116
|
+
has16m: level >= 3
|
|
229117
|
+
};
|
|
229118
|
+
}
|
|
229119
|
+
function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
|
|
229120
|
+
const noFlagForceColor = envForceColor();
|
|
229121
|
+
if (noFlagForceColor !== void 0) flagForceColor = noFlagForceColor;
|
|
229122
|
+
const forceColor = sniffFlags ? flagForceColor : noFlagForceColor;
|
|
229123
|
+
if (forceColor === 0) return 0;
|
|
229124
|
+
if (sniffFlags) {
|
|
229125
|
+
if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) return 3;
|
|
229126
|
+
if (hasFlag("color=256")) return 2;
|
|
229127
|
+
}
|
|
229128
|
+
if (forceColor !== void 0 && hasNumericForceColor()) return forceColor;
|
|
229129
|
+
if ("TF_BUILD" in env$1 && "AGENT_NAME" in env$1) return 1;
|
|
229130
|
+
if (haveStream && !streamIsTTY && forceColor === void 0) return 0;
|
|
229131
|
+
const min = forceColor || 0;
|
|
229132
|
+
if (env$1.TERM === "dumb") return min;
|
|
229133
|
+
if (process$1.platform === "win32") {
|
|
229134
|
+
const osRelease = os.release().split(".");
|
|
229135
|
+
if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) return Number(osRelease[2]) >= 14931 ? 3 : 2;
|
|
229136
|
+
return 1;
|
|
229137
|
+
}
|
|
229138
|
+
if ("CI" in env$1) {
|
|
229139
|
+
if ([
|
|
229140
|
+
"GITHUB_ACTIONS",
|
|
229141
|
+
"GITEA_ACTIONS",
|
|
229142
|
+
"CIRCLECI"
|
|
229143
|
+
].some((key) => key in env$1)) return 3;
|
|
229144
|
+
if ([
|
|
229145
|
+
"TRAVIS",
|
|
229146
|
+
"APPVEYOR",
|
|
229147
|
+
"GITLAB_CI",
|
|
229148
|
+
"BUILDKITE",
|
|
229149
|
+
"DRONE"
|
|
229150
|
+
].some((sign) => sign in env$1) || env$1.CI_NAME === "codeship") return 1;
|
|
229151
|
+
return min;
|
|
229152
|
+
}
|
|
229153
|
+
if ("TEAMCITY_VERSION" in env$1) return /^(?:9\.0*[1-9]\d*\.|\d{2,}\.)/.test(env$1.TEAMCITY_VERSION) ? 1 : 0;
|
|
229154
|
+
if (env$1.COLORTERM === "truecolor") return 3;
|
|
229155
|
+
if (env$1.TERM === "xterm-kitty") return 3;
|
|
229156
|
+
if (env$1.TERM === "xterm-ghostty") return 3;
|
|
229157
|
+
if (env$1.TERM === "wezterm") return 3;
|
|
229158
|
+
if ("TERM_PROGRAM" in env$1) {
|
|
229159
|
+
const version = Number.parseInt((env$1.TERM_PROGRAM_VERSION || "").split(".", 1)[0], 10);
|
|
229160
|
+
switch (env$1.TERM_PROGRAM) {
|
|
229161
|
+
case "iTerm.app": return version >= 3 ? 3 : 2;
|
|
229162
|
+
case "Apple_Terminal": return 2;
|
|
229163
|
+
}
|
|
229164
|
+
}
|
|
229165
|
+
if (/-256(?:color)?$/i.test(env$1.TERM)) return 2;
|
|
229166
|
+
if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env$1.TERM)) return 1;
|
|
229167
|
+
if ("COLORTERM" in env$1) return 1;
|
|
229168
|
+
return min;
|
|
229169
|
+
}
|
|
229170
|
+
function createSupportsColor(stream, options = {}) {
|
|
229171
|
+
return translateLevel(_supportsColor(stream, {
|
|
229172
|
+
streamIsTTY: stream && stream.isTTY,
|
|
229173
|
+
...options
|
|
229174
|
+
}));
|
|
229175
|
+
}
|
|
229176
|
+
//#endregion
|
|
229177
|
+
//#region ../../node_modules/.pnpm/chalk@6.0.0/node_modules/chalk/source/index.js
|
|
229178
|
+
const { stdout: stdoutColor, stderr: stderrColor } = {
|
|
229179
|
+
stdout: createSupportsColor({ isTTY: tty.isatty(1) }),
|
|
229180
|
+
stderr: createSupportsColor({ isTTY: tty.isatty(2) })
|
|
229181
|
+
};
|
|
229182
|
+
const GENERATOR = Symbol("GENERATOR");
|
|
229183
|
+
const STYLER = Symbol("STYLER");
|
|
229184
|
+
const IS_EMPTY = Symbol("IS_EMPTY");
|
|
229185
|
+
const LEVEL = Symbol("LEVEL");
|
|
229186
|
+
const styles$1 = Object.create(null);
|
|
229187
|
+
const assertValidLevel = (level) => {
|
|
229188
|
+
if (!Number.isSafeInteger(level) || level < 0 || level > 3) throw new Error("The `level` should be an integer from 0 to 3");
|
|
229189
|
+
};
|
|
229190
|
+
const levelDescriptor = {
|
|
229191
|
+
enumerable: true,
|
|
229192
|
+
get() {
|
|
229193
|
+
return this[LEVEL];
|
|
229194
|
+
},
|
|
229195
|
+
set(level) {
|
|
229196
|
+
assertValidLevel(level);
|
|
229197
|
+
this[LEVEL] = level;
|
|
229198
|
+
}
|
|
229199
|
+
};
|
|
229200
|
+
const applyOptions = (object, options = {}) => {
|
|
229201
|
+
if (options.level !== void 0) assertValidLevel(options.level);
|
|
229202
|
+
const colorLevel = stdoutColor ? stdoutColor.level : 0;
|
|
229203
|
+
object[LEVEL] = options.level === void 0 ? colorLevel : options.level;
|
|
229204
|
+
};
|
|
229205
|
+
const chalkFactory = (options) => {
|
|
229206
|
+
const chalk = (...strings) => strings.join(" ");
|
|
229207
|
+
applyOptions(chalk, options);
|
|
229208
|
+
Object.setPrototypeOf(chalk, createChalk.prototype);
|
|
229209
|
+
return chalk;
|
|
229210
|
+
};
|
|
229211
|
+
function createChalk(options) {
|
|
229212
|
+
return chalkFactory(options);
|
|
229213
|
+
}
|
|
229214
|
+
Object.setPrototypeOf(createChalk.prototype, Function.prototype);
|
|
229215
|
+
for (const [styleName, style] of Object.entries(ansiStyles$1)) styles$1[styleName] = { get() {
|
|
229216
|
+
const builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);
|
|
229217
|
+
Object.defineProperty(this, styleName, { value: builder });
|
|
229218
|
+
return builder;
|
|
229219
|
+
} };
|
|
229220
|
+
styles$1.visible = { get() {
|
|
229221
|
+
const builder = createBuilder(this, this[STYLER], true);
|
|
229222
|
+
Object.defineProperty(this, "visible", { value: builder });
|
|
229223
|
+
return builder;
|
|
229224
|
+
} };
|
|
229225
|
+
const createModelConverters = (model, type) => {
|
|
229226
|
+
const style = ansiStyles$1[type];
|
|
229227
|
+
if (model === "rgb") {
|
|
229228
|
+
const ansi = (red, green, blue) => style.ansi(ansiStyles$1.rgbToAnsi(red, green, blue));
|
|
229229
|
+
const ansi256 = (red, green, blue) => style.ansi256(ansiStyles$1.rgbToAnsi256(red, green, blue));
|
|
229230
|
+
return [
|
|
229231
|
+
ansi,
|
|
229232
|
+
ansi,
|
|
229233
|
+
ansi256,
|
|
229234
|
+
style.ansi16m
|
|
229235
|
+
];
|
|
229236
|
+
}
|
|
229237
|
+
if (model === "hex") {
|
|
229238
|
+
const ansi = (hex) => style.ansi(ansiStyles$1.hexToAnsi(hex));
|
|
229239
|
+
const ansi256 = (hex) => style.ansi256(ansiStyles$1.hexToAnsi256(hex));
|
|
229240
|
+
return [
|
|
229241
|
+
ansi,
|
|
229242
|
+
ansi,
|
|
229243
|
+
ansi256,
|
|
229244
|
+
(hex) => style.ansi16m(...ansiStyles$1.hexToRgb(hex))
|
|
229245
|
+
];
|
|
229246
|
+
}
|
|
229247
|
+
const ansi = (code) => style.ansi(ansiStyles$1.ansi256ToAnsi(code));
|
|
229248
|
+
return [
|
|
229249
|
+
ansi,
|
|
229250
|
+
ansi,
|
|
229251
|
+
style.ansi256,
|
|
229252
|
+
style.ansi256
|
|
229253
|
+
];
|
|
229254
|
+
};
|
|
229255
|
+
for (const model of [
|
|
229256
|
+
"rgb",
|
|
229257
|
+
"hex",
|
|
229258
|
+
"ansi256"
|
|
229259
|
+
]) {
|
|
229260
|
+
const capitalizedModel = model[0].toUpperCase() + model.slice(1);
|
|
229261
|
+
for (const [styleName, type] of [
|
|
229262
|
+
[model, "color"],
|
|
229263
|
+
["bg" + capitalizedModel, "bgColor"],
|
|
229264
|
+
["underline" + capitalizedModel, "underlineColor"]
|
|
229265
|
+
]) {
|
|
229266
|
+
const { close } = ansiStyles$1[type];
|
|
229267
|
+
const converters = createModelConverters(model, type);
|
|
229268
|
+
styles$1[styleName] = { get() {
|
|
229269
|
+
const styleFunction = function(first, second, third) {
|
|
229270
|
+
const open = converters[this.level](first, second, third);
|
|
229271
|
+
return createBuilder(this, createStyler(open, close, this[STYLER]), this[IS_EMPTY]);
|
|
229272
|
+
};
|
|
229273
|
+
Object.defineProperty(this, styleName, { value: styleFunction });
|
|
229274
|
+
return styleFunction;
|
|
229275
|
+
} };
|
|
229276
|
+
}
|
|
229277
|
+
}
|
|
229278
|
+
const proto = Object.defineProperties(() => {}, {
|
|
229279
|
+
...styles$1,
|
|
229280
|
+
level: {
|
|
229281
|
+
enumerable: true,
|
|
229282
|
+
get() {
|
|
229283
|
+
return this[GENERATOR].level;
|
|
229284
|
+
},
|
|
229285
|
+
set(level) {
|
|
229286
|
+
this[GENERATOR].level = level;
|
|
229287
|
+
}
|
|
229288
|
+
}
|
|
229289
|
+
});
|
|
229290
|
+
const createStyler = (open, close, parent) => {
|
|
229291
|
+
let openAll;
|
|
229292
|
+
let closeAll;
|
|
229293
|
+
if (parent === void 0) {
|
|
229294
|
+
openAll = open;
|
|
229295
|
+
closeAll = close;
|
|
229296
|
+
} else {
|
|
229297
|
+
openAll = parent.openAll + open;
|
|
229298
|
+
closeAll = close + parent.closeAll;
|
|
229299
|
+
}
|
|
229300
|
+
return {
|
|
229301
|
+
open,
|
|
229302
|
+
close,
|
|
229303
|
+
openAll,
|
|
229304
|
+
closeAll,
|
|
229305
|
+
parent
|
|
229306
|
+
};
|
|
229307
|
+
};
|
|
229308
|
+
const createBuilder = (self, _styler, _isEmpty) => {
|
|
229309
|
+
const builder = (...arguments_) => {
|
|
229310
|
+
if (arguments_.length === 1) return applyStyle(builder, "" + arguments_[0]);
|
|
229311
|
+
if (arguments_.length === 2) return applyStyle(builder, arguments_[0] + " " + arguments_[1]);
|
|
229312
|
+
return applyStyle(builder, arguments_.join(" "));
|
|
229313
|
+
};
|
|
229314
|
+
Object.setPrototypeOf(builder, proto);
|
|
229315
|
+
builder[GENERATOR] = self[GENERATOR] ?? self;
|
|
229316
|
+
builder[STYLER] = _styler;
|
|
229317
|
+
builder[IS_EMPTY] = _isEmpty;
|
|
229318
|
+
return builder;
|
|
229319
|
+
};
|
|
229320
|
+
const applyStyle = (self, string) => {
|
|
229321
|
+
if (self[GENERATOR][LEVEL] <= 0 || !string) return self[IS_EMPTY] ? "" : string;
|
|
229322
|
+
let styler = self[STYLER];
|
|
229323
|
+
if (styler === void 0) return string;
|
|
229324
|
+
const { openAll, closeAll } = styler;
|
|
229325
|
+
if (string.includes("\x1B")) while (styler !== void 0) {
|
|
229326
|
+
string = stringReplaceAll(string, styler.close, styler.open);
|
|
229327
|
+
styler = styler.parent;
|
|
229328
|
+
}
|
|
229329
|
+
const lfIndex = string.indexOf("\n");
|
|
229330
|
+
if (lfIndex !== -1) string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);
|
|
229331
|
+
return openAll + string + closeAll;
|
|
229332
|
+
};
|
|
229333
|
+
Object.defineProperties(createChalk.prototype, {
|
|
229334
|
+
...styles$1,
|
|
229335
|
+
level: levelDescriptor
|
|
229336
|
+
});
|
|
229337
|
+
const chalk = createChalk();
|
|
229338
|
+
createChalk({ level: stderrColor ? stderrColor.level : 0 });
|
|
229339
|
+
//#endregion
|
|
229340
|
+
//#region ../chain-sdk/dist/neutral/utils.mjs
|
|
229341
|
+
function hexToLast4BytesInt(value) {
|
|
229342
|
+
assertEx$1(isHex(value), () => "value must be a hex string");
|
|
229343
|
+
const last4Bytes = value.slice(-8);
|
|
229344
|
+
return Number.parseInt(last4Bytes, 16);
|
|
229345
|
+
}
|
|
229346
|
+
function seededRandom(seed) {
|
|
229347
|
+
return function() {
|
|
229348
|
+
const x = Math.sin(seed++) * 1e4;
|
|
229349
|
+
return x - Math.floor(x);
|
|
229350
|
+
};
|
|
229351
|
+
}
|
|
229352
|
+
function shuffleWithSeed(set, seed) {
|
|
229353
|
+
const array = [...set].toSorted((a, b) => String(a).localeCompare(String(b)));
|
|
229354
|
+
const random = seededRandom(seed);
|
|
229355
|
+
for (let i = array.length - 1; i > 0; i--) {
|
|
229356
|
+
const j = Math.floor(random() * (i + 1));
|
|
229357
|
+
const swap = array[i];
|
|
229358
|
+
array[i] = array[j];
|
|
229359
|
+
array[j] = swap;
|
|
229360
|
+
}
|
|
229361
|
+
return array;
|
|
229362
|
+
}
|
|
229363
|
+
function spanDurationInMillis(span) {
|
|
229364
|
+
return span.duration[0] * 1e3 + span.duration[1] / 1e6;
|
|
229365
|
+
}
|
|
229366
|
+
(class _XyoConsoleSpanExporter extends ConsoleSpanExporter {
|
|
229367
|
+
static durationToLogLevel = [
|
|
229368
|
+
0,
|
|
229369
|
+
1,
|
|
229370
|
+
10,
|
|
229371
|
+
100,
|
|
229372
|
+
1e3
|
|
229373
|
+
];
|
|
229374
|
+
static logLevelToChalkColor = [
|
|
229375
|
+
chalk.grey,
|
|
229376
|
+
chalk.white,
|
|
229377
|
+
chalk.green,
|
|
229378
|
+
chalk.yellow,
|
|
229379
|
+
chalk.red
|
|
229380
|
+
];
|
|
229381
|
+
_logLevel;
|
|
229382
|
+
constructor(logLevel = 0) {
|
|
229383
|
+
super();
|
|
229384
|
+
this._logLevel = logLevel;
|
|
229385
|
+
}
|
|
229386
|
+
get logLevel() {
|
|
229387
|
+
return this._logLevel;
|
|
229388
|
+
}
|
|
229389
|
+
export(spans) {
|
|
229390
|
+
for (const span of spans) {
|
|
229391
|
+
const spanLevel = this.spanLevel(span);
|
|
229392
|
+
if (spanLevel < this.logLevel) continue;
|
|
229393
|
+
const duration = spanDurationInMillis(span);
|
|
229394
|
+
console.log(chalk.grey([
|
|
229395
|
+
`Span [${span.name}]`,
|
|
229396
|
+
this.logColor(spanLevel)(`${duration}ms`),
|
|
229397
|
+
`TraceId: ${span.spanContext().traceId}`
|
|
229398
|
+
].join(", ")));
|
|
229399
|
+
}
|
|
229400
|
+
}
|
|
229401
|
+
logColor(level) {
|
|
229402
|
+
return _XyoConsoleSpanExporter.logLevelToChalkColor[level] ?? chalk.magenta;
|
|
229403
|
+
}
|
|
229404
|
+
spanLevel(span) {
|
|
229405
|
+
let logLevel = 0;
|
|
229406
|
+
const duration = spanDurationInMillis(span);
|
|
229407
|
+
for (let x = _XyoConsoleSpanExporter.durationToLogLevel.length - 1; x >= 0; x--) if (duration > _XyoConsoleSpanExporter.durationToLogLevel[x]) {
|
|
229408
|
+
logLevel = x;
|
|
229409
|
+
break;
|
|
229410
|
+
}
|
|
229411
|
+
return logLevel;
|
|
229412
|
+
}
|
|
229413
|
+
});
|
|
228821
229414
|
//#endregion
|
|
228822
229415
|
//#region ../chain-sdk/dist/neutral/protocol.mjs
|
|
228823
229416
|
var isBaseBuildBlockOptions = (value) => {
|
|
@@ -228947,376 +229540,6 @@ var createGenesisBlock = async (initialBlockProducer, nextContractAddress, genes
|
|
|
228947
229540
|
return await buildGenesisBlock(nextContractAddress, [], blockPayloads, [initialBlockProducer]);
|
|
228948
229541
|
};
|
|
228949
229542
|
//#endregion
|
|
228950
|
-
//#region ../chain-sdk/dist/neutral/ethereum.mjs
|
|
228951
|
-
var __defProp$13 = Object.defineProperty;
|
|
228952
|
-
var __getOwnPropDesc$13 = Object.getOwnPropertyDescriptor;
|
|
228953
|
-
var __defNormalProp$13 = (obj, key, value) => key in obj ? __defProp$13(obj, key, {
|
|
228954
|
-
enumerable: true,
|
|
228955
|
-
configurable: true,
|
|
228956
|
-
writable: true,
|
|
228957
|
-
value
|
|
228958
|
-
}) : obj[key] = value;
|
|
228959
|
-
var __decorateClass$13 = (decorators, target, key, kind) => {
|
|
228960
|
-
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$13(target, key) : target;
|
|
228961
|
-
for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
228962
|
-
if (kind && result) __defProp$13(target, key, result);
|
|
228963
|
-
return result;
|
|
228964
|
-
};
|
|
228965
|
-
var __publicField$13 = (obj, key, value) => __defNormalProp$13(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
228966
|
-
var STAKE_EVENT_NAMES$1 = /* @__PURE__ */ new Set([
|
|
228967
|
-
"StakeAdded",
|
|
228968
|
-
"StakeRemoved",
|
|
228969
|
-
"StakeWithdrawn"
|
|
228970
|
-
]);
|
|
228971
|
-
var DEFAULT_HEAD_POLL_INTERVAL_MS$1 = 5e3;
|
|
228972
|
-
var MIN_HEAD_POLL_INTERVAL_MS = 5e3;
|
|
228973
|
-
var RestStakeEventsViewerOptionsZod = object$3({ headPollIntervalMs: number$1().optional() });
|
|
228974
|
-
var RestStakeEventsViewer = class extends AbstractCreatableProvider$1 {
|
|
228975
|
-
moniker = RestStakeEventsViewer.defaultMoniker;
|
|
228976
|
-
completeFrames = /* @__PURE__ */ new Map();
|
|
228977
|
-
contractInterface = new Interface(IAddressStakingEvents__factory2.abi);
|
|
228978
|
-
currentHead;
|
|
228979
|
-
headPollIntervalMs = DEFAULT_HEAD_POLL_INTERVAL_MS$1;
|
|
228980
|
-
lastSuccessfulSyncAt;
|
|
228981
|
-
manifestPromise;
|
|
228982
|
-
positionCountCheckpoints = [];
|
|
228983
|
-
stakeEventCache = [];
|
|
228984
|
-
stakeEventsByPosition = /* @__PURE__ */ new Map();
|
|
228985
|
-
syncPromise;
|
|
228986
|
-
tailFrame;
|
|
228987
|
-
get address() {
|
|
228988
|
-
return toEthAddress(assertEx$1(this.config.chain.id, () => "RestStakeEventsViewer requires config.chain.id (the staking contract address)"));
|
|
228989
|
-
}
|
|
228990
|
-
get eventIndexBaseUrl() {
|
|
228991
|
-
const connection = RestStakeEventsViewer.requireBoundConnection(this.config);
|
|
228992
|
-
return assertEx$1(connection.config.type === "rest" ? connection.config.baseUrl : void 0, () => `Connection "${connection.name}" bound to RestStakeEventsViewer requires a rest baseUrl`).replace(/\/+$/, "");
|
|
228993
|
-
}
|
|
228994
|
-
get fetchFn() {
|
|
228995
|
-
return this.context.fetchFn ?? fetch.bind(globalThis);
|
|
228996
|
-
}
|
|
228997
|
-
/** Creates the provider instance after its configuration has resolved. */
|
|
228998
|
-
async createHandler() {
|
|
228999
|
-
await super.createHandler();
|
|
229000
|
-
RestStakeEventsViewer.requireBoundConnection(this.config);
|
|
229001
|
-
const { headPollIntervalMs } = RestStakeEventsViewerOptionsZod.parse(this.config.options);
|
|
229002
|
-
if (headPollIntervalMs !== void 0) assertEx$1(headPollIntervalMs >= MIN_HEAD_POLL_INTERVAL_MS, () => `headPollIntervalMs must be at least ${MIN_HEAD_POLL_INTERVAL_MS}ms`);
|
|
229003
|
-
this.headPollIntervalMs = headPollIntervalMs ?? DEFAULT_HEAD_POLL_INTERVAL_MS$1;
|
|
229004
|
-
}
|
|
229005
|
-
async positionCount(range) {
|
|
229006
|
-
await this.sync();
|
|
229007
|
-
this.assertRangeAvailable(range);
|
|
229008
|
-
if (range[0] === 0) return this.positionCountThrough(range[1]);
|
|
229009
|
-
return this.matchingStakeEvents(range).reduce((max, event) => Math.max(max, event.args.id), -1) + 1;
|
|
229010
|
-
}
|
|
229011
|
-
async stakeEvents(range = [0, "latest"], filter) {
|
|
229012
|
-
await this.sync();
|
|
229013
|
-
this.assertRangeAvailable(range);
|
|
229014
|
-
return this.matchingStakeEvents(range, filter);
|
|
229015
|
-
}
|
|
229016
|
-
assertRangeAvailable(range) {
|
|
229017
|
-
const head = assertEx$1(this.currentHead, () => "EVM event index head is unavailable");
|
|
229018
|
-
assertEx$1(range[1] === "latest" || range[1] <= head.block, () => `Stake-event range ends at ${range[1]}, beyond EVM event index head ${head.block}`);
|
|
229019
|
-
}
|
|
229020
|
-
decodeIndexedStakeEvents() {
|
|
229021
|
-
return [...[...this.completeFrames.entries()].sort(([a], [b]) => a - b).map(([, frame]) => frame), ...this.tailFrame === void 0 ? [] : [this.tailFrame]].flatMap((frame) => frame.logs).sort((a, b) => a.blockNumber - b.blockNumber || a.transactionIndex - b.transactionIndex || a.index - b.index).flatMap((log) => {
|
|
229022
|
-
const event = this.stakeEventFromLog(log);
|
|
229023
|
-
return event === void 0 ? [] : [event];
|
|
229024
|
-
});
|
|
229025
|
-
}
|
|
229026
|
-
async fetchJson(path) {
|
|
229027
|
-
const response = await this.fetchFn(`${this.eventIndexBaseUrl}/${path}`);
|
|
229028
|
-
assertEx$1(response.ok, () => `EVM event index request failed [${response.status}] for ${path}`);
|
|
229029
|
-
return await response.json();
|
|
229030
|
-
}
|
|
229031
|
-
async getManifest() {
|
|
229032
|
-
this.manifestPromise ??= (async () => {
|
|
229033
|
-
const manifest = asEvmEventIndexManifest(await this.fetchJson(evmEventIndexManifestPath(this.address)), true);
|
|
229034
|
-
assertEx$1(manifest.address.toLowerCase() === this.address.toLowerCase(), () => "EVM event index manifest address mismatch");
|
|
229035
|
-
return manifest;
|
|
229036
|
-
})();
|
|
229037
|
-
return await this.manifestPromise;
|
|
229038
|
-
}
|
|
229039
|
-
indexStakeEvents(events) {
|
|
229040
|
-
this.stakeEventCache = events;
|
|
229041
|
-
this.positionCountCheckpoints = [];
|
|
229042
|
-
this.stakeEventsByPosition.clear();
|
|
229043
|
-
let maxPositionId = -1;
|
|
229044
|
-
for (const event of events) {
|
|
229045
|
-
const positionEvents = this.stakeEventsByPosition.get(event.args.id) ?? [];
|
|
229046
|
-
positionEvents.push(event);
|
|
229047
|
-
this.stakeEventsByPosition.set(event.args.id, positionEvents);
|
|
229048
|
-
if (event.args.id > maxPositionId) {
|
|
229049
|
-
maxPositionId = event.args.id;
|
|
229050
|
-
this.positionCountCheckpoints.push({
|
|
229051
|
-
count: maxPositionId + 1,
|
|
229052
|
-
time: event.time
|
|
229053
|
-
});
|
|
229054
|
-
}
|
|
229055
|
-
}
|
|
229056
|
-
}
|
|
229057
|
-
matchesFilter(event, range, filter) {
|
|
229058
|
-
if (range[1] !== "latest" && event.time > range[1]) return false;
|
|
229059
|
-
if (event.time < range[0]) return false;
|
|
229060
|
-
if (isDefined$1(filter?.name) && event.name !== filter.name) return false;
|
|
229061
|
-
if (isDefined$1(filter?.args?.id) && event.args.id !== filter.args.id) return false;
|
|
229062
|
-
if (isDefined$1(filter?.args?.staked) && event.args.staked !== filter.args.staked) return false;
|
|
229063
|
-
if (isDefined$1(filter?.args?.staker) && event.args.staker !== filter.args.staker) return false;
|
|
229064
|
-
return true;
|
|
229065
|
-
}
|
|
229066
|
-
matchingStakeEvents(range, filter) {
|
|
229067
|
-
const positionId = filter?.args?.id;
|
|
229068
|
-
return (isDefined$1(positionId) ? this.stakeEventsByPosition.get(positionId) ?? [] : this.stakeEventCache).filter((event) => this.matchesFilter(event, range, filter));
|
|
229069
|
-
}
|
|
229070
|
-
positionCountThrough(end) {
|
|
229071
|
-
if (end === "latest") return this.positionCountCheckpoints.at(-1)?.count ?? 0;
|
|
229072
|
-
let low = 0;
|
|
229073
|
-
let high = this.positionCountCheckpoints.length;
|
|
229074
|
-
while (low < high) {
|
|
229075
|
-
const middle = Math.floor((low + high) / 2);
|
|
229076
|
-
if (this.positionCountCheckpoints[middle].time <= end) low = middle + 1;
|
|
229077
|
-
else high = middle;
|
|
229078
|
-
}
|
|
229079
|
-
return this.positionCountCheckpoints[low - 1]?.count ?? 0;
|
|
229080
|
-
}
|
|
229081
|
-
stakeEventFromLog(log) {
|
|
229082
|
-
const parsed = this.contractInterface.parseLog({
|
|
229083
|
-
data: log.data,
|
|
229084
|
-
topics: log.topics
|
|
229085
|
-
});
|
|
229086
|
-
if (parsed === null || !STAKE_EVENT_NAMES$1.has(parsed.name)) return;
|
|
229087
|
-
const [staked, staker, id, amount] = parsed.args;
|
|
229088
|
-
return {
|
|
229089
|
-
name: parsed.name,
|
|
229090
|
-
args: {
|
|
229091
|
-
amount: asAttoXL1$1(amount),
|
|
229092
|
-
id: Number(id),
|
|
229093
|
-
staked: toAddress(staked),
|
|
229094
|
-
staker: toAddress(staker)
|
|
229095
|
-
},
|
|
229096
|
-
time: log.blockNumber
|
|
229097
|
-
};
|
|
229098
|
-
}
|
|
229099
|
-
async sync() {
|
|
229100
|
-
const now = Date.now();
|
|
229101
|
-
const elapsed = this.lastSuccessfulSyncAt === void 0 ? void 0 : now - this.lastSuccessfulSyncAt;
|
|
229102
|
-
if (this.currentHead !== void 0 && elapsed !== void 0 && elapsed >= 0 && elapsed < this.headPollIntervalMs) return;
|
|
229103
|
-
this.syncPromise ??= this.syncFromHead().then(() => {
|
|
229104
|
-
this.lastSuccessfulSyncAt = Date.now();
|
|
229105
|
-
}).finally(() => {
|
|
229106
|
-
this.syncPromise = void 0;
|
|
229107
|
-
});
|
|
229108
|
-
await this.syncPromise;
|
|
229109
|
-
}
|
|
229110
|
-
async syncFromHead() {
|
|
229111
|
-
const manifest = await this.getManifest();
|
|
229112
|
-
const head = asEvmEventIndexHead(await this.fetchJson(evmEventIndexHeadPath(this.address)), true);
|
|
229113
|
-
assertEx$1(head.address.toLowerCase() === this.address.toLowerCase(), () => "EVM event index head address mismatch");
|
|
229114
|
-
assertEx$1(head.chainId === manifest.chainId, () => "EVM event index chain mismatch");
|
|
229115
|
-
if (this.currentHead?.block === head.block && this.currentHead.hash === head.hash) return;
|
|
229116
|
-
if (this.currentHead !== void 0 && (head.block < this.currentHead.block || head.block === this.currentHead.block && head.hash !== this.currentHead.hash)) {
|
|
229117
|
-
this.completeFrames.clear();
|
|
229118
|
-
this.tailFrame = void 0;
|
|
229119
|
-
}
|
|
229120
|
-
const indexedBlockCount = Math.max(0, head.block - manifest.deploymentBlock + 1);
|
|
229121
|
-
const completeFrameCount = Math.floor(indexedBlockCount / manifest.frameSize);
|
|
229122
|
-
const missingFrameIndexes = Array.from({ length: completeFrameCount }, (_, index) => index).filter((index) => !this.completeFrames.has(index));
|
|
229123
|
-
await Promise.all(missingFrameIndexes.map(async (index) => {
|
|
229124
|
-
const frame = asEvmEventIndexFrame(await this.fetchJson(evmEventIndexFramePath(this.address, index)), true);
|
|
229125
|
-
const expectedFrom = manifest.deploymentBlock + index * manifest.frameSize;
|
|
229126
|
-
assertEx$1(frame.fromBlock === expectedFrom, () => `EVM event index frame ${index} starts at the wrong block`);
|
|
229127
|
-
assertEx$1(frame.toBlock === expectedFrom + manifest.frameSize - 1, () => `EVM event index frame ${index} is incomplete`);
|
|
229128
|
-
this.completeFrames.set(index, frame);
|
|
229129
|
-
}));
|
|
229130
|
-
const tailStart = manifest.deploymentBlock + completeFrameCount * manifest.frameSize;
|
|
229131
|
-
this.tailFrame = tailStart <= head.block ? asEvmEventIndexFrame(await this.fetchJson(`${evmEventIndexTailPath(this.address)}?head=${head.hash}`), true) : void 0;
|
|
229132
|
-
if (this.tailFrame !== void 0) {
|
|
229133
|
-
assertEx$1(this.tailFrame.fromBlock === tailStart, () => "EVM event index tail starts at the wrong block");
|
|
229134
|
-
assertEx$1(this.tailFrame.toBlock === head.block, () => "EVM event index tail is stale relative to its head");
|
|
229135
|
-
}
|
|
229136
|
-
this.indexStakeEvents(this.decodeIndexedStakeEvents());
|
|
229137
|
-
this.currentHead = head;
|
|
229138
|
-
}
|
|
229139
|
-
};
|
|
229140
|
-
__publicField$13(RestStakeEventsViewer, "connectionTypes", ["rest"]);
|
|
229141
|
-
__publicField$13(RestStakeEventsViewer, "defaultMoniker", StakeEventsViewerMoniker$1);
|
|
229142
|
-
__publicField$13(RestStakeEventsViewer, "dependencies", []);
|
|
229143
|
-
__publicField$13(RestStakeEventsViewer, "monikers", [StakeEventsViewerMoniker$1]);
|
|
229144
|
-
__publicField$13(RestStakeEventsViewer, "surface", "node");
|
|
229145
|
-
RestStakeEventsViewer = __decorateClass$13([creatableProvider$1()], RestStakeEventsViewer);
|
|
229146
|
-
var DEFAULT_REFRESH_INTERVAL_MS = 5e3;
|
|
229147
|
-
var MIN_REFRESH_INTERVAL_MS = 5e3;
|
|
229148
|
-
var RestStakeViewerOptionsZod = object$3({ refreshIntervalMs: number$1().optional() });
|
|
229149
|
-
var RestStakeViewer = class extends AbstractCreatableProvider$1 {
|
|
229150
|
-
moniker = RestStakeViewer.defaultMoniker;
|
|
229151
|
-
_chainContractViewer;
|
|
229152
|
-
_stakeEventsViewer;
|
|
229153
|
-
lastSuccessfulSyncAt;
|
|
229154
|
-
positionIndex = /* @__PURE__ */ new Map();
|
|
229155
|
-
positionsByStaked = /* @__PURE__ */ new Map();
|
|
229156
|
-
positionsByStaker = /* @__PURE__ */ new Map();
|
|
229157
|
-
refreshIntervalMs = DEFAULT_REFRESH_INTERVAL_MS;
|
|
229158
|
-
syncPromise;
|
|
229159
|
-
/** Returns the finalized stake-event source used to materialize positions. */
|
|
229160
|
-
get stakeEvents() {
|
|
229161
|
-
return this._stakeEventsViewer;
|
|
229162
|
-
}
|
|
229163
|
-
/** Returns active finalized stake positions. */
|
|
229164
|
-
async activeStakes() {
|
|
229165
|
-
await this.sync();
|
|
229166
|
-
return this.positionIndex.values().filter((position) => position.removeBlock === 0 && position.withdrawBlock === 0).toArray();
|
|
229167
|
-
}
|
|
229168
|
-
/** Creates the provider after its REST binding and dependencies resolve. */
|
|
229169
|
-
async createHandler() {
|
|
229170
|
-
await super.createHandler();
|
|
229171
|
-
RestStakeViewer.requireBoundConnection(this.config);
|
|
229172
|
-
const { refreshIntervalMs } = RestStakeViewerOptionsZod.parse(this.config.options);
|
|
229173
|
-
if (refreshIntervalMs !== void 0) assertEx$1(refreshIntervalMs >= MIN_REFRESH_INTERVAL_MS, () => `refreshIntervalMs must be at least ${MIN_REFRESH_INTERVAL_MS}ms`);
|
|
229174
|
-
this.refreshIntervalMs = refreshIntervalMs ?? DEFAULT_REFRESH_INTERVAL_MS;
|
|
229175
|
-
this._chainContractViewer = await this.locator.getInstance(ChainContractViewerMoniker$1);
|
|
229176
|
-
this._stakeEventsViewer = await this.locator.getInstance(StakeEventsViewerMoniker$1);
|
|
229177
|
-
}
|
|
229178
|
-
/** Returns the configured chain's withdrawal delay. */
|
|
229179
|
-
async minWithdrawalBlocks() {
|
|
229180
|
-
return await this._chainContractViewer.minWithdrawalBlocks();
|
|
229181
|
-
}
|
|
229182
|
-
/** Returns finalized positions that have been removed but not withdrawn. */
|
|
229183
|
-
async removedStakes() {
|
|
229184
|
-
await this.sync();
|
|
229185
|
-
return this.positionIndex.values().filter((position) => position.removeBlock !== 0 && position.withdrawBlock === 0).toArray();
|
|
229186
|
-
}
|
|
229187
|
-
/** Returns the configured rewards contract address. */
|
|
229188
|
-
async rewardsContract() {
|
|
229189
|
-
return toAddress(await this._chainContractViewer.rewardsContract());
|
|
229190
|
-
}
|
|
229191
|
-
/** Returns a finalized position by its contract id. */
|
|
229192
|
-
async stakeById(id) {
|
|
229193
|
-
await this.sync();
|
|
229194
|
-
return assertEx$1(this.positionIndex.get(id), () => `RestStakeViewer: position ${id} not found in finalized event index`);
|
|
229195
|
-
}
|
|
229196
|
-
/** Returns a staker's finalized position by its contract slot. */
|
|
229197
|
-
async stakeByStaker(staker, slot) {
|
|
229198
|
-
await this.sync();
|
|
229199
|
-
const position = this.positionsByStaker.get(toAddress(staker))?.at(slot);
|
|
229200
|
-
return assertEx$1(position, () => `RestStakeViewer: staker ${staker} has no finalized position at slot ${slot}`);
|
|
229201
|
-
}
|
|
229202
|
-
/** Returns finalized positions added for an address in the supplied EVM block range. */
|
|
229203
|
-
async stakesByStaked(staked, range = [0, void 0]) {
|
|
229204
|
-
await this.sync();
|
|
229205
|
-
return this.positionsInRange(this.positionsByStaked.get(toAddress(staked)) ?? [], range);
|
|
229206
|
-
}
|
|
229207
|
-
/** Returns finalized positions added by a staker in the supplied EVM block range. */
|
|
229208
|
-
async stakesByStaker(staker, range = [0, void 0]) {
|
|
229209
|
-
await this.sync();
|
|
229210
|
-
return this.positionsInRange(this.positionsByStaker.get(toAddress(staker)) ?? [], range);
|
|
229211
|
-
}
|
|
229212
|
-
/** Returns the configured staking-token address. */
|
|
229213
|
-
async stakingTokenAddress() {
|
|
229214
|
-
return toAddress(await this._chainContractViewer.stakingTokenAddress());
|
|
229215
|
-
}
|
|
229216
|
-
/** Returns finalized positions that have completed withdrawal. */
|
|
229217
|
-
async withdrawnStakes() {
|
|
229218
|
-
await this.sync();
|
|
229219
|
-
return this.positionIndex.values().filter((position) => position.removeBlock !== 0 && position.withdrawBlock !== 0).toArray();
|
|
229220
|
-
}
|
|
229221
|
-
applyEvent(index, event) {
|
|
229222
|
-
if (event.name === "StakeAdded") {
|
|
229223
|
-
index.set(event.args.id, {
|
|
229224
|
-
id: event.args.id,
|
|
229225
|
-
staked: toAddress(event.args.staked),
|
|
229226
|
-
staker: toAddress(event.args.staker),
|
|
229227
|
-
amount: event.args.amount,
|
|
229228
|
-
addBlock: event.time,
|
|
229229
|
-
removeBlock: 0,
|
|
229230
|
-
withdrawBlock: 0
|
|
229231
|
-
});
|
|
229232
|
-
return;
|
|
229233
|
-
}
|
|
229234
|
-
const position = assertEx$1(index.get(event.args.id), () => `RestStakeViewer: ${event.name} precedes StakeAdded for position ${event.args.id}`);
|
|
229235
|
-
index.set(event.args.id, {
|
|
229236
|
-
...position,
|
|
229237
|
-
...event.name === "StakeRemoved" ? { removeBlock: event.time } : { withdrawBlock: event.time }
|
|
229238
|
-
});
|
|
229239
|
-
}
|
|
229240
|
-
positionsInRange(positions, range) {
|
|
229241
|
-
const [fromBlock, configuredToBlock] = range;
|
|
229242
|
-
const toBlock = configuredToBlock ?? Number.MAX_SAFE_INTEGER;
|
|
229243
|
-
return positions.filter((position) => position.addBlock >= fromBlock && position.addBlock <= toBlock);
|
|
229244
|
-
}
|
|
229245
|
-
rebuildPositionIndex(events) {
|
|
229246
|
-
const positionIndex = /* @__PURE__ */ new Map();
|
|
229247
|
-
for (const event of events.toSorted((left, right) => left.time - right.time)) this.applyEvent(positionIndex, event);
|
|
229248
|
-
const positionsByStaked = /* @__PURE__ */ new Map();
|
|
229249
|
-
const positionsByStaker = /* @__PURE__ */ new Map();
|
|
229250
|
-
for (const position of positionIndex.values().toArray().toSorted((left, right) => left.id - right.id)) {
|
|
229251
|
-
const staked = toAddress(position.staked);
|
|
229252
|
-
const staker = toAddress(position.staker);
|
|
229253
|
-
positionsByStaked.set(staked, [...positionsByStaked.get(staked) ?? [], position]);
|
|
229254
|
-
positionsByStaker.set(staker, [...positionsByStaker.get(staker) ?? [], position]);
|
|
229255
|
-
}
|
|
229256
|
-
this.positionIndex = positionIndex;
|
|
229257
|
-
this.positionsByStaked = positionsByStaked;
|
|
229258
|
-
this.positionsByStaker = positionsByStaker;
|
|
229259
|
-
}
|
|
229260
|
-
async sync() {
|
|
229261
|
-
const now = Date.now();
|
|
229262
|
-
const elapsed = this.lastSuccessfulSyncAt === void 0 ? void 0 : now - this.lastSuccessfulSyncAt;
|
|
229263
|
-
if (elapsed !== void 0 && elapsed >= 0 && elapsed < this.refreshIntervalMs) return;
|
|
229264
|
-
this.syncPromise ??= Promise.resolve(this.stakeEvents.stakeEvents([0, "latest"])).then((events) => this.rebuildPositionIndex(events)).then(() => {
|
|
229265
|
-
this.lastSuccessfulSyncAt = Date.now();
|
|
229266
|
-
}).finally(() => {
|
|
229267
|
-
this.syncPromise = void 0;
|
|
229268
|
-
});
|
|
229269
|
-
await this.syncPromise;
|
|
229270
|
-
}
|
|
229271
|
-
};
|
|
229272
|
-
__publicField$13(RestStakeViewer, "connectionTypes", ["rest"]);
|
|
229273
|
-
__publicField$13(RestStakeViewer, "defaultMoniker", StakeViewerMoniker$1);
|
|
229274
|
-
__publicField$13(RestStakeViewer, "dependencies", [ChainContractViewerMoniker$1, StakeEventsViewerMoniker$1]);
|
|
229275
|
-
__publicField$13(RestStakeViewer, "monikers", [StakeViewerMoniker$1]);
|
|
229276
|
-
__publicField$13(RestStakeViewer, "surface", "node");
|
|
229277
|
-
RestStakeViewer = __decorateClass$13([creatableProvider$1()], RestStakeViewer);
|
|
229278
|
-
function evmContractRunnerHandleKey(moniker) {
|
|
229279
|
-
return `evm-contract-runner:${moniker}`;
|
|
229280
|
-
}
|
|
229281
|
-
var AbstractEvmRunner = class extends AbstractEvmProvider$1 {
|
|
229282
|
-
_runner;
|
|
229283
|
-
get runner() {
|
|
229284
|
-
return assertEx$1(this._runner, () => "EVM contract runner not initialized");
|
|
229285
|
-
}
|
|
229286
|
-
/** Creates the provider instance after its dependencies and configuration have resolved. */
|
|
229287
|
-
async createHandler() {
|
|
229288
|
-
const key = evmContractRunnerHandleKey(this.moniker);
|
|
229289
|
-
this._runner = await this.connectionHandles.getOrOpen(key, () => {
|
|
229290
|
-
throw new Error(`No EVM contract runner seeded for [${this.moniker}] \u2014 set context.connectionHandles["${key}"] before create`);
|
|
229291
|
-
});
|
|
229292
|
-
await super.createHandler();
|
|
229293
|
-
}
|
|
229294
|
-
};
|
|
229295
|
-
var EvmStakeRunner = class extends AbstractEvmRunner {
|
|
229296
|
-
moniker = EvmStakeRunner.defaultMoniker;
|
|
229297
|
-
async addStake(staked, amount) {
|
|
229298
|
-
await (await this.contract.addStake(getAddress(toEthAddress(staked)), amount)).wait();
|
|
229299
|
-
return true;
|
|
229300
|
-
}
|
|
229301
|
-
async removeStake(slot) {
|
|
229302
|
-
await (await this.contract.removeStake(slot)).wait();
|
|
229303
|
-
return true;
|
|
229304
|
-
}
|
|
229305
|
-
async withdrawStake(slot) {
|
|
229306
|
-
await (await this.contract.withdrawStake(slot)).wait();
|
|
229307
|
-
return true;
|
|
229308
|
-
}
|
|
229309
|
-
connectContract(address) {
|
|
229310
|
-
return IStakedXyoChain__factory.connect(address, this.runner);
|
|
229311
|
-
}
|
|
229312
|
-
};
|
|
229313
|
-
__publicField$13(EvmStakeRunner, "connectionTypes", ["evm-rpc"]);
|
|
229314
|
-
__publicField$13(EvmStakeRunner, "defaultMoniker", StakeRunnerMoniker);
|
|
229315
|
-
__publicField$13(EvmStakeRunner, "dependencies", []);
|
|
229316
|
-
__publicField$13(EvmStakeRunner, "monikers", [StakeRunnerMoniker]);
|
|
229317
|
-
__publicField$13(EvmStakeRunner, "surface", "node");
|
|
229318
|
-
EvmStakeRunner = __decorateClass$13([creatableProvider$1()], EvmStakeRunner);
|
|
229319
|
-
//#endregion
|
|
229320
229543
|
//#region ../chain-sdk/dist/neutral/validation.mjs
|
|
229321
229544
|
var BlockAllowedPayloadSchemasValidator = (context, block) => {
|
|
229322
229545
|
const errors = [];
|
|
@@ -229859,23 +230082,23 @@ var validateHydratedTransactionState = async (context, tx) => {
|
|
|
229859
230082
|
};
|
|
229860
230083
|
//#endregion
|
|
229861
230084
|
//#region ../chain-sdk/dist/neutral/modules.mjs
|
|
229862
|
-
var __defProp$
|
|
229863
|
-
var __getOwnPropDesc$
|
|
230085
|
+
var __defProp$13 = Object.defineProperty;
|
|
230086
|
+
var __getOwnPropDesc$13 = Object.getOwnPropertyDescriptor;
|
|
229864
230087
|
var __getProtoOf$1 = Object.getPrototypeOf;
|
|
229865
230088
|
var __reflectGet$1 = Reflect.get;
|
|
229866
|
-
var __defNormalProp$
|
|
230089
|
+
var __defNormalProp$13 = (obj, key, value) => key in obj ? __defProp$13(obj, key, {
|
|
229867
230090
|
enumerable: true,
|
|
229868
230091
|
configurable: true,
|
|
229869
230092
|
writable: true,
|
|
229870
230093
|
value
|
|
229871
230094
|
}) : obj[key] = value;
|
|
229872
|
-
var __decorateClass$
|
|
229873
|
-
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$
|
|
230095
|
+
var __decorateClass$13 = (decorators, target, key, kind) => {
|
|
230096
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$13(target, key) : target;
|
|
229874
230097
|
for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
229875
|
-
if (kind && result) __defProp$
|
|
230098
|
+
if (kind && result) __defProp$13(target, key, result);
|
|
229876
230099
|
return result;
|
|
229877
230100
|
};
|
|
229878
|
-
var __publicField$
|
|
230101
|
+
var __publicField$13 = (obj, key, value) => __defNormalProp$13(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
229879
230102
|
var __superGet$1 = (cls, obj, key) => __reflectGet$1(__getProtoOf$1(cls), key, obj);
|
|
229880
230103
|
var BlockRewardDivinerConfigSchema = asSchema$1("network.xyo.diviner.chain.block.reward.config", true);
|
|
229881
230104
|
var BlockRewardDiviner = class extends AbstractDiviner {
|
|
@@ -229935,9 +230158,9 @@ var FixedPercentageBlockRewardDiviner = class extends BlockRewardDiviner {
|
|
|
229935
230158
|
}))).flat().filter(exists$1);
|
|
229936
230159
|
}
|
|
229937
230160
|
};
|
|
229938
|
-
__publicField$
|
|
229939
|
-
__publicField$
|
|
229940
|
-
FixedPercentageBlockRewardDiviner = __decorateClass$
|
|
230161
|
+
__publicField$13(FixedPercentageBlockRewardDiviner, "configSchemas", [BlockRewardDivinerConfigSchema, FixedPercentageBlockRewardDivinerConfigSchema]);
|
|
230162
|
+
__publicField$13(FixedPercentageBlockRewardDiviner, "defaultConfigSchema", FixedPercentageBlockRewardDivinerConfigSchema);
|
|
230163
|
+
FixedPercentageBlockRewardDiviner = __decorateClass$13([creatableModule$1()], FixedPercentageBlockRewardDiviner);
|
|
229941
230164
|
var countDecimalPlaces = (num) => {
|
|
229942
230165
|
if (!Number.isFinite(num)) throw new TypeError("Input must be a finite number");
|
|
229943
230166
|
const numStr = num.toString();
|
|
@@ -229983,9 +230206,9 @@ var BlockValidationDiviner = class extends AbstractDiviner {
|
|
|
229983
230206
|
return results;
|
|
229984
230207
|
}
|
|
229985
230208
|
};
|
|
229986
|
-
__publicField$
|
|
229987
|
-
__publicField$
|
|
229988
|
-
BlockValidationDiviner = __decorateClass$
|
|
230209
|
+
__publicField$13(BlockValidationDiviner, "configSchemas", [...__superGet$1(BlockValidationDiviner, BlockValidationDiviner, "configSchemas"), BlockValidationDivinerConfigSchema]);
|
|
230210
|
+
__publicField$13(BlockValidationDiviner, "targetSchema", BlockValidationDivinerConfigSchema);
|
|
230211
|
+
BlockValidationDiviner = __decorateClass$13([creatableModule$1()], BlockValidationDiviner);
|
|
229989
230212
|
var HeadValidationDivinerConfigSchema = asSchema$1("network.xyo.diviner.chain.head.validation.config", true);
|
|
229990
230213
|
var HeadValidationDiviner = class extends AbstractDiviner {
|
|
229991
230214
|
_context;
|
|
@@ -230073,9 +230296,9 @@ var HeadValidationDiviner = class extends AbstractDiviner {
|
|
|
230073
230296
|
});
|
|
230074
230297
|
}
|
|
230075
230298
|
};
|
|
230076
|
-
__publicField$
|
|
230077
|
-
__publicField$
|
|
230078
|
-
HeadValidationDiviner = __decorateClass$
|
|
230299
|
+
__publicField$13(HeadValidationDiviner, "configSchemas", [...__superGet$1(HeadValidationDiviner, HeadValidationDiviner, "configSchemas"), HeadValidationDivinerConfigSchema]);
|
|
230300
|
+
__publicField$13(HeadValidationDiviner, "targetSchema", HeadValidationDivinerConfigSchema);
|
|
230301
|
+
HeadValidationDiviner = __decorateClass$13([creatableModule$1()], HeadValidationDiviner);
|
|
230079
230302
|
var ArchivistNextWitnessConfigSchema = asSchema$1("network.xyo.witness.archivist.next.config", true);
|
|
230080
230303
|
var ArchivistNextWitness = class extends AbstractWitness {
|
|
230081
230304
|
static configSchemas = [...super.configSchemas, ArchivistNextWitnessConfigSchema];
|
|
@@ -230100,591 +230323,23 @@ AsObjectFactory.create(isWeightedNetworkStake);
|
|
|
230100
230323
|
var isNetworkStakeObserve = isPayloadOfSchemaType$1(asSchema$1("network.xyo.witness.chain.stake.network.observe", true));
|
|
230101
230324
|
AsObjectFactory.create(isNetworkStakeObserve);
|
|
230102
230325
|
AsObjectFactory.create(isNetworkStakeObserve);
|
|
230103
|
-
(/* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
230104
|
-
module.exports = function shallowEqual(objA, objB, compare, compareContext) {
|
|
230105
|
-
var ret = compare ? compare.call(compareContext, objA, objB) : void 0;
|
|
230106
|
-
if (ret !== void 0) return !!ret;
|
|
230107
|
-
if (objA === objB) return true;
|
|
230108
|
-
if (typeof objA !== "object" || !objA || typeof objB !== "object" || !objB) return false;
|
|
230109
|
-
var keysA = Object.keys(objA);
|
|
230110
|
-
var keysB = Object.keys(objB);
|
|
230111
|
-
if (keysA.length !== keysB.length) return false;
|
|
230112
|
-
var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);
|
|
230113
|
-
for (var idx = 0; idx < keysA.length; idx++) {
|
|
230114
|
-
var key = keysA[idx];
|
|
230115
|
-
if (!bHasOwnProperty(key)) return false;
|
|
230116
|
-
var valueA = objA[key];
|
|
230117
|
-
var valueB = objB[key];
|
|
230118
|
-
ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;
|
|
230119
|
-
if (ret === false || ret === void 0 && valueA !== valueB) return false;
|
|
230120
|
-
}
|
|
230121
|
-
return true;
|
|
230122
|
-
};
|
|
230123
|
-
})))();
|
|
230124
|
-
function stringReplaceAll(string, substring, postfix) {
|
|
230125
|
-
let index = string.indexOf(substring);
|
|
230126
|
-
if (index === -1) return string;
|
|
230127
|
-
const substringLength = substring.length;
|
|
230128
|
-
let endIndex = 0;
|
|
230129
|
-
let returnValue = "";
|
|
230130
|
-
do {
|
|
230131
|
-
returnValue += string.slice(endIndex, index) + substring + postfix;
|
|
230132
|
-
endIndex = index + substringLength;
|
|
230133
|
-
index = string.indexOf(substring, endIndex);
|
|
230134
|
-
} while (index !== -1);
|
|
230135
|
-
returnValue += string.slice(endIndex);
|
|
230136
|
-
return returnValue;
|
|
230137
|
-
}
|
|
230138
|
-
function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {
|
|
230139
|
-
let endIndex = 0;
|
|
230140
|
-
let returnValue = "";
|
|
230141
|
-
do {
|
|
230142
|
-
const isGotCR = string[index - 1] === "\r";
|
|
230143
|
-
returnValue += string.slice(endIndex, isGotCR ? index - 1 : index) + prefix + (isGotCR ? "\r\n" : "\n") + postfix;
|
|
230144
|
-
endIndex = index + 1;
|
|
230145
|
-
index = string.indexOf("\n", endIndex);
|
|
230146
|
-
} while (index !== -1);
|
|
230147
|
-
returnValue += string.slice(endIndex);
|
|
230148
|
-
return returnValue;
|
|
230149
|
-
}
|
|
230150
|
-
//#endregion
|
|
230151
|
-
//#region ../../node_modules/.pnpm/chalk@6.0.0/node_modules/chalk/source/vendor/ansi-styles/index.js
|
|
230152
|
-
const ANSI_BACKGROUND_OFFSET$1 = 10;
|
|
230153
|
-
const ANSI_UNDERLINE_OFFSET = 20;
|
|
230154
|
-
const wrapAnsi16$1 = (offset = 0) => (code) => `\u{1B}[${code + offset}m`;
|
|
230155
|
-
const wrapAnsi256$1 = (offset = 0) => (code) => `\u{1B}[${38 + offset};5;${code}m`;
|
|
230156
|
-
const wrapAnsi16m$1 = (offset = 0) => (red, green, blue) => `\u{1B}[${38 + offset};2;${red};${green};${blue}m`;
|
|
230157
|
-
const wrapUnderlineAnsi = (code) => `\u{1B}[58;5;${code < 90 ? code - 30 : code - 90 + 8}m`;
|
|
230158
|
-
const styles$2 = {
|
|
230159
|
-
modifier: {
|
|
230160
|
-
reset: [0, 0],
|
|
230161
|
-
bold: [1, 22],
|
|
230162
|
-
dim: [2, 22],
|
|
230163
|
-
italic: [3, 23],
|
|
230164
|
-
underline: [4, 24],
|
|
230165
|
-
underlineDouble: ["4:2", 24],
|
|
230166
|
-
underlineCurly: ["4:3", 24],
|
|
230167
|
-
underlineDotted: ["4:4", 24],
|
|
230168
|
-
underlineDashed: ["4:5", 24],
|
|
230169
|
-
overline: [53, 55],
|
|
230170
|
-
inverse: [7, 27],
|
|
230171
|
-
hidden: [8, 28],
|
|
230172
|
-
strikethrough: [9, 29]
|
|
230173
|
-
},
|
|
230174
|
-
color: {
|
|
230175
|
-
black: [30, 39],
|
|
230176
|
-
red: [31, 39],
|
|
230177
|
-
green: [32, 39],
|
|
230178
|
-
yellow: [33, 39],
|
|
230179
|
-
blue: [34, 39],
|
|
230180
|
-
magenta: [35, 39],
|
|
230181
|
-
cyan: [36, 39],
|
|
230182
|
-
white: [37, 39],
|
|
230183
|
-
blackBright: [90, 39],
|
|
230184
|
-
gray: [90, 39],
|
|
230185
|
-
grey: [90, 39],
|
|
230186
|
-
redBright: [91, 39],
|
|
230187
|
-
greenBright: [92, 39],
|
|
230188
|
-
yellowBright: [93, 39],
|
|
230189
|
-
blueBright: [94, 39],
|
|
230190
|
-
magentaBright: [95, 39],
|
|
230191
|
-
cyanBright: [96, 39],
|
|
230192
|
-
whiteBright: [97, 39]
|
|
230193
|
-
},
|
|
230194
|
-
bgColor: {
|
|
230195
|
-
bgBlack: [40, 49],
|
|
230196
|
-
bgRed: [41, 49],
|
|
230197
|
-
bgGreen: [42, 49],
|
|
230198
|
-
bgYellow: [43, 49],
|
|
230199
|
-
bgBlue: [44, 49],
|
|
230200
|
-
bgMagenta: [45, 49],
|
|
230201
|
-
bgCyan: [46, 49],
|
|
230202
|
-
bgWhite: [47, 49],
|
|
230203
|
-
bgBlackBright: [100, 49],
|
|
230204
|
-
bgGray: [100, 49],
|
|
230205
|
-
bgGrey: [100, 49],
|
|
230206
|
-
bgRedBright: [101, 49],
|
|
230207
|
-
bgGreenBright: [102, 49],
|
|
230208
|
-
bgYellowBright: [103, 49],
|
|
230209
|
-
bgBlueBright: [104, 49],
|
|
230210
|
-
bgMagentaBright: [105, 49],
|
|
230211
|
-
bgCyanBright: [106, 49],
|
|
230212
|
-
bgWhiteBright: [107, 49]
|
|
230213
|
-
},
|
|
230214
|
-
underlineColor: {
|
|
230215
|
-
underlineBlack: ["58;5;0", 59],
|
|
230216
|
-
underlineRed: ["58;5;1", 59],
|
|
230217
|
-
underlineGreen: ["58;5;2", 59],
|
|
230218
|
-
underlineYellow: ["58;5;3", 59],
|
|
230219
|
-
underlineBlue: ["58;5;4", 59],
|
|
230220
|
-
underlineMagenta: ["58;5;5", 59],
|
|
230221
|
-
underlineCyan: ["58;5;6", 59],
|
|
230222
|
-
underlineWhite: ["58;5;7", 59],
|
|
230223
|
-
underlineBlackBright: ["58;5;8", 59],
|
|
230224
|
-
underlineGray: ["58;5;8", 59],
|
|
230225
|
-
underlineGrey: ["58;5;8", 59],
|
|
230226
|
-
underlineRedBright: ["58;5;9", 59],
|
|
230227
|
-
underlineGreenBright: ["58;5;10", 59],
|
|
230228
|
-
underlineYellowBright: ["58;5;11", 59],
|
|
230229
|
-
underlineBlueBright: ["58;5;12", 59],
|
|
230230
|
-
underlineMagentaBright: ["58;5;13", 59],
|
|
230231
|
-
underlineCyanBright: ["58;5;14", 59],
|
|
230232
|
-
underlineWhiteBright: ["58;5;15", 59]
|
|
230233
|
-
}
|
|
230234
|
-
};
|
|
230235
|
-
Object.keys(styles$2.modifier);
|
|
230236
|
-
const foregroundColorNames$1 = Object.keys(styles$2.color);
|
|
230237
|
-
const backgroundColorNames$1 = Object.keys(styles$2.bgColor);
|
|
230238
|
-
Object.keys(styles$2.underlineColor);
|
|
230239
|
-
[...foregroundColorNames$1, ...backgroundColorNames$1];
|
|
230240
|
-
function assembleStyles$1() {
|
|
230241
|
-
const codes = /* @__PURE__ */ new Map();
|
|
230242
|
-
for (const [groupName, group] of Object.entries(styles$2)) {
|
|
230243
|
-
for (const [styleName, style] of Object.entries(group)) {
|
|
230244
|
-
styles$2[styleName] = {
|
|
230245
|
-
open: `\u{1B}[${style[0]}m`,
|
|
230246
|
-
close: `\u{1B}[${style[1]}m`
|
|
230247
|
-
};
|
|
230248
|
-
group[styleName] = styles$2[styleName];
|
|
230249
|
-
codes.set(Number.parseInt(style[0], 10), style[1]);
|
|
230250
|
-
}
|
|
230251
|
-
Object.defineProperty(styles$2, groupName, {
|
|
230252
|
-
value: group,
|
|
230253
|
-
enumerable: false
|
|
230254
|
-
});
|
|
230255
|
-
}
|
|
230256
|
-
Object.defineProperty(styles$2, "codes", {
|
|
230257
|
-
value: codes,
|
|
230258
|
-
enumerable: false
|
|
230259
|
-
});
|
|
230260
|
-
styles$2.color.close = "\x1B[39m";
|
|
230261
|
-
styles$2.bgColor.close = "\x1B[49m";
|
|
230262
|
-
styles$2.underlineColor.close = "\x1B[59m";
|
|
230263
|
-
styles$2.color.ansi = wrapAnsi16$1();
|
|
230264
|
-
styles$2.color.ansi256 = wrapAnsi256$1();
|
|
230265
|
-
styles$2.color.ansi16m = wrapAnsi16m$1();
|
|
230266
|
-
styles$2.bgColor.ansi = wrapAnsi16$1(ANSI_BACKGROUND_OFFSET$1);
|
|
230267
|
-
styles$2.bgColor.ansi256 = wrapAnsi256$1(ANSI_BACKGROUND_OFFSET$1);
|
|
230268
|
-
styles$2.bgColor.ansi16m = wrapAnsi16m$1(ANSI_BACKGROUND_OFFSET$1);
|
|
230269
|
-
styles$2.underlineColor.ansi = wrapUnderlineAnsi;
|
|
230270
|
-
styles$2.underlineColor.ansi256 = wrapAnsi256$1(ANSI_UNDERLINE_OFFSET);
|
|
230271
|
-
styles$2.underlineColor.ansi16m = wrapAnsi16m$1(ANSI_UNDERLINE_OFFSET);
|
|
230272
|
-
Object.defineProperties(styles$2, {
|
|
230273
|
-
rgbToAnsi256: {
|
|
230274
|
-
value(red, green, blue) {
|
|
230275
|
-
if (red === green && green === blue) {
|
|
230276
|
-
if (red < 8) return 16;
|
|
230277
|
-
if (red > 248) return 231;
|
|
230278
|
-
return Math.round((red - 8) / 247 * 24) + 232;
|
|
230279
|
-
}
|
|
230280
|
-
return 16 + 36 * Math.round(red / 255 * 5) + 6 * Math.round(green / 255 * 5) + Math.round(blue / 255 * 5);
|
|
230281
|
-
},
|
|
230282
|
-
enumerable: false
|
|
230283
|
-
},
|
|
230284
|
-
hexToRgb: {
|
|
230285
|
-
value(hex) {
|
|
230286
|
-
const matches = /[\da-f]{6}|[\da-f]{3}/i.exec(hex.toString(16));
|
|
230287
|
-
if (!matches) return [
|
|
230288
|
-
0,
|
|
230289
|
-
0,
|
|
230290
|
-
0
|
|
230291
|
-
];
|
|
230292
|
-
let [colorString] = matches;
|
|
230293
|
-
if (colorString.length === 3) colorString = [...colorString].map((character) => character + character).join("");
|
|
230294
|
-
const integer = Number.parseInt(colorString, 16);
|
|
230295
|
-
return [
|
|
230296
|
-
integer >> 16 & 255,
|
|
230297
|
-
integer >> 8 & 255,
|
|
230298
|
-
integer & 255
|
|
230299
|
-
];
|
|
230300
|
-
},
|
|
230301
|
-
enumerable: false
|
|
230302
|
-
},
|
|
230303
|
-
hexToAnsi256: {
|
|
230304
|
-
value: (hex) => styles$2.rgbToAnsi256(...styles$2.hexToRgb(hex)),
|
|
230305
|
-
enumerable: false
|
|
230306
|
-
},
|
|
230307
|
-
ansi256ToAnsi: {
|
|
230308
|
-
value(code) {
|
|
230309
|
-
if (code < 8) return 30 + code;
|
|
230310
|
-
if (code < 16) return 90 + (code - 8);
|
|
230311
|
-
let red;
|
|
230312
|
-
let green;
|
|
230313
|
-
let blue;
|
|
230314
|
-
if (code >= 232) {
|
|
230315
|
-
red = ((code - 232) * 10 + 8) / 255;
|
|
230316
|
-
green = red;
|
|
230317
|
-
blue = red;
|
|
230318
|
-
} else {
|
|
230319
|
-
code -= 16;
|
|
230320
|
-
const remainder = code % 36;
|
|
230321
|
-
red = Math.floor(code / 36) / 5;
|
|
230322
|
-
green = Math.floor(remainder / 6) / 5;
|
|
230323
|
-
blue = remainder % 6 / 5;
|
|
230324
|
-
}
|
|
230325
|
-
const value = Math.max(red, green, blue) * 2;
|
|
230326
|
-
if (value === 0) return 30;
|
|
230327
|
-
let result = 30 + (Math.round(blue) << 2 | Math.round(green) << 1 | Math.round(red));
|
|
230328
|
-
if (value === 2) result += 60;
|
|
230329
|
-
return result;
|
|
230330
|
-
},
|
|
230331
|
-
enumerable: false
|
|
230332
|
-
},
|
|
230333
|
-
rgbToAnsi: {
|
|
230334
|
-
value: (red, green, blue) => styles$2.ansi256ToAnsi(styles$2.rgbToAnsi256(red, green, blue)),
|
|
230335
|
-
enumerable: false
|
|
230336
|
-
},
|
|
230337
|
-
hexToAnsi: {
|
|
230338
|
-
value: (hex) => styles$2.ansi256ToAnsi(styles$2.hexToAnsi256(hex)),
|
|
230339
|
-
enumerable: false
|
|
230340
|
-
}
|
|
230341
|
-
});
|
|
230342
|
-
return styles$2;
|
|
230343
|
-
}
|
|
230344
|
-
const ansiStyles$1 = assembleStyles$1();
|
|
230345
|
-
//#endregion
|
|
230346
|
-
//#region ../../node_modules/.pnpm/chalk@6.0.0/node_modules/chalk/source/vendor/supports-color/index.js
|
|
230347
|
-
function hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process$1.argv) {
|
|
230348
|
-
const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
|
|
230349
|
-
const position = argv.indexOf(prefix + flag);
|
|
230350
|
-
const terminatorPosition = argv.indexOf("--");
|
|
230351
|
-
return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);
|
|
230352
|
-
}
|
|
230353
|
-
const { env: env$1 } = process$1;
|
|
230354
|
-
let flagForceColor;
|
|
230355
|
-
if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) flagForceColor = 0;
|
|
230356
|
-
else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) flagForceColor = 1;
|
|
230357
|
-
function hasNumericForceColor() {
|
|
230358
|
-
return /^\d+$/.test(env$1.FORCE_COLOR);
|
|
230359
|
-
}
|
|
230360
|
-
function envForceColor() {
|
|
230361
|
-
if (!("FORCE_COLOR" in env$1)) return;
|
|
230362
|
-
if (env$1.FORCE_COLOR === "false") return 0;
|
|
230363
|
-
if (env$1.FORCE_COLOR === "true" || env$1.FORCE_COLOR.length === 0) return 1;
|
|
230364
|
-
if (!hasNumericForceColor()) return;
|
|
230365
|
-
return Math.min(Number.parseInt(env$1.FORCE_COLOR, 10), 3);
|
|
230366
|
-
}
|
|
230367
|
-
function translateLevel(level) {
|
|
230368
|
-
if (level === 0) return false;
|
|
230369
|
-
return {
|
|
230370
|
-
level,
|
|
230371
|
-
hasBasic: true,
|
|
230372
|
-
has256: level >= 2,
|
|
230373
|
-
has16m: level >= 3
|
|
230374
|
-
};
|
|
230375
|
-
}
|
|
230376
|
-
function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
|
|
230377
|
-
const noFlagForceColor = envForceColor();
|
|
230378
|
-
if (noFlagForceColor !== void 0) flagForceColor = noFlagForceColor;
|
|
230379
|
-
const forceColor = sniffFlags ? flagForceColor : noFlagForceColor;
|
|
230380
|
-
if (forceColor === 0) return 0;
|
|
230381
|
-
if (sniffFlags) {
|
|
230382
|
-
if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) return 3;
|
|
230383
|
-
if (hasFlag("color=256")) return 2;
|
|
230384
|
-
}
|
|
230385
|
-
if (forceColor !== void 0 && hasNumericForceColor()) return forceColor;
|
|
230386
|
-
if ("TF_BUILD" in env$1 && "AGENT_NAME" in env$1) return 1;
|
|
230387
|
-
if (haveStream && !streamIsTTY && forceColor === void 0) return 0;
|
|
230388
|
-
const min = forceColor || 0;
|
|
230389
|
-
if (env$1.TERM === "dumb") return min;
|
|
230390
|
-
if (process$1.platform === "win32") {
|
|
230391
|
-
const osRelease = os.release().split(".");
|
|
230392
|
-
if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) return Number(osRelease[2]) >= 14931 ? 3 : 2;
|
|
230393
|
-
return 1;
|
|
230394
|
-
}
|
|
230395
|
-
if ("CI" in env$1) {
|
|
230396
|
-
if ([
|
|
230397
|
-
"GITHUB_ACTIONS",
|
|
230398
|
-
"GITEA_ACTIONS",
|
|
230399
|
-
"CIRCLECI"
|
|
230400
|
-
].some((key) => key in env$1)) return 3;
|
|
230401
|
-
if ([
|
|
230402
|
-
"TRAVIS",
|
|
230403
|
-
"APPVEYOR",
|
|
230404
|
-
"GITLAB_CI",
|
|
230405
|
-
"BUILDKITE",
|
|
230406
|
-
"DRONE"
|
|
230407
|
-
].some((sign) => sign in env$1) || env$1.CI_NAME === "codeship") return 1;
|
|
230408
|
-
return min;
|
|
230409
|
-
}
|
|
230410
|
-
if ("TEAMCITY_VERSION" in env$1) return /^(?:9\.0*[1-9]\d*\.|\d{2,}\.)/.test(env$1.TEAMCITY_VERSION) ? 1 : 0;
|
|
230411
|
-
if (env$1.COLORTERM === "truecolor") return 3;
|
|
230412
|
-
if (env$1.TERM === "xterm-kitty") return 3;
|
|
230413
|
-
if (env$1.TERM === "xterm-ghostty") return 3;
|
|
230414
|
-
if (env$1.TERM === "wezterm") return 3;
|
|
230415
|
-
if ("TERM_PROGRAM" in env$1) {
|
|
230416
|
-
const version = Number.parseInt((env$1.TERM_PROGRAM_VERSION || "").split(".", 1)[0], 10);
|
|
230417
|
-
switch (env$1.TERM_PROGRAM) {
|
|
230418
|
-
case "iTerm.app": return version >= 3 ? 3 : 2;
|
|
230419
|
-
case "Apple_Terminal": return 2;
|
|
230420
|
-
}
|
|
230421
|
-
}
|
|
230422
|
-
if (/-256(?:color)?$/i.test(env$1.TERM)) return 2;
|
|
230423
|
-
if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env$1.TERM)) return 1;
|
|
230424
|
-
if ("COLORTERM" in env$1) return 1;
|
|
230425
|
-
return min;
|
|
230426
|
-
}
|
|
230427
|
-
function createSupportsColor(stream, options = {}) {
|
|
230428
|
-
return translateLevel(_supportsColor(stream, {
|
|
230429
|
-
streamIsTTY: stream && stream.isTTY,
|
|
230430
|
-
...options
|
|
230431
|
-
}));
|
|
230432
|
-
}
|
|
230433
|
-
//#endregion
|
|
230434
|
-
//#region ../../node_modules/.pnpm/chalk@6.0.0/node_modules/chalk/source/index.js
|
|
230435
|
-
const { stdout: stdoutColor, stderr: stderrColor } = {
|
|
230436
|
-
stdout: createSupportsColor({ isTTY: tty.isatty(1) }),
|
|
230437
|
-
stderr: createSupportsColor({ isTTY: tty.isatty(2) })
|
|
230438
|
-
};
|
|
230439
|
-
const GENERATOR = Symbol("GENERATOR");
|
|
230440
|
-
const STYLER = Symbol("STYLER");
|
|
230441
|
-
const IS_EMPTY = Symbol("IS_EMPTY");
|
|
230442
|
-
const LEVEL = Symbol("LEVEL");
|
|
230443
|
-
const styles$1 = Object.create(null);
|
|
230444
|
-
const assertValidLevel = (level) => {
|
|
230445
|
-
if (!Number.isSafeInteger(level) || level < 0 || level > 3) throw new Error("The `level` should be an integer from 0 to 3");
|
|
230446
|
-
};
|
|
230447
|
-
const levelDescriptor = {
|
|
230448
|
-
enumerable: true,
|
|
230449
|
-
get() {
|
|
230450
|
-
return this[LEVEL];
|
|
230451
|
-
},
|
|
230452
|
-
set(level) {
|
|
230453
|
-
assertValidLevel(level);
|
|
230454
|
-
this[LEVEL] = level;
|
|
230455
|
-
}
|
|
230456
|
-
};
|
|
230457
|
-
const applyOptions = (object, options = {}) => {
|
|
230458
|
-
if (options.level !== void 0) assertValidLevel(options.level);
|
|
230459
|
-
const colorLevel = stdoutColor ? stdoutColor.level : 0;
|
|
230460
|
-
object[LEVEL] = options.level === void 0 ? colorLevel : options.level;
|
|
230461
|
-
};
|
|
230462
|
-
const chalkFactory = (options) => {
|
|
230463
|
-
const chalk = (...strings) => strings.join(" ");
|
|
230464
|
-
applyOptions(chalk, options);
|
|
230465
|
-
Object.setPrototypeOf(chalk, createChalk.prototype);
|
|
230466
|
-
return chalk;
|
|
230467
|
-
};
|
|
230468
|
-
function createChalk(options) {
|
|
230469
|
-
return chalkFactory(options);
|
|
230470
|
-
}
|
|
230471
|
-
Object.setPrototypeOf(createChalk.prototype, Function.prototype);
|
|
230472
|
-
for (const [styleName, style] of Object.entries(ansiStyles$1)) styles$1[styleName] = { get() {
|
|
230473
|
-
const builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);
|
|
230474
|
-
Object.defineProperty(this, styleName, { value: builder });
|
|
230475
|
-
return builder;
|
|
230476
|
-
} };
|
|
230477
|
-
styles$1.visible = { get() {
|
|
230478
|
-
const builder = createBuilder(this, this[STYLER], true);
|
|
230479
|
-
Object.defineProperty(this, "visible", { value: builder });
|
|
230480
|
-
return builder;
|
|
230481
|
-
} };
|
|
230482
|
-
const createModelConverters = (model, type) => {
|
|
230483
|
-
const style = ansiStyles$1[type];
|
|
230484
|
-
if (model === "rgb") {
|
|
230485
|
-
const ansi = (red, green, blue) => style.ansi(ansiStyles$1.rgbToAnsi(red, green, blue));
|
|
230486
|
-
const ansi256 = (red, green, blue) => style.ansi256(ansiStyles$1.rgbToAnsi256(red, green, blue));
|
|
230487
|
-
return [
|
|
230488
|
-
ansi,
|
|
230489
|
-
ansi,
|
|
230490
|
-
ansi256,
|
|
230491
|
-
style.ansi16m
|
|
230492
|
-
];
|
|
230493
|
-
}
|
|
230494
|
-
if (model === "hex") {
|
|
230495
|
-
const ansi = (hex) => style.ansi(ansiStyles$1.hexToAnsi(hex));
|
|
230496
|
-
const ansi256 = (hex) => style.ansi256(ansiStyles$1.hexToAnsi256(hex));
|
|
230497
|
-
return [
|
|
230498
|
-
ansi,
|
|
230499
|
-
ansi,
|
|
230500
|
-
ansi256,
|
|
230501
|
-
(hex) => style.ansi16m(...ansiStyles$1.hexToRgb(hex))
|
|
230502
|
-
];
|
|
230503
|
-
}
|
|
230504
|
-
const ansi = (code) => style.ansi(ansiStyles$1.ansi256ToAnsi(code));
|
|
230505
|
-
return [
|
|
230506
|
-
ansi,
|
|
230507
|
-
ansi,
|
|
230508
|
-
style.ansi256,
|
|
230509
|
-
style.ansi256
|
|
230510
|
-
];
|
|
230511
|
-
};
|
|
230512
|
-
for (const model of [
|
|
230513
|
-
"rgb",
|
|
230514
|
-
"hex",
|
|
230515
|
-
"ansi256"
|
|
230516
|
-
]) {
|
|
230517
|
-
const capitalizedModel = model[0].toUpperCase() + model.slice(1);
|
|
230518
|
-
for (const [styleName, type] of [
|
|
230519
|
-
[model, "color"],
|
|
230520
|
-
["bg" + capitalizedModel, "bgColor"],
|
|
230521
|
-
["underline" + capitalizedModel, "underlineColor"]
|
|
230522
|
-
]) {
|
|
230523
|
-
const { close } = ansiStyles$1[type];
|
|
230524
|
-
const converters = createModelConverters(model, type);
|
|
230525
|
-
styles$1[styleName] = { get() {
|
|
230526
|
-
const styleFunction = function(first, second, third) {
|
|
230527
|
-
const open = converters[this.level](first, second, third);
|
|
230528
|
-
return createBuilder(this, createStyler(open, close, this[STYLER]), this[IS_EMPTY]);
|
|
230529
|
-
};
|
|
230530
|
-
Object.defineProperty(this, styleName, { value: styleFunction });
|
|
230531
|
-
return styleFunction;
|
|
230532
|
-
} };
|
|
230533
|
-
}
|
|
230534
|
-
}
|
|
230535
|
-
const proto = Object.defineProperties(() => {}, {
|
|
230536
|
-
...styles$1,
|
|
230537
|
-
level: {
|
|
230538
|
-
enumerable: true,
|
|
230539
|
-
get() {
|
|
230540
|
-
return this[GENERATOR].level;
|
|
230541
|
-
},
|
|
230542
|
-
set(level) {
|
|
230543
|
-
this[GENERATOR].level = level;
|
|
230544
|
-
}
|
|
230545
|
-
}
|
|
230546
|
-
});
|
|
230547
|
-
const createStyler = (open, close, parent) => {
|
|
230548
|
-
let openAll;
|
|
230549
|
-
let closeAll;
|
|
230550
|
-
if (parent === void 0) {
|
|
230551
|
-
openAll = open;
|
|
230552
|
-
closeAll = close;
|
|
230553
|
-
} else {
|
|
230554
|
-
openAll = parent.openAll + open;
|
|
230555
|
-
closeAll = close + parent.closeAll;
|
|
230556
|
-
}
|
|
230557
|
-
return {
|
|
230558
|
-
open,
|
|
230559
|
-
close,
|
|
230560
|
-
openAll,
|
|
230561
|
-
closeAll,
|
|
230562
|
-
parent
|
|
230563
|
-
};
|
|
230564
|
-
};
|
|
230565
|
-
const createBuilder = (self, _styler, _isEmpty) => {
|
|
230566
|
-
const builder = (...arguments_) => {
|
|
230567
|
-
if (arguments_.length === 1) return applyStyle(builder, "" + arguments_[0]);
|
|
230568
|
-
if (arguments_.length === 2) return applyStyle(builder, arguments_[0] + " " + arguments_[1]);
|
|
230569
|
-
return applyStyle(builder, arguments_.join(" "));
|
|
230570
|
-
};
|
|
230571
|
-
Object.setPrototypeOf(builder, proto);
|
|
230572
|
-
builder[GENERATOR] = self[GENERATOR] ?? self;
|
|
230573
|
-
builder[STYLER] = _styler;
|
|
230574
|
-
builder[IS_EMPTY] = _isEmpty;
|
|
230575
|
-
return builder;
|
|
230576
|
-
};
|
|
230577
|
-
const applyStyle = (self, string) => {
|
|
230578
|
-
if (self[GENERATOR][LEVEL] <= 0 || !string) return self[IS_EMPTY] ? "" : string;
|
|
230579
|
-
let styler = self[STYLER];
|
|
230580
|
-
if (styler === void 0) return string;
|
|
230581
|
-
const { openAll, closeAll } = styler;
|
|
230582
|
-
if (string.includes("\x1B")) while (styler !== void 0) {
|
|
230583
|
-
string = stringReplaceAll(string, styler.close, styler.open);
|
|
230584
|
-
styler = styler.parent;
|
|
230585
|
-
}
|
|
230586
|
-
const lfIndex = string.indexOf("\n");
|
|
230587
|
-
if (lfIndex !== -1) string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);
|
|
230588
|
-
return openAll + string + closeAll;
|
|
230589
|
-
};
|
|
230590
|
-
Object.defineProperties(createChalk.prototype, {
|
|
230591
|
-
...styles$1,
|
|
230592
|
-
level: levelDescriptor
|
|
230593
|
-
});
|
|
230594
|
-
const chalk = createChalk();
|
|
230595
|
-
createChalk({ level: stderrColor ? stderrColor.level : 0 });
|
|
230596
|
-
//#endregion
|
|
230597
|
-
//#region ../chain-sdk/dist/neutral/utils.mjs
|
|
230598
|
-
function hexToLast4BytesInt(value) {
|
|
230599
|
-
assertEx$1(isHex(value), () => "value must be a hex string");
|
|
230600
|
-
const last4Bytes = value.slice(-8);
|
|
230601
|
-
return Number.parseInt(last4Bytes, 16);
|
|
230602
|
-
}
|
|
230603
|
-
function seededRandom(seed) {
|
|
230604
|
-
return function() {
|
|
230605
|
-
const x = Math.sin(seed++) * 1e4;
|
|
230606
|
-
return x - Math.floor(x);
|
|
230607
|
-
};
|
|
230608
|
-
}
|
|
230609
|
-
function shuffleWithSeed(set, seed) {
|
|
230610
|
-
const array = [...set].toSorted((a, b) => String(a).localeCompare(String(b)));
|
|
230611
|
-
const random = seededRandom(seed);
|
|
230612
|
-
for (let i = array.length - 1; i > 0; i--) {
|
|
230613
|
-
const j = Math.floor(random() * (i + 1));
|
|
230614
|
-
const swap = array[i];
|
|
230615
|
-
array[i] = array[j];
|
|
230616
|
-
array[j] = swap;
|
|
230617
|
-
}
|
|
230618
|
-
return array;
|
|
230619
|
-
}
|
|
230620
|
-
function spanDurationInMillis(span) {
|
|
230621
|
-
return span.duration[0] * 1e3 + span.duration[1] / 1e6;
|
|
230622
|
-
}
|
|
230623
|
-
(class _XyoConsoleSpanExporter extends ConsoleSpanExporter {
|
|
230624
|
-
static durationToLogLevel = [
|
|
230625
|
-
0,
|
|
230626
|
-
1,
|
|
230627
|
-
10,
|
|
230628
|
-
100,
|
|
230629
|
-
1e3
|
|
230630
|
-
];
|
|
230631
|
-
static logLevelToChalkColor = [
|
|
230632
|
-
chalk.grey,
|
|
230633
|
-
chalk.white,
|
|
230634
|
-
chalk.green,
|
|
230635
|
-
chalk.yellow,
|
|
230636
|
-
chalk.red
|
|
230637
|
-
];
|
|
230638
|
-
_logLevel;
|
|
230639
|
-
constructor(logLevel = 0) {
|
|
230640
|
-
super();
|
|
230641
|
-
this._logLevel = logLevel;
|
|
230642
|
-
}
|
|
230643
|
-
get logLevel() {
|
|
230644
|
-
return this._logLevel;
|
|
230645
|
-
}
|
|
230646
|
-
export(spans) {
|
|
230647
|
-
for (const span of spans) {
|
|
230648
|
-
const spanLevel = this.spanLevel(span);
|
|
230649
|
-
if (spanLevel < this.logLevel) continue;
|
|
230650
|
-
const duration = spanDurationInMillis(span);
|
|
230651
|
-
console.log(chalk.grey([
|
|
230652
|
-
`Span [${span.name}]`,
|
|
230653
|
-
this.logColor(spanLevel)(`${duration}ms`),
|
|
230654
|
-
`TraceId: ${span.spanContext().traceId}`
|
|
230655
|
-
].join(", ")));
|
|
230656
|
-
}
|
|
230657
|
-
}
|
|
230658
|
-
logColor(level) {
|
|
230659
|
-
return _XyoConsoleSpanExporter.logLevelToChalkColor[level] ?? chalk.magenta;
|
|
230660
|
-
}
|
|
230661
|
-
spanLevel(span) {
|
|
230662
|
-
let logLevel = 0;
|
|
230663
|
-
const duration = spanDurationInMillis(span);
|
|
230664
|
-
for (let x = _XyoConsoleSpanExporter.durationToLogLevel.length - 1; x >= 0; x--) if (duration > _XyoConsoleSpanExporter.durationToLogLevel[x]) {
|
|
230665
|
-
logLevel = x;
|
|
230666
|
-
break;
|
|
230667
|
-
}
|
|
230668
|
-
return logLevel;
|
|
230669
|
-
}
|
|
230670
|
-
});
|
|
230671
230326
|
//#endregion
|
|
230672
230327
|
//#region ../chain-sdk/dist/neutral/services.mjs
|
|
230673
|
-
var __defProp$
|
|
230674
|
-
var __getOwnPropDesc$
|
|
230675
|
-
var __defNormalProp$
|
|
230328
|
+
var __defProp$12 = Object.defineProperty;
|
|
230329
|
+
var __getOwnPropDesc$12 = Object.getOwnPropertyDescriptor;
|
|
230330
|
+
var __defNormalProp$12 = (obj, key, value) => key in obj ? __defProp$12(obj, key, {
|
|
230676
230331
|
enumerable: true,
|
|
230677
230332
|
configurable: true,
|
|
230678
230333
|
writable: true,
|
|
230679
230334
|
value
|
|
230680
230335
|
}) : obj[key] = value;
|
|
230681
|
-
var __decorateClass$
|
|
230682
|
-
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$
|
|
230336
|
+
var __decorateClass$12 = (decorators, target, key, kind) => {
|
|
230337
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$12(target, key) : target;
|
|
230683
230338
|
for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
230684
|
-
if (kind && result) __defProp$
|
|
230339
|
+
if (kind && result) __defProp$12(target, key, result);
|
|
230685
230340
|
return result;
|
|
230686
230341
|
};
|
|
230687
|
-
var __publicField$
|
|
230342
|
+
var __publicField$12 = (obj, key, value) => __defNormalProp$12(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
230688
230343
|
var ValidatorMoniker = "Validator";
|
|
230689
230344
|
var XyoValidator = class extends AbstractCreatableProvider$1 {
|
|
230690
230345
|
moniker = XyoValidator.defaultMoniker;
|
|
@@ -230705,12 +230360,12 @@ var XyoValidator = class extends AbstractCreatableProvider$1 {
|
|
|
230705
230360
|
return true;
|
|
230706
230361
|
}
|
|
230707
230362
|
};
|
|
230708
|
-
__publicField$
|
|
230709
|
-
__publicField$
|
|
230710
|
-
__publicField$
|
|
230711
|
-
__publicField$
|
|
230712
|
-
__publicField$
|
|
230713
|
-
XyoValidator = __decorateClass$
|
|
230363
|
+
__publicField$12(XyoValidator, "connectionTypes", []);
|
|
230364
|
+
__publicField$12(XyoValidator, "defaultMoniker", ValidatorMoniker);
|
|
230365
|
+
__publicField$12(XyoValidator, "dependencies", [BlockViewerMoniker$1]);
|
|
230366
|
+
__publicField$12(XyoValidator, "monikers", [ValidatorMoniker]);
|
|
230367
|
+
__publicField$12(XyoValidator, "surface", "node");
|
|
230368
|
+
XyoValidator = __decorateClass$12([creatableProvider$1()], XyoValidator);
|
|
230714
230369
|
var BaseElectionService = class extends AbstractCreatableProvider$1 {
|
|
230715
230370
|
moniker = BaseElectionService.defaultMoniker;
|
|
230716
230371
|
get blockViewer() {
|
|
@@ -230734,11 +230389,11 @@ var BaseElectionService = class extends AbstractCreatableProvider$1 {
|
|
|
230734
230389
|
return shuffleWithSeed(new Set(candidates), hexToLast4BytesInt(previousBlockHash)).slice(0, maxSize);
|
|
230735
230390
|
}
|
|
230736
230391
|
};
|
|
230737
|
-
__publicField$
|
|
230738
|
-
__publicField$
|
|
230739
|
-
__publicField$
|
|
230740
|
-
__publicField$
|
|
230741
|
-
BaseElectionService = __decorateClass$
|
|
230392
|
+
__publicField$12(BaseElectionService, "connectionTypes", []);
|
|
230393
|
+
__publicField$12(BaseElectionService, "defaultMoniker", "Election");
|
|
230394
|
+
__publicField$12(BaseElectionService, "dependencies", []);
|
|
230395
|
+
__publicField$12(BaseElectionService, "monikers", ["Election"]);
|
|
230396
|
+
BaseElectionService = __decorateClass$12([creatableProvider$1()], BaseElectionService);
|
|
230742
230397
|
var createBootstrapHead = async (account, chainId, genesisBlockRewardAmount, genesisBlockRewardAddress) => {
|
|
230743
230398
|
const chain = [];
|
|
230744
230399
|
const genesisBlock = await createGenesisBlock(account, chainId, genesisBlockRewardAmount, genesisBlockRewardAddress);
|
|
@@ -230768,7 +230423,7 @@ async function reportRejectedBlock(deadLetterQueueRunner, block, result, observe
|
|
|
230768
230423
|
const signed = observer === void 0 ? void 0 : await buildSignedBlockRejection(rejection, observer);
|
|
230769
230424
|
await deadLetterQueueRunner.rejectBlock(rejection, signed);
|
|
230770
230425
|
}
|
|
230771
|
-
async function processPendingBlocks({ blockValidationViewer, blockViewer, context, logger, mempoolViewer, finalizationRunner, allowedProducers, backoffMs, minCandidates, deadLetterQueueRunner, observer, admission, eligibility, publishAdmissionShadow }) {
|
|
230426
|
+
async function processPendingBlocks({ blockValidationViewer, blockViewer, context, logger, mempoolViewer, finalizationRunner, allowedProducers, backoffMs, heartbeatInterval, minCandidates, deadLetterQueueRunner, observer, admission, eligibility, publishAdmissionShadow }) {
|
|
230772
230427
|
const start = Date.now();
|
|
230773
230428
|
const currentBlock = await blockViewer.currentBlock();
|
|
230774
230429
|
const headSelector = new ChainHeadSelector({
|
|
@@ -230779,6 +230434,7 @@ async function processPendingBlocks({ blockValidationViewer, blockViewer, contex
|
|
|
230779
230434
|
windowedFinalizedChain: [currentBlock],
|
|
230780
230435
|
allowedProducers,
|
|
230781
230436
|
backoffMs,
|
|
230437
|
+
heartbeatInterval,
|
|
230782
230438
|
minCandidates,
|
|
230783
230439
|
admission,
|
|
230784
230440
|
eligibility,
|
|
@@ -230875,11 +230531,11 @@ var BaseNetworkStakeStepRewardService = class extends AbstractCreatableProvider$
|
|
|
230875
230531
|
throw new Error("Method [networkStakeStepRewardsForStepLevel] not implemented.");
|
|
230876
230532
|
}
|
|
230877
230533
|
};
|
|
230878
|
-
__publicField$
|
|
230879
|
-
__publicField$
|
|
230880
|
-
__publicField$
|
|
230881
|
-
__publicField$
|
|
230882
|
-
BaseNetworkStakeStepRewardService = __decorateClass$
|
|
230534
|
+
__publicField$12(BaseNetworkStakeStepRewardService, "connectionTypes", []);
|
|
230535
|
+
__publicField$12(BaseNetworkStakeStepRewardService, "defaultMoniker", NetworkStakeStepRewardViewerMoniker);
|
|
230536
|
+
__publicField$12(BaseNetworkStakeStepRewardService, "dependencies", []);
|
|
230537
|
+
__publicField$12(BaseNetworkStakeStepRewardService, "monikers", [NetworkStakeStepRewardViewerMoniker]);
|
|
230538
|
+
BaseNetworkStakeStepRewardService = __decorateClass$12([creatableProvider$1()], BaseNetworkStakeStepRewardService);
|
|
230883
230539
|
function selectSupersededCandidate(candidates, address, block, previous) {
|
|
230884
230540
|
const own = candidates.filter((candidate) => candidate.block === block && candidate.previous === previous && candidate.addresses.includes(address));
|
|
230885
230541
|
if (own.length === 0) return void 0;
|
|
@@ -230971,6 +230627,7 @@ function producerTuningFromConfig(config) {
|
|
|
230971
230627
|
const parsed = ProducerTuningOptionsZod.safeParse(options);
|
|
230972
230628
|
return parsed.success ? parsed.data : {};
|
|
230973
230629
|
}
|
|
230630
|
+
var DEFAULT_HEARTBEAT_INTERVAL = 3e5;
|
|
230974
230631
|
var SimpleBlockRunner = class extends AbstractCreatableProvider$1 {
|
|
230975
230632
|
moniker = SimpleBlockRunner.defaultMoniker;
|
|
230976
230633
|
_blockRewardDiviner;
|
|
@@ -231030,7 +230687,7 @@ var SimpleBlockRunner = class extends AbstractCreatableProvider$1 {
|
|
|
231030
230687
|
return this._finalizationViewer;
|
|
231031
230688
|
}
|
|
231032
230689
|
get heartbeatInterval() {
|
|
231033
|
-
return this.params.heartbeatInterval ?? this.producerTuning.heartbeatInterval ??
|
|
230690
|
+
return this.params.heartbeatInterval ?? this.producerTuning.heartbeatInterval ?? 3e5;
|
|
231034
230691
|
}
|
|
231035
230692
|
get mempoolViewer() {
|
|
231036
230693
|
return this._mempoolViewer;
|
|
@@ -231371,14 +231028,14 @@ var SimpleBlockRunner = class extends AbstractCreatableProvider$1 {
|
|
|
231371
231028
|
* no attributable transaction to exclude). Such a build fails identically until external state
|
|
231372
231029
|
* changes, so retrying at the production tick rate only churns build → validate → DLQ.
|
|
231373
231030
|
*/
|
|
231374
|
-
__publicField$
|
|
231375
|
-
__publicField$
|
|
231031
|
+
__publicField$12(SimpleBlockRunner, "RejectedBuildBackoffMs", 1e3);
|
|
231032
|
+
__publicField$12(SimpleBlockRunner, "connectionTypes", [
|
|
231376
231033
|
"lmdb",
|
|
231377
231034
|
"mongo",
|
|
231378
231035
|
"memory"
|
|
231379
231036
|
]);
|
|
231380
|
-
__publicField$
|
|
231381
|
-
__publicField$
|
|
231037
|
+
__publicField$12(SimpleBlockRunner, "defaultMoniker", BlockRunnerMoniker);
|
|
231038
|
+
__publicField$12(SimpleBlockRunner, "dependencies", [
|
|
231382
231039
|
AccountBalanceViewerMoniker$1,
|
|
231383
231040
|
BlockRewardViewerMoniker$1,
|
|
231384
231041
|
BlockValidationViewerMoniker$1,
|
|
@@ -231386,9 +231043,379 @@ __publicField$11(SimpleBlockRunner, "dependencies", [
|
|
|
231386
231043
|
MempoolViewerMoniker$1,
|
|
231387
231044
|
TimeSyncViewerMoniker$1
|
|
231388
231045
|
]);
|
|
231389
|
-
__publicField$
|
|
231390
|
-
__publicField$
|
|
231391
|
-
SimpleBlockRunner = __decorateClass$
|
|
231046
|
+
__publicField$12(SimpleBlockRunner, "monikers", [BlockRunnerMoniker]);
|
|
231047
|
+
__publicField$12(SimpleBlockRunner, "surface", "node");
|
|
231048
|
+
SimpleBlockRunner = __decorateClass$12([creatableProvider$1()], SimpleBlockRunner);
|
|
231049
|
+
//#endregion
|
|
231050
|
+
//#region ../chain-sdk/dist/neutral/ethereum.mjs
|
|
231051
|
+
var __defProp$11 = Object.defineProperty;
|
|
231052
|
+
var __getOwnPropDesc$11 = Object.getOwnPropertyDescriptor;
|
|
231053
|
+
var __defNormalProp$11 = (obj, key, value) => key in obj ? __defProp$11(obj, key, {
|
|
231054
|
+
enumerable: true,
|
|
231055
|
+
configurable: true,
|
|
231056
|
+
writable: true,
|
|
231057
|
+
value
|
|
231058
|
+
}) : obj[key] = value;
|
|
231059
|
+
var __decorateClass$11 = (decorators, target, key, kind) => {
|
|
231060
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$11(target, key) : target;
|
|
231061
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
231062
|
+
if (kind && result) __defProp$11(target, key, result);
|
|
231063
|
+
return result;
|
|
231064
|
+
};
|
|
231065
|
+
var __publicField$11 = (obj, key, value) => __defNormalProp$11(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
231066
|
+
var STAKE_EVENT_NAMES$1 = /* @__PURE__ */ new Set([
|
|
231067
|
+
"StakeAdded",
|
|
231068
|
+
"StakeRemoved",
|
|
231069
|
+
"StakeWithdrawn"
|
|
231070
|
+
]);
|
|
231071
|
+
var DEFAULT_HEAD_POLL_INTERVAL_MS$1 = 5e3;
|
|
231072
|
+
var MIN_HEAD_POLL_INTERVAL_MS = 5e3;
|
|
231073
|
+
var RestStakeEventsViewerOptionsZod = object$3({ headPollIntervalMs: number$1().optional() });
|
|
231074
|
+
var RestStakeEventsViewer = class extends AbstractCreatableProvider$1 {
|
|
231075
|
+
moniker = RestStakeEventsViewer.defaultMoniker;
|
|
231076
|
+
completeFrames = /* @__PURE__ */ new Map();
|
|
231077
|
+
contractInterface = new Interface(IAddressStakingEvents__factory2.abi);
|
|
231078
|
+
currentHead;
|
|
231079
|
+
headPollIntervalMs = DEFAULT_HEAD_POLL_INTERVAL_MS$1;
|
|
231080
|
+
lastSuccessfulSyncAt;
|
|
231081
|
+
manifestPromise;
|
|
231082
|
+
positionCountCheckpoints = [];
|
|
231083
|
+
stakeEventCache = [];
|
|
231084
|
+
stakeEventsByPosition = /* @__PURE__ */ new Map();
|
|
231085
|
+
syncPromise;
|
|
231086
|
+
tailFrame;
|
|
231087
|
+
get address() {
|
|
231088
|
+
return toEthAddress(assertEx$1(this.config.chain.id, () => "RestStakeEventsViewer requires config.chain.id (the staking contract address)"));
|
|
231089
|
+
}
|
|
231090
|
+
get eventIndexBaseUrl() {
|
|
231091
|
+
const connection = RestStakeEventsViewer.requireBoundConnection(this.config);
|
|
231092
|
+
return assertEx$1(connection.config.type === "rest" ? connection.config.baseUrl : void 0, () => `Connection "${connection.name}" bound to RestStakeEventsViewer requires a rest baseUrl`).replace(/\/+$/, "");
|
|
231093
|
+
}
|
|
231094
|
+
get fetchFn() {
|
|
231095
|
+
return this.context.fetchFn ?? fetch.bind(globalThis);
|
|
231096
|
+
}
|
|
231097
|
+
/** Creates the provider instance after its configuration has resolved. */
|
|
231098
|
+
async createHandler() {
|
|
231099
|
+
await super.createHandler();
|
|
231100
|
+
RestStakeEventsViewer.requireBoundConnection(this.config);
|
|
231101
|
+
const { headPollIntervalMs } = RestStakeEventsViewerOptionsZod.parse(this.config.options);
|
|
231102
|
+
if (headPollIntervalMs !== void 0) assertEx$1(headPollIntervalMs >= MIN_HEAD_POLL_INTERVAL_MS, () => `headPollIntervalMs must be at least ${MIN_HEAD_POLL_INTERVAL_MS}ms`);
|
|
231103
|
+
this.headPollIntervalMs = headPollIntervalMs ?? DEFAULT_HEAD_POLL_INTERVAL_MS$1;
|
|
231104
|
+
}
|
|
231105
|
+
async positionCount(range) {
|
|
231106
|
+
await this.sync();
|
|
231107
|
+
this.assertRangeAvailable(range);
|
|
231108
|
+
if (range[0] === 0) return this.positionCountThrough(range[1]);
|
|
231109
|
+
return this.matchingStakeEvents(range).reduce((max, event) => Math.max(max, event.args.id), -1) + 1;
|
|
231110
|
+
}
|
|
231111
|
+
async stakeEvents(range = [0, "latest"], filter) {
|
|
231112
|
+
await this.sync();
|
|
231113
|
+
this.assertRangeAvailable(range);
|
|
231114
|
+
return this.matchingStakeEvents(range, filter);
|
|
231115
|
+
}
|
|
231116
|
+
assertRangeAvailable(range) {
|
|
231117
|
+
const head = assertEx$1(this.currentHead, () => "EVM event index head is unavailable");
|
|
231118
|
+
assertEx$1(range[1] === "latest" || range[1] <= head.block, () => `Stake-event range ends at ${range[1]}, beyond EVM event index head ${head.block}`);
|
|
231119
|
+
}
|
|
231120
|
+
decodeIndexedStakeEvents() {
|
|
231121
|
+
return [...[...this.completeFrames.entries()].sort(([a], [b]) => a - b).map(([, frame]) => frame), ...this.tailFrame === void 0 ? [] : [this.tailFrame]].flatMap((frame) => frame.logs).sort((a, b) => a.blockNumber - b.blockNumber || a.transactionIndex - b.transactionIndex || a.index - b.index).flatMap((log) => {
|
|
231122
|
+
const event = this.stakeEventFromLog(log);
|
|
231123
|
+
return event === void 0 ? [] : [event];
|
|
231124
|
+
});
|
|
231125
|
+
}
|
|
231126
|
+
async fetchJson(path) {
|
|
231127
|
+
const response = await this.fetchFn(`${this.eventIndexBaseUrl}/${path}`);
|
|
231128
|
+
assertEx$1(response.ok, () => `EVM event index request failed [${response.status}] for ${path}`);
|
|
231129
|
+
return await response.json();
|
|
231130
|
+
}
|
|
231131
|
+
async getManifest() {
|
|
231132
|
+
this.manifestPromise ??= (async () => {
|
|
231133
|
+
const manifest = asEvmEventIndexManifest(await this.fetchJson(evmEventIndexManifestPath(this.address)), true);
|
|
231134
|
+
assertEx$1(manifest.address.toLowerCase() === this.address.toLowerCase(), () => "EVM event index manifest address mismatch");
|
|
231135
|
+
return manifest;
|
|
231136
|
+
})();
|
|
231137
|
+
return await this.manifestPromise;
|
|
231138
|
+
}
|
|
231139
|
+
indexStakeEvents(events) {
|
|
231140
|
+
this.stakeEventCache = events;
|
|
231141
|
+
this.positionCountCheckpoints = [];
|
|
231142
|
+
this.stakeEventsByPosition.clear();
|
|
231143
|
+
let maxPositionId = -1;
|
|
231144
|
+
for (const event of events) {
|
|
231145
|
+
const positionEvents = this.stakeEventsByPosition.get(event.args.id) ?? [];
|
|
231146
|
+
positionEvents.push(event);
|
|
231147
|
+
this.stakeEventsByPosition.set(event.args.id, positionEvents);
|
|
231148
|
+
if (event.args.id > maxPositionId) {
|
|
231149
|
+
maxPositionId = event.args.id;
|
|
231150
|
+
this.positionCountCheckpoints.push({
|
|
231151
|
+
count: maxPositionId + 1,
|
|
231152
|
+
time: event.time
|
|
231153
|
+
});
|
|
231154
|
+
}
|
|
231155
|
+
}
|
|
231156
|
+
}
|
|
231157
|
+
matchesFilter(event, range, filter) {
|
|
231158
|
+
if (range[1] !== "latest" && event.time > range[1]) return false;
|
|
231159
|
+
if (event.time < range[0]) return false;
|
|
231160
|
+
if (isDefined$1(filter?.name) && event.name !== filter.name) return false;
|
|
231161
|
+
if (isDefined$1(filter?.args?.id) && event.args.id !== filter.args.id) return false;
|
|
231162
|
+
if (isDefined$1(filter?.args?.staked) && event.args.staked !== filter.args.staked) return false;
|
|
231163
|
+
if (isDefined$1(filter?.args?.staker) && event.args.staker !== filter.args.staker) return false;
|
|
231164
|
+
return true;
|
|
231165
|
+
}
|
|
231166
|
+
matchingStakeEvents(range, filter) {
|
|
231167
|
+
const positionId = filter?.args?.id;
|
|
231168
|
+
return (isDefined$1(positionId) ? this.stakeEventsByPosition.get(positionId) ?? [] : this.stakeEventCache).filter((event) => this.matchesFilter(event, range, filter));
|
|
231169
|
+
}
|
|
231170
|
+
positionCountThrough(end) {
|
|
231171
|
+
if (end === "latest") return this.positionCountCheckpoints.at(-1)?.count ?? 0;
|
|
231172
|
+
let low = 0;
|
|
231173
|
+
let high = this.positionCountCheckpoints.length;
|
|
231174
|
+
while (low < high) {
|
|
231175
|
+
const middle = Math.floor((low + high) / 2);
|
|
231176
|
+
if (this.positionCountCheckpoints[middle].time <= end) low = middle + 1;
|
|
231177
|
+
else high = middle;
|
|
231178
|
+
}
|
|
231179
|
+
return this.positionCountCheckpoints[low - 1]?.count ?? 0;
|
|
231180
|
+
}
|
|
231181
|
+
stakeEventFromLog(log) {
|
|
231182
|
+
const parsed = this.contractInterface.parseLog({
|
|
231183
|
+
data: log.data,
|
|
231184
|
+
topics: log.topics
|
|
231185
|
+
});
|
|
231186
|
+
if (parsed === null || !STAKE_EVENT_NAMES$1.has(parsed.name)) return;
|
|
231187
|
+
const [staked, staker, id, amount] = parsed.args;
|
|
231188
|
+
return {
|
|
231189
|
+
name: parsed.name,
|
|
231190
|
+
args: {
|
|
231191
|
+
amount: asAttoXL1$1(amount),
|
|
231192
|
+
id: Number(id),
|
|
231193
|
+
staked: toAddress(staked),
|
|
231194
|
+
staker: toAddress(staker)
|
|
231195
|
+
},
|
|
231196
|
+
time: log.blockNumber
|
|
231197
|
+
};
|
|
231198
|
+
}
|
|
231199
|
+
async sync() {
|
|
231200
|
+
const now = Date.now();
|
|
231201
|
+
const elapsed = this.lastSuccessfulSyncAt === void 0 ? void 0 : now - this.lastSuccessfulSyncAt;
|
|
231202
|
+
if (this.currentHead !== void 0 && elapsed !== void 0 && elapsed >= 0 && elapsed < this.headPollIntervalMs) return;
|
|
231203
|
+
this.syncPromise ??= this.syncFromHead().then(() => {
|
|
231204
|
+
this.lastSuccessfulSyncAt = Date.now();
|
|
231205
|
+
}).finally(() => {
|
|
231206
|
+
this.syncPromise = void 0;
|
|
231207
|
+
});
|
|
231208
|
+
await this.syncPromise;
|
|
231209
|
+
}
|
|
231210
|
+
async syncFromHead() {
|
|
231211
|
+
const manifest = await this.getManifest();
|
|
231212
|
+
const head = asEvmEventIndexHead(await this.fetchJson(evmEventIndexHeadPath(this.address)), true);
|
|
231213
|
+
assertEx$1(head.address.toLowerCase() === this.address.toLowerCase(), () => "EVM event index head address mismatch");
|
|
231214
|
+
assertEx$1(head.chainId === manifest.chainId, () => "EVM event index chain mismatch");
|
|
231215
|
+
if (this.currentHead?.block === head.block && this.currentHead.hash === head.hash) return;
|
|
231216
|
+
if (this.currentHead !== void 0 && (head.block < this.currentHead.block || head.block === this.currentHead.block && head.hash !== this.currentHead.hash)) {
|
|
231217
|
+
this.completeFrames.clear();
|
|
231218
|
+
this.tailFrame = void 0;
|
|
231219
|
+
}
|
|
231220
|
+
const indexedBlockCount = Math.max(0, head.block - manifest.deploymentBlock + 1);
|
|
231221
|
+
const completeFrameCount = Math.floor(indexedBlockCount / manifest.frameSize);
|
|
231222
|
+
const missingFrameIndexes = Array.from({ length: completeFrameCount }, (_, index) => index).filter((index) => !this.completeFrames.has(index));
|
|
231223
|
+
await Promise.all(missingFrameIndexes.map(async (index) => {
|
|
231224
|
+
const frame = asEvmEventIndexFrame(await this.fetchJson(evmEventIndexFramePath(this.address, index)), true);
|
|
231225
|
+
const expectedFrom = manifest.deploymentBlock + index * manifest.frameSize;
|
|
231226
|
+
assertEx$1(frame.fromBlock === expectedFrom, () => `EVM event index frame ${index} starts at the wrong block`);
|
|
231227
|
+
assertEx$1(frame.toBlock === expectedFrom + manifest.frameSize - 1, () => `EVM event index frame ${index} is incomplete`);
|
|
231228
|
+
this.completeFrames.set(index, frame);
|
|
231229
|
+
}));
|
|
231230
|
+
const tailStart = manifest.deploymentBlock + completeFrameCount * manifest.frameSize;
|
|
231231
|
+
this.tailFrame = tailStart <= head.block ? asEvmEventIndexFrame(await this.fetchJson(`${evmEventIndexTailPath(this.address)}?head=${head.hash}`), true) : void 0;
|
|
231232
|
+
if (this.tailFrame !== void 0) {
|
|
231233
|
+
assertEx$1(this.tailFrame.fromBlock === tailStart, () => "EVM event index tail starts at the wrong block");
|
|
231234
|
+
assertEx$1(this.tailFrame.toBlock === head.block, () => "EVM event index tail is stale relative to its head");
|
|
231235
|
+
}
|
|
231236
|
+
this.indexStakeEvents(this.decodeIndexedStakeEvents());
|
|
231237
|
+
this.currentHead = head;
|
|
231238
|
+
}
|
|
231239
|
+
};
|
|
231240
|
+
__publicField$11(RestStakeEventsViewer, "connectionTypes", ["rest"]);
|
|
231241
|
+
__publicField$11(RestStakeEventsViewer, "defaultMoniker", StakeEventsViewerMoniker$1);
|
|
231242
|
+
__publicField$11(RestStakeEventsViewer, "dependencies", []);
|
|
231243
|
+
__publicField$11(RestStakeEventsViewer, "monikers", [StakeEventsViewerMoniker$1]);
|
|
231244
|
+
__publicField$11(RestStakeEventsViewer, "surface", "node");
|
|
231245
|
+
RestStakeEventsViewer = __decorateClass$11([creatableProvider$1()], RestStakeEventsViewer);
|
|
231246
|
+
var DEFAULT_REFRESH_INTERVAL_MS = 5e3;
|
|
231247
|
+
var MIN_REFRESH_INTERVAL_MS = 5e3;
|
|
231248
|
+
var RestStakeViewerOptionsZod = object$3({ refreshIntervalMs: number$1().optional() });
|
|
231249
|
+
var RestStakeViewer = class extends AbstractCreatableProvider$1 {
|
|
231250
|
+
moniker = RestStakeViewer.defaultMoniker;
|
|
231251
|
+
_chainContractViewer;
|
|
231252
|
+
_stakeEventsViewer;
|
|
231253
|
+
lastSuccessfulSyncAt;
|
|
231254
|
+
positionIndex = /* @__PURE__ */ new Map();
|
|
231255
|
+
positionsByStaked = /* @__PURE__ */ new Map();
|
|
231256
|
+
positionsByStaker = /* @__PURE__ */ new Map();
|
|
231257
|
+
refreshIntervalMs = DEFAULT_REFRESH_INTERVAL_MS;
|
|
231258
|
+
syncPromise;
|
|
231259
|
+
/** Returns the finalized stake-event source used to materialize positions. */
|
|
231260
|
+
get stakeEvents() {
|
|
231261
|
+
return this._stakeEventsViewer;
|
|
231262
|
+
}
|
|
231263
|
+
/** Returns active finalized stake positions. */
|
|
231264
|
+
async activeStakes() {
|
|
231265
|
+
await this.sync();
|
|
231266
|
+
return this.positionIndex.values().filter((position) => position.removeBlock === 0 && position.withdrawBlock === 0).toArray();
|
|
231267
|
+
}
|
|
231268
|
+
/** Creates the provider after its REST binding and dependencies resolve. */
|
|
231269
|
+
async createHandler() {
|
|
231270
|
+
await super.createHandler();
|
|
231271
|
+
RestStakeViewer.requireBoundConnection(this.config);
|
|
231272
|
+
const { refreshIntervalMs } = RestStakeViewerOptionsZod.parse(this.config.options);
|
|
231273
|
+
if (refreshIntervalMs !== void 0) assertEx$1(refreshIntervalMs >= MIN_REFRESH_INTERVAL_MS, () => `refreshIntervalMs must be at least ${MIN_REFRESH_INTERVAL_MS}ms`);
|
|
231274
|
+
this.refreshIntervalMs = refreshIntervalMs ?? DEFAULT_REFRESH_INTERVAL_MS;
|
|
231275
|
+
this._chainContractViewer = await this.locator.getInstance(ChainContractViewerMoniker$1);
|
|
231276
|
+
this._stakeEventsViewer = await this.locator.getInstance(StakeEventsViewerMoniker$1);
|
|
231277
|
+
}
|
|
231278
|
+
/** Returns the configured chain's withdrawal delay. */
|
|
231279
|
+
async minWithdrawalBlocks() {
|
|
231280
|
+
return await this._chainContractViewer.minWithdrawalBlocks();
|
|
231281
|
+
}
|
|
231282
|
+
/** Returns finalized positions that have been removed but not withdrawn. */
|
|
231283
|
+
async removedStakes() {
|
|
231284
|
+
await this.sync();
|
|
231285
|
+
return this.positionIndex.values().filter((position) => position.removeBlock !== 0 && position.withdrawBlock === 0).toArray();
|
|
231286
|
+
}
|
|
231287
|
+
/** Returns the configured rewards contract address. */
|
|
231288
|
+
async rewardsContract() {
|
|
231289
|
+
return toAddress(await this._chainContractViewer.rewardsContract());
|
|
231290
|
+
}
|
|
231291
|
+
/** Returns a finalized position by its contract id. */
|
|
231292
|
+
async stakeById(id) {
|
|
231293
|
+
await this.sync();
|
|
231294
|
+
return assertEx$1(this.positionIndex.get(id), () => `RestStakeViewer: position ${id} not found in finalized event index`);
|
|
231295
|
+
}
|
|
231296
|
+
/** Returns a staker's finalized position by its contract slot. */
|
|
231297
|
+
async stakeByStaker(staker, slot) {
|
|
231298
|
+
await this.sync();
|
|
231299
|
+
const position = this.positionsByStaker.get(toAddress(staker))?.at(slot);
|
|
231300
|
+
return assertEx$1(position, () => `RestStakeViewer: staker ${staker} has no finalized position at slot ${slot}`);
|
|
231301
|
+
}
|
|
231302
|
+
/** Returns finalized positions added for an address in the supplied EVM block range. */
|
|
231303
|
+
async stakesByStaked(staked, range = [0, void 0]) {
|
|
231304
|
+
await this.sync();
|
|
231305
|
+
return this.positionsInRange(this.positionsByStaked.get(toAddress(staked)) ?? [], range);
|
|
231306
|
+
}
|
|
231307
|
+
/** Returns finalized positions added by a staker in the supplied EVM block range. */
|
|
231308
|
+
async stakesByStaker(staker, range = [0, void 0]) {
|
|
231309
|
+
await this.sync();
|
|
231310
|
+
return this.positionsInRange(this.positionsByStaker.get(toAddress(staker)) ?? [], range);
|
|
231311
|
+
}
|
|
231312
|
+
/** Returns the configured staking-token address. */
|
|
231313
|
+
async stakingTokenAddress() {
|
|
231314
|
+
return toAddress(await this._chainContractViewer.stakingTokenAddress());
|
|
231315
|
+
}
|
|
231316
|
+
/** Returns finalized positions that have completed withdrawal. */
|
|
231317
|
+
async withdrawnStakes() {
|
|
231318
|
+
await this.sync();
|
|
231319
|
+
return this.positionIndex.values().filter((position) => position.removeBlock !== 0 && position.withdrawBlock !== 0).toArray();
|
|
231320
|
+
}
|
|
231321
|
+
applyEvent(index, event) {
|
|
231322
|
+
if (event.name === "StakeAdded") {
|
|
231323
|
+
index.set(event.args.id, {
|
|
231324
|
+
id: event.args.id,
|
|
231325
|
+
staked: toAddress(event.args.staked),
|
|
231326
|
+
staker: toAddress(event.args.staker),
|
|
231327
|
+
amount: event.args.amount,
|
|
231328
|
+
addBlock: event.time,
|
|
231329
|
+
removeBlock: 0,
|
|
231330
|
+
withdrawBlock: 0
|
|
231331
|
+
});
|
|
231332
|
+
return;
|
|
231333
|
+
}
|
|
231334
|
+
const position = assertEx$1(index.get(event.args.id), () => `RestStakeViewer: ${event.name} precedes StakeAdded for position ${event.args.id}`);
|
|
231335
|
+
index.set(event.args.id, {
|
|
231336
|
+
...position,
|
|
231337
|
+
...event.name === "StakeRemoved" ? { removeBlock: event.time } : { withdrawBlock: event.time }
|
|
231338
|
+
});
|
|
231339
|
+
}
|
|
231340
|
+
positionsInRange(positions, range) {
|
|
231341
|
+
const [fromBlock, configuredToBlock] = range;
|
|
231342
|
+
const toBlock = configuredToBlock ?? Number.MAX_SAFE_INTEGER;
|
|
231343
|
+
return positions.filter((position) => position.addBlock >= fromBlock && position.addBlock <= toBlock);
|
|
231344
|
+
}
|
|
231345
|
+
rebuildPositionIndex(events) {
|
|
231346
|
+
const positionIndex = /* @__PURE__ */ new Map();
|
|
231347
|
+
for (const event of events.toSorted((left, right) => left.time - right.time)) this.applyEvent(positionIndex, event);
|
|
231348
|
+
const positionsByStaked = /* @__PURE__ */ new Map();
|
|
231349
|
+
const positionsByStaker = /* @__PURE__ */ new Map();
|
|
231350
|
+
for (const position of positionIndex.values().toArray().toSorted((left, right) => left.id - right.id)) {
|
|
231351
|
+
const staked = toAddress(position.staked);
|
|
231352
|
+
const staker = toAddress(position.staker);
|
|
231353
|
+
positionsByStaked.set(staked, [...positionsByStaked.get(staked) ?? [], position]);
|
|
231354
|
+
positionsByStaker.set(staker, [...positionsByStaker.get(staker) ?? [], position]);
|
|
231355
|
+
}
|
|
231356
|
+
this.positionIndex = positionIndex;
|
|
231357
|
+
this.positionsByStaked = positionsByStaked;
|
|
231358
|
+
this.positionsByStaker = positionsByStaker;
|
|
231359
|
+
}
|
|
231360
|
+
async sync() {
|
|
231361
|
+
const now = Date.now();
|
|
231362
|
+
const elapsed = this.lastSuccessfulSyncAt === void 0 ? void 0 : now - this.lastSuccessfulSyncAt;
|
|
231363
|
+
if (elapsed !== void 0 && elapsed >= 0 && elapsed < this.refreshIntervalMs) return;
|
|
231364
|
+
this.syncPromise ??= Promise.resolve(this.stakeEvents.stakeEvents([0, "latest"])).then((events) => this.rebuildPositionIndex(events)).then(() => {
|
|
231365
|
+
this.lastSuccessfulSyncAt = Date.now();
|
|
231366
|
+
}).finally(() => {
|
|
231367
|
+
this.syncPromise = void 0;
|
|
231368
|
+
});
|
|
231369
|
+
await this.syncPromise;
|
|
231370
|
+
}
|
|
231371
|
+
};
|
|
231372
|
+
__publicField$11(RestStakeViewer, "connectionTypes", ["rest"]);
|
|
231373
|
+
__publicField$11(RestStakeViewer, "defaultMoniker", StakeViewerMoniker$1);
|
|
231374
|
+
__publicField$11(RestStakeViewer, "dependencies", [ChainContractViewerMoniker$1, StakeEventsViewerMoniker$1]);
|
|
231375
|
+
__publicField$11(RestStakeViewer, "monikers", [StakeViewerMoniker$1]);
|
|
231376
|
+
__publicField$11(RestStakeViewer, "surface", "node");
|
|
231377
|
+
RestStakeViewer = __decorateClass$11([creatableProvider$1()], RestStakeViewer);
|
|
231378
|
+
function evmContractRunnerHandleKey(moniker) {
|
|
231379
|
+
return `evm-contract-runner:${moniker}`;
|
|
231380
|
+
}
|
|
231381
|
+
var AbstractEvmRunner = class extends AbstractEvmProvider$1 {
|
|
231382
|
+
_runner;
|
|
231383
|
+
get runner() {
|
|
231384
|
+
return assertEx$1(this._runner, () => "EVM contract runner not initialized");
|
|
231385
|
+
}
|
|
231386
|
+
/** Creates the provider instance after its dependencies and configuration have resolved. */
|
|
231387
|
+
async createHandler() {
|
|
231388
|
+
const key = evmContractRunnerHandleKey(this.moniker);
|
|
231389
|
+
this._runner = await this.connectionHandles.getOrOpen(key, () => {
|
|
231390
|
+
throw new Error(`No EVM contract runner seeded for [${this.moniker}] \u2014 set context.connectionHandles["${key}"] before create`);
|
|
231391
|
+
});
|
|
231392
|
+
await super.createHandler();
|
|
231393
|
+
}
|
|
231394
|
+
};
|
|
231395
|
+
var EvmStakeRunner = class extends AbstractEvmRunner {
|
|
231396
|
+
moniker = EvmStakeRunner.defaultMoniker;
|
|
231397
|
+
async addStake(staked, amount) {
|
|
231398
|
+
await (await this.contract.addStake(getAddress(toEthAddress(staked)), amount)).wait();
|
|
231399
|
+
return true;
|
|
231400
|
+
}
|
|
231401
|
+
async removeStake(slot) {
|
|
231402
|
+
await (await this.contract.removeStake(slot)).wait();
|
|
231403
|
+
return true;
|
|
231404
|
+
}
|
|
231405
|
+
async withdrawStake(slot) {
|
|
231406
|
+
await (await this.contract.withdrawStake(slot)).wait();
|
|
231407
|
+
return true;
|
|
231408
|
+
}
|
|
231409
|
+
connectContract(address) {
|
|
231410
|
+
return IStakedXyoChain__factory.connect(address, this.runner);
|
|
231411
|
+
}
|
|
231412
|
+
};
|
|
231413
|
+
__publicField$11(EvmStakeRunner, "connectionTypes", ["evm-rpc"]);
|
|
231414
|
+
__publicField$11(EvmStakeRunner, "defaultMoniker", StakeRunnerMoniker);
|
|
231415
|
+
__publicField$11(EvmStakeRunner, "dependencies", []);
|
|
231416
|
+
__publicField$11(EvmStakeRunner, "monikers", [StakeRunnerMoniker]);
|
|
231417
|
+
__publicField$11(EvmStakeRunner, "surface", "node");
|
|
231418
|
+
EvmStakeRunner = __decorateClass$11([creatableProvider$1()], EvmStakeRunner);
|
|
231392
231419
|
//#endregion
|
|
231393
231420
|
//#region ../chain-sdk/dist/neutral/slashing.mjs
|
|
231394
231421
|
function competes(first, second) {
|
|
@@ -232198,6 +232225,7 @@ var FinalizerConfigZod = /* @__PURE__ */ extend(HostActorIdentityZod, {
|
|
|
232198
232225
|
paramsFile: /* @__PURE__ */ optional$2(/* @__PURE__ */ string$3()),
|
|
232199
232226
|
backoffMs: /* @__PURE__ */ _default$1(/* @__PURE__ */ number$4(), DEFAULT_BACKOFF_MS$1),
|
|
232200
232227
|
finalizationCheckInterval: /* @__PURE__ */ _default$1(/* @__PURE__ */ number$4(), 500),
|
|
232228
|
+
heartbeatInterval: /* @__PURE__ */ _default$1(/* @__PURE__ */ number$4(), DEFAULT_HEARTBEAT_INTERVAL),
|
|
232201
232229
|
minCandidates: /* @__PURE__ */ _default$1((/* @__PURE__ */ number$5()).check(/* @__PURE__ */ _multipleOf(1), /* @__PURE__ */ _nonnegative()), 1),
|
|
232202
232230
|
publishContentEncoding: /* @__PURE__ */ optional$2(/* @__PURE__ */ _enum$1([
|
|
232203
232231
|
"br",
|
|
@@ -232380,6 +232408,9 @@ var FinalizerActor = class extends ChainActor {
|
|
|
232380
232408
|
get finalizationRunner() {
|
|
232381
232409
|
return this._finalizationRunner;
|
|
232382
232410
|
}
|
|
232411
|
+
get heartbeatInterval() {
|
|
232412
|
+
return this.params.config.heartbeatInterval;
|
|
232413
|
+
}
|
|
232383
232414
|
get mempoolViewer() {
|
|
232384
232415
|
return this._mempoolViewer;
|
|
232385
232416
|
}
|
|
@@ -232534,6 +232565,7 @@ var FinalizerActor = class extends ChainActor {
|
|
|
232534
232565
|
finalizationRunner: this.finalizationRunner,
|
|
232535
232566
|
allowedProducers: this.allowedProducers,
|
|
232536
232567
|
backoffMs: this.backoffMs,
|
|
232568
|
+
heartbeatInterval: this.heartbeatInterval,
|
|
232537
232569
|
minCandidates: this.minCandidates,
|
|
232538
232570
|
admission: this.admission,
|
|
232539
232571
|
eligibility: this._eligibility,
|
|
@@ -233289,7 +233321,7 @@ var ProducerConfigZod = /* @__PURE__ */ extend(ActorIdentityZod, {
|
|
|
233289
233321
|
title: "producer.disableIntentRedeclaration",
|
|
233290
233322
|
type: "boolean"
|
|
233291
233323
|
}),
|
|
233292
|
-
heartbeatInterval: (/* @__PURE__ */ _default$1(/* @__PURE__ */ number$4(),
|
|
233324
|
+
heartbeatInterval: (/* @__PURE__ */ _default$1(/* @__PURE__ */ number$4(), DEFAULT_HEARTBEAT_INTERVAL)).register(globalRegistry, {
|
|
233293
233325
|
description: "The number of milliseconds between heartbeats if no blocks are produced",
|
|
233294
233326
|
title: "producer.heartbeatInterval",
|
|
233295
233327
|
type: "number"
|
|
@@ -246261,6 +246293,7 @@ function defaultDevConfig() {
|
|
|
246261
246293
|
name: "finalizer",
|
|
246262
246294
|
accountPath: "5",
|
|
246263
246295
|
finalizationCheckInterval: 200,
|
|
246296
|
+
heartbeatInterval: 5e3,
|
|
246264
246297
|
minCandidates: 1
|
|
246265
246298
|
}
|
|
246266
246299
|
]
|
|
@@ -248852,8 +248885,8 @@ $0 <command> [options]`).parserConfiguration({
|
|
|
248852
248885
|
}
|
|
248853
248886
|
}).help().alias("help", "h").version(fullVersion2);
|
|
248854
248887
|
}
|
|
248855
|
-
var version = isDefined$1("5.2.
|
|
248856
|
-
var gitHash = isDefined$1("
|
|
248888
|
+
var version = isDefined$1("5.2.1") ? "5.2.1" : "unknown";
|
|
248889
|
+
var gitHash = isDefined$1("2708f0cd8") ? "2708f0cd8" : "";
|
|
248857
248890
|
var fullVersion = gitHash.length > 0 ? `${version} (${gitHash})` : version;
|
|
248858
248891
|
var mapXl1CliFailure = createSysExitFailureMapper();
|
|
248859
248892
|
var defaultDependencies2 = {
|