@xyo-network/xl1-rpc 1.24.29 → 1.24.30

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 (81) hide show
  1. package/dist/neutral/index.mjs +164 -13
  2. package/dist/neutral/index.mjs.map +1 -1
  3. package/dist/neutral/provider/runner/JsonRpcRunner.d.ts.map +1 -1
  4. package/dist/neutral/provider/viewer/JsonRpcViewer.d.ts.map +1 -1
  5. package/dist/neutral/transport/PostMessage/PostMessageRpcTransport.d.ts +18 -0
  6. package/dist/neutral/transport/PostMessage/PostMessageRpcTransport.d.ts.map +1 -0
  7. package/dist/neutral/transport/PostMessage/SessionEnvelope.d.ts +7 -0
  8. package/dist/neutral/transport/PostMessage/SessionEnvelope.d.ts.map +1 -0
  9. package/dist/neutral/transport/PostMessage/bus/Abstract.d.ts +14 -0
  10. package/dist/neutral/transport/PostMessage/bus/Abstract.d.ts.map +1 -0
  11. package/dist/neutral/transport/PostMessage/bus/MessageBus.d.ts +12 -0
  12. package/dist/neutral/transport/PostMessage/bus/MessageBus.d.ts.map +1 -0
  13. package/dist/neutral/transport/PostMessage/bus/implementations/PostMessage.d.ts +9 -0
  14. package/dist/neutral/transport/PostMessage/bus/implementations/PostMessage.d.ts.map +1 -0
  15. package/dist/neutral/transport/PostMessage/bus/implementations/index.d.ts +2 -0
  16. package/dist/neutral/transport/PostMessage/bus/implementations/index.d.ts.map +1 -0
  17. package/dist/neutral/transport/PostMessage/bus/index.d.ts +5 -0
  18. package/dist/neutral/transport/PostMessage/bus/index.d.ts.map +1 -0
  19. package/dist/neutral/transport/PostMessage/bus/validators/hasSessionId.d.ts +5 -0
  20. package/dist/neutral/transport/PostMessage/bus/validators/hasSessionId.d.ts.map +1 -0
  21. package/dist/neutral/transport/PostMessage/bus/validators/index.d.ts +4 -0
  22. package/dist/neutral/transport/PostMessage/bus/validators/index.d.ts.map +1 -0
  23. package/dist/neutral/transport/PostMessage/bus/validators/isEventWithId.d.ts +9 -0
  24. package/dist/neutral/transport/PostMessage/bus/validators/isEventWithId.d.ts.map +1 -0
  25. package/dist/neutral/transport/PostMessage/bus/validators/isMessageWithId.d.ts +7 -0
  26. package/dist/neutral/transport/PostMessage/bus/validators/isMessageWithId.d.ts.map +1 -0
  27. package/dist/neutral/transport/PostMessage/helpers.d.ts +10 -0
  28. package/dist/neutral/transport/PostMessage/helpers.d.ts.map +1 -0
  29. package/dist/neutral/transport/PostMessage/index.d.ts +3 -0
  30. package/dist/neutral/transport/PostMessage/index.d.ts.map +1 -0
  31. package/dist/neutral/transport/index.d.ts +1 -0
  32. package/dist/neutral/transport/index.d.ts.map +1 -1
  33. package/dist/node/index-node.mjs +164 -13
  34. package/dist/node/index-node.mjs.map +1 -1
  35. package/dist/node/provider/runner/JsonRpcRunner.d.ts.map +1 -1
  36. package/dist/node/provider/viewer/JsonRpcViewer.d.ts.map +1 -1
  37. package/dist/node/transport/PostMessage/PostMessageRpcTransport.d.ts +18 -0
  38. package/dist/node/transport/PostMessage/PostMessageRpcTransport.d.ts.map +1 -0
  39. package/dist/node/transport/PostMessage/SessionEnvelope.d.ts +7 -0
  40. package/dist/node/transport/PostMessage/SessionEnvelope.d.ts.map +1 -0
  41. package/dist/node/transport/PostMessage/bus/Abstract.d.ts +14 -0
  42. package/dist/node/transport/PostMessage/bus/Abstract.d.ts.map +1 -0
  43. package/dist/node/transport/PostMessage/bus/MessageBus.d.ts +12 -0
  44. package/dist/node/transport/PostMessage/bus/MessageBus.d.ts.map +1 -0
  45. package/dist/node/transport/PostMessage/bus/implementations/PostMessage.d.ts +9 -0
  46. package/dist/node/transport/PostMessage/bus/implementations/PostMessage.d.ts.map +1 -0
  47. package/dist/node/transport/PostMessage/bus/implementations/index.d.ts +2 -0
  48. package/dist/node/transport/PostMessage/bus/implementations/index.d.ts.map +1 -0
  49. package/dist/node/transport/PostMessage/bus/index.d.ts +5 -0
  50. package/dist/node/transport/PostMessage/bus/index.d.ts.map +1 -0
  51. package/dist/node/transport/PostMessage/bus/validators/hasSessionId.d.ts +5 -0
  52. package/dist/node/transport/PostMessage/bus/validators/hasSessionId.d.ts.map +1 -0
  53. package/dist/node/transport/PostMessage/bus/validators/index.d.ts +4 -0
  54. package/dist/node/transport/PostMessage/bus/validators/index.d.ts.map +1 -0
  55. package/dist/node/transport/PostMessage/bus/validators/isEventWithId.d.ts +9 -0
  56. package/dist/node/transport/PostMessage/bus/validators/isEventWithId.d.ts.map +1 -0
  57. package/dist/node/transport/PostMessage/bus/validators/isMessageWithId.d.ts +7 -0
  58. package/dist/node/transport/PostMessage/bus/validators/isMessageWithId.d.ts.map +1 -0
  59. package/dist/node/transport/PostMessage/helpers.d.ts +10 -0
  60. package/dist/node/transport/PostMessage/helpers.d.ts.map +1 -0
  61. package/dist/node/transport/PostMessage/index.d.ts +3 -0
  62. package/dist/node/transport/PostMessage/index.d.ts.map +1 -0
  63. package/dist/node/transport/index.d.ts +1 -0
  64. package/dist/node/transport/index.d.ts.map +1 -1
  65. package/package.json +4 -3
  66. package/src/provider/runner/JsonRpcRunner.ts +6 -5
  67. package/src/provider/viewer/JsonRpcViewer.ts +5 -5
  68. package/src/transport/PostMessage/PostMessageRpcTransport.ts +112 -0
  69. package/src/transport/PostMessage/SessionEnvelope.ts +7 -0
  70. package/src/transport/PostMessage/bus/Abstract.ts +33 -0
  71. package/src/transport/PostMessage/bus/MessageBus.ts +12 -0
  72. package/src/transport/PostMessage/bus/implementations/PostMessage.ts +39 -0
  73. package/src/transport/PostMessage/bus/implementations/index.ts +1 -0
  74. package/src/transport/PostMessage/bus/index.ts +4 -0
  75. package/src/transport/PostMessage/bus/validators/hasSessionId.ts +9 -0
  76. package/src/transport/PostMessage/bus/validators/index.ts +3 -0
  77. package/src/transport/PostMessage/bus/validators/isEventWithId.ts +15 -0
  78. package/src/transport/PostMessage/bus/validators/isMessageWithId.ts +12 -0
  79. package/src/transport/PostMessage/helpers.ts +11 -0
  80. package/src/transport/PostMessage/index.ts +2 -0
  81. package/src/transport/index.ts +1 -0
