@keplr-wallet/stores-ibc 0.13.32 → 0.13.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.
@@ -18,6 +18,10 @@ type CacheIBCDenomData = {
18
18
  originChainUnknown: boolean;
19
19
  counterpartyChainId: string | undefined;
20
20
  counterpartyChainUnknown: boolean;
21
+ counterpartyChannelValidation?: {
22
+ status: "valid" | "mismatch";
23
+ timestamp: number;
24
+ };
21
25
  timestamp: number;
22
26
  };
23
27
  type CacheTokenInfo = {
@@ -138,11 +142,25 @@ export declare class IBCCurrencyRegistrar {
138
142
  hasUnresolvedQuery: boolean;
139
143
  mismatch: boolean;
140
144
  };
145
+ protected hasMissingCounterpartyChannel(denomTrace: {
146
+ paths: {
147
+ counterpartyChannelId?: string;
148
+ counterpartyPortId?: string;
149
+ clientChainId?: string;
150
+ }[];
151
+ }): boolean;
152
+ protected shouldQueryCounterpartyChannel<T extends {
153
+ clientChainId?: string;
154
+ }>(path: T): path is T & {
155
+ clientChainId: string;
156
+ };
157
+ protected getCacheIBCDenomDataKey(chainId: string, denomTraceHash: string): string;
141
158
  protected getCacheIBCDenomData(chainId: string, denomTraceHash: string): {
142
159
  res: CacheIBCDenomData | undefined;
143
160
  staled: boolean;
144
161
  };
145
162
  protected setCacheIBCDenomData(chainId: string, denomTraceHash: string, data: CacheIBCDenomData): void;
163
+ protected setCacheIBCDenomCounterpartyChannelValidation(chainId: string, denomTraceHash: string, status: "valid" | "mismatch"): void;
146
164
  protected removeCacheIBCDenomData(chainId: string, denomTraceHash: string): void;
147
165
  protected getCacheTokenInfo(chainId: string, coinMinimalDenom: string): {
148
166
  res: CacheTokenInfo | undefined;
@@ -126,6 +126,7 @@ class IBCCurrencyRegistrar {
126
126
  let denomTrace;
127
127
  let isGlobalFetching = false;
128
128
  let fromCache = false;
129
+ let denomTraceFromCache = false;
129
130
  let { res: cached, staled } = this.getCacheIBCDenomData(chainId, hash);
130
131
  if (cached) {
131
132
  if (!cached.denomTrace.paths.some((path) => {
@@ -136,6 +137,7 @@ class IBCCurrencyRegistrar {
136
137
  })) {
137
138
  fromCache = true;
138
139
  denomTrace = cached.denomTrace;
140
+ denomTraceFromCache = true;
139
141
  if (cached.originChainId &&
140
142
  this.chainStore.hasModularChain(cached.originChainId)) {
141
143
  originChainInfo = this.chainStore.getModularChain(cached.originChainId);
@@ -146,13 +148,16 @@ class IBCCurrencyRegistrar {
146
148
  }
147
149
  // 만약 이전의 cache에서 originChainId와 counterpartyChainId를 몰랐던 상태였는데
148
150
  // 현재는 알게된 경우에는 cache를 사용하지않고 지운다.
149
- if ((originChainInfo && cached.originChainUnknown) ||
151
+ const hasMissingCounterpartyChannel = this.hasMissingCounterpartyChannel(cached.denomTrace);
152
+ if (hasMissingCounterpartyChannel ||
153
+ (originChainInfo && cached.originChainUnknown) ||
150
154
  (counterpartyChainInfo && cached.counterpartyChainUnknown)) {
151
155
  cached = undefined;
152
156
  fromCache = false;
153
157
  staled = false;
154
158
  this.removeCacheIBCDenomData(chainId, hash);
155
159
  denomTrace = undefined;
160
+ denomTraceFromCache = false;
156
161
  originChainInfo = undefined;
157
162
  counterpartyChainInfo = undefined;
158
163
  }
@@ -191,6 +196,7 @@ class IBCCurrencyRegistrar {
191
196
  let isFetching = false;
192
197
  const queryDenomTrace = queries.cosmos.queryIBCDenomTrace.getDenomTrace(hash);
193
198
  denomTrace = queryDenomTrace.denomTrace;
199
+ denomTraceFromCache = false;
194
200
  if (queryDenomTrace.isFetching) {
195
201
  isFetching = true;
196
202
  isGlobalFetching = true;
@@ -301,6 +307,7 @@ class IBCCurrencyRegistrar {
301
307
  if (isGlobalFetching && staled && cached) {
302
308
  if (!denomTrace) {
303
309
  denomTrace = cached.denomTrace;
310
+ denomTraceFromCache = true;
304
311
  }
305
312
  if (!originChainInfo &&
306
313
  cached.originChainId &&
@@ -321,21 +328,36 @@ class IBCCurrencyRegistrar {
321
328
  };
322
329
  }
323
330
  if (denomTrace) {
324
- const counterpartyChannelState = this.getCounterpartyChannelState(denomTrace);
325
- if (counterpartyChannelState.mismatch) {
331
+ const cachedCounterpartyChannelValidation = denomTraceFromCache
332
+ ? cached === null || cached === void 0 ? void 0 : cached.counterpartyChannelValidation
333
+ : undefined;
334
+ if ((cachedCounterpartyChannelValidation === null || cachedCounterpartyChannelValidation === void 0 ? void 0 : cachedCounterpartyChannelValidation.status) === "mismatch") {
326
335
  return {
327
336
  value: undefined,
328
337
  done: true,
329
338
  };
330
339
  }
331
- if (counterpartyChannelState.hasUnresolvedQuery) {
332
- return {
333
- value: undefined,
334
- done: false,
335
- };
336
- }
337
- if (counterpartyChannelState.isFetching) {
338
- isGlobalFetching = true;
340
+ if ((cachedCounterpartyChannelValidation === null || cachedCounterpartyChannelValidation === void 0 ? void 0 : cachedCounterpartyChannelValidation.status) !== "valid") {
341
+ const counterpartyChannelState = this.getCounterpartyChannelState(denomTrace);
342
+ if (counterpartyChannelState.mismatch) {
343
+ this.setCacheIBCDenomCounterpartyChannelValidation(chainId, hash, "mismatch");
344
+ return {
345
+ value: undefined,
346
+ done: true,
347
+ };
348
+ }
349
+ if (counterpartyChannelState.hasUnresolvedQuery) {
350
+ return {
351
+ value: undefined,
352
+ done: false,
353
+ };
354
+ }
355
+ if (counterpartyChannelState.isFetching) {
356
+ isGlobalFetching = true;
357
+ }
358
+ else {
359
+ this.setCacheIBCDenomCounterpartyChannelValidation(chainId, hash, "valid");
360
+ }
339
361
  }
340
362
  }
341
363
  if (originChainInfo && denomTrace) {
@@ -811,8 +833,7 @@ class IBCCurrencyRegistrar {
811
833
  let isFetching = false;
812
834
  let hasUnresolvedQuery = false;
813
835
  for (const path of denomTrace.paths) {
814
- if (!path.clientChainId ||
815
- !this.chainStore.hasModularChain(path.clientChainId)) {
836
+ if (!this.shouldQueryCounterpartyChannel(path)) {
816
837
  continue;
817
838
  }
818
839
  if (!path.counterpartyPortId || !path.counterpartyChannelId) {
@@ -826,9 +847,7 @@ class IBCCurrencyRegistrar {
826
847
  isFetching = true;
827
848
  }
828
849
  if (!queryCounterpartyChannel.response) {
829
- if (queryCounterpartyChannel.isFetching) {
830
- hasUnresolvedQuery = true;
831
- }
850
+ hasUnresolvedQuery = true;
832
851
  continue;
833
852
  }
834
853
  const counterparty = queryCounterpartyChannel.response.data.channel.counterparty;
@@ -847,8 +866,25 @@ class IBCCurrencyRegistrar {
847
866
  mismatch: false,
848
867
  };
849
868
  }
869
+ hasMissingCounterpartyChannel(denomTrace) {
870
+ return denomTrace.paths.some((path) => {
871
+ return (this.shouldQueryCounterpartyChannel(path) &&
872
+ (!path.counterpartyPortId || !path.counterpartyChannelId));
873
+ });
874
+ }
875
+ shouldQueryCounterpartyChannel(path) {
876
+ if (!path.clientChainId ||
877
+ !this.chainStore.hasModularChain(path.clientChainId)) {
878
+ return false;
879
+ }
880
+ const clientChainInfo = this.chainStore.getModularChain(path.clientChainId);
881
+ return (clientChainInfo.type === "cosmos" || clientChainInfo.type === "ethermint");
882
+ }
883
+ getCacheIBCDenomDataKey(chainId, denomTraceHash) {
884
+ return `${cosmos_1.ChainIdHelper.parse(chainId).identifier}/${denomTraceHash}`;
885
+ }
850
886
  getCacheIBCDenomData(chainId, denomTraceHash) {
851
- const key = `${cosmos_1.ChainIdHelper.parse(chainId).identifier}/${denomTraceHash}`;
887
+ const key = this.getCacheIBCDenomDataKey(chainId, denomTraceHash);
852
888
  const res = this.cacheDenomTracePaths.get(key) || this.staledDenomTracePaths.get(key);
853
889
  let staled = false;
854
890
  if (res) {
@@ -868,15 +904,26 @@ class IBCCurrencyRegistrar {
868
904
  };
869
905
  }
870
906
  setCacheIBCDenomData(chainId, denomTraceHash, data) {
871
- const key = `${cosmos_1.ChainIdHelper.parse(chainId).identifier}/${denomTraceHash}`;
907
+ const key = this.getCacheIBCDenomDataKey(chainId, denomTraceHash);
872
908
  this.cacheDenomTracePaths.set(key, data);
873
909
  this.debouncedSetCacheDenomTracePathsToDB();
874
910
  if (this.staledDenomTracePaths.has(key)) {
875
911
  this.staledDenomTracePaths.set(key, data);
876
912
  }
877
913
  }
914
+ setCacheIBCDenomCounterpartyChannelValidation(chainId, denomTraceHash, status) {
915
+ const key = this.getCacheIBCDenomDataKey(chainId, denomTraceHash);
916
+ const cached = this.cacheDenomTracePaths.get(key) || this.staledDenomTracePaths.get(key);
917
+ if (!cached) {
918
+ return;
919
+ }
920
+ this.setCacheIBCDenomData(chainId, denomTraceHash, Object.assign(Object.assign({}, cached), { counterpartyChannelValidation: {
921
+ status,
922
+ timestamp: Date.now(),
923
+ } }));
924
+ }
878
925
  removeCacheIBCDenomData(chainId, denomTraceHash) {
879
- const key = `${cosmos_1.ChainIdHelper.parse(chainId).identifier}/${denomTraceHash}`;
926
+ const key = this.getCacheIBCDenomDataKey(chainId, denomTraceHash);
880
927
  this.cacheDenomTracePaths.delete(key);
881
928
  this.debouncedSetCacheDenomTracePathsToDB();
882
929
  this.staledDenomTracePaths.delete(key);
@@ -1 +1 @@
1
- {"version":3,"file":"currency-registrar.js","sourceRoot":"","sources":["../src/currency-registrar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"currency-registrar.js","sourceRoot":"","sources":["../src/currency-registrar.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keplr-wallet/stores-ibc",
3
- "version": "0.13.32",
3
+ "version": "0.13.33",
4
4
  "main": "build/index.js",
5
5
  "author": "chainapsis",
6
6
  "license": "Apache-2.0",
@@ -21,11 +21,11 @@
21
21
  "typecheck": "npx tsc -p tsconfig.check.json"
22
22
  },
23
23
  "dependencies": {
24
- "@keplr-wallet/common": "0.13.32",
25
- "@keplr-wallet/cosmos": "0.13.32",
26
- "@keplr-wallet/stores": "0.13.32",
27
- "@keplr-wallet/stores-eth": "0.13.32",
28
- "@keplr-wallet/types": "0.13.32",
24
+ "@keplr-wallet/common": "0.13.33",
25
+ "@keplr-wallet/cosmos": "0.13.33",
26
+ "@keplr-wallet/stores": "0.13.33",
27
+ "@keplr-wallet/stores-eth": "0.13.33",
28
+ "@keplr-wallet/types": "0.13.33",
29
29
  "lodash.debounce": "^4.0.8"
30
30
  },
31
31
  "peerDependencies": {
@@ -35,5 +35,5 @@
35
35
  "devDependencies": {
36
36
  "@types/lodash.debounce": "^4"
37
37
  },
38
- "gitHead": "afca64992d57ad196660a44822328bc8f09dbfc8"
38
+ "gitHead": "14cdeb29fdea7b1ef5eff3c17f37e9406b224336"
39
39
  }
@@ -34,6 +34,10 @@ type CacheIBCDenomData = {
34
34
  originChainUnknown: boolean;
35
35
  counterpartyChainId: string | undefined;
36
36
  counterpartyChainUnknown: boolean;
37
+ counterpartyChannelValidation?: {
38
+ status: "valid" | "mismatch";
39
+ timestamp: number;
40
+ };
37
41
  timestamp: number;
38
42
  };
39
43
 
@@ -246,6 +250,7 @@ export class IBCCurrencyRegistrar {
246
250
 
247
251
  let isGlobalFetching = false;
248
252
  let fromCache = false;
253
+ let denomTraceFromCache = false;
249
254
  let { res: cached, staled } = this.getCacheIBCDenomData(chainId, hash);
250
255
  if (cached) {
251
256
  if (
@@ -258,6 +263,7 @@ export class IBCCurrencyRegistrar {
258
263
  ) {
259
264
  fromCache = true;
260
265
  denomTrace = cached.denomTrace;
266
+ denomTraceFromCache = true;
261
267
  if (
262
268
  cached.originChainId &&
263
269
  this.chainStore.hasModularChain(cached.originChainId)
@@ -277,7 +283,11 @@ export class IBCCurrencyRegistrar {
277
283
 
278
284
  // 만약 이전의 cache에서 originChainId와 counterpartyChainId를 몰랐던 상태였는데
279
285
  // 현재는 알게된 경우에는 cache를 사용하지않고 지운다.
286
+ const hasMissingCounterpartyChannel =
287
+ this.hasMissingCounterpartyChannel(cached.denomTrace);
288
+
280
289
  if (
290
+ hasMissingCounterpartyChannel ||
281
291
  (originChainInfo && cached.originChainUnknown) ||
282
292
  (counterpartyChainInfo && cached.counterpartyChainUnknown)
283
293
  ) {
@@ -287,6 +297,7 @@ export class IBCCurrencyRegistrar {
287
297
  this.removeCacheIBCDenomData(chainId, hash);
288
298
 
289
299
  denomTrace = undefined;
300
+ denomTraceFromCache = false;
290
301
  originChainInfo = undefined;
291
302
  counterpartyChainInfo = undefined;
292
303
  }
@@ -327,6 +338,7 @@ export class IBCCurrencyRegistrar {
327
338
  const queryDenomTrace =
328
339
  queries.cosmos.queryIBCDenomTrace.getDenomTrace(hash);
329
340
  denomTrace = queryDenomTrace.denomTrace;
341
+ denomTraceFromCache = false;
330
342
 
331
343
  if (queryDenomTrace.isFetching) {
332
344
  isFetching = true;
@@ -459,6 +471,7 @@ export class IBCCurrencyRegistrar {
459
471
  if (isGlobalFetching && staled && cached) {
460
472
  if (!denomTrace) {
461
473
  denomTrace = cached.denomTrace;
474
+ denomTraceFromCache = true;
462
475
  }
463
476
  if (
464
477
  !originChainInfo &&
@@ -489,25 +502,50 @@ export class IBCCurrencyRegistrar {
489
502
  }
490
503
 
491
504
  if (denomTrace) {
492
- const counterpartyChannelState =
493
- this.getCounterpartyChannelState(denomTrace);
505
+ const cachedCounterpartyChannelValidation = denomTraceFromCache
506
+ ? cached?.counterpartyChannelValidation
507
+ : undefined;
494
508
 
495
- if (counterpartyChannelState.mismatch) {
509
+ if (cachedCounterpartyChannelValidation?.status === "mismatch") {
496
510
  return {
497
511
  value: undefined,
498
512
  done: true,
499
513
  };
500
514
  }
501
515
 
502
- if (counterpartyChannelState.hasUnresolvedQuery) {
503
- return {
504
- value: undefined,
505
- done: false,
506
- };
507
- }
516
+ if (cachedCounterpartyChannelValidation?.status !== "valid") {
517
+ const counterpartyChannelState =
518
+ this.getCounterpartyChannelState(denomTrace);
508
519
 
509
- if (counterpartyChannelState.isFetching) {
510
- isGlobalFetching = true;
520
+ if (counterpartyChannelState.mismatch) {
521
+ this.setCacheIBCDenomCounterpartyChannelValidation(
522
+ chainId,
523
+ hash,
524
+ "mismatch"
525
+ );
526
+
527
+ return {
528
+ value: undefined,
529
+ done: true,
530
+ };
531
+ }
532
+
533
+ if (counterpartyChannelState.hasUnresolvedQuery) {
534
+ return {
535
+ value: undefined,
536
+ done: false,
537
+ };
538
+ }
539
+
540
+ if (counterpartyChannelState.isFetching) {
541
+ isGlobalFetching = true;
542
+ } else {
543
+ this.setCacheIBCDenomCounterpartyChannelValidation(
544
+ chainId,
545
+ hash,
546
+ "valid"
547
+ );
548
+ }
511
549
  }
512
550
  }
513
551
 
@@ -1147,10 +1185,7 @@ export class IBCCurrencyRegistrar {
1147
1185
  let hasUnresolvedQuery = false;
1148
1186
 
1149
1187
  for (const path of denomTrace.paths) {
1150
- if (
1151
- !path.clientChainId ||
1152
- !this.chainStore.hasModularChain(path.clientChainId)
1153
- ) {
1188
+ if (!this.shouldQueryCounterpartyChannel(path)) {
1154
1189
  continue;
1155
1190
  }
1156
1191
 
@@ -1171,9 +1206,7 @@ export class IBCCurrencyRegistrar {
1171
1206
  }
1172
1207
 
1173
1208
  if (!queryCounterpartyChannel.response) {
1174
- if (queryCounterpartyChannel.isFetching) {
1175
- hasUnresolvedQuery = true;
1176
- }
1209
+ hasUnresolvedQuery = true;
1177
1210
  continue;
1178
1211
  }
1179
1212
 
@@ -1199,11 +1232,49 @@ export class IBCCurrencyRegistrar {
1199
1232
  };
1200
1233
  }
1201
1234
 
1235
+ protected hasMissingCounterpartyChannel(denomTrace: {
1236
+ paths: {
1237
+ counterpartyChannelId?: string;
1238
+ counterpartyPortId?: string;
1239
+ clientChainId?: string;
1240
+ }[];
1241
+ }): boolean {
1242
+ return denomTrace.paths.some((path) => {
1243
+ return (
1244
+ this.shouldQueryCounterpartyChannel(path) &&
1245
+ (!path.counterpartyPortId || !path.counterpartyChannelId)
1246
+ );
1247
+ });
1248
+ }
1249
+
1250
+ protected shouldQueryCounterpartyChannel<
1251
+ T extends { clientChainId?: string }
1252
+ >(path: T): path is T & { clientChainId: string } {
1253
+ if (
1254
+ !path.clientChainId ||
1255
+ !this.chainStore.hasModularChain(path.clientChainId)
1256
+ ) {
1257
+ return false;
1258
+ }
1259
+
1260
+ const clientChainInfo = this.chainStore.getModularChain(path.clientChainId);
1261
+ return (
1262
+ clientChainInfo.type === "cosmos" || clientChainInfo.type === "ethermint"
1263
+ );
1264
+ }
1265
+
1266
+ protected getCacheIBCDenomDataKey(
1267
+ chainId: string,
1268
+ denomTraceHash: string
1269
+ ): string {
1270
+ return `${ChainIdHelper.parse(chainId).identifier}/${denomTraceHash}`;
1271
+ }
1272
+
1202
1273
  protected getCacheIBCDenomData(
1203
1274
  chainId: string,
1204
1275
  denomTraceHash: string
1205
1276
  ): { res: CacheIBCDenomData | undefined; staled: boolean } {
1206
- const key = `${ChainIdHelper.parse(chainId).identifier}/${denomTraceHash}`;
1277
+ const key = this.getCacheIBCDenomDataKey(chainId, denomTraceHash);
1207
1278
 
1208
1279
  const res =
1209
1280
  this.cacheDenomTracePaths.get(key) || this.staledDenomTracePaths.get(key);
@@ -1235,7 +1306,7 @@ export class IBCCurrencyRegistrar {
1235
1306
  denomTraceHash: string,
1236
1307
  data: CacheIBCDenomData
1237
1308
  ) {
1238
- const key = `${ChainIdHelper.parse(chainId).identifier}/${denomTraceHash}`;
1309
+ const key = this.getCacheIBCDenomDataKey(chainId, denomTraceHash);
1239
1310
  this.cacheDenomTracePaths.set(key, data);
1240
1311
 
1241
1312
  this.debouncedSetCacheDenomTracePathsToDB();
@@ -1245,8 +1316,29 @@ export class IBCCurrencyRegistrar {
1245
1316
  }
1246
1317
  }
1247
1318
 
1319
+ protected setCacheIBCDenomCounterpartyChannelValidation(
1320
+ chainId: string,
1321
+ denomTraceHash: string,
1322
+ status: "valid" | "mismatch"
1323
+ ) {
1324
+ const key = this.getCacheIBCDenomDataKey(chainId, denomTraceHash);
1325
+ const cached =
1326
+ this.cacheDenomTracePaths.get(key) || this.staledDenomTracePaths.get(key);
1327
+ if (!cached) {
1328
+ return;
1329
+ }
1330
+
1331
+ this.setCacheIBCDenomData(chainId, denomTraceHash, {
1332
+ ...cached,
1333
+ counterpartyChannelValidation: {
1334
+ status,
1335
+ timestamp: Date.now(),
1336
+ },
1337
+ });
1338
+ }
1339
+
1248
1340
  protected removeCacheIBCDenomData(chainId: string, denomTraceHash: string) {
1249
- const key = `${ChainIdHelper.parse(chainId).identifier}/${denomTraceHash}`;
1341
+ const key = this.getCacheIBCDenomDataKey(chainId, denomTraceHash);
1250
1342
  this.cacheDenomTracePaths.delete(key);
1251
1343
 
1252
1344
  this.debouncedSetCacheDenomTracePathsToDB();