@xyo-network/xl1-rpc 1.26.31 → 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.
Files changed (27) hide show
  1. package/dist/neutral/engine-node/rpcEngineFromConnection.d.ts +3 -2
  2. package/dist/neutral/engine-node/rpcEngineFromConnection.d.ts.map +1 -1
  3. package/dist/neutral/index.mjs +83 -16
  4. package/dist/neutral/index.mjs.map +1 -1
  5. package/dist/neutral/provider/viewer/JsonRpcBlockViewer/JsonRpcBlockViewer.d.ts +26 -2
  6. package/dist/neutral/provider/viewer/JsonRpcBlockViewer/JsonRpcBlockViewer.d.ts.map +1 -1
  7. package/dist/neutral/provider/viewer/JsonRpcBlockViewer/JsonRpcBlockViewerMethods.d.ts +3 -3
  8. package/dist/neutral/provider/viewer/JsonRpcBlockViewer/JsonRpcBlockViewerMethods.d.ts.map +1 -1
  9. package/dist/neutral/provider/viewer/JsonRpcViewer.d.ts +3 -2
  10. package/dist/neutral/provider/viewer/JsonRpcViewer.d.ts.map +1 -1
  11. package/dist/neutral/provider/viewer/JsonRpcXyoViewer.d.ts +1 -1
  12. package/dist/neutral/provider/viewer/JsonRpcXyoViewer.d.ts.map +1 -1
  13. package/dist/neutral/transport/HttpRpcTransport.d.ts.map +1 -1
  14. package/dist/node/engine-node/rpcEngineFromConnection.d.ts +3 -2
  15. package/dist/node/engine-node/rpcEngineFromConnection.d.ts.map +1 -1
  16. package/dist/node/index-node.mjs +88 -21
  17. package/dist/node/index-node.mjs.map +1 -1
  18. package/dist/node/provider/viewer/JsonRpcBlockViewer/JsonRpcBlockViewer.d.ts +26 -2
  19. package/dist/node/provider/viewer/JsonRpcBlockViewer/JsonRpcBlockViewer.d.ts.map +1 -1
  20. package/dist/node/provider/viewer/JsonRpcBlockViewer/JsonRpcBlockViewerMethods.d.ts +3 -3
  21. package/dist/node/provider/viewer/JsonRpcBlockViewer/JsonRpcBlockViewerMethods.d.ts.map +1 -1
  22. package/dist/node/provider/viewer/JsonRpcViewer.d.ts +3 -2
  23. package/dist/node/provider/viewer/JsonRpcViewer.d.ts.map +1 -1
  24. package/dist/node/provider/viewer/JsonRpcXyoViewer.d.ts +1 -1
  25. package/dist/node/provider/viewer/JsonRpcXyoViewer.d.ts.map +1 -1
  26. package/dist/node/transport/HttpRpcTransport.d.ts.map +1 -1
  27. package/package.json +4 -4
@@ -1,10 +1,11 @@
1
1
  import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine/v2';
2
2
  import { JsonRpcEngineV2, JsonRpcServer } from '@metamask/json-rpc-engine/v2';
3
+ import type { Logger } from '@xylabs/sdk-js';
3
4
  import type { XyoConnection } from '@xyo-network/xl1-protocol-lib';