@@ -1493,8 +1493,7 @@ import { creatableProvider } from "@xyo-network/xl1-protocol-sdk";
1493
1493
  import { AccountBalanceViewerMoniker } from "@xyo-network/xl1-protocol";
1494
1494
 
1495
1495
  // src/provider/viewer/JsonRpcViewer.ts
1496
- import { isDefined as isDefined2 } from "@xylabs/sdk-js";
1497
- import { AbstractCreatableProvider } from "@xyo-network/xl1-protocol-sdk";
1496
+ import { AbstractCreatableProvider, HttpRpcRemoteConfigZod } from "@xyo-network/xl1-protocol-sdk";
1498
1497
 
1499
1498
  // src/transport/HttpRpcTransport.ts
1500
1499
  import {
@@ -1591,6 +1590,151 @@ var MemoryRpcTransport = class {
1591
1590
  }
1592
1591
  };
1593
1592
 
1593
+ // src/transport/PostMessage/bus/Abstract.ts
1594
+ import { isDefined as isDefined2 } from "@xylabs/sdk-js";
1595
+ var AbstractMessageBus = class {
1596
+ connections = [];
1597
+ name;
1598
+ sessionId;
1599
+ constructor(sessionId, name = "default") {
1600
+ this.name = name;
1601
+ this.sessionId = sessionId;
1602
+ this.start();
1603
+ }
1604
+ addConnection(connection) {
1605
+ this.connections.push(connection);
1606
+ }
1607
+ removeConnection(connection) {
1608
+ this.connections = this.connections.filter((c) => c !== connection);
1609
+ }
1610
+ validateSessionId(sessionId) {
1611
+ return isDefined2(this.sessionId) && sessionId === this.sessionId;
1612
+ }
1613
+ };
1614
+
1615
+ // src/transport/PostMessage/bus/implementations/PostMessage.ts
1616
+ import { isDefined as isDefined3 } from "@xylabs/sdk-js";
1617
+
1618
+ // src/transport/PostMessage/bus/validators/hasSessionId.ts
1619
+ var hasSessionId = (message) => {
1620
+ return typeof message === "object" && message !== null && "sessionId" in message && typeof message.sessionId === "string";
1621
+ };
1622
+
1623
+ // src/transport/PostMessage/bus/validators/isEventWithId.ts
1624
+ var isEventWithId = (event) => {
1625
+ return typeof event === "object" && event !== null && "data" in event && typeof event.data === "object" && event.data !== null && "data" in event.data && typeof event.data.data === "object" && event.data.data !== null && "id" in event.data.data && typeof event.data.data.id === "string";
1626
+ };
1627
+
1628
+ // src/transport/PostMessage/bus/validators/isMessageWithId.ts
1629
+ var isMessageWithId = (message) => {
1630
+ return typeof message === "object" && message !== null && "data" in message && typeof message.data === "object" && message.data !== null && "id" in message.data && typeof message.data.id === "string";
1631
+ };
1632
+
1633
+ // src/transport/PostMessage/bus/implementations/PostMessage.ts
1634
+ var PostMessageBus = class extends AbstractMessageBus {
1635
+ constructor(sessionId, name = "default") {
1636
+ super(sessionId, name);
1637
+ }
1638
+ postMessage(message, origin = globalThis.location.origin) {
1639
+ globalThis.postMessage(message, origin);
1640
+ }
1641
+ start() {
1642
+ globalThis.addEventListener("message", (event) => this.handleMessage(event));
1643
+ }
1644
+ stop() {
1645
+ globalThis.removeEventListener("message", this.handleMessage);
1646
+ this.connections.length = 0;
1647
+ }
1648
+ handleMessage = (event) => {
1649
+ if (event.origin !== globalThis.location.origin) return;
1650
+ if (!this.validateSessionId(event.data?.sessionId)) return;
1651
+ for (const connection of this.connections) {
1652
+ const { id, listener } = connection;
1653
+ if (isDefined3(id) && isEventWithId(event)) {
1654
+ const eventWithId = event;
1655
+ if (eventWithId.data.data.id === id) listener(event);
1656
+ } else {
1657
+ listener(event);
1658
+ }
1659
+ }
1660
+ };
1661
+ };
1662
+
1663
+ // src/transport/PostMessage/PostMessageRpcTransport.ts
1664
+ import {
1665
+ isJsonRpcFailure,
1666
+ isJsonRpcResponse,
1667
+ isJsonRpcSuccess
1668
+ } from "@metamask/utils";
1669
+ import { isDefined as isDefined4 } from "@xylabs/sdk-js";
1670
+ import { v4 as v43 } from "uuid";
1671
+ var PostMessageRpcTransport = class {
1672
+ _destination;
1673
+ _logger;
1674
+ _schemas;
1675
+ _sessionId;
1676
+ constructor(defaultDestination, schemas, sessionId, logger) {
1677
+ this._schemas = schemas;
1678
+ this._destination = defaultDestination;
1679
+ this._logger = logger;
1680
+ this._sessionId = sessionId;
1681
+ }
1682
+ get destination() {
1683
+ return this._destination;
1684
+ }
1685
+ get logger() {
1686
+ return this._logger;
1687
+ }
1688
+ get schemas() {
1689
+ return this._schemas;
1690
+ }
1691
+ get sessionId() {
1692
+ return this._sessionId;
1693
+ }
1694
+ async sendRequest(method, params) {
1695
+ const id = v43();
1696
+ return await this.callRpc(this.schemas, method, id, params);
1697
+ }
1698
+ async callRpc(schemas, method, id, params) {
1699
+ this.logger?.log(`PostMessageRpcTransport: callRpc method=${String(method)} id=${id}`);
1700
+ const body = {
1701
+ jsonrpc,
1702
+ id,
1703
+ method,
1704
+ params: isDefined4(params) && isDefined4(schemas[method]) ? schemas[method].params.to.parse(params) : params
1705
+ };
1706
+ return await new Promise((resolve, reject) => {
1707
+ const postMessageBus = new PostMessageBus(this.sessionId);
1708
+ const postMessageConnection = {
1709
+ listener: (event) => {
1710
+ if ("data" in event.data && isJsonRpcResponse(event.data.data)) {
1711
+ const response = event.data.data;
1712
+ if (isJsonRpcSuccess(response) && Array.isArray(response.result)) {
1713
+ const ret = schemas[method].result.from.parse(response.result[0]);
1714
+ resolve(ret);
1715
+ return;
1716
+ }
1717
+ if (isJsonRpcFailure(response)) {
1718
+ console.error("Error in PostMessageRpcTransport:", response);
1719
+ reject(new Error(response.error.message));
1720
+ return;
1721
+ }
1722
+ throw new Error(`Invalid response from wallet extension, ${JSON.stringify(event.data)}`);
1723
+ }
1724
+ },
1725
+ id
1726
+ };
1727
+ postMessageBus.addConnection(postMessageConnection);
1728
+ const message = {
1729
+ data: body,
1730
+ destination: this.destination,
1731
+ sessionId: this.sessionId ?? ""
1732
+ };
1733
+ postMessageBus.postMessage(message);
1734
+ });
1735
+ }
1736
+ };
1737
+
1594
1738
  // src/provider/viewer/JsonRpcViewer.ts
