Files
qapi/patches/@polkadot-api__observable-client.patch

45 lines
1.4 KiB
Diff

diff --git a/dist/esm/getObservableClient.mjs b/dist/esm/getObservableClient.mjs
index 511be34f2b04e0125858e03ff1dfce2759d3041b..b86e02a655903e3f5277269c5f46ca03b00b7ada 100644
--- a/dist/esm/getObservableClient.mjs
+++ b/dist/esm/getObservableClient.mjs
@@ -2,15 +2,30 @@ import { getChainHead$ } from './chainHead/chainHead.mjs';
import 'rxjs';
import getBroadcastTx$ from './tx.mjs';
-const getObservableClient = ({
- chainHead,
- transaction,
- destroy
-}) => ({
- chainHead$: () => getChainHead$(chainHead),
- broadcastTx$: getBroadcastTx$(transaction),
- destroy
-});
+const clientCache = /* @__PURE__ */ new Map();
+const getObservableClient = (substrateClient) => {
+ const cached = clientCache.get(substrateClient);
+ if (cached) {
+ cached.refCount++;
+ return cached.client;
+ }
+ const destroy = () => {
+ const cached2 = clientCache.get(substrateClient);
+ if (!cached2 || cached2.refCount <= 1) {
+ clientCache.delete(substrateClient);
+ substrateClient.destroy();
+ } else {
+ cached2.refCount--;
+ }
+ };
+ const client = {
+ chainHead$: () => getChainHead$(substrateClient.chainHead),
+ broadcastTx$: getBroadcastTx$(substrateClient.transaction),
+ destroy
+ };
+ clientCache.set(substrateClient, { client, refCount: 1 });
+ return client;
+};
export { getObservableClient };
//# sourceMappingURL=getObservableClient.mjs.map