@sundaeswap/wallet-lite 0.0.24 → 0.0.26

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 (51) hide show
  1. package/dist/cjs/@types/observer.js.map +1 -1
  2. package/dist/cjs/classes/WalletObserver.class.js +161 -95
  3. package/dist/cjs/classes/WalletObserver.class.js.map +1 -1
  4. package/dist/cjs/react-components/WalletObserverProvider/WalletObserverProvider.js +13 -20
  5. package/dist/cjs/react-components/WalletObserverProvider/WalletObserverProvider.js.map +1 -1
  6. package/dist/cjs/react-components/WalletObserverProvider/hooks/effects/useProviderEventListeners.js +6 -10
  7. package/dist/cjs/react-components/WalletObserverProvider/hooks/effects/useProviderEventListeners.js.map +1 -1
  8. package/dist/cjs/react-components/WalletObserverProvider/hooks/useWalletObserverState.js +65 -27
  9. package/dist/cjs/react-components/WalletObserverProvider/hooks/useWalletObserverState.js.map +1 -1
  10. package/dist/cjs/react-components/contexts/observer/types.js.map +1 -1
  11. package/dist/cjs/react-components/hooks/useWalletHandles.js +67 -52
  12. package/dist/cjs/react-components/hooks/useWalletHandles.js.map +1 -1
  13. package/dist/cjs/react-components/hooks/useWalletObserver.js +6 -3
  14. package/dist/cjs/react-components/hooks/useWalletObserver.js.map +1 -1
  15. package/dist/esm/@types/observer.js.map +1 -1
  16. package/dist/esm/classes/WalletObserver.class.js +64 -0
  17. package/dist/esm/classes/WalletObserver.class.js.map +1 -1
  18. package/dist/esm/react-components/WalletObserverProvider/WalletObserverProvider.js +7 -11
  19. package/dist/esm/react-components/WalletObserverProvider/WalletObserverProvider.js.map +1 -1
  20. package/dist/esm/react-components/WalletObserverProvider/hooks/effects/useProviderEventListeners.js +6 -10
  21. package/dist/esm/react-components/WalletObserverProvider/hooks/effects/useProviderEventListeners.js.map +1 -1
  22. package/dist/esm/react-components/WalletObserverProvider/hooks/useWalletObserverState.js +34 -14
  23. package/dist/esm/react-components/WalletObserverProvider/hooks/useWalletObserverState.js.map +1 -1
  24. package/dist/esm/react-components/contexts/observer/types.js.map +1 -1
  25. package/dist/esm/react-components/hooks/useWalletHandles.js +31 -24
  26. package/dist/esm/react-components/hooks/useWalletHandles.js.map +1 -1
  27. package/dist/esm/react-components/hooks/useWalletObserver.js +6 -3
  28. package/dist/esm/react-components/hooks/useWalletObserver.js.map +1 -1
  29. package/dist/types/@types/observer.d.ts +1 -0
  30. package/dist/types/@types/observer.d.ts.map +1 -1
  31. package/dist/types/classes/WalletObserver.class.d.ts +6 -0
  32. package/dist/types/classes/WalletObserver.class.d.ts.map +1 -1
  33. package/dist/types/react-components/WalletObserverProvider/WalletObserverProvider.d.ts.map +1 -1
  34. package/dist/types/react-components/WalletObserverProvider/hooks/effects/useProviderEventListeners.d.ts +2 -1
  35. package/dist/types/react-components/WalletObserverProvider/hooks/effects/useProviderEventListeners.d.ts.map +1 -1
  36. package/dist/types/react-components/WalletObserverProvider/hooks/useWalletObserverState.d.ts +4 -0
  37. package/dist/types/react-components/WalletObserverProvider/hooks/useWalletObserverState.d.ts.map +1 -1
  38. package/dist/types/react-components/contexts/observer/types.d.ts +3 -0
  39. package/dist/types/react-components/contexts/observer/types.d.ts.map +1 -1
  40. package/dist/types/react-components/hooks/useWalletHandles.d.ts.map +1 -1
  41. package/dist/types/react-components/hooks/useWalletObserver.d.ts.map +1 -1
  42. package/dist/types/tsconfig.build.tsbuildinfo +1 -1
  43. package/package.json +1 -1
  44. package/src/@types/observer.ts +1 -0
  45. package/src/classes/WalletObserver.class.ts +76 -0
  46. package/src/react-components/WalletObserverProvider/WalletObserverProvider.tsx +6 -9
  47. package/src/react-components/WalletObserverProvider/hooks/effects/useProviderEventListeners.ts +7 -15
  48. package/src/react-components/WalletObserverProvider/hooks/useWalletObserverState.ts +44 -16
  49. package/src/react-components/contexts/observer/types.ts +3 -0
  50. package/src/react-components/hooks/useWalletHandles.ts +69 -62
  51. package/src/react-components/hooks/useWalletObserver.ts +7 -1