1595
1739
  var AbstractJsonRpcViewer = class extends AbstractCreatableProvider {
1596
1740
  _transport;
@@ -1602,9 +1746,10 @@ var AbstractJsonRpcViewer = class extends AbstractCreatableProvider {
1602
1746
  await super.createHandler();
1603
1747
  }
1604
1748
  createTransport() {
1605
- const endpoint = this.config.remote.rpc?.url;
1606
- if (isDefined2(endpoint)) {
1607
- return new HttpRpcTransport(endpoint, this.schemas());
1749
+ const httpRemoteConfig = HttpRpcRemoteConfigZod.safeParse(this.config.remote);
1750
+ if (httpRemoteConfig.success) {
1751
+ const { url } = httpRemoteConfig.data.rpc;
1752
+ return new HttpRpcTransport(url, this.schemas());
1608
1753
  }
1609
1754
  throw new Error("Unable to create transport");
1610
1755
  }
@@ -1668,7 +1813,7 @@ import {
1668
1813
  } from "@xyo-network/xl1-protocol-sdk";
1669
1814
 
1670
1815
  // src/provider/viewer/JsonRpcBlockViewer/JsonRpcBlockViewerMethods.ts
1671
- import { isDefined as isDefined3 } from "@xylabs/sdk-js";
1816
+ import { isDefined as isDefined5 } from "@xylabs/sdk-js";
1672
1817
  import { BlockViewerMoniker, DataLakeViewerMoniker } from "@xyo-network/xl1-protocol";
1673
1818
  import { addDataLakePayloads, addDataLakePayloadsToPayloads } from "@xyo-network/xl1-protocol-sdk";
1674
1819
  var JsonRpcBlockViewerMethods = class extends AbstractJsonRpcViewer {
@@ -1677,14 +1822,14 @@ var JsonRpcBlockViewerMethods = class extends AbstractJsonRpcViewer {
1677
1822
  async blocksByHash(hash, limit) {
1678
1823
  const result = await this.transport.sendRequest(
1679
1824
  "blockViewer_blocksByHash",
1680
- isDefined3(limit) ? [hash, limit] : [hash]
1825
+ isDefined5(limit) ? [hash, limit] : [hash]
1681
1826
  );
1682
1827
  return await Promise.all(result.map(async (block) => (await addDataLakePayloads(block, this.dataLakeViewer))[0]));
1683
1828
  }
1684
1829
  async blocksByNumber(block, limit) {
1685
1830
  const result = await this.transport.sendRequest(
1686
1831
  "blockViewer_blocksByNumber",
1687
- isDefined3(limit) ? [block, limit] : [block]
1832
+ isDefined5(limit) ? [block, limit] : [block]
1688
1833
  );
1689
1834
  return await Promise.all(result.map(async (block2) => (await addDataLakePayloads(block2, this.dataLakeViewer))[0]));
1690
1835
  }
@@ -2410,8 +2555,7 @@ import { creatableProvider as creatableProvider13 } from "@xyo-network/xl1-proto
2410
2555
  import { MempoolRunnerMoniker } from "@xyo-network/xl1-protocol";
2411
2556
 
2412
2557
  // src/provider/runner/JsonRpcRunner.ts
2413
- import { isDefined as isDefined4 } from "@xylabs/sdk-js";
2414
- import { AbstractCreatableProvider as AbstractCreatableProvider2 } from "@xyo-network/xl1-protocol-sdk";
2558
+ import { AbstractCreatableProvider as AbstractCreatableProvider2, HttpRpcRemoteConfigZod as HttpRpcRemoteConfigZod2 } from "@xyo-network/xl1-protocol-sdk";
2415
2559
  var AbstractJsonRpcRunner = class extends AbstractCreatableProvider2 {
2416
2560
  get transport() {
2417
2561
  return this.params.transport;
@@ -2421,9 +2565,10 @@ var AbstractJsonRpcRunner = class extends AbstractCreatableProvider2 {
2421
2565
  await super.createHandler();
2422
2566
  }
2423
2567
  createTransport() {
2424
- const endpoint = this.config.remote.rpc?.url;
2425
- if (isDefined4(endpoint)) {
2426
- return new HttpRpcTransport(endpoint, this.schemas());
2568
+ const httpRemoteConfig = HttpRpcRemoteConfigZod2.safeParse(this.config.remote);
2569
+ if (httpRemoteConfig.success) {
2570
+ const { url } = httpRemoteConfig.data.rpc;
2571
+ return new HttpRpcTransport(url, this.schemas());
2427
2572
  }
2428
2573
  throw new Error("Unable to create transport");
2429
2574
  }
@@ -2587,6 +2732,7 @@ var JsonRpcXyoSigner = class extends JsonRpcXyoSignerMethods {
2587
2732
  export {
2588
2733
  AbstractJsonRpcRunner,
2589
2734
  AbstractJsonRpcViewer,
2735
+ AbstractMessageBus,
2590
2736
  AccountBalanceViewerRpcSchemas,
2591
2737
  AllRpcSchemas,
2592
2738
  BlockViewerRpcSchemas,
@@ -2638,6 +2784,8 @@ export {
2638
2784
  NetworkStakingStepRewardsViewerRpcSchemas,
2639
2785
  NoArgsZod,
2640
2786
  NodeXyoRunner,
2787
+ PostMessageBus,
2788
+ PostMessageRpcTransport,
2641
2789
  RpcXyoPermissions,
2642
2790
  StakeTotalsViewerRpcSchemas,
2643
2791
  StakeViewerRpcSchemas,
@@ -2649,6 +2797,9 @@ export {
2649
2797
  XyoViewerRpcSchemas,
2650
2798
  createRequestSchema,
2651
2799
  createResponseSchema,
2800
+ hasSessionId,
2801
+ isEventWithId,
2802
+ isMessageWithId,
2652
2803
  jsonrpc,
2653
2804
  requestSchemas,
2654
2805
  rpcMethodHandlersFromAccountBalanceViewer,