4
- export declare const rpcEngineFromConnection: (connection: XyoConnection) => JsonRpcEngineV2<import("@metamask/json-rpc-engine/v2").JsonRpcCall, import("@metamask/json-rpc-engine/v2").MiddlewareContext<{
5
+ export declare const rpcEngineFromConnection: (connection: XyoConnection, logger?: Logger) => JsonRpcEngineV2<import("@metamask/json-rpc-engine/v2").JsonRpcCall, import("@metamask/json-rpc-engine/v2").MiddlewareContext<{
5
6
  [x: string]: unknown;
6
7
  [x: number]: unknown;
7
8
  [x: symbol]: unknown;
8
9
  }>>;
9
- export declare function rpcServerFromConnection(connection: XyoConnection): JsonRpcServer<JsonRpcMiddleware>;
10
+ export declare function rpcServerFromConnection(connection: XyoConnection, logger?: Logger): JsonRpcServer<JsonRpcMiddleware>;
10
11
  //# sourceMappingURL=rpcEngineFromConnection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rpcEngineFromConnection.d.ts","sourceRoot":"","sources":["../../../src/engine-node/rpcEngineFromConnection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAC3E,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAQlE,eAAO,MAAM,uBAAuB,GAClC,YAAY,aAAa;;;;GA6C1B,CAAA;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,aAAa,oCAGhE"}
1
+ {"version":3,"file":"rpcEngineFromConnection.d.ts","sourceRoot":"","sources":["../../../src/engine-node/rpcEngineFromConnection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAC3E,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC7E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAQlE,eAAO,MAAM,uBAAuB,GAClC,YAAY,aAAa,EACzB,SAAS,MAAM;;;;GA6ChB,CAAA;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,MAAM,oCAGjF"}
@@ -1564,7 +1564,10 @@ var HttpRpcTransport = class {
1564
1564
  body.params ??= [];
1565
1565
  const res = await new Axios(axiosJsonConfig()).post(url, body);
1566
1566
  const json = res.data;
1567
- if (isUndefinedOrNull(json) || json.error) {
1567
+ if (isUndefinedOrNull(json)) {
1568
+ throw new Error(`[callRpc] empty response body (status ${res.status})`);
1569
+ }
1570
+ if (json.error) {
1568
1571
  throw new Error(json.error.message);
1569
1572
  }
1570
1573
  const result = isDefined(schema) ? schemas[method].result.from.parse(json.result) : json.result;
@@ -1731,7 +1734,7 @@ var PostMessageRpcTransport = class {
1731
1734
  return await this.callRpc(this.schemas, method, id, params);
1732
1735
  }
1733
1736
  async callRpc(schemas, method, id, params) {
1734
- this.logger?.log(`PostMessageRpcTransport: callRpc method=${String(method)} id=${id}`);
1737
+ this.logger?.debug(`PostMessageRpcTransport: callRpc method=${String(method)} id=${id}`);
1735
1738
  const body = {
1736
1739
  jsonrpc,
1737
1740
  id,
@@ -1750,7 +1753,7 @@ var PostMessageRpcTransport = class {
1750
1753
  return;
1751
1754
  }
1752
1755
  if (isJsonRpcFailure(response)) {
1753
- console.error("Error in PostMessageRpcTransport:", response);
1756
+ this.logger?.error("Error in PostMessageRpcTransport", response);
1754
1757
  reject(new Error(response.error.message));
1755
1758
  return;
1756
1759
  }
@@ -1842,6 +1845,7 @@ JsonRpcAccountBalanceViewer = __decorateClass([
1842
1845
  ], JsonRpcAccountBalanceViewer);
1843
1846
 
1844
1847
  // src/provider/viewer/JsonRpcBlockViewer/JsonRpcBlockViewer.ts
1848
+ import { assertEx as assertEx2 } from "@xylabs/sdk-js";
1845
1849
  import {
1846
1850
  BlockViewerMoniker as BlockViewerMoniker2
1847
1851
  } from "@xyo-network/xl1-protocol-lib";
@@ -1897,7 +1901,24 @@ var JsonRpcBlockViewerMethods = class extends AbstractJsonRpcViewer {
1897
1901
  };
1898
1902
 
1899
1903
  // src/provider/viewer/JsonRpcBlockViewer/JsonRpcBlockViewer.ts
1904
+ var MIN_HEAD_POLL_INTERVAL_MS = 5e3;
1900
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
+ }
1901
1922
  async blockByHash(hash) {
1902
1923
  return (await this.blocksByHash(hash, 1))[0];
1903
1924
  }
@@ -1928,6 +1949,52 @@ var JsonRpcBlockViewer = class extends JsonRpcBlockViewerMethods {
1928
1949
  async timeDurationRate(timeConfig, startBlockNumber, timeUnit, toleranceMs, maxAttempts) {
1929
1950
  return await calculateTimeRate(this, timeConfig, startBlockNumber, timeUnit, toleranceMs, maxAttempts);
1930
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
+ }
1931
1998
  };
1932
1999
  __publicField(JsonRpcBlockViewer, "defaultMoniker", BlockViewerMoniker2);
1933
2000
  __publicField(JsonRpcBlockViewer, "dependencies", []);
@@ -2238,7 +2305,7 @@ JsonRpcTimeSyncViewer = __decorateClass([
2238
2305
 
2239
2306
  // src/provider/viewer/JsonRpcTransactionViewer/JsonRpcTransactionViewer.ts
2240
2307
  import {
2241
- assertEx as assertEx2,
2308
+ assertEx as assertEx3,
2242
2309
  exists
2243
2310
  } from "@xylabs/sdk-js";
2244
2311
  import { BoundWitnessSchema } from "@xyo-network/sdk-js";
@@ -2258,7 +2325,7 @@ var JsonRpcTransactionViewer = class extends AbstractJsonRpcViewer {
2258
2325
  }
2259
2326
  async byBlockHashAndIndex(blockHash, transactionIndex) {
2260
2327
  return await this.spanAsync("byBlockHashAndIndex", async () => {
2261
- 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");
2262
2329
  try {
2263
2330
  const block = await this.blockViewer.blockByHash(blockHash);
2264
2331
  if (!block) return null;
@@ -2321,7 +2388,7 @@ JsonRpcTransactionViewer = __decorateClass([
2321
2388
 
2322
2389
  // src/provider/viewer/JsonRpcXyoViewer.ts
2323
2390
  import {
2324
- assertEx as assertEx3,
2391
+ assertEx as assertEx4,
2325
2392
  isUndefined
2326
2393
  } from "@xylabs/sdk-js";
2327
2394
  import { PayloadBuilder } from "@xyo-network/sdk-js";
@@ -2354,31 +2421,31 @@ var JsonRpcXyoViewer = class extends AbstractJsonRpcViewer {
2354
2421
  _chainId;
2355
2422
  _providers = void 0;
2356
2423
  get account() {
2357
- 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}`) };
2358
2425
  }
2359
2426
  get block() {
2360
- 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}`);
2361
2428
  }
2362
2429
  get finalization() {
2363
- 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}`);
2364
2431
  }
2365
2432
  get mempool() {
2366
- 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}`);
2367
2434
  }
2368
2435
  get networkStake() {
2369
- 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}`);
2370
2437
  }
2371
2438
  get stake() {
2372
- 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}`);
2373
2440
  }
2374
2441
  get step() {
2375
- 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}`);
2376
2443
  }
2377
2444
  get time() {
2378
- 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}`);
2379
2446
  }
2380
2447
  get transaction() {
2381
- 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}`);
2382
2449
  }
2383
2450
  get providers() {
2384
2451
  return this._providers;
@@ -2427,7 +2494,7 @@ var JsonRpcXyoViewer = class extends AbstractJsonRpcViewer {
2427
2494
  [TimeSyncViewerMoniker3]: await this.locator.getInstance(TimeSyncViewerMoniker3),
2428
2495
  [TransactionViewerMoniker2]: await this.locator.getInstance(TransactionViewerMoniker2)
2429
2496
  };
2430
- 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"))) {
2431
2498
  if (isUndefined(provider)) {
2432
2499
  throw new Error(`Failed to initialize JsonRpcXyoViewer: missing provider dependency for ${moniker}`);
2433
2500
  }