@@ -1 +1 @@
1
- {"version":3,"file":"observer.js","names":[],"sources":["../../../src/@types/observer.ts"],"sourcesContent":["import type { TransactionUnspentOutput } from \"@cardano-sdk/core/dist/cjs/Serialization/index.js\";\nimport type { Cip30WalletApi } from \"@cardano-sdk/dapp-connector\";\nimport type { DAppPeerConnect } from \"@fabianbormann/cardano-peer-connect\";\nimport type { DAppPeerConnectParameters } from \"@fabianbormann/cardano-peer-connect/dist/src/types.js\";\nimport type { IAssetAmountMetadata } from \"@sundaeswap/asset\";\n\nimport { WalletAssetMap } from \"../classes/WalletAssetMap.class.js\";\nimport { WalletBalanceMap } from \"../classes/WalletBalanceMap.class.js\";\nimport { isAdaAsset, normalizeAssetIdWithDot } from \"../utils/assets.js\";\n\n/**\n * A list of support CIP-30 wallet extensions in the browser.\n */\nexport type TSupportedWalletExtensions =\n | \"nami\"\n | \"eternl\"\n | \"typhoncip30\"\n | \"ccvault\"\n | \"typhon\"\n | \"yoroi\"\n | \"flint\"\n | \"gerowallet\"\n | \"cardwallet\"\n | \"nufi\"\n | \"begin\"\n | \"lace\"\n | \"sorbet\";\n\n/**\n * Interface to describe window extension.\n */\nexport interface IWindowCip30Extension {\n apiVersion: string;\n enable: () => Promise<Cip30WalletApi>;\n icon: string;\n isEnabled: () => Promise<boolean>;\n name: TSupportedWalletExtensions;\n}\n\n/**\n * Interface to describe our expected window configuration.\n */\nexport type TWindowCardano = {\n [K in TSupportedWalletExtensions]?: IWindowCip30Extension;\n};\n\n/**\n * The metadata resolver should return a map composed of\n * the asset ID as the key, and the metadata as the value.\n */\nexport type TMetadataResolverFunc<\n T extends IAssetAmountMetadata = IAssetAmountMetadata\n> = (\n assetIds: string[],\n normalizeAssetIdFunc: typeof normalizeAssetIdWithDot,\n isAdaAssetFunc: typeof isAdaAsset\n) => Promise<Map<string, T>>;\n\n/**\n * Options that are passed to the WalletObserver instance.\n */\nexport interface IResolvedWalletObserverOptions<\n AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata\n> {\n metadataResolver: TMetadataResolverFunc<AssetMetadata>;\n persistence: boolean;\n peerConnectArgs: DAppPeerConnectParameters;\n connectTimeout: number;\n}\n\n/**\n * Options that are passed to the WalletObserver instance.\n */\nexport type TWalletObserverOptions<\n AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata\n> = Partial<IResolvedWalletObserverOptions<AssetMetadata>>;\n\n/**\n * Interface describing the Map type of an asset.\n */\nexport type TAssetAmountMap<\n T extends IAssetAmountMetadata = IAssetAmountMetadata\n> = WalletAssetMap<T>;\n\n/**\n * Interface describing the structure of the persistent\n * data located in local storage.\n */\nexport interface IWalletObserverSeed {\n activeWallet: TSupportedWalletExtensions;\n}\n\n/**\n * The return type for the WalletObserver.getCip45Instance\n * method.\n */\nexport type TGetPeerConnectInstance = () => {\n name: string;\n icon: string | null;\n instance: DAppPeerConnect;\n};\n\nexport interface IWalletObserverSync<\n AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata\n> {\n balanceMap: WalletBalanceMap<AssetMetadata>;\n usedAddresses: string[];\n unusedAddresses: string[];\n utxos?: TransactionUnspentOutput[];\n network: number;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"observer.js","names":[],"sources":["../../../src/@types/observer.ts"],"sourcesContent":["import type { TransactionUnspentOutput } from \"@cardano-sdk/core/dist/cjs/Serialization/index.js\";\nimport type { Cip30WalletApi } from \"@cardano-sdk/dapp-connector\";\nimport type { DAppPeerConnect } from \"@fabianbormann/cardano-peer-connect\";\nimport type { DAppPeerConnectParameters } from \"@fabianbormann/cardano-peer-connect/dist/src/types.js\";\nimport type { IAssetAmountMetadata } from \"@sundaeswap/asset\";\n\nimport { WalletAssetMap } from \"../classes/WalletAssetMap.class.js\";\nimport { WalletBalanceMap } from \"../classes/WalletBalanceMap.class.js\";\nimport { isAdaAsset, normalizeAssetIdWithDot } from \"../utils/assets.js\";\n\n/**\n * A list of support CIP-30 wallet extensions in the browser.\n */\nexport type TSupportedWalletExtensions =\n | \"nami\"\n | \"eternl\"\n | \"typhoncip30\"\n | \"ccvault\"\n | \"typhon\"\n | \"yoroi\"\n | \"flint\"\n | \"gerowallet\"\n | \"cardwallet\"\n | \"nufi\"\n | \"begin\"\n | \"lace\"\n | \"sorbet\";\n\n/**\n * Interface to describe window extension.\n */\nexport interface IWindowCip30Extension {\n apiVersion: string;\n enable: () => Promise<Cip30WalletApi>;\n icon: string;\n isEnabled: () => Promise<boolean>;\n name: TSupportedWalletExtensions;\n}\n\n/**\n * Interface to describe our expected window configuration.\n */\nexport type TWindowCardano = {\n [K in TSupportedWalletExtensions]?: IWindowCip30Extension;\n};\n\n/**\n * The metadata resolver should return a map composed of\n * the asset ID as the key, and the metadata as the value.\n */\nexport type TMetadataResolverFunc<\n T extends IAssetAmountMetadata = IAssetAmountMetadata\n> = (\n assetIds: string[],\n normalizeAssetIdFunc: typeof normalizeAssetIdWithDot,\n isAdaAssetFunc: typeof isAdaAsset\n) => Promise<Map<string, T>>;\n\n/**\n * Options that are passed to the WalletObserver instance.\n */\nexport interface IResolvedWalletObserverOptions<\n AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata\n> {\n metadataResolver: TMetadataResolverFunc<AssetMetadata>;\n persistence: boolean;\n peerConnectArgs: DAppPeerConnectParameters;\n connectTimeout: number;\n debug: boolean;\n}\n\n/**\n * Options that are passed to the WalletObserver instance.\n */\nexport type TWalletObserverOptions<\n AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata\n> = Partial<IResolvedWalletObserverOptions<AssetMetadata>>;\n\n/**\n * Interface describing the Map type of an asset.\n */\nexport type TAssetAmountMap<\n T extends IAssetAmountMetadata = IAssetAmountMetadata\n> = WalletAssetMap<T>;\n\n/**\n * Interface describing the structure of the persistent\n * data located in local storage.\n */\nexport interface IWalletObserverSeed {\n activeWallet: TSupportedWalletExtensions;\n}\n\n/**\n * The return type for the WalletObserver.getCip45Instance\n * method.\n */\nexport type TGetPeerConnectInstance = () => {\n name: string;\n icon: string | null;\n instance: DAppPeerConnect;\n};\n\nexport interface IWalletObserverSync<\n AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata\n> {\n balanceMap: WalletBalanceMap<AssetMetadata>;\n usedAddresses: string[];\n unusedAddresses: string[];\n utxos?: TransactionUnspentOutput[];\n network: number;\n}\n"],"mappings":"","ignoreList":[]}
@@ -90,7 +90,7 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
90
90
  * @returns {Promise<IWalletObserverSync>} - A promise that resolves to the wallet sync data.
