@xyo-network/xl1-rpc 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.
@@ -1845,6 +1845,7 @@ JsonRpcAccountBalanceViewer = __decorateClass([
1845
1845
  ], JsonRpcAccountBalanceViewer);
1846
1846
 
1847
1847
  // src/provider/viewer/JsonRpcBlockViewer/JsonRpcBlockViewer.ts
1848
+ import { assertEx as assertEx2 } from "@xylabs/sdk-js";
1848
1849
  import {
1849
1850
  BlockViewerMoniker as BlockViewerMoniker2
1850
1851
  } from "@xyo-network/xl1-protocol-lib";
@@ -1900,7 +1901,24 @@ var JsonRpcBlockViewerMethods = class extends AbstractJsonRpcViewer {
1900
1901
  };
1901
1902
 
1902
1903
  // src/provider/viewer/JsonRpcBlockViewer/JsonRpcBlockViewer.ts
1904
+ var MIN_HEAD_POLL_INTERVAL_MS = 5e3;
1903
1905
  var JsonRpcBlockViewer = class extends JsonRpcBlockViewerMethods {
1906
+ _headPollHash;
1907
+ _headPollInProgress = false;
1908
+ _headPollTimer = null;
1909
+ get headPollIntervalMs() {
1910
+ return this.params.headPollIntervalMs;
1911
+ }
1912
+ static async paramsHandler(params = {}) {
1913
+ const headPollIntervalMs = params.headPollIntervalMs;
1914
+ if (headPollIntervalMs !== void 0) {
1915
+ assertEx2(headPollIntervalMs >= MIN_HEAD_POLL_INTERVAL_MS, () => `headPollIntervalMs must be at least ${MIN_HEAD_POLL_INTERVAL_MS}ms`);
1916
+ }
1917
+ return {
1918
+ ...await super.paramsHandler(params),
1919
+ headPollIntervalMs
1920
+ };
1921
+ }
1904
1922
  async blockByHash(hash) {
1905
1923
  return (await this.blocksByHash(hash, 1))[0];
1906
1924
  }
@@ -1931,6 +1949,52 @@ var JsonRpcBlockViewer = class extends JsonRpcBlockViewerMethods {
1931
1949
  async timeDurationRate(timeConfig, startBlockNumber, timeUnit, toleranceMs, maxAttempts) {
1932
1950
  return await calculateTimeRate(this, timeConfig, startBlockNumber, timeUnit, toleranceMs, maxAttempts);
1933
1951
  }
1952
+ async startHandler() {
1953
+ await super.startHandler();
1954
+ if (this.headPollIntervalMs === void 0) return;
1955
+ await this.pollHead(false);
1956
+ this.startHeadPolling();
1957
+ }
1958
+ async stopHandler() {
1959
+ this.stopHeadPolling();
1960
+ this._headPollHash = void 0;
1961
+ await super.stopHandler();
1962
+ }
1963
+ async pollHead(emitOnChange) {
1964
+ if (this._headPollInProgress) return;
1965
+ this._headPollInProgress = true;
1966
+ try {
1967
+ const block = await this.currentBlock();
1968
+ const hash = block[0]._hash;
1969
+ if (this._headPollHash === void 0) {
1970
+ this._headPollHash = hash;
1971
+ return;
1972
+ }
1973
+ if (hash !== this._headPollHash) {
1974
+ this._headPollHash = hash;
1975
+ if (emitOnChange) {
1976
+ await this.emit("headUpdated", { block });
1977
+ }
1978
+ }
1979
+ } catch (ex) {
1980
+ this.logger?.error("Error polling block head", ex);
1981
+ } finally {
1982
+ this._headPollInProgress = false;
1983
+ }
1984
+ }
1985
+ startHeadPolling() {
1986
+ if (this.headPollIntervalMs === void 0) return;
1987
+ this.stopHeadPolling();
1988
+ this._headPollTimer = setInterval(() => {
1989
+ void this.pollHead(true);
1990
+ }, this.headPollIntervalMs);
1991
+ }
1992
+ stopHeadPolling() {
1993
+ if (this._headPollTimer) {
1994
+ clearInterval(this._headPollTimer);
1995
+ this._headPollTimer = null;
1996
+ }
1997
+ }
1934
1998
  };
1935
1999
  __publicField(JsonRpcBlockViewer, "defaultMoniker", BlockViewerMoniker2);
1936
2000
  __publicField(JsonRpcBlockViewer, "dependencies", []);
@@ -2241,7 +2305,7 @@ JsonRpcTimeSyncViewer = __decorateClass([
2241
2305
 
2242
2306
  // src/provider/viewer/JsonRpcTransactionViewer/JsonRpcTransactionViewer.ts
2243
2307
  import {
2244
- assertEx as assertEx2,
2308
+ assertEx as assertEx3,
2245
2309
  exists
2246
2310
  } from "@xylabs/sdk-js";
2247
2311
  import { BoundWitnessSchema } from "@xyo-network/sdk-js";
@@ -2261,7 +2325,7 @@ var JsonRpcTransactionViewer = class extends AbstractJsonRpcViewer {
2261
2325
  }
2262
2326
  async byBlockHashAndIndex(blockHash, transactionIndex) {
2263
2327
  return await this.spanAsync("byBlockHashAndIndex", async () => {
2264
- assertEx2(transactionIndex >= 0, () => "transactionIndex must be greater than or equal to 0");
2328
+ assertEx3(transactionIndex >= 0, () => "transactionIndex must be greater than or equal to 0");
2265
2329
  try {
2266
2330
  const block = await this.blockViewer.blockByHash(blockHash);
2267
2331
  if (!block) return null;
@@ -2324,7 +2388,7 @@ JsonRpcTransactionViewer = __decorateClass([
2324
2388
 
2325
2389
  // src/provider/viewer/JsonRpcXyoViewer.ts
2326
2390
  import {
2327
- assertEx as assertEx3,
2391
+ assertEx as assertEx4,
2328
2392
  isUndefined
2329
2393
  } from "@xylabs/sdk-js";
2330
2394
  import { PayloadBuilder } from "@xyo-network/sdk-js";
@@ -2357,31 +2421,31 @@ var JsonRpcXyoViewer = class extends AbstractJsonRpcViewer {
2357
2421
  _chainId;
2358
2422
  _providers = void 0;
2359
2423
  get account() {
2360
- return { balance: assertEx3(this.providers?.[AccountBalanceViewerMoniker3], () => `AccountBalanceViewer provider not found for ${this.moniker}`) };
2424
+ return { balance: assertEx4(this.providers?.[AccountBalanceViewerMoniker3], () => `AccountBalanceViewer provider not found for ${this.moniker}`) };
2361
2425
  }
2362
2426
  get block() {
2363
- return assertEx3(this.providers?.[BlockViewerMoniker4], () => `BlockViewer provider not found for ${this.moniker}`);
2427
+ return assertEx4(this.providers?.[BlockViewerMoniker4], () => `BlockViewer provider not found for ${this.moniker}`);
2364
2428
  }
2365
2429
  get finalization() {
2366
- return assertEx3(this.providers?.[FinalizationViewerMoniker3], () => `FinalizationViewer provider not found for ${this.moniker}`);
2430
+ return assertEx4(this.providers?.[FinalizationViewerMoniker3], () => `FinalizationViewer provider not found for ${this.moniker}`);
2367
2431
  }
2368
2432
  get mempool() {
2369
- return assertEx3(this.providers?.[MempoolViewerMoniker3], () => `MempoolViewer provider not found for ${this.moniker}`);
2433
+ return assertEx4(this.providers?.[MempoolViewerMoniker3], () => `MempoolViewer provider not found for ${this.moniker}`);
2370
2434
  }
2371
2435
  get networkStake() {
2372
- return assertEx3(this.providers?.[NetworkStakeViewerMoniker3], () => `NetworkStakeViewer provider not found for ${this.moniker}`);
2436
+ return assertEx4(this.providers?.[NetworkStakeViewerMoniker3], () => `NetworkStakeViewer provider not found for ${this.moniker}`);
2373
2437
  }
2374
2438
  get stake() {
2375
- return assertEx3(this.providers?.[StakeViewerMoniker3], () => `StakeViewer provider not found for ${this.moniker}`);
2439
+ return assertEx4(this.providers?.[StakeViewerMoniker3], () => `StakeViewer provider not found for ${this.moniker}`);
2376
2440
  }
2377
2441
  get step() {
2378
- return assertEx3(this.providers?.[StepViewerMoniker], () => `StepViewer provider not found for ${this.moniker}`);
2442
+ return assertEx4(this.providers?.[StepViewerMoniker], () => `StepViewer provider not found for ${this.moniker}`);
2379
2443
  }
2380
2444
  get time() {
2381
- return assertEx3(this.providers?.[TimeSyncViewerMoniker3], () => `TimeSyncViewer provider not found for ${this.moniker}`);
2445
+ return assertEx4(this.providers?.[TimeSyncViewerMoniker3], () => `TimeSyncViewer provider not found for ${this.moniker}`);
2382
2446
  }
2383
2447
  get transaction() {
2384
- return assertEx3(this.providers?.[TransactionViewerMoniker2], () => `TransactionViewer provider not found for ${this.moniker}`);
2448
+ return assertEx4(this.providers?.[TransactionViewerMoniker2], () => `TransactionViewer provider not found for ${this.moniker}`);
2385
2449
  }
2386
2450
  get providers() {
2387
2451
  return this._providers;
@@ -2430,7 +2494,7 @@ var JsonRpcXyoViewer = class extends AbstractJsonRpcViewer {
2430
2494
  [TimeSyncViewerMoniker3]: await this.locator.getInstance(TimeSyncViewerMoniker3),
2431
2495
  [TransactionViewerMoniker2]: await this.locator.getInstance(TransactionViewerMoniker2)
2432
2496
  };
2433
- for (const [moniker, provider] of Object.entries(assertEx3(this._providers, () => "Failed to initialize JsonRpcXyoViewer: providers not found"))) {
2497
+ for (const [moniker, provider] of Object.entries(assertEx4(this._providers, () => "Failed to initialize JsonRpcXyoViewer: providers not found"))) {
2434
2498
  if (isUndefined(provider)) {
2435
2499
  throw new Error(`Failed to initialize JsonRpcXyoViewer: missing provider dependency for ${moniker}`);
2436
2500
  }