@xyo-network/xl1-protocol-sdk 1.26.32 → 1.26.33
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/neutral/index.mjs +59 -1
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/neutral/simple/block/SimpleBlockViewer.d.ts +12 -1
- package/dist/neutral/simple/block/SimpleBlockViewer.d.ts.map +1 -1
- package/dist/neutral/test/index.mjs +59 -1
- package/dist/neutral/test/index.mjs.map +1 -1
- package/package.json +5 -5
|
@@ -9,9 +9,10 @@ import { HydratedCache } from '../../utils/index.ts';
|
|
|
9
9
|
/** Parameters for SimpleBlockViewer. */
|
|
10
10
|
export interface SimpleBlockViewerParams extends CreatableProviderParams {
|
|
11
11
|
finalizedArchivist: ReadArchivist;
|
|
12
|
+
headPollIntervalMs?: number;
|
|
12
13
|
}
|
|
13
14
|
/** SimpleBlockViewer implementation. */
|
|
14
|
-
export declare class SimpleBlockViewer extends AbstractCreatableProvider<SimpleBlockViewerParams> implements BlockViewer {
|
|
15
|
+
export declare class SimpleBlockViewer extends AbstractCreatableProvider<SimpleBlockViewerParams, BlockViewer['eventData']> implements BlockViewer {
|
|
15
16
|
static readonly defaultMoniker: "BlockViewer";
|
|
16
17
|
static readonly dependencies: "FinalizationViewer"[];
|
|
17
18
|
static readonly monikers: "BlockViewer"[];
|
|
@@ -53,12 +54,17 @@ export declare class SimpleBlockViewer extends AbstractCreatableProvider<SimpleB
|
|
|
53
54
|
_hash: import("@xylabs/sdk-js").BrandedHash;
|
|
54
55
|
_dataHash: import("@xylabs/sdk-js").BrandedHash;
|
|
55
56
|
}[]], () => void>;
|
|
57
|
+
private _headPollHash?;
|
|
58
|
+
private _headPollInProgress;
|
|
59
|
+
private _headPollTimer;
|
|
56
60
|
private _signedHydratedBlockCache;
|
|
57
61
|
get finalizedArchivist(): ReadArchivist;
|
|
62
|
+
protected get headPollIntervalMs(): number | undefined;
|
|
58
63
|
protected get hydratedBlockCache(): HydratedCache<SignedHydratedBlockWithStorageMeta>;
|
|
59
64
|
protected get store(): ChainStoreRead;
|
|
60
65
|
static paramsHandler(params: Partial<SimpleBlockViewerParams>): Promise<{
|
|
61
66
|
finalizedArchivist: ReadArchivist<Payload, import("@xylabs/sdk-js").BrandedHash, import("@xyo-network/sdk-js").Sequence>;
|
|
67
|
+
headPollIntervalMs: number | undefined;
|
|
62
68
|
context: import("../../model/CreatableProviderContext.zod.ts").CreatableProviderContextType;
|
|
63
69
|
name?: import("@xylabs/sdk-js").CreatableName;
|
|
64
70
|
statusReporter?: import("@xylabs/sdk-js").CreatableStatusReporter<void> | undefined;
|
|
@@ -84,6 +90,11 @@ export declare class SimpleBlockViewer extends AbstractCreatableProvider<SimpleB
|
|
|
84
90
|
timeDurationRate(timeConfig: SingleTimeConfig, startBlockNumber?: XL1BlockNumber, timeUnit?: keyof TimeDurations, toleranceMs?: number, maxAttempts?: number): Promise<BlockRate>;
|
|
85
91
|
protected getBlockContextRead(): BlockContextRead;
|
|
86
92
|
protected getChainContextRead(): Promise<ChainContextRead>;
|
|
93
|
+
protected startHandler(): Promise<void>;
|
|
94
|
+
protected stopHandler(): Promise<void>;
|
|
87
95
|
private blockByNumberWithContext;
|
|
96
|
+
private pollHead;
|
|
97
|
+
private startHeadPolling;
|
|
98
|
+
private stopHeadPolling;
|
|
88
99
|
}
|
|
89
100
|
//# sourceMappingURL=SimpleBlockViewer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SimpleBlockViewer.d.ts","sourceRoot":"","sources":["../../../../src/simple/block/SimpleBlockViewer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAI1C,OAAO,KAAK,EACV,OAAO,EAAE,aAAa,EAAE,YAAY,EACrC,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAEL,gBAAgB,EAChB,SAAS,EAAE,WAAW,EAAsB,gBAAgB,EAC5D,OAAO,EAAE,cAAc,EAAyB,kBAAkB,EAA6B,KAAK,+BAA+B,EACnI,kCAAkC,EAAE,gBAAgB,EAAE,aAAa,EAAE,KAAK,cAAc,EAAE,aAAa,EACxG,MAAM,+BAA+B,CAAA;AAGtC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAA;AAC/E,OAAO,EAAE,yBAAyB,EAAqB,MAAM,kCAAkC,CAAA;AAC/F,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAMrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,wCAAwC;AACxC,MAAM,WAAW,uBAAwB,SAAQ,uBAAuB;IACtE,kBAAkB,EAAE,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"SimpleBlockViewer.d.ts","sourceRoot":"","sources":["../../../../src/simple/block/SimpleBlockViewer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1346,6 +1346,7 @@ var HydratedCache = class {
|
|
|
1346
1346
|
};
|
|
1347
1347
|
|
|
1348
1348
|
// src/simple/block/SimpleBlockViewer.ts
|
|
1349
|
+
var MIN_HEAD_POLL_INTERVAL_MS = 5e3;
|
|
1349
1350
|
var SimpleBlockViewer = class extends AbstractCreatableProvider {
|
|
1350
1351
|
moniker = SimpleBlockViewer.defaultMoniker;
|
|
1351
1352
|
_store;
|
|
@@ -1353,10 +1354,16 @@ var SimpleBlockViewer = class extends AbstractCreatableProvider {
|
|
|
1353
1354
|
finalizationViewer;
|
|
1354
1355
|
payloadCache = new LruCacheMap({ max: 1e4 });
|
|
1355
1356
|
signedHydratedBlockWithDataLakePayloadsCache = new LruCacheMap({ max: 2e3, ttl: 1e3 * 60 * 60 });
|
|
1357
|
+
_headPollHash;
|
|
1358
|
+
_headPollInProgress = false;
|
|
1359
|
+
_headPollTimer = null;
|
|
1356
1360
|
_signedHydratedBlockCache;
|
|
1357
1361
|
get finalizedArchivist() {
|
|
1358
1362
|
return this.params.finalizedArchivist;
|
|
1359
1363
|
}
|
|
1364
|
+
get headPollIntervalMs() {
|
|
1365
|
+
return this.params.headPollIntervalMs;
|
|
1366
|
+
}
|
|
1360
1367
|
get hydratedBlockCache() {
|
|
1361
1368
|
if (this._signedHydratedBlockCache) return this._signedHydratedBlockCache;
|
|
1362
1369
|
const context = this.getBlockContextRead();
|
|
@@ -1370,9 +1377,14 @@ var SimpleBlockViewer = class extends AbstractCreatableProvider {
|
|
|
1370
1377
|
return this._store;
|
|
1371
1378
|
}
|
|
1372
1379
|
static async paramsHandler(params) {
|
|
1380
|
+
const headPollIntervalMs = params.headPollIntervalMs;
|
|
1381
|
+
if (headPollIntervalMs !== void 0) {
|
|
1382
|
+
assertEx11(headPollIntervalMs >= MIN_HEAD_POLL_INTERVAL_MS, () => `headPollIntervalMs must be at least ${MIN_HEAD_POLL_INTERVAL_MS}ms`);
|
|
1383
|
+
}
|
|
1373
1384
|
return {
|
|
1374
1385
|
...await super.paramsHandler(params),
|
|
1375
|
-
finalizedArchivist: assertEx11(params.finalizedArchivist, () => "finalizedArchivist is required")
|
|
1386
|
+
finalizedArchivist: assertEx11(params.finalizedArchivist, () => "finalizedArchivist is required"),
|
|
1387
|
+
headPollIntervalMs
|
|
1376
1388
|
};
|
|
1377
1389
|
}
|
|
1378
1390
|
async blockByHash(hash) {
|
|
@@ -1491,11 +1503,57 @@ var SimpleBlockViewer = class extends AbstractCreatableProvider {
|
|
|
1491
1503
|
head: (await this.finalizationViewer.head())[0]
|
|
1492
1504
|
};
|
|
1493
1505
|
}
|
|
1506
|
+
async startHandler() {
|
|
1507
|
+
await super.startHandler();
|
|
1508
|
+
if (this.headPollIntervalMs === void 0) return;
|
|
1509
|
+
await this.pollHead(false);
|
|
1510
|
+
this.startHeadPolling();
|
|
1511
|
+
}
|
|
1512
|
+
async stopHandler() {
|
|
1513
|
+
this.stopHeadPolling();
|
|
1514
|
+
this._headPollHash = void 0;
|
|
1515
|
+
await super.stopHandler();
|
|
1516
|
+
}
|
|
1494
1517
|
async blockByNumberWithContext(chainContext, blockNumber) {
|
|
1495
1518
|
const block = asSignedHydratedBlockWithHashMeta(await hydratedBlockByNumber(chainContext, blockNumber)) ?? null;
|
|
1496
1519
|
const [result] = block ? await addDataLakePayloads(block, this.dataLakeViewer) : [null, []];
|
|
1497
1520
|
return result;
|
|
1498
1521
|
}
|
|
1522
|
+
async pollHead(emitOnChange) {
|
|
1523
|
+
if (this._headPollInProgress) return;
|
|
1524
|
+
this._headPollInProgress = true;
|
|
1525
|
+
try {
|
|
1526
|
+
const block = await this.currentBlock();
|
|
1527
|
+
const hash = block[0]._hash;
|
|
1528
|
+
if (this._headPollHash === void 0) {
|
|
1529
|
+
this._headPollHash = hash;
|
|
1530
|
+
return;
|
|
1531
|
+
}
|
|
1532
|
+
if (hash !== this._headPollHash) {
|
|
1533
|
+
this._headPollHash = hash;
|
|
1534
|
+
if (emitOnChange) {
|
|
1535
|
+
await this.emit("headUpdated", { block });
|
|
1536
|
+
}
|
|
1537
|
+
}
|
|
1538
|
+
} catch (ex) {
|
|
1539
|
+
this.logger?.error("Error polling block head", ex);
|
|
1540
|
+
} finally {
|
|
1541
|
+
this._headPollInProgress = false;
|
|
1542
|
+
}
|
|
1543
|
+
}
|
|
1544
|
+
startHeadPolling() {
|
|
1545
|
+
if (this.headPollIntervalMs === void 0) return;
|
|
1546
|
+
this.stopHeadPolling();
|
|
1547
|
+
this._headPollTimer = setInterval(() => {
|
|
1548
|
+
void this.pollHead(true);
|
|
1549
|
+
}, this.headPollIntervalMs);
|
|
1550
|
+
}
|
|
1551
|
+
stopHeadPolling() {
|
|
1552
|
+
if (this._headPollTimer) {
|
|
1553
|
+
clearInterval(this._headPollTimer);
|
|
1554
|
+
this._headPollTimer = null;
|
|
1555
|
+
}
|
|
1556
|
+
}
|
|
1499
1557
|
};
|
|
1500
1558
|
__publicField(SimpleBlockViewer, "defaultMoniker", BlockViewerMoniker);
|
|
1501
1559
|
__publicField(SimpleBlockViewer, "dependencies", [FinalizationViewerMoniker]);
|