91
91
  */
92
92
  _defineProperty(_this, "sync", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
93
- var newNetwork, _yield$Promise$all, _yield$Promise$all2, newBalanceMap, newUsedAddresses, newUnusedAddresses, newOutputs, newCollateral, result;
93
+ var start, newNetwork, _yield$Promise$all, _yield$Promise$all2, newBalanceMap, newUsedAddresses, newUnusedAddresses, newOutputs, newCollateral, result, end;
94
94
  return _regeneratorRuntime().wrap(function _callee$(_context) {
95
95
  while (1) switch (_context.prev = _context.next) {
96
96
  case 0:
@@ -100,39 +100,40 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
100
100
  }
101
101
  throw new Error("Attempted to perform a sync operation without a connected wallet.");
102
102
  case 2:
103
- _context.prev = 2;
103
+ start = performance.now();
104
+ _context.prev = 3;
104
105
  _this._performingSync = true;
105
106
  _this.dispatch(_events.EWalletObserverEvents.SYNCING_WALLET_START);
106
- _context.prev = 5;
107
- _context.next = 8;
107
+ _context.prev = 6;
108
+ _context.next = 9;
108
109
  return _this.getNetwork();
109
- case 8:
110
+ case 9:
110
111
  newNetwork = _context.sent;
111
- _context.next = 26;
112
+ _context.next = 27;
112
113
  break;
113
- case 11:
114
- _context.prev = 11;
115
- _context.t0 = _context["catch"](5);
116
- _context.prev = 13;
117
- _context.next = 16;
114
+ case 12:
115
+ _context.prev = 12;
116
+ _context.t0 = _context["catch"](6);
117
+ _context.prev = 14;
118
+ _context.next = 17;
118
119
  return _this.syncApi();
119
- case 16:
120
- _context.next = 18;
120
+ case 17:
121
+ _context.next = 19;
121
122
  return _this.getNetwork();
122
- case 18:
123
+ case 19:
123
124
  newNetwork = _context.sent;
124
- _context.next = 26;
125
+ _context.next = 27;
125
126
  break;
126
- case 21:
127
- _context.prev = 21;
128
- _context.t1 = _context["catch"](13);
127
+ case 22:
128
+ _context.prev = 22;
129
+ _context.t1 = _context["catch"](14);
129
130
  _this.dispatch(_events.EWalletObserverEvents.SYNCING_WALLET_END);
130
131
  _this._performingSync = false;
131
132
  throw _context.t1;
132
- case 26:
133
- _context.next = 28;
133
+ case 27:
134
+ _context.next = 29;
134
135
  return Promise.all([_this.getBalanceMap(), _this.getUsedAddresses(), _this.getUnusedAddresses(), _this.getUtxos(), _this.getCollateral()]);
135
- case 28:
136
+ case 29:
136
137
  _yield$Promise$all = _context.sent;
137
138
  _yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 5);
138
139
  newBalanceMap = _yield$Promise$all2[0];
@@ -150,17 +151,21 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
150
151
  };
151
152
  _this.dispatch(_events.EWalletObserverEvents.SYNCING_WALLET_END, result);
152
153
  _this._performingSync = false;
154
+ end = performance.now();
155
+ if (_this._options.debug) {
156
+ console.log("sync: ".concat(end - start, "ms"));
157
+ }
153
158
  return _context.abrupt("return", result);
154
- case 41:
155
- _context.prev = 41;
156
- _context.t2 = _context["catch"](2);
159
+ case 44:
160
+ _context.prev = 44;
161
+ _context.t2 = _context["catch"](3);
157
162
  _this._performingSync = false;
158
163
  throw _context.t2;
159
- case 45:
164
+ case 48:
160
165
  case "end":
161
166
  return _context.stop();
162
167
  }
