@xyo-network/xl1-protocol-sdk 1.26.32 → 1.26.34

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.
@@ -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":"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"}
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]);