@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.
- package/dist/neutral/index.mjs +164 -13
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/neutral/provider/runner/JsonRpcRunner.d.ts.map +1 -1
- package/dist/neutral/provider/viewer/JsonRpcViewer.d.ts.map +1 -1
- package/dist/neutral/transport/PostMessage/PostMessageRpcTransport.d.ts +18 -0
- package/dist/neutral/transport/PostMessage/PostMessageRpcTransport.d.ts.map +1 -0
- package/dist/neutral/transport/PostMessage/SessionEnvelope.d.ts +7 -0
- package/dist/neutral/transport/PostMessage/SessionEnvelope.d.ts.map +1 -0
- package/dist/neutral/transport/PostMessage/bus/Abstract.d.ts +14 -0
- package/dist/neutral/transport/PostMessage/bus/Abstract.d.ts.map +1 -0
- package/dist/neutral/transport/PostMessage/bus/MessageBus.d.ts +12 -0
- package/dist/neutral/transport/PostMessage/bus/MessageBus.d.ts.map +1 -0
- package/dist/neutral/transport/PostMessage/bus/implementations/PostMessage.d.ts +9 -0
- package/dist/neutral/transport/PostMessage/bus/implementations/PostMessage.d.ts.map +1 -0
- package/dist/neutral/transport/PostMessage/bus/implementations/index.d.ts +2 -0
- package/dist/neutral/transport/PostMessage/bus/implementations/index.d.ts.map +1 -0
- package/dist/neutral/transport/PostMessage/bus/index.d.ts +5 -0
- package/dist/neutral/transport/PostMessage/bus/index.d.ts.map +1 -0
- package/dist/neutral/transport/PostMessage/bus/validators/hasSessionId.d.ts +5 -0
- package/dist/neutral/transport/PostMessage/bus/validators/hasSessionId.d.ts.map +1 -0
- package/dist/neutral/transport/PostMessage/bus/validators/index.d.ts +4 -0
- package/dist/neutral/transport/PostMessage/bus/validators/index.d.ts.map +1 -0
- package/dist/neutral/transport/PostMessage/bus/validators/isEventWithId.d.ts +9 -0
- package/dist/neutral/transport/PostMessage/bus/validators/isEventWithId.d.ts.map +1 -0
- package/dist/neutral/transport/PostMessage/bus/validators/isMessageWithId.d.ts +7 -0
- package/dist/neutral/transport/PostMessage/bus/validators/isMessageWithId.d.ts.map +1 -0
- package/dist/neutral/transport/PostMessage/helpers.d.ts +10 -0
- package/dist/neutral/transport/PostMessage/helpers.d.ts.map +1 -0
- package/dist/neutral/transport/PostMessage/index.d.ts +3 -0
- package/dist/neutral/transport/PostMessage/index.d.ts.map +1 -0
- package/dist/neutral/transport/index.d.ts +1 -0
- package/dist/neutral/transport/index.d.ts.map +1 -1
- package/dist/node/index-node.mjs +164 -13
- package/dist/node/index-node.mjs.map +1 -1
- package/dist/node/provider/runner/JsonRpcRunner.d.ts.map +1 -1
- package/dist/node/provider/viewer/JsonRpcViewer.d.ts.map +1 -1
- package/dist/node/transport/PostMessage/PostMessageRpcTransport.d.ts +18 -0
- package/dist/node/transport/PostMessage/PostMessageRpcTransport.d.ts.map +1 -0
- package/dist/node/transport/PostMessage/SessionEnvelope.d.ts +7 -0
- package/dist/node/transport/PostMessage/SessionEnvelope.d.ts.map +1 -0
- package/dist/node/transport/PostMessage/bus/Abstract.d.ts +14 -0
- package/dist/node/transport/PostMessage/bus/Abstract.d.ts.map +1 -0
- package/dist/node/transport/PostMessage/bus/MessageBus.d.ts +12 -0
- package/dist/node/transport/PostMessage/bus/MessageBus.d.ts.map +1 -0
- package/dist/node/transport/PostMessage/bus/implementations/PostMessage.d.ts +9 -0
- package/dist/node/transport/PostMessage/bus/implementations/PostMessage.d.ts.map +1 -0
- package/dist/node/transport/PostMessage/bus/implementations/index.d.ts +2 -0
- package/dist/node/transport/PostMessage/bus/implementations/index.d.ts.map +1 -0
- package/dist/node/transport/PostMessage/bus/index.d.ts +5 -0
- package/dist/node/transport/PostMessage/bus/index.d.ts.map +1 -0
- package/dist/node/transport/PostMessage/bus/validators/hasSessionId.d.ts +5 -0
- package/dist/node/transport/PostMessage/bus/validators/hasSessionId.d.ts.map +1 -0
- package/dist/node/transport/PostMessage/bus/validators/index.d.ts +4 -0
- package/dist/node/transport/PostMessage/bus/validators/index.d.ts.map +1 -0
- package/dist/node/transport/PostMessage/bus/validators/isEventWithId.d.ts +9 -0
- package/dist/node/transport/PostMessage/bus/validators/isEventWithId.d.ts.map +1 -0
- package/dist/node/transport/PostMessage/bus/validators/isMessageWithId.d.ts +7 -0
- package/dist/node/transport/PostMessage/bus/validators/isMessageWithId.d.ts.map +1 -0
- package/dist/node/transport/PostMessage/helpers.d.ts +10 -0
- package/dist/node/transport/PostMessage/helpers.d.ts.map +1 -0
- package/dist/node/transport/PostMessage/index.d.ts +3 -0
- package/dist/node/transport/PostMessage/index.d.ts.map +1 -0
- package/dist/node/transport/index.d.ts +1 -0
- package/dist/node/transport/index.d.ts.map +1 -1
- package/package.json +4 -3
- package/src/provider/runner/JsonRpcRunner.ts +6 -5
- package/src/provider/viewer/JsonRpcViewer.ts +5 -5
- package/src/transport/PostMessage/PostMessageRpcTransport.ts +112 -0
- package/src/transport/PostMessage/SessionEnvelope.ts +7 -0
- package/src/transport/PostMessage/bus/Abstract.ts +33 -0
- package/src/transport/PostMessage/bus/MessageBus.ts +12 -0
- package/src/transport/PostMessage/bus/implementations/PostMessage.ts +39 -0
- package/src/transport/PostMessage/bus/implementations/index.ts +1 -0
- package/src/transport/PostMessage/bus/index.ts +4 -0
- package/src/transport/PostMessage/bus/validators/hasSessionId.ts +9 -0
- package/src/transport/PostMessage/bus/validators/index.ts +3 -0
- package/src/transport/PostMessage/bus/validators/isEventWithId.ts +15 -0
- package/src/transport/PostMessage/bus/validators/isMessageWithId.ts +12 -0
- package/src/transport/PostMessage/helpers.ts +11 -0
- package/src/transport/PostMessage/index.ts +2 -0
- package/src/transport/index.ts +1 -0
package/dist/neutral/index.mjs
CHANGED
|
@@ -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 {
|
|
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
|
|
1606
|
-
if (
|
|
1607
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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 {
|
|
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
|
|
2425
|
-
if (
|
|
2426
|
-
|
|
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,
|