163
- }, _callee, null, [[2, 41], [5, 11], [13, 21]]);
168
+ }, _callee, null, [[3, 44], [6, 12], [14, 22]]);
164
169
  })));
165
170
  /**
166
171
  * Synchronizes the API with the wallet. This is useful if the account has changed,
@@ -256,46 +261,47 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
256
261
  _defineProperty(_this, "connectWallet", /*#__PURE__*/function () {
257
262
  var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(extension) {
258
263
  var _window$cardano2;
259
- var attempts, extensionObject, _this$peerConnectInst, _window$cardano3, seed;
264
+ var start, attempts, extensionObject, _this$peerConnectInst, _window$cardano3, seed, end;
260
265
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
261
266
  while (1) switch (_context3.prev = _context3.next) {
262
267
  case 0:
268
+ start = performance.now();
263
269
  _this.dispatch(_events.EWalletObserverEvents.CONNECT_WALLET_START);
264
270
  attempts = 0;
265
271
  extensionObject = (_window$cardano2 = window.cardano) === null || _window$cardano2 === void 0 ? void 0 : _window$cardano2[extension]; // Disconnect any CIP45 connections.
266
272
  if (!(extension !== null && extension !== void 0 && extension.includes("p2p"))) {
267
273
  (_this$peerConnectInst = _this.peerConnectInstance) === null || _this$peerConnectInst === void 0 || _this$peerConnectInst.shutdownServer();
268
274
  }
269
- case 4:
275
+ case 5:
270
276
  if (!(typeof extensionObject === "undefined")) {
271
- _context3.next = 13;
277
+ _context3.next = 14;
272
278
  break;
273
279
  }
274
280
  if (!(attempts === 40)) {
275
- _context3.next = 7;
281
+ _context3.next = 8;
276
282
  break;
277
283
  }
278
- return _context3.abrupt("break", 13);
279
- case 7:
280
- _context3.next = 9;
284
+ return _context3.abrupt("break", 14);
285
+ case 8:
286
+ _context3.next = 10;
281
287
  return new Promise(function (res) {
282
288
  return setTimeout(res, _this._options.connectTimeout / 40);
283
289
  });
284
- case 9:
290
+ case 10:
285
291
  extensionObject = (_window$cardano3 = window.cardano) === null || _window$cardano3 === void 0 ? void 0 : _window$cardano3[extension];
286
292
  attempts++;
287
- _context3.next = 4;
293
+ _context3.next = 5;
288
294
  break;
289
- case 13:
295
+ case 14:
290
296
  if (extensionObject) {
291
- _context3.next = 15;
297
+ _context3.next = 16;
292
298
  break;
293
299
  }
294
300
  throw new Error("Wallet extension not found in the global context.");
295
- case 15:
296
- _context3.next = 17;
301
+ case 16:
302
+ _context3.next = 18;
297
303
  return _this.syncApi(extension);
298
- case 17:
304
+ case 18:
299
305
  _this._activeWallet = extension;
300
306
  if (_this._options.persistence) {
301
307
  seed = {
@@ -306,7 +312,11 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
306
312
  _this.dispatch(_events.EWalletObserverEvents.CONNECT_WALLET_END, {
307
313
  extension: extension
308
314
  });
309
- case 20:
315
+ end = performance.now();
316
+ if (_this._options.debug) {
317
+ console.log("connectWallet: ".concat(end - start, "ms"));
318
+ }
319
+ case 23:
310
320
  case "end":
311
321
  return _context3.stop();
312
322
  }
@@ -317,27 +327,32 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
317
327
  };
318
328
  }());
319
329
  _defineProperty(_this, "getCip45Instance", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
320
- var _yield$getPeerConnect, DAppPeerConnect;
330
+ var start, _yield$getPeerConnect, DAppPeerConnect, end;
321
331
  return _regeneratorRuntime().wrap(function _callee4$(_context4) {
322
332
  while (1) switch (_context4.prev = _context4.next) {
323
333
  case 0:
334
+ start = performance.now();
324
335
  if (_this.peerConnectInstance) {
325
- _context4.next = 6;
336
+ _context4.next = 7;
326
337
  break;
327
338
  }
328
- _context4.next = 3;
339
+ _context4.next = 4;
329
340
  return (0, _getLibs.getPeerConnect)();
330
- case 3:
341
+ case 4:
331
342
  _yield$getPeerConnect = _context4.sent;
332
343
  DAppPeerConnect = _yield$getPeerConnect.DAppPeerConnect;
333
344
  _this.peerConnectInstance = new DAppPeerConnect(_this._options.peerConnectArgs);
334
- case 6:
345
+ case 7:
346
+ end = performance.now();
347
+ if (_this._options.debug) {
348
+ console.log("getCip45Instance: ".concat(end - start, "ms"));
349
+ }
335
350
  return _context4.abrupt("return", {
336
351
  name: _this._options.peerConnectArgs.dAppInfo.name,
337
352
  icon: _this.peerConnectInstance.getIdenticon(),
338
353
  instance: _this.peerConnectInstance
339
354
  });
340
- case 7:
355
+ case 10:
341
356
  case "end":
342
357
  return _context4.stop();
343
358
  }
@@ -386,7 +401,7 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
386
401
  */
387
402
  _defineProperty(_this, "getBalanceMap", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
388
403
  var _data$multiasset$keys, _data$multiasset, _data$multiasset$entr, _data$multiasset2;
389
- var _yield$Promise$all3, _yield$Promise$all4, cbor, Serialization, typedHex, data, multiassetKeys, metadata, balanceMap, multiassetEntries, _iterator, _step, _step$value, id, amount;
404
+ var start, _yield$Promise$all3, _yield$Promise$all4, cbor, Serialization, typedHex, data, multiassetKeys, metadata, balanceMap, multiassetEntries, _iterator, _step, _step$value, id, amount, end;
390
405
  return _regeneratorRuntime().wrap(function _callee5$(_context5) {
391
406
  while (1) switch (_context5.prev = _context5.next) {
392
407
  case 0:
@@ -396,10 +411,11 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
396
411
  }
397
412
  throw new Error("Attempted to query balance without an API instance.");
398
413
  case 2:
414
+ start = performance.now();
399
415
  _this.dispatch(_events.EWalletObserverEvents.GET_BALANCE_MAP_START);
400
- _context5.next = 5;
416
+ _context5.next = 6;
401
417
  return Promise.all([_this.api.getBalance(), (0, _getLibs.getCardanoCore)(), (0, _getLibs.getCardanoUtil)()]);
402
- case 5:
418
+ case 6:
403
419
  _yield$Promise$all3 = _context5.sent;
404
420
  _yield$Promise$all4 = _slicedToArray(_yield$Promise$all3, 3);
405
421
  cbor = _yield$Promise$all4[0];
@@ -407,9 +423,9 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
407
423
  typedHex = _yield$Promise$all4[2].typedHex;
408
424
  data = Serialization.Value.fromCbor(typedHex(cbor));
409
425
  multiassetKeys = (_data$multiasset$keys = (_data$multiasset = data.multiasset()) === null || _data$multiasset === void 0 ? void 0 : _data$multiasset.keys()) !== null && _data$multiasset$keys !== void 0 ? _data$multiasset$keys : [];
410
- _context5.next = 14;
426
+ _context5.next = 15;
411
427
  return _this.__metadataResolverWithCache([WalletObserver.ADA_ASSET_ID].concat(_toConsumableArray(multiassetKeys)));
412
- case 14:
428
+ case 15:
413
429
  metadata = _context5.sent;
414
430
  balanceMap = new _WalletBalanceMapClass.WalletBalanceMap(_this);
415
431
  balanceMap.set(WalletObserver.ADA_ASSET_ID, new _asset.AssetAmount(data.coin(), metadata.get(WalletObserver.ADA_ASSET_ID)));
@@ -430,8 +446,12 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
430
446
  _this.dispatch(_events.EWalletObserverEvents.GET_BALANCE_MAP_END, {
431
447
  balanceMap: balanceMap
432
448
  });
449
+ end = performance.now();
450
+ if (_this._options.debug) {
451
+ console.log("getBalanceMap: ".concat(end - start, "ms"));
452
+ }
433
453
  return _context5.abrupt("return", balanceMap);
434
- case 21:
454
+ case 24:
435
455
  case "end":
436
456
  return _context5.stop();
437
457
  }
@@ -443,7 +463,7 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
443
463
  * @returns {Promise<number>} The network ID.
444
464
  */
445
465
  _defineProperty(_this, "getNetwork", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {
446
- var val;
466
+ var start, val, end;
447
467
  return _regeneratorRuntime().wrap(function _callee6$(_context6) {
448
468
  while (1) switch (_context6.prev = _context6.next) {
449
469
  case 0:
@@ -453,13 +473,18 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
453
473
  }
454
474
  throw new Error("Attempted to query network without an API instance.");
455
475
  case 2:
456
- _context6.next = 4;
476
+ start = performance.now();
477
+ _context6.next = 5;
457
478
  return _this.api.getNetworkId();
458
- case 4:
479
+ case 5:
459
480
  val = _context6.sent;
460
481
  _this.network = val;
482
+ end = performance.now();
483
+ if (_this._options.debug) {
484
+ console.log("getNetwork: ".concat(end - start, "ms"));
485
+ }
461
486
  return _context6.abrupt("return", val);
462
- case 7:
487
+ case 10:
463
488
  case "end":
464
489
  return _context6.stop();
465
490
  }
@@ -471,7 +496,7 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
471
496
  * @returns {Promise<string[]>} The list of addresses.
472
497
  */
473
498
  _defineProperty(_this, "getUsedAddresses", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {
474
- var _yield$Promise$all5, _yield$Promise$all6, cbor, Cardano, typedHex, data;
499
+ var start, _yield$Promise$all5, _yield$Promise$all6, cbor, Cardano, typedHex, data, end;
475
500
  return _regeneratorRuntime().wrap(function _callee7$(_context7) {
476
501
  while (1) switch (_context7.prev = _context7.next) {
477
502
  case 0:
@@ -481,9 +506,10 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
481
506
  }
482
507
  throw new Error("Attempted to query used addresses without an API instance.");
483
508
  case 2:
484
- _context7.next = 4;
509
+ start = performance.now();
510
+ _context7.next = 5;
485
511
  return Promise.all([_this.api.getUsedAddresses(), (0, _getLibs.getCardanoCore)(), (0, _getLibs.getCardanoUtil)()]);
486
- case 4:
512
+ case 5:
487
513
  _yield$Promise$all5 = _context7.sent;
488
514
  _yield$Promise$all6 = _slicedToArray(_yield$Promise$all5, 3);
489
515
  cbor = _yield$Promise$all6[0];
@@ -492,8 +518,12 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
492
518
  data = cbor.map(function (val) {
493
519
  return Cardano.Address.fromBytes(typedHex(val)).toBech32();
494
520
  });
521
+ end = performance.now();
522
+ if (_this._options.debug) {
523
+ console.log("getUsedAddresses: ".concat(end - start, "ms"));
524
+ }
495
525
  return _context7.abrupt("return", data);
496
- case 11:
526
+ case 14:
497
527
  case "end":
498
528
  return _context7.stop();
499
529
  }
@@ -505,7 +535,7 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
505
535
  * @returns {Promise<string[]>} The list of addresses.
506
536
  */
507
537
  _defineProperty(_this, "getUnusedAddresses", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {
508
- var _yield$Promise$all7, _yield$Promise$all8, cbor, Cardano, typedHex, data;
538
+ var start, _yield$Promise$all7, _yield$Promise$all8, cbor, Cardano, typedHex, data, end;
509
539
  return _regeneratorRuntime().wrap(function _callee8$(_context8) {
510
540
  while (1) switch (_context8.prev = _context8.next) {
511
541
  case 0:
@@ -515,9 +545,10 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
515
545
  }
516
546
  throw new Error("Attempted to query unused addresses without an API instance.");
517
547
  case 2:
518
- _context8.next = 4;
548
+ start = performance.now();
549
+ _context8.next = 5;
519
550
  return Promise.all([_this.api.getUnusedAddresses(), (0, _getLibs.getCardanoCore)(), (0, _getLibs.getCardanoUtil)()]);
520
- case 4:
551
+ case 5:
521
552
  _yield$Promise$all7 = _context8.sent;
522
553
  _yield$Promise$all8 = _slicedToArray(_yield$Promise$all7, 3);
523
554
  cbor = _yield$Promise$all8[0];
@@ -526,8 +557,12 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
526
557
  data = cbor.map(function (val) {
527
558
  return Cardano.Address.fromBytes(typedHex(val)).toBech32();
528
559
  });
560
+ end = performance.now();
561
+ if (_this._options.debug) {
562
+ console.log("getUnusedAddresses: ".concat(end - start, "ms"));
563
+ }
529
564
  return _context8.abrupt("return", data);
530
- case 11:
565
+ case 14:
531
566
  case "end":
532
567
  return _context8.stop();
533
568
  }
@@ -539,7 +574,7 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
539
574
  * @returns {Promise<TransactionUnspentOutput[]>} The list of TransactionUnspentOutputs.
540
575
  */
541
576
  _defineProperty(_this, "getUtxos", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {
542
- var _yield$Promise$all9, _yield$Promise$all10, cbor, Serialization, typedHex, data;
577
+ var start, _yield$Promise$all9, _yield$Promise$all10, cbor, Serialization, typedHex, data, end;
543
578
  return _regeneratorRuntime().wrap(function _callee9$(_context9) {
544
579
  while (1) switch (_context9.prev = _context9.next) {
545
580
  case 0:
@@ -549,9 +584,10 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
549
584
  }
550
585
  throw new Error("Attempted to query UTXOs without an API instance.");
551
586
  case 2:
552
- _context9.next = 4;
587
+ start = performance.now();
588
+ _context9.next = 5;
553
589
  return Promise.all([_this.api.getUtxos(), (0, _getLibs.getCardanoCore)(), (0, _getLibs.getCardanoUtil)()]);
554
- case 4:
590
+ case 5:
555
591
  _yield$Promise$all9 = _context9.sent;
556
592
  _yield$Promise$all10 = _slicedToArray(_yield$Promise$all9, 3);
557
593
  cbor = _yield$Promise$all10[0];
@@ -565,8 +601,12 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
565
601
  txOutput.output = txOutput.output.bind(txOutput);
566
602
  return txOutput;
567
603
  });
604
+ end = performance.now();
605
+ if (_this._options.debug) {
606
+ console.log("getUtxos: ".concat(end - start, "ms"));
607
+ }
568
608
  return _context9.abrupt("return", data);
569
- case 11:
609
+ case 14:
570
610
  case "end":
571
611
  return _context9.stop();
572
612
  }
@@ -578,7 +618,7 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
578
618
  * @returns {Promise<TransactionUnspentOutput[]>} The list of TransactionUnspentOutputs.
579
619
  */
580
620
  _defineProperty(_this, "getCollateral", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {
581
- var _yield$Promise$all11, _yield$Promise$all12, cbor, Serialization, typedHex, data;
621
+ var start, _yield$Promise$all11, _yield$Promise$all12, cbor, Serialization, typedHex, data, end;
582
622
  return _regeneratorRuntime().wrap(function _callee11$(_context11) {
583
623
  while (1) switch (_context11.prev = _context11.next) {
584
624
  case 0:
@@ -588,7 +628,8 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
588
628
  }
589
629
  throw new Error("Attempted to query UTXOs without an API instance.");
590
630
  case 2:
591
- _context11.next = 4;
631
+ start = performance.now();
632
+ _context11.next = 5;
592
633
  return Promise.all([_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {
593
634
  var _this$api, _this$api2;
594
635
  var funcCall;
@@ -612,7 +653,7 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
612
653
  }
613
654
  }, _callee10);
614
655
  }))(), (0, _getLibs.getCardanoCore)(), (0, _getLibs.getCardanoUtil)()]);
615
- case 4:
656
+ case 5:
616
657
  _yield$Promise$all11 = _context11.sent;
617
658
  _yield$Promise$all12 = _slicedToArray(_yield$Promise$all11, 3);
618
659
  cbor = _yield$Promise$all12[0];
@@ -626,8 +667,12 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
626
667
  txOutput.output = txOutput.output.bind(txOutput);
627
668
  return txOutput;
628
669
  });
670
+ end = performance.now();
671
+ if (_this._options.debug) {
672
+ console.log("getCollateral: ".concat(end - start, "ms"));
673
+ }
629
674
  return _context11.abrupt("return", data);
630
- case 11:
675
+ case 14:
631
676
  case "end":
632
677
  return _context11.stop();
633
678
  }
@@ -642,12 +687,13 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
642
687
  */
643
688
  _defineProperty(_this, "__metadataResolverWithCache", /*#__PURE__*/function () {
644
689
  var _ref12 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee12(assetIds) {
645
- var cachedKeys, inputKeys, attempts, newMetadata;
690
+ var start, cachedKeys, inputKeys, _end, attempts, newMetadata, end;
646
691
  return _regeneratorRuntime().wrap(function _callee12$(_context12) {
647
692
  while (1) switch (_context12.prev = _context12.next) {
648
693
  case 0:
694
+ start = performance.now();
649
695
  if (!_this._cachedMetadata) {
650
- _context12.next = 5;
696
+ _context12.next = 8;
651
697
  break;
652
698
  }
653
699
  cachedKeys = new Set(_this._cachedMetadata.keys());
@@ -655,48 +701,56 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
655
701
  if (!(cachedKeys.size === inputKeys.size && _toConsumableArray(cachedKeys).every(function (key) {
656
702
  return inputKeys.has(key);
657
703
  }))) {
658
- _context12.next = 5;
704
+ _context12.next = 8;
659
705
  break;
660
706
  }
707
+ _end = performance.now();
708
+ if (_this._options.debug) {
709
+ console.log("metadataResolver (cached): ".concat(_end - start, "ms"));
710
+ }
661
711
  return _context12.abrupt("return", _this._cachedMetadata);
662
- case 5:
712
+ case 8:
663
713
  attempts = 0;
664
- case 6:
714
+ case 9:
665
715
  if (!(attempts <= 3 && !newMetadata)) {
666
- _context12.next = 18;
716
+ _context12.next = 21;
667
717
  break;
668
718
  }
669
- _context12.prev = 7;
670
- _context12.next = 10;
719
+ _context12.prev = 10;
720
+ _context12.next = 13;
671
721
  return _this._options.metadataResolver(assetIds.map(_assets.normalizeAssetIdWithDot), _assets.normalizeAssetIdWithDot, _assets.isAdaAsset);
672
- case 10:
722
+ case 13:
673
723
  newMetadata = _context12.sent;
674
- _context12.next = 16;
724
+ _context12.next = 19;
675
725
  break;
676
- case 13:
677
- _context12.prev = 13;
678
- _context12.t0 = _context12["catch"](7);
679
- attempts++;
680
726
  case 16:
681
- _context12.next = 6;
727
+ _context12.prev = 16;
728
+ _context12.t0 = _context12["catch"](10);
729
+ attempts++;
730
+ case 19:
731
+ _context12.next = 9;
682
732
  break;
683
- case 18:
733
+ case 21:
684
734
  if (newMetadata) {
685
- _context12.next = 22;
735
+ _context12.next = 25;
686
736
  break;
687
737
  }
688
- _context12.next = 21;
738
+ _context12.next = 24;
689
739
  return _this.fallbackMetadataResolver(assetIds.map(_assets.normalizeAssetIdWithDot), _assets.normalizeAssetIdWithDot, _assets.isAdaAsset);
690
- case 21:
740
+ case 24:
691
741
  newMetadata = _context12.sent;
692
- case 22:
742
+ case 25:
693
743
  _this._cachedMetadata = newMetadata;
744
+ end = performance.now();
745
+ if (_this._options.debug) {
746
+ console.log("metadataResolver: ".concat(end - start, "ms"));
747
+ }
694
748
  return _context12.abrupt("return", newMetadata);
695
- case 24:
749
+ case 29:
696
750
  case "end":
697
751
  return _context12.stop();
698
752
  }
699
- }, _callee12, null, [[7, 13]]);
753
+ }, _callee12, null, [[10, 16]]);
700
754
  }));
701
755
  return function (_x3) {
702
756
  return _ref12.apply(this, arguments);
@@ -735,6 +789,7 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
735
789
  metadataResolver: _this.fallbackMetadataResolver,
736
790
  persistence: false,
737
791
  connectTimeout: 10000,
792
+ debug: false,
738
793
  peerConnectArgs: {
739
794
  dAppInfo: {
740
795
  name: "Placeholder dApp Connecter Name",
@@ -785,6 +840,17 @@ var WalletObserver = exports.WalletObserver = /*#__PURE__*/function (_WalletObse
785
840
  function isSyncing() {
786
841
  return this._performingSync;
787
842
  }
843
+
844
+ /**
845
+ * Helper method to check if the instance has an active connection.
846
+ *
847
+ * @returns {boolean}
848
+ */
849
+ }, {
850
+ key: "hasActiveConnection",
851
+ value: function hasActiveConnection() {
852
+ return Boolean(this._activeWallet && this.api);
853
+ }
788
854
  }, {
789
855
  key: "getUtils",
790
856
  value: (