@sundaeswap/wallet-lite 0.0.23 → 0.0.25

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 (25) hide show
  1. package/dist/cjs/@types/observer.js.map +1 -1
  2. package/dist/cjs/classes/WalletObserver.class.js +151 -96
  3. package/dist/cjs/classes/WalletObserver.class.js.map +1 -1
  4. package/dist/cjs/react-components/WalletObserverProvider/hooks/effects/useProviderEventListeners.js +1 -3
  5. package/dist/cjs/react-components/WalletObserverProvider/hooks/effects/useProviderEventListeners.js.map +1 -1
  6. package/dist/cjs/react-components/WalletObserverProvider/hooks/useWalletObserverState.js +62 -59
  7. package/dist/cjs/react-components/WalletObserverProvider/hooks/useWalletObserverState.js.map +1 -1
  8. package/dist/esm/@types/observer.js.map +1 -1
  9. package/dist/esm/classes/WalletObserver.class.js +56 -1
  10. package/dist/esm/classes/WalletObserver.class.js.map +1 -1
  11. package/dist/esm/react-components/WalletObserverProvider/hooks/effects/useProviderEventListeners.js +1 -3
  12. package/dist/esm/react-components/WalletObserverProvider/hooks/effects/useProviderEventListeners.js.map +1 -1
  13. package/dist/esm/react-components/WalletObserverProvider/hooks/useWalletObserverState.js +39 -36
  14. package/dist/esm/react-components/WalletObserverProvider/hooks/useWalletObserverState.js.map +1 -1
  15. package/dist/types/@types/observer.d.ts +1 -0
  16. package/dist/types/@types/observer.d.ts.map +1 -1
  17. package/dist/types/classes/WalletObserver.class.d.ts.map +1 -1
  18. package/dist/types/react-components/WalletObserverProvider/hooks/effects/useProviderEventListeners.d.ts.map +1 -1
  19. package/dist/types/react-components/WalletObserverProvider/hooks/useWalletObserverState.d.ts.map +1 -1
  20. package/dist/types/tsconfig.build.tsbuildinfo +1 -1
  21. package/package.json +1 -1
  22. package/src/@types/observer.ts +1 -0
  23. package/src/classes/WalletObserver.class.ts +68 -1
  24. package/src/react-components/WalletObserverProvider/hooks/effects/useProviderEventListeners.ts +1 -3
  25. package/src/react-components/WalletObserverProvider/hooks/useWalletObserverState.ts +66 -61
@@ -1 +1 @@
1
- {"version":3,"file":"useWalletObserverState.js","names":["_asset","require","_react","_WalletAssetMapClass","_WalletBalanceMapClass","_WalletObserverClass","_comparisons","_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","_catch","delegateYield","asyncGeneratorStep","_asyncToGenerator","arguments","apply","_next","_throw","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_arrayLikeToArray","toString","Array","from","test","isArray","useWalletObserverState","exports","observer","prevActiveWallet","useRef","_useState","useState","_useState2","activeWallet","setActiveWallet","_useState3","AssetAmount","_useState4","adaBalance","setAdaBalance","_useState5","WalletAssetMap","_useState6","handleMetadata","setHandleMetadata","_useState7","WalletBalanceMap","_useState8","balance","setBalance","_useState9","_useState10","network","setNetwork","_useState11","_useState12","usedAddresses","setUsedAddresses","_useState13","_useState14","unusedAddresses","setUnusedAddresses","_useState15","_useState16","utxos","setUtxos","_useState17","_useState18","collateral","setCollateral","_useState19","_useState20","ready","setReady","_useState21","_useState22","isCip45","setIsCip45","syncWallet","useCallback","_callee","newWallet","freshData","newAdaBalance","_callee$","_context","isSyncing","getActiveWallet","undefined","current","prevWallet","sync","balanceMap","get","WalletObserver","ADA_ASSET_ID","prevBalance","amount","areAssetMapsEqual","prevValue","JSON","stringify","_freshData$utxos","prevValueRep","map","toCbor","newValueRep","_freshData$utxos2","includes","handles","setHandles"],"sources":["../../../../../src/react-components/WalletObserverProvider/hooks/useWalletObserverState.ts"],"sourcesContent":["import type { TransactionUnspentOutput } from \"@cardano-sdk/core/dist/cjs/Serialization/index.js\";\nimport { AssetAmount } from \"@sundaeswap/asset\";\nimport { useCallback, useRef, useState } from \"react\";\n\nimport {\n TAssetAmountMap,\n TSupportedWalletExtensions,\n} from \"../../../@types/observer.js\";\nimport { WalletAssetMap } from \"../../../classes/WalletAssetMap.class.js\";\nimport { WalletBalanceMap } from \"../../../classes/WalletBalanceMap.class.js\";\nimport { WalletObserver } from \"../../../classes/WalletObserver.class.js\";\nimport { areAssetMapsEqual } from \"../../../utils/comparisons.js\";\nimport { THandleMetadata } from \"../../contexts/observer/index.js\";\n\n/**\n * Internal use only. The main action that sync WalletObserver api responses with\n * the React context of the WalletObserverProvider.\n *\n * @param {WalletObserver} observer\n */\nexport const useWalletObserverState = (observer: WalletObserver) => {\n const prevActiveWallet = useRef<TSupportedWalletExtensions>();\n const [activeWallet, setActiveWallet] =\n useState<TSupportedWalletExtensions>();\n const [adaBalance, setAdaBalance] = useState<AssetAmount>(\n new AssetAmount(0n)\n );\n const [handleMetadata, setHandleMetadata] = useState<\n TAssetAmountMap<THandleMetadata>\n >(new WalletAssetMap());\n const [balance, setBalance] = useState<WalletBalanceMap>(\n new WalletBalanceMap(observer)\n );\n const [network, setNetwork] = useState<number | undefined>();\n const [usedAddresses, setUsedAddresses] = useState<string[]>([]);\n const [unusedAddresses, setUnusedAddresses] = useState<string[]>([]);\n const [utxos, setUtxos] = useState<TransactionUnspentOutput[]>();\n const [collateral, setCollateral] = useState<TransactionUnspentOutput[]>();\n const [ready, setReady] = useState(false);\n const [isCip45, setIsCip45] = useState(false);\n\n const syncWallet = useCallback(async () => {\n if (observer.isSyncing()) {\n return;\n }\n\n const newWallet = observer.getActiveWallet();\n\n if (!newWallet) {\n setAdaBalance(new AssetAmount(0n));\n setBalance(new WalletBalanceMap(observer));\n setUsedAddresses([]);\n setUnusedAddresses([]);\n setActiveWallet(undefined);\n setNetwork(undefined);\n setUtxos(undefined);\n setCollateral(undefined);\n return;\n }\n\n prevActiveWallet.current = newWallet;\n setActiveWallet((prevWallet) =>\n newWallet === prevWallet ? prevWallet : newWallet\n );\n\n const freshData = await observer.sync();\n\n const newAdaBalance = freshData.balanceMap.get(WalletObserver.ADA_ASSET_ID);\n if (newAdaBalance) {\n setAdaBalance((prevBalance) =>\n prevBalance.amount === newAdaBalance.amount\n ? prevBalance\n : newAdaBalance\n );\n }\n\n setBalance((prevBalance) =>\n areAssetMapsEqual(prevBalance, freshData.balanceMap)\n ? prevBalance\n : freshData.balanceMap\n );\n\n setUsedAddresses((prevValue) =>\n JSON.stringify(prevValue) === JSON.stringify(freshData.usedAddresses)\n ? prevValue\n : freshData.usedAddresses\n );\n\n setUnusedAddresses((prevValue) =>\n JSON.stringify(prevValue) === JSON.stringify(freshData.unusedAddresses)\n ? prevValue\n : freshData.unusedAddresses\n );\n\n setNetwork((prevValue) =>\n prevValue === freshData.network ? prevValue : freshData.network\n );\n\n setUtxos((prevValue) => {\n const prevValueRep = prevValue?.map((v) => v.toCbor());\n const newValueRep = freshData.utxos?.map((v) => v.toCbor());\n if (prevValueRep !== newValueRep) {\n return freshData.utxos;\n }\n\n return prevValue;\n });\n\n setCollateral((prevValue) => {\n const prevValueRep = prevValue?.map((v) => v.toCbor());\n const newValueRep = freshData.utxos?.map((v) => v.toCbor());\n if (prevValueRep !== newValueRep) {\n return freshData.utxos;\n }\n\n return prevValue;\n });\n\n setReady(true);\n setIsCip45(newWallet.includes(\"p2p\"));\n }, [observer]);\n\n return {\n activeWallet,\n setActiveWallet,\n adaBalance,\n setAdaBalance,\n balance,\n setBalance,\n handles: handleMetadata,\n setHandles: setHandleMetadata,\n isCip45,\n setIsCip45,\n network,\n setNetwork,\n unusedAddresses,\n setUnusedAddresses,\n usedAddresses,\n setUsedAddresses,\n utxos,\n setUtxos,\n collateral,\n setCollateral,\n syncWallet,\n ready,\n setReady,\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useWalletObserverState.js","names":["_asset","require","_react","_reactDom","_WalletAssetMapClass","_WalletBalanceMapClass","_WalletObserverClass","_comparisons","_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","_catch","delegateYield","asyncGeneratorStep","_asyncToGenerator","arguments","apply","_next","_throw","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_arrayLikeToArray","toString","Array","from","test","isArray","useWalletObserverState","exports","observer","_useState","useState","_useState2","activeWallet","setActiveWallet","_useState3","AssetAmount","_useState4","adaBalance","setAdaBalance","_useState5","WalletAssetMap","_useState6","handleMetadata","setHandleMetadata","_useState7","WalletBalanceMap","_useState8","balance","setBalance","_useState9","_useState10","network","setNetwork","_useState11","_useState12","usedAddresses","setUsedAddresses","_useState13","_useState14","unusedAddresses","setUnusedAddresses","_useState15","_useState16","utxos","setUtxos","_useState17","_useState18","collateral","setCollateral","_useState19","_useState20","ready","setReady","_useState21","_useState22","isCip45","setIsCip45","syncWallet","useCallback","_callee","newWallet","freshData","_callee$","_context","isSyncing","getActiveWallet","unstable_batchedUpdates","undefined","sync","prevWallet","newAdaBalance","balanceMap","get","WalletObserver","ADA_ASSET_ID","prevBalance","amount","areAssetMapsEqual","prevValue","JSON","stringify","_freshData$utxos","prevValueRep","map","toCbor","newValueRep","_freshData$utxos2","includes","handles","setHandles"],"sources":["../../../../../src/react-components/WalletObserverProvider/hooks/useWalletObserverState.ts"],"sourcesContent":["import type { TransactionUnspentOutput } from \"@cardano-sdk/core/dist/cjs/Serialization/index.js\";\nimport { AssetAmount } from \"@sundaeswap/asset\";\nimport { useCallback, useState } from \"react\";\nimport { unstable_batchedUpdates } from \"react-dom\";\n\nimport {\n TAssetAmountMap,\n TSupportedWalletExtensions,\n} from \"../../../@types/observer.js\";\nimport { WalletAssetMap } from \"../../../classes/WalletAssetMap.class.js\";\nimport { WalletBalanceMap } from \"../../../classes/WalletBalanceMap.class.js\";\nimport { WalletObserver } from \"../../../classes/WalletObserver.class.js\";\nimport { areAssetMapsEqual } from \"../../../utils/comparisons.js\";\nimport { THandleMetadata } from \"../../contexts/observer/index.js\";\n\n/**\n * Internal use only. The main action that sync WalletObserver api responses with\n * the React context of the WalletObserverProvider.\n *\n * @param {WalletObserver} observer\n */\nexport const useWalletObserverState = (observer: WalletObserver) => {\n const [activeWallet, setActiveWallet] =\n useState<TSupportedWalletExtensions>();\n const [adaBalance, setAdaBalance] = useState<AssetAmount>(\n new AssetAmount(0n)\n );\n const [handleMetadata, setHandleMetadata] = useState<\n TAssetAmountMap<THandleMetadata>\n >(new WalletAssetMap());\n const [balance, setBalance] = useState<WalletBalanceMap>(\n new WalletBalanceMap(observer)\n );\n const [network, setNetwork] = useState<number | undefined>();\n const [usedAddresses, setUsedAddresses] = useState<string[]>([]);\n const [unusedAddresses, setUnusedAddresses] = useState<string[]>([]);\n const [utxos, setUtxos] = useState<TransactionUnspentOutput[]>();\n const [collateral, setCollateral] = useState<TransactionUnspentOutput[]>();\n const [ready, setReady] = useState(false);\n const [isCip45, setIsCip45] = useState(false);\n\n const syncWallet = useCallback(async () => {\n if (observer.isSyncing()) {\n return;\n }\n\n const newWallet = observer.getActiveWallet();\n\n if (!newWallet) {\n unstable_batchedUpdates(() => {\n setAdaBalance(new AssetAmount(0n));\n setBalance(new WalletBalanceMap(observer));\n setUsedAddresses([]);\n setUnusedAddresses([]);\n setActiveWallet(undefined);\n setNetwork(undefined);\n setUtxos(undefined);\n setCollateral(undefined);\n });\n return;\n }\n\n const freshData = await observer.sync();\n\n unstable_batchedUpdates(() => {\n setActiveWallet((prevWallet) =>\n newWallet === prevWallet ? prevWallet : newWallet\n );\n\n const newAdaBalance = freshData.balanceMap.get(\n WalletObserver.ADA_ASSET_ID\n );\n if (newAdaBalance) {\n setAdaBalance((prevBalance) =>\n prevBalance.amount === newAdaBalance.amount\n ? prevBalance\n : newAdaBalance\n );\n }\n\n setBalance((prevBalance) =>\n areAssetMapsEqual(prevBalance, freshData.balanceMap)\n ? prevBalance\n : freshData.balanceMap\n );\n\n setUsedAddresses((prevValue) =>\n JSON.stringify(prevValue) === JSON.stringify(freshData.usedAddresses)\n ? prevValue\n : freshData.usedAddresses\n );\n\n setUnusedAddresses((prevValue) =>\n JSON.stringify(prevValue) === JSON.stringify(freshData.unusedAddresses)\n ? prevValue\n : freshData.unusedAddresses\n );\n\n setNetwork((prevValue) =>\n prevValue === freshData.network ? prevValue : freshData.network\n );\n\n setUtxos((prevValue) => {\n const prevValueRep = prevValue?.map((v) => v.toCbor());\n const newValueRep = freshData.utxos?.map((v) => v.toCbor());\n if (prevValueRep !== newValueRep) {\n return freshData.utxos;\n }\n\n return prevValue;\n });\n\n setCollateral((prevValue) => {\n const prevValueRep = prevValue?.map((v) => v.toCbor());\n const newValueRep = freshData.utxos?.map((v) => v.toCbor());\n if (prevValueRep !== newValueRep) {\n return freshData.utxos;\n }\n\n return prevValue;\n });\n\n setReady(true);\n setIsCip45(newWallet.includes(\"p2p\"));\n });\n }, [observer]);\n\n return {\n activeWallet,\n setActiveWallet,\n adaBalance,\n setAdaBalance,\n balance,\n setBalance,\n handles: handleMetadata,\n setHandles: setHandleMetadata,\n isCip45,\n setIsCip45,\n network,\n setNetwork,\n unusedAddresses,\n setUnusedAddresses,\n usedAddresses,\n setUsedAddresses,\n utxos,\n setUtxos,\n collateral,\n setCollateral,\n syncWallet,\n ready,\n setReady,\n };\n};\n"],"mappings":"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","ignoreList":[]}
@@ -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":[]}
@@ -60,6 +60,7 @@ export class WalletObserver extends WalletObserverEvent {
60
60
  if (!this.api) {
61
61
  throw new Error("Attempted to perform a sync operation without a connected wallet.");
62
62
  }
63
+ const start = performance.now();
63
64
  try {
64
65
  this._performingSync = true;
65
66
  this.dispatch(EWalletObserverEvents.SYNCING_WALLET_START);
@@ -87,6 +88,10 @@ export class WalletObserver extends WalletObserverEvent {
87
88
  };
88
89
  this.dispatch(EWalletObserverEvents.SYNCING_WALLET_END, result);
89
90
  this._performingSync = false;
91
+ const end = performance.now();
92
+ if (this._options.debug) {
93
+ console.log(`sync: ${end - start}ms`);
94
+ }
90
95
  return result;
91
96
  } catch (e) {
92
97
  this._performingSync = false;
@@ -142,6 +147,7 @@ export class WalletObserver extends WalletObserverEvent {
142
147
  * @return {Promise<void>}
143
148
  */
144
149
  _defineProperty(this, "connectWallet", async extension => {
150
+ const start = performance.now();
145
151
  this.dispatch(EWalletObserverEvents.CONNECT_WALLET_START);
146
152
  let attempts = 0;
147
153
  let extensionObject = window.cardano?.[extension];
@@ -172,14 +178,23 @@ export class WalletObserver extends WalletObserverEvent {
172
178
  this.dispatch(EWalletObserverEvents.CONNECT_WALLET_END, {
173
179
  extension
174
180
  });
181
+ const end = performance.now();
182
+ if (this._options.debug) {
183
+ console.log(`connectWallet: ${end - start}ms`);
184
+ }
175
185
  });
176
186
  _defineProperty(this, "getCip45Instance", async () => {
187
+ const start = performance.now();
177
188
  if (!this.peerConnectInstance) {
178
189
  const {
179
190
  DAppPeerConnect
180
191
  } = await getPeerConnect();
181
192
  this.peerConnectInstance = new DAppPeerConnect(this._options.peerConnectArgs);
182
193
  }
194
+ const end = performance.now();
195
+ if (this._options.debug) {
196
+ console.log(`getCip45Instance: ${end - start}ms`);
197
+ }
183
198
  return {
184
199
  name: this._options.peerConnectArgs.dAppInfo.name,
185
200
  icon: this.peerConnectInstance.getIdenticon(),
@@ -229,6 +244,7 @@ export class WalletObserver extends WalletObserverEvent {
229
244
  if (!this.api) {
230
245
  throw new Error("Attempted to query balance without an API instance.");
231
246
  }
247
+ const start = performance.now();
232
248
  this.dispatch(EWalletObserverEvents.GET_BALANCE_MAP_START);
233
249
  const [cbor, {
234
250
  Serialization
@@ -249,6 +265,10 @@ export class WalletObserver extends WalletObserverEvent {
249
265
  this.dispatch(EWalletObserverEvents.GET_BALANCE_MAP_END, {
250
266
  balanceMap
251
267
  });
268
+ const end = performance.now();
269
+ if (this._options.debug) {
270
+ console.log(`getBalanceMap: ${end - start}ms`);
271
+ }
252
272
  return balanceMap;
253
273
  });
254
274
  /**
@@ -260,8 +280,13 @@ export class WalletObserver extends WalletObserverEvent {
260
280
  if (!this.api) {
261
281
  throw new Error("Attempted to query network without an API instance.");
262
282
  }
283
+ const start = performance.now();
263
284
  const val = await this.api.getNetworkId();
264
285
  this.network = val;
286
+ const end = performance.now();
287
+ if (this._options.debug) {
288
+ console.log(`getNetwork: ${end - start}ms`);
289
+ }
265
290
  return val;
266
291
  });
267
292
  /**
@@ -273,12 +298,17 @@ export class WalletObserver extends WalletObserverEvent {
273
298
  if (!this.api) {
274
299
  throw new Error("Attempted to query used addresses without an API instance.");
275
300
  }
301
+ const start = performance.now();
276
302
  const [cbor, {
277
303
  Cardano
278
304
  }, {
279
305
  typedHex
280
306
  }] = await Promise.all([this.api.getUsedAddresses(), getCardanoCore(), getCardanoUtil()]);
281
307
  const data = cbor.map(val => Cardano.Address.fromBytes(typedHex(val)).toBech32());
308
+ const end = performance.now();
309
+ if (this._options.debug) {
310
+ console.log(`getUsedAddresses: ${end - start}ms`);
311
+ }
282
312
  return data;
283
313
  });
284
314
  /**
@@ -290,12 +320,17 @@ export class WalletObserver extends WalletObserverEvent {
290
320
  if (!this.api) {
291
321
  throw new Error("Attempted to query unused addresses without an API instance.");
292
322
  }
323
+ const start = performance.now();
293
324
  const [cbor, {
294
325
  Cardano
295
326
  }, {
296
327
  typedHex
297
328
  }] = await Promise.all([this.api.getUnusedAddresses(), getCardanoCore(), getCardanoUtil()]);
298
329
  const data = cbor.map(val => Cardano.Address.fromBytes(typedHex(val)).toBech32());
330
+ const end = performance.now();
331
+ if (this._options.debug) {
332
+ console.log(`getUnusedAddresses: ${end - start}ms`);
333
+ }
299
334
  return data;
300
335
  });
301
336
  /**
@@ -307,6 +342,7 @@ export class WalletObserver extends WalletObserverEvent {
307
342
  if (!this.api) {
308
343
  throw new Error("Attempted to query UTXOs without an API instance.");
309
344
  }
345
+ const start = performance.now();
310
346
  const [cbor, {
311
347
  Serialization
312
348
  }, {
@@ -320,6 +356,10 @@ export class WalletObserver extends WalletObserverEvent {
320
356
  txOutput.output = txOutput.output.bind(txOutput);
321
357
  return txOutput;
322
358
  });
359
+ const end = performance.now();
360
+ if (this._options.debug) {
361
+ console.log(`getUtxos: ${end - start}ms`);
362
+ }
323
363
  return data;
324
364
  });
325
365
  /**
@@ -331,6 +371,7 @@ export class WalletObserver extends WalletObserverEvent {
331
371
  if (!this.api) {
332
372
  throw new Error("Attempted to query UTXOs without an API instance.");
333
373
  }
374
+ const start = performance.now();
334
375
  const [cbor, {
335
376
  Serialization
336
377
  }, {
@@ -350,6 +391,10 @@ export class WalletObserver extends WalletObserverEvent {
350
391
  txOutput.output = txOutput.output.bind(txOutput);
351
392
  return txOutput;
352
393
  });
394
+ const end = performance.now();
395
+ if (this._options.debug) {
396
+ console.log(`getCollateral: ${end - start}ms`);
397
+ }
353
398
  return data;
354
399
  });
355
400
  /**
@@ -360,16 +405,21 @@ export class WalletObserver extends WalletObserverEvent {
360
405
  * @returns {Promise<Map<string, AssetMetadata>>} - A promise that resolves to a map of asset metadata.
361
406
  */
362
407
  _defineProperty(this, "__metadataResolverWithCache", async assetIds => {
408
+ const start = performance.now();
363
409
  if (this._cachedMetadata) {
364
410
  const cachedKeys = new Set(this._cachedMetadata.keys());
365
411
  const inputKeys = new Set(assetIds);
366
412
  if (cachedKeys.size === inputKeys.size && [...cachedKeys].every(key => inputKeys.has(key))) {
413
+ const end = performance.now();
414
+ if (this._options.debug) {
415
+ console.log(`metadataResolver (cached): ${end - start}ms`);
416
+ }
367
417
  return this._cachedMetadata;
368
418
  }
369
419
  }
370
420
  let attempts = 0;
371
421
  let newMetadata;
372
- while (attempts <= 3) {
422
+ while (attempts <= 3 && !newMetadata) {
373
423
  try {
374
424
  newMetadata = await this._options.metadataResolver(assetIds.map(normalizeAssetIdWithDot), normalizeAssetIdWithDot, isAdaAsset);
375
425
  } catch (e) {
@@ -380,6 +430,10 @@ export class WalletObserver extends WalletObserverEvent {
380
430
  newMetadata = await this.fallbackMetadataResolver(assetIds.map(normalizeAssetIdWithDot), normalizeAssetIdWithDot, isAdaAsset);
381
431
  }
382
432
  this._cachedMetadata = newMetadata;
433
+ const end = performance.now();
434
+ if (this._options.debug) {
435
+ console.log(`metadataResolver: ${end - start}ms`);
436
+ }
383
437
  return newMetadata;
384
438
  });
385
439
  /**
@@ -399,6 +453,7 @@ export class WalletObserver extends WalletObserverEvent {
399
453
  metadataResolver: this.fallbackMetadataResolver,
400
454
  persistence: false,
401
455
  connectTimeout: 10000,
456
+ debug: false,
402
457
  peerConnectArgs: {
403
458
  dAppInfo: {
404
459
  name: "Placeholder dApp Connecter Name",
@@ -1 +1 @@
1
- {"version":3,"file":"WalletObserver.class.js","names":["AssetAmount","merge","EWalletObserverEvents","isAdaAsset","normalizeAssetIdWithDot","getCardanoCore","getCardanoUtil","getPeerConnect","WalletBalanceMap","WalletObserverEvent","WalletObserverUtils","WalletObserver","constructor","options","_defineProperty","Map","api","Error","_performingSync","dispatch","SYNCING_WALLET_START","newNetwork","getNetwork","e","syncApi","SYNCING_WALLET_END","newBalanceMap","newUsedAddresses","newUnusedAddresses","newOutputs","newCollateral","Promise","all","getBalanceMap","getUsedAddresses","getUnusedAddresses","getUtxos","getCollateral","result","balanceMap","usedAddresses","unusedAddresses","utxos","collateral","network","activeWallet","attempts","undefined","_activeWallet","selectedWallet","window","cardano","enable","getNetworkId","res","setTimeout","_options","extension","CONNECT_WALLET_START","extensionObject","includes","peerConnectInstance","shutdownServer","connectTimeout","persistence","seed","localStorage","setItem","PERSISTENCE_CACHE_KEY","JSON","stringify","CONNECT_WALLET_END","DAppPeerConnect","peerConnectArgs","name","dAppInfo","icon","getIdenticon","instance","_cachedMetadata","_supportedExtensions","removeItem","DISCONNECT","GET_BALANCE_MAP_START","cbor","Serialization","typedHex","getBalance","data","Value","fromCbor","multiassetKeys","multiasset","keys","metadata","__metadataResolverWithCache","ADA_ASSET_ID","set","coin","get","multiassetEntries","entries","id","amount","GET_BALANCE_MAP_END","val","Cardano","map","Address","fromBytes","toBech32","txOutput","TransactionUnspentOutput","input","bind","output","funcCall","experimental","assetIds","cachedKeys","Set","inputKeys","size","every","key","has","newMetadata","metadataResolver","fallbackMetadataResolver","forEach","assetId","decimals","url","location","hostname","onApiEject","address","disconnect","onApiInject","connectWallet","verifyConnection","walletInfo","callback","requestAutoconnect","useWalletDiscovery","announce","savedWallet","getItem","parse","isSyncing","getUtils","utils","new"],"sources":["../../../src/classes/WalletObserver.class.ts"],"sourcesContent":["import type { TransactionUnspentOutput } from \"@cardano-sdk/core/dist/cjs/Serialization/index.js\";\nimport type {\n Cip30WalletApi,\n GetCollateral,\n} from \"@cardano-sdk/dapp-connector\";\nimport { AssetAmount, type IAssetAmountMetadata } from \"@sundaeswap/asset\";\nimport merge from \"lodash/merge.js\";\n\nimport { EWalletObserverEvents } from \"../@types/events.js\";\nimport type {\n IResolvedWalletObserverOptions,\n IWalletObserverSeed,\n IWalletObserverSync,\n TMetadataResolverFunc,\n TSupportedWalletExtensions,\n TWalletObserverOptions,\n} from \"../@types/observer.js\";\nimport { isAdaAsset, normalizeAssetIdWithDot } from \"../utils/assets.js\";\nimport {\n getCardanoCore,\n getCardanoUtil,\n getPeerConnect,\n} from \"../utils/getLibs.js\";\nimport { WalletBalanceMap } from \"./WalletBalanceMap.class.js\";\nimport { WalletObserverEvent } from \"./WalletObserverEvent.js\";\nimport { WalletObserverUtils } from \"./WalletObserverUtils.class.js\";\n\n/**\n * Class representing the Wallet Observer. This is the main interface\n * for interacting with a wallet extension that is available in the\n * browser window. It handles all the deserialization required when\n * querying raw data from a CIP-30 API, and converts it to readable and\n * usable interfaces.\n *\n * Notably, it extends the WalletObserverEvent class which\n * acts as an internal event handler to hook into actions, such as connecting,\n * syncing, and disconnecting.\n *\n * @template AssetMetadata - Type extending IAssetAmountMetadata.\n * @extends {WalletObserverEvent}\n */\nexport class WalletObserver<\n AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata\n> extends WalletObserverEvent {\n static PERSISTENCE_CACHE_KEY = \"walletObserver\";\n static ADA_ASSET_ID = \"ada.lovelace\";\n public network: number = 0;\n public api?: Cip30WalletApi;\n public utils?: WalletObserverUtils;\n public peerConnectInstance?: import(\"@fabianbormann/cardano-peer-connect\").DAppPeerConnect;\n\n private _performingSync: boolean = false;\n private _activeWallet?: TSupportedWalletExtensions;\n private _options: IResolvedWalletObserverOptions<AssetMetadata>;\n private _supportedExtensions: TSupportedWalletExtensions[] = [\n \"eternl\",\n \"lace\",\n \"typhon\",\n \"sorbet\",\n \"flint\",\n \"nami\",\n ];\n\n // Caching\n private _cachedMetadata: Map<string, AssetMetadata> = new Map();\n\n /**\n * Creates an instance of WalletObserver.\n *\n * @param {Partial<TWalletObserverOptions<AssetMetadata>>} [options] - Options for the wallet observer.\n */\n constructor(options?: Partial<TWalletObserverOptions<AssetMetadata>>) {\n super();\n\n // Set options.\n this._options = merge<IResolvedWalletObserverOptions, typeof options>(\n {\n metadataResolver: this.fallbackMetadataResolver,\n persistence: false,\n connectTimeout: 10000,\n peerConnectArgs: {\n dAppInfo: {\n name: \"Placeholder dApp Connecter Name\",\n url: window.location.hostname,\n },\n onApiEject: (name, address) => {\n options?.peerConnectArgs?.onApiEject?.(name, address);\n this.disconnect();\n },\n onApiInject: (name, address) => {\n options?.peerConnectArgs?.onApiInject?.(name, address);\n this.connectWallet(name as TSupportedWalletExtensions);\n },\n verifyConnection(walletInfo, callback) {\n return callback(true, walletInfo.requestAutoconnect ?? true);\n },\n useWalletDiscovery: true,\n announce: [\n \"wss://tracker.de-5.eternl.art\",\n \"wss://tracker.de-6.eternl.art\",\n \"wss://tracker.us-5.eternl.art\",\n ],\n },\n },\n options\n );\n\n if (!this._options.persistence) {\n return;\n }\n\n const savedWallet = window.localStorage.getItem(\n WalletObserver.PERSISTENCE_CACHE_KEY\n );\n\n if (!savedWallet) {\n return;\n }\n\n // Init connection\n const seed: IWalletObserverSeed = JSON.parse(savedWallet);\n this.connectWallet(seed.activeWallet);\n }\n\n /**\n * Synchronizes the wallet. This method handles syncing the class\n * against the currently selected active wallet. If the wallet has\n * changed networks, or if the account within the wallet has changed,\n * this method will automatically attempt to reconcile this error before\n * eventually throwing.\n *\n * In the event that a promise will not resolve due to external issues,\n * after 7 seconds, a timeout function will fire that resets the API and tries again.\n *\n * @returns {Promise<IWalletObserverSync>} - A promise that resolves to the wallet sync data.\n */\n sync = async (): Promise<IWalletObserverSync> => {\n if (!this.api) {\n throw new Error(\n \"Attempted to perform a sync operation without a connected wallet.\"\n );\n }\n\n try {\n this._performingSync = true;\n this.dispatch(EWalletObserverEvents.SYNCING_WALLET_START);\n\n let newNetwork: number;\n try {\n newNetwork = await this.getNetwork();\n } catch (e) {\n try {\n await this.syncApi();\n newNetwork = await this.getNetwork();\n } catch (e) {\n this.dispatch(EWalletObserverEvents.SYNCING_WALLET_END);\n this._performingSync = false;\n throw e;\n }\n }\n\n const [\n newBalanceMap,\n newUsedAddresses,\n newUnusedAddresses,\n newOutputs,\n newCollateral,\n ] = await Promise.all([\n this.getBalanceMap(),\n this.getUsedAddresses(),\n this.getUnusedAddresses(),\n this.getUtxos(),\n this.getCollateral(),\n ]);\n\n const result = {\n balanceMap: newBalanceMap,\n usedAddresses: newUsedAddresses,\n unusedAddresses: newUnusedAddresses,\n utxos: newOutputs,\n collateral: newCollateral,\n network: newNetwork,\n };\n\n this.dispatch(EWalletObserverEvents.SYNCING_WALLET_END, result);\n this._performingSync = false;\n\n return result;\n } catch (e) {\n this._performingSync = false;\n throw e;\n }\n };\n\n /**\n * Helper method to check if the class is currently performing a sync\n * operation. This is useful to avoid duplicate calls, but does not\n * prevent it within the class.\n *\n * @returns {boolean}\n */\n isSyncing(): boolean {\n return this._performingSync;\n }\n\n /**\n * Synchronizes the API with the wallet. This is useful if the account has changed,\n * but the underlying intent has not.\n *\n * @param {TSupportedWalletExtensions} [activeWallet] - The wallet to sync with.\n * @returns {Promise<Cip30WalletApi>} - A promise that resolves to the API instance.\n */\n syncApi = async (activeWallet?: TSupportedWalletExtensions): Promise<any> => {\n let attempts = 0;\n this.api = undefined;\n if (!activeWallet && !this._activeWallet) {\n throw new Error(\n \"A wallet is required to be passed as a parameter, or to be defined in the class.\"\n );\n }\n\n const selectedWallet =\n activeWallet || (this._activeWallet as TSupportedWalletExtensions);\n\n while (!this.api) {\n if (attempts === 10) {\n throw new Error(\n \"Could not reconnect to the selected wallet. Please check your extension.\"\n );\n }\n\n try {\n const api = await window.cardano?.[selectedWallet]?.enable();\n\n if (!api) {\n throw Error;\n }\n\n this.api = api;\n this.network = await api.getNetworkId();\n } catch (e) {\n await new Promise((res) => setTimeout(res, 200));\n attempts++;\n }\n }\n\n return this.api;\n };\n\n /**\n * Gets the options for the wallet observer.\n *\n * @returns {TWalletObserverOptions} - The wallet observer options.\n */\n getOptions = (): TWalletObserverOptions => {\n return this._options;\n };\n\n /**\n * Attempts to connect a wallet using the global window\n * reference. If no reference is found, it will retry for\n * 10 seconds before throw an error.\n *\n * @param {string} extension The name of the extension to enable.\n * @return {Promise<void>}\n */\n connectWallet = async (\n extension: TSupportedWalletExtensions\n ): Promise<void> => {\n this.dispatch(EWalletObserverEvents.CONNECT_WALLET_START);\n\n let attempts = 0;\n let extensionObject = window.cardano?.[extension];\n\n // Disconnect any CIP45 connections.\n if (!extension?.includes(\"p2p\")) {\n this.peerConnectInstance?.shutdownServer();\n }\n\n while (typeof extensionObject === \"undefined\") {\n if (attempts === 40) {\n break;\n }\n\n await new Promise((res) =>\n setTimeout(res, (this._options.connectTimeout as number) / 40)\n );\n extensionObject = window.cardano?.[extension];\n attempts++;\n }\n\n if (!extensionObject) {\n throw new Error(\"Wallet extension not found in the global context.\");\n }\n\n await this.syncApi(extension);\n\n this._activeWallet = extension;\n if (this._options.persistence) {\n const seed: IWalletObserverSeed = {\n activeWallet: extension,\n };\n\n window.localStorage.setItem(\n WalletObserver.PERSISTENCE_CACHE_KEY,\n JSON.stringify(seed)\n );\n }\n\n this.dispatch(EWalletObserverEvents.CONNECT_WALLET_END, {\n extension,\n });\n };\n\n getCip45Instance = async () => {\n if (!this.peerConnectInstance) {\n const { DAppPeerConnect } = await getPeerConnect();\n this.peerConnectInstance = new DAppPeerConnect(\n this._options.peerConnectArgs\n );\n }\n\n return {\n name: this._options.peerConnectArgs.dAppInfo.name,\n icon: this.peerConnectInstance.getIdenticon(),\n instance: this.peerConnectInstance,\n };\n };\n\n /**\n * Helper function to retrieve currently active wallet connection, if present.\n *\n * @returns {TSupportedWalletExtensions | undefined}\n */\n getActiveWallet = (): TSupportedWalletExtensions | undefined => {\n return this._activeWallet;\n };\n\n /**\n * Helper function to retrieve the currently cached metadata.\n *\n * @returns {Map<string, AssetMetadata>}\n */\n getCachedAssetMetadata = (): Map<string, AssetMetadata> =>\n this._cachedMetadata;\n\n /**\n * Helper function to retrieve a list of supported wallet extensions.\n *\n * @returns {keyof TSupportedWalletExtensions[] | undefined}\n */\n getSupportedExtensions = (): TSupportedWalletExtensions[] => {\n return this._supportedExtensions;\n };\n\n /**\n * Helper function to restore the class instance to its initial state.\n *\n * @returns {void}\n */\n disconnect = (): void => {\n this._activeWallet = undefined;\n this.api = undefined;\n this._cachedMetadata = new Map();\n window.localStorage.removeItem(WalletObserver.PERSISTENCE_CACHE_KEY);\n this.dispatch(EWalletObserverEvents.DISCONNECT);\n };\n\n /**\n * Retrieves the balance of the wallet, including metadata for each asset.\n *\n * @returns {Promise<WalletBalanceMap<AssetMetadata>>} - A promise that resolves to a map of asset amounts keyed by asset IDs.\n */\n getBalanceMap = async (): Promise<WalletBalanceMap<AssetMetadata>> => {\n if (!this.api) {\n throw new Error(\"Attempted to query balance without an API instance.\");\n }\n\n this.dispatch(EWalletObserverEvents.GET_BALANCE_MAP_START);\n const [cbor, { Serialization }, { typedHex }] = await Promise.all([\n this.api.getBalance(),\n getCardanoCore(),\n getCardanoUtil(),\n ]);\n\n const data = Serialization.Value.fromCbor(typedHex(cbor));\n const multiassetKeys = data.multiasset()?.keys() ?? [];\n\n const metadata = await this.__metadataResolverWithCache([\n WalletObserver.ADA_ASSET_ID,\n ...multiassetKeys,\n ]);\n\n const balanceMap = new WalletBalanceMap<AssetMetadata>(this);\n balanceMap.set(\n WalletObserver.ADA_ASSET_ID,\n new AssetAmount(data.coin(), metadata.get(WalletObserver.ADA_ASSET_ID))\n );\n\n const multiassetEntries = data.multiasset()?.entries() ?? [];\n if (multiassetEntries) {\n for (const [id, amount] of multiassetEntries) {\n balanceMap.set(\n id,\n new AssetAmount(amount, metadata.get(normalizeAssetIdWithDot(id)))\n );\n }\n }\n\n this.dispatch(EWalletObserverEvents.GET_BALANCE_MAP_END, {\n balanceMap,\n });\n\n return balanceMap;\n };\n\n /**\n * Gets the current network connection.\n *\n * @returns {Promise<number>} The network ID.\n */\n getNetwork = async (): Promise<number> => {\n if (!this.api) {\n throw new Error(\"Attempted to query network without an API instance.\");\n }\n\n const val = await this.api.getNetworkId();\n this.network = val;\n return val;\n };\n\n /**\n * Gets a list of used addresses, encoded as Bech32.\n *\n * @returns {Promise<string[]>} The list of addresses.\n */\n getUsedAddresses = async (): Promise<string[]> => {\n if (!this.api) {\n throw new Error(\n \"Attempted to query used addresses without an API instance.\"\n );\n }\n\n const [cbor, { Cardano }, { typedHex }] = await Promise.all([\n this.api.getUsedAddresses(),\n getCardanoCore(),\n getCardanoUtil(),\n ]);\n\n const data = cbor.map((val) =>\n Cardano.Address.fromBytes(typedHex(val)).toBech32()\n );\n\n return data;\n };\n\n /**\n * Gets a list of unused addresses, encoded as Bech32.\n *\n * @returns {Promise<string[]>} The list of addresses.\n */\n getUnusedAddresses = async (): Promise<string[]> => {\n if (!this.api) {\n throw new Error(\n \"Attempted to query unused addresses without an API instance.\"\n );\n }\n\n const [cbor, { Cardano }, { typedHex }] = await Promise.all([\n this.api.getUnusedAddresses(),\n getCardanoCore(),\n getCardanoUtil(),\n ]);\n\n const data = cbor.map((val) =>\n Cardano.Address.fromBytes(typedHex(val)).toBech32()\n );\n\n return data;\n };\n\n /**\n * Gets a list of wallet UTXOs.\n *\n * @returns {Promise<TransactionUnspentOutput[]>} The list of TransactionUnspentOutputs.\n */\n getUtxos = async (): Promise<TransactionUnspentOutput[] | undefined> => {\n if (!this.api) {\n throw new Error(\"Attempted to query UTXOs without an API instance.\");\n }\n\n const [cbor, { Serialization }, { typedHex }] = await Promise.all([\n this.api.getUtxos(),\n getCardanoCore(),\n getCardanoUtil(),\n ]);\n\n const data = cbor?.map((val) => {\n let txOutput = Serialization.TransactionUnspentOutput.fromCbor(\n typedHex(val)\n );\n\n // These methods must be bound to their initial creation instance.\n txOutput.input = txOutput.input.bind(txOutput);\n txOutput.output = txOutput.output.bind(txOutput);\n return txOutput;\n });\n\n return data;\n };\n\n /**\n * Gets a list of wallet UTXOs suitable for collateral.\n *\n * @returns {Promise<TransactionUnspentOutput[]>} The list of TransactionUnspentOutputs.\n */\n getCollateral = async (): Promise<TransactionUnspentOutput[] | undefined> => {\n if (!this.api) {\n throw new Error(\"Attempted to query UTXOs without an API instance.\");\n }\n\n const [cbor, { Serialization }, { typedHex }] = await Promise.all([\n (async () => {\n const funcCall =\n this.api?.getCollateral ||\n (this.api?.experimental.getCollateral as GetCollateral);\n if (typeof funcCall !== \"function\") {\n return [];\n }\n\n return await funcCall();\n })(),\n getCardanoCore(),\n getCardanoUtil(),\n ]);\n\n const data = cbor?.map((val) => {\n let txOutput = Serialization.TransactionUnspentOutput.fromCbor(\n typedHex(val)\n );\n\n // These methods must be bound to their initial creation instance.\n txOutput.input = txOutput.input.bind(txOutput);\n txOutput.output = txOutput.output.bind(txOutput);\n return txOutput;\n });\n\n return data;\n };\n\n /**\n * Resolves metadata for the given asset IDs, using a cached version if available.\n *\n * @private\n * @param {string[]} assetIds - The IDs of the assets to resolve metadata for.\n * @returns {Promise<Map<string, AssetMetadata>>} - A promise that resolves to a map of asset metadata.\n */\n private __metadataResolverWithCache = async (\n assetIds: string[]\n ): Promise<Map<string, AssetMetadata>> => {\n if (this._cachedMetadata) {\n const cachedKeys = new Set(this._cachedMetadata.keys());\n const inputKeys = new Set(assetIds);\n\n if (\n cachedKeys.size === inputKeys.size &&\n [...cachedKeys].every((key) => inputKeys.has(key))\n ) {\n return this._cachedMetadata;\n }\n }\n\n let attempts = 0;\n let newMetadata: Map<string, AssetMetadata> | undefined;\n while (attempts <= 3) {\n try {\n newMetadata = await this._options.metadataResolver(\n assetIds.map(normalizeAssetIdWithDot),\n normalizeAssetIdWithDot,\n isAdaAsset\n );\n } catch (e) {\n attempts++;\n }\n }\n\n if (!newMetadata) {\n newMetadata = await this.fallbackMetadataResolver(\n assetIds.map(normalizeAssetIdWithDot),\n normalizeAssetIdWithDot,\n isAdaAsset\n );\n }\n\n this._cachedMetadata = newMetadata;\n return newMetadata;\n };\n\n /**\n * A fallback metadata resolver function that generates default metadata for given asset IDs.\n *\n * @type {TMetadataResolverFunc<AssetMetadata>}\n */\n public fallbackMetadataResolver: TMetadataResolverFunc<AssetMetadata> =\n async (assetIds) => {\n const map = new Map<string, AssetMetadata>();\n assetIds.forEach((id) =>\n map.set(normalizeAssetIdWithDot(id), {\n assetId: normalizeAssetIdWithDot(id),\n decimals: 6,\n } as AssetMetadata)\n );\n\n return map;\n };\n\n /**\n * Helper method to retrieve the cached utils instance.\n *\n * @returns {Promise<WalletObserverUtils>} Resolves to a WalletObserverUtils class.\n */\n public async getUtils(): Promise<WalletObserverUtils> {\n if (!this.utils) {\n this.utils = await WalletObserverUtils.new(this.network);\n }\n\n return this.utils;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"WalletObserver.class.js","names":["AssetAmount","merge","EWalletObserverEvents","isAdaAsset","normalizeAssetIdWithDot","getCardanoCore","getCardanoUtil","getPeerConnect","WalletBalanceMap","WalletObserverEvent","WalletObserverUtils","WalletObserver","constructor","options","_defineProperty","Map","api","Error","start","performance","now","_performingSync","dispatch","SYNCING_WALLET_START","newNetwork","getNetwork","e","syncApi","SYNCING_WALLET_END","newBalanceMap","newUsedAddresses","newUnusedAddresses","newOutputs","newCollateral","Promise","all","getBalanceMap","getUsedAddresses","getUnusedAddresses","getUtxos","getCollateral","result","balanceMap","usedAddresses","unusedAddresses","utxos","collateral","network","end","_options","debug","console","log","activeWallet","attempts","undefined","_activeWallet","selectedWallet","window","cardano","enable","getNetworkId","res","setTimeout","extension","CONNECT_WALLET_START","extensionObject","includes","peerConnectInstance","shutdownServer","connectTimeout","persistence","seed","localStorage","setItem","PERSISTENCE_CACHE_KEY","JSON","stringify","CONNECT_WALLET_END","DAppPeerConnect","peerConnectArgs","name","dAppInfo","icon","getIdenticon","instance","_cachedMetadata","_supportedExtensions","removeItem","DISCONNECT","GET_BALANCE_MAP_START","cbor","Serialization","typedHex","getBalance","data","Value","fromCbor","multiassetKeys","multiasset","keys","metadata","__metadataResolverWithCache","ADA_ASSET_ID","set","coin","get","multiassetEntries","entries","id","amount","GET_BALANCE_MAP_END","val","Cardano","map","Address","fromBytes","toBech32","txOutput","TransactionUnspentOutput","input","bind","output","funcCall","experimental","assetIds","cachedKeys","Set","inputKeys","size","every","key","has","newMetadata","metadataResolver","fallbackMetadataResolver","forEach","assetId","decimals","url","location","hostname","onApiEject","address","disconnect","onApiInject","connectWallet","verifyConnection","walletInfo","callback","requestAutoconnect","useWalletDiscovery","announce","savedWallet","getItem","parse","isSyncing","getUtils","utils","new"],"sources":["../../../src/classes/WalletObserver.class.ts"],"sourcesContent":["import type { TransactionUnspentOutput } from \"@cardano-sdk/core/dist/cjs/Serialization/index.js\";\nimport type {\n Cip30WalletApi,\n GetCollateral,\n} from \"@cardano-sdk/dapp-connector\";\nimport { AssetAmount, type IAssetAmountMetadata } from \"@sundaeswap/asset\";\nimport merge from \"lodash/merge.js\";\n\nimport { EWalletObserverEvents } from \"../@types/events.js\";\nimport type {\n IResolvedWalletObserverOptions,\n IWalletObserverSeed,\n IWalletObserverSync,\n TMetadataResolverFunc,\n TSupportedWalletExtensions,\n TWalletObserverOptions,\n} from \"../@types/observer.js\";\nimport { isAdaAsset, normalizeAssetIdWithDot } from \"../utils/assets.js\";\nimport {\n getCardanoCore,\n getCardanoUtil,\n getPeerConnect,\n} from \"../utils/getLibs.js\";\nimport { WalletBalanceMap } from \"./WalletBalanceMap.class.js\";\nimport { WalletObserverEvent } from \"./WalletObserverEvent.js\";\nimport { WalletObserverUtils } from \"./WalletObserverUtils.class.js\";\n\n/**\n * Class representing the Wallet Observer. This is the main interface\n * for interacting with a wallet extension that is available in the\n * browser window. It handles all the deserialization required when\n * querying raw data from a CIP-30 API, and converts it to readable and\n * usable interfaces.\n *\n * Notably, it extends the WalletObserverEvent class which\n * acts as an internal event handler to hook into actions, such as connecting,\n * syncing, and disconnecting.\n *\n * @template AssetMetadata - Type extending IAssetAmountMetadata.\n * @extends {WalletObserverEvent}\n */\nexport class WalletObserver<\n AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata\n> extends WalletObserverEvent {\n static PERSISTENCE_CACHE_KEY = \"walletObserver\";\n static ADA_ASSET_ID = \"ada.lovelace\";\n public network: number = 0;\n public api?: Cip30WalletApi;\n public utils?: WalletObserverUtils;\n public peerConnectInstance?: import(\"@fabianbormann/cardano-peer-connect\").DAppPeerConnect;\n\n private _performingSync: boolean = false;\n private _activeWallet?: TSupportedWalletExtensions;\n private _options: IResolvedWalletObserverOptions<AssetMetadata>;\n private _supportedExtensions: TSupportedWalletExtensions[] = [\n \"eternl\",\n \"lace\",\n \"typhon\",\n \"sorbet\",\n \"flint\",\n \"nami\",\n ];\n\n // Caching\n private _cachedMetadata: Map<string, AssetMetadata> = new Map();\n\n /**\n * Creates an instance of WalletObserver.\n *\n * @param {Partial<TWalletObserverOptions<AssetMetadata>>} [options] - Options for the wallet observer.\n */\n constructor(options?: Partial<TWalletObserverOptions<AssetMetadata>>) {\n super();\n\n // Set options.\n this._options = merge<IResolvedWalletObserverOptions, typeof options>(\n {\n metadataResolver: this.fallbackMetadataResolver,\n persistence: false,\n connectTimeout: 10000,\n debug: false,\n peerConnectArgs: {\n dAppInfo: {\n name: \"Placeholder dApp Connecter Name\",\n url: window.location.hostname,\n },\n onApiEject: (name, address) => {\n options?.peerConnectArgs?.onApiEject?.(name, address);\n this.disconnect();\n },\n onApiInject: (name, address) => {\n options?.peerConnectArgs?.onApiInject?.(name, address);\n this.connectWallet(name as TSupportedWalletExtensions);\n },\n verifyConnection(walletInfo, callback) {\n return callback(true, walletInfo.requestAutoconnect ?? true);\n },\n useWalletDiscovery: true,\n announce: [\n \"wss://tracker.de-5.eternl.art\",\n \"wss://tracker.de-6.eternl.art\",\n \"wss://tracker.us-5.eternl.art\",\n ],\n },\n },\n options\n );\n\n if (!this._options.persistence) {\n return;\n }\n\n const savedWallet = window.localStorage.getItem(\n WalletObserver.PERSISTENCE_CACHE_KEY\n );\n\n if (!savedWallet) {\n return;\n }\n\n // Init connection\n const seed: IWalletObserverSeed = JSON.parse(savedWallet);\n this.connectWallet(seed.activeWallet);\n }\n\n /**\n * Synchronizes the wallet. This method handles syncing the class\n * against the currently selected active wallet. If the wallet has\n * changed networks, or if the account within the wallet has changed,\n * this method will automatically attempt to reconcile this error before\n * eventually throwing.\n *\n * In the event that a promise will not resolve due to external issues,\n * after 7 seconds, a timeout function will fire that resets the API and tries again.\n *\n * @returns {Promise<IWalletObserverSync>} - A promise that resolves to the wallet sync data.\n */\n sync = async (): Promise<IWalletObserverSync> => {\n if (!this.api) {\n throw new Error(\n \"Attempted to perform a sync operation without a connected wallet.\"\n );\n }\n\n const start = performance.now();\n\n try {\n this._performingSync = true;\n this.dispatch(EWalletObserverEvents.SYNCING_WALLET_START);\n\n let newNetwork: number;\n try {\n newNetwork = await this.getNetwork();\n } catch (e) {\n try {\n await this.syncApi();\n newNetwork = await this.getNetwork();\n } catch (e) {\n this.dispatch(EWalletObserverEvents.SYNCING_WALLET_END);\n this._performingSync = false;\n throw e;\n }\n }\n\n const [\n newBalanceMap,\n newUsedAddresses,\n newUnusedAddresses,\n newOutputs,\n newCollateral,\n ] = await Promise.all([\n this.getBalanceMap(),\n this.getUsedAddresses(),\n this.getUnusedAddresses(),\n this.getUtxos(),\n this.getCollateral(),\n ]);\n\n const result = {\n balanceMap: newBalanceMap,\n usedAddresses: newUsedAddresses,\n unusedAddresses: newUnusedAddresses,\n utxos: newOutputs,\n collateral: newCollateral,\n network: newNetwork,\n };\n\n this.dispatch(EWalletObserverEvents.SYNCING_WALLET_END, result);\n this._performingSync = false;\n\n const end = performance.now();\n if (this._options.debug) {\n console.log(`sync: ${end - start}ms`);\n }\n return result;\n } catch (e) {\n this._performingSync = false;\n throw e;\n }\n };\n\n /**\n * Helper method to check if the class is currently performing a sync\n * operation. This is useful to avoid duplicate calls, but does not\n * prevent it within the class.\n *\n * @returns {boolean}\n */\n isSyncing(): boolean {\n return this._performingSync;\n }\n\n /**\n * Synchronizes the API with the wallet. This is useful if the account has changed,\n * but the underlying intent has not.\n *\n * @param {TSupportedWalletExtensions} [activeWallet] - The wallet to sync with.\n * @returns {Promise<Cip30WalletApi>} - A promise that resolves to the API instance.\n */\n syncApi = async (activeWallet?: TSupportedWalletExtensions): Promise<any> => {\n let attempts = 0;\n this.api = undefined;\n if (!activeWallet && !this._activeWallet) {\n throw new Error(\n \"A wallet is required to be passed as a parameter, or to be defined in the class.\"\n );\n }\n\n const selectedWallet =\n activeWallet || (this._activeWallet as TSupportedWalletExtensions);\n\n while (!this.api) {\n if (attempts === 10) {\n throw new Error(\n \"Could not reconnect to the selected wallet. Please check your extension.\"\n );\n }\n\n try {\n const api = await window.cardano?.[selectedWallet]?.enable();\n\n if (!api) {\n throw Error;\n }\n\n this.api = api;\n this.network = await api.getNetworkId();\n } catch (e) {\n await new Promise((res) => setTimeout(res, 200));\n attempts++;\n }\n }\n\n return this.api;\n };\n\n /**\n * Gets the options for the wallet observer.\n *\n * @returns {TWalletObserverOptions} - The wallet observer options.\n */\n getOptions = (): TWalletObserverOptions => {\n return this._options;\n };\n\n /**\n * Attempts to connect a wallet using the global window\n * reference. If no reference is found, it will retry for\n * 10 seconds before throw an error.\n *\n * @param {string} extension The name of the extension to enable.\n * @return {Promise<void>}\n */\n connectWallet = async (\n extension: TSupportedWalletExtensions\n ): Promise<void> => {\n const start = performance.now();\n this.dispatch(EWalletObserverEvents.CONNECT_WALLET_START);\n\n let attempts = 0;\n let extensionObject = window.cardano?.[extension];\n\n // Disconnect any CIP45 connections.\n if (!extension?.includes(\"p2p\")) {\n this.peerConnectInstance?.shutdownServer();\n }\n\n while (typeof extensionObject === \"undefined\") {\n if (attempts === 40) {\n break;\n }\n\n await new Promise((res) =>\n setTimeout(res, (this._options.connectTimeout as number) / 40)\n );\n extensionObject = window.cardano?.[extension];\n attempts++;\n }\n\n if (!extensionObject) {\n throw new Error(\"Wallet extension not found in the global context.\");\n }\n\n await this.syncApi(extension);\n\n this._activeWallet = extension;\n if (this._options.persistence) {\n const seed: IWalletObserverSeed = {\n activeWallet: extension,\n };\n\n window.localStorage.setItem(\n WalletObserver.PERSISTENCE_CACHE_KEY,\n JSON.stringify(seed)\n );\n }\n\n this.dispatch(EWalletObserverEvents.CONNECT_WALLET_END, {\n extension,\n });\n\n const end = performance.now();\n if (this._options.debug) {\n console.log(`connectWallet: ${end - start}ms`);\n }\n };\n\n getCip45Instance = async () => {\n const start = performance.now();\n if (!this.peerConnectInstance) {\n const { DAppPeerConnect } = await getPeerConnect();\n this.peerConnectInstance = new DAppPeerConnect(\n this._options.peerConnectArgs\n );\n }\n\n const end = performance.now();\n if (this._options.debug) {\n console.log(`getCip45Instance: ${end - start}ms`);\n }\n\n return {\n name: this._options.peerConnectArgs.dAppInfo.name,\n icon: this.peerConnectInstance.getIdenticon(),\n instance: this.peerConnectInstance,\n };\n };\n\n /**\n * Helper function to retrieve currently active wallet connection, if present.\n *\n * @returns {TSupportedWalletExtensions | undefined}\n */\n getActiveWallet = (): TSupportedWalletExtensions | undefined => {\n return this._activeWallet;\n };\n\n /**\n * Helper function to retrieve the currently cached metadata.\n *\n * @returns {Map<string, AssetMetadata>}\n */\n getCachedAssetMetadata = (): Map<string, AssetMetadata> =>\n this._cachedMetadata;\n\n /**\n * Helper function to retrieve a list of supported wallet extensions.\n *\n * @returns {keyof TSupportedWalletExtensions[] | undefined}\n */\n getSupportedExtensions = (): TSupportedWalletExtensions[] => {\n return this._supportedExtensions;\n };\n\n /**\n * Helper function to restore the class instance to its initial state.\n *\n * @returns {void}\n */\n disconnect = (): void => {\n this._activeWallet = undefined;\n this.api = undefined;\n this._cachedMetadata = new Map();\n window.localStorage.removeItem(WalletObserver.PERSISTENCE_CACHE_KEY);\n this.dispatch(EWalletObserverEvents.DISCONNECT);\n };\n\n /**\n * Retrieves the balance of the wallet, including metadata for each asset.\n *\n * @returns {Promise<WalletBalanceMap<AssetMetadata>>} - A promise that resolves to a map of asset amounts keyed by asset IDs.\n */\n getBalanceMap = async (): Promise<WalletBalanceMap<AssetMetadata>> => {\n if (!this.api) {\n throw new Error(\"Attempted to query balance without an API instance.\");\n }\n\n const start = performance.now();\n\n this.dispatch(EWalletObserverEvents.GET_BALANCE_MAP_START);\n const [cbor, { Serialization }, { typedHex }] = await Promise.all([\n this.api.getBalance(),\n getCardanoCore(),\n getCardanoUtil(),\n ]);\n\n const data = Serialization.Value.fromCbor(typedHex(cbor));\n const multiassetKeys = data.multiasset()?.keys() ?? [];\n\n const metadata = await this.__metadataResolverWithCache([\n WalletObserver.ADA_ASSET_ID,\n ...multiassetKeys,\n ]);\n\n const balanceMap = new WalletBalanceMap<AssetMetadata>(this);\n balanceMap.set(\n WalletObserver.ADA_ASSET_ID,\n new AssetAmount(data.coin(), metadata.get(WalletObserver.ADA_ASSET_ID))\n );\n\n const multiassetEntries = data.multiasset()?.entries() ?? [];\n if (multiassetEntries) {\n for (const [id, amount] of multiassetEntries) {\n balanceMap.set(\n id,\n new AssetAmount(amount, metadata.get(normalizeAssetIdWithDot(id)))\n );\n }\n }\n\n this.dispatch(EWalletObserverEvents.GET_BALANCE_MAP_END, {\n balanceMap,\n });\n\n const end = performance.now();\n if (this._options.debug) {\n console.log(`getBalanceMap: ${end - start}ms`);\n }\n return balanceMap;\n };\n\n /**\n * Gets the current network connection.\n *\n * @returns {Promise<number>} The network ID.\n */\n getNetwork = async (): Promise<number> => {\n if (!this.api) {\n throw new Error(\"Attempted to query network without an API instance.\");\n }\n\n const start = performance.now();\n\n const val = await this.api.getNetworkId();\n this.network = val;\n\n const end = performance.now();\n if (this._options.debug) {\n console.log(`getNetwork: ${end - start}ms`);\n }\n return val;\n };\n\n /**\n * Gets a list of used addresses, encoded as Bech32.\n *\n * @returns {Promise<string[]>} The list of addresses.\n */\n getUsedAddresses = async (): Promise<string[]> => {\n if (!this.api) {\n throw new Error(\n \"Attempted to query used addresses without an API instance.\"\n );\n }\n\n const start = performance.now();\n\n const [cbor, { Cardano }, { typedHex }] = await Promise.all([\n this.api.getUsedAddresses(),\n getCardanoCore(),\n getCardanoUtil(),\n ]);\n\n const data = cbor.map((val) =>\n Cardano.Address.fromBytes(typedHex(val)).toBech32()\n );\n\n const end = performance.now();\n if (this._options.debug) {\n console.log(`getUsedAddresses: ${end - start}ms`);\n }\n return data;\n };\n\n /**\n * Gets a list of unused addresses, encoded as Bech32.\n *\n * @returns {Promise<string[]>} The list of addresses.\n */\n getUnusedAddresses = async (): Promise<string[]> => {\n if (!this.api) {\n throw new Error(\n \"Attempted to query unused addresses without an API instance.\"\n );\n }\n\n const start = performance.now();\n\n const [cbor, { Cardano }, { typedHex }] = await Promise.all([\n this.api.getUnusedAddresses(),\n getCardanoCore(),\n getCardanoUtil(),\n ]);\n\n const data = cbor.map((val) =>\n Cardano.Address.fromBytes(typedHex(val)).toBech32()\n );\n\n const end = performance.now();\n if (this._options.debug) {\n console.log(`getUnusedAddresses: ${end - start}ms`);\n }\n return data;\n };\n\n /**\n * Gets a list of wallet UTXOs.\n *\n * @returns {Promise<TransactionUnspentOutput[]>} The list of TransactionUnspentOutputs.\n */\n getUtxos = async (): Promise<TransactionUnspentOutput[] | undefined> => {\n if (!this.api) {\n throw new Error(\"Attempted to query UTXOs without an API instance.\");\n }\n\n const start = performance.now();\n\n const [cbor, { Serialization }, { typedHex }] = await Promise.all([\n this.api.getUtxos(),\n getCardanoCore(),\n getCardanoUtil(),\n ]);\n\n const data = cbor?.map((val) => {\n let txOutput = Serialization.TransactionUnspentOutput.fromCbor(\n typedHex(val)\n );\n\n // These methods must be bound to their initial creation instance.\n txOutput.input = txOutput.input.bind(txOutput);\n txOutput.output = txOutput.output.bind(txOutput);\n return txOutput;\n });\n\n const end = performance.now();\n if (this._options.debug) {\n console.log(`getUtxos: ${end - start}ms`);\n }\n return data;\n };\n\n /**\n * Gets a list of wallet UTXOs suitable for collateral.\n *\n * @returns {Promise<TransactionUnspentOutput[]>} The list of TransactionUnspentOutputs.\n */\n getCollateral = async (): Promise<TransactionUnspentOutput[] | undefined> => {\n if (!this.api) {\n throw new Error(\"Attempted to query UTXOs without an API instance.\");\n }\n\n const start = performance.now();\n\n const [cbor, { Serialization }, { typedHex }] = await Promise.all([\n (async () => {\n const funcCall =\n this.api?.getCollateral ||\n (this.api?.experimental.getCollateral as GetCollateral);\n if (typeof funcCall !== \"function\") {\n return [];\n }\n\n return await funcCall();\n })(),\n getCardanoCore(),\n getCardanoUtil(),\n ]);\n\n const data = cbor?.map((val) => {\n let txOutput = Serialization.TransactionUnspentOutput.fromCbor(\n typedHex(val)\n );\n\n // These methods must be bound to their initial creation instance.\n txOutput.input = txOutput.input.bind(txOutput);\n txOutput.output = txOutput.output.bind(txOutput);\n return txOutput;\n });\n\n const end = performance.now();\n if (this._options.debug) {\n console.log(`getCollateral: ${end - start}ms`);\n }\n return data;\n };\n\n /**\n * Resolves metadata for the given asset IDs, using a cached version if available.\n *\n * @private\n * @param {string[]} assetIds - The IDs of the assets to resolve metadata for.\n * @returns {Promise<Map<string, AssetMetadata>>} - A promise that resolves to a map of asset metadata.\n */\n private __metadataResolverWithCache = async (\n assetIds: string[]\n ): Promise<Map<string, AssetMetadata>> => {\n const start = performance.now();\n\n if (this._cachedMetadata) {\n const cachedKeys = new Set(this._cachedMetadata.keys());\n const inputKeys = new Set(assetIds);\n\n if (\n cachedKeys.size === inputKeys.size &&\n [...cachedKeys].every((key) => inputKeys.has(key))\n ) {\n const end = performance.now();\n if (this._options.debug) {\n console.log(`metadataResolver (cached): ${end - start}ms`);\n }\n return this._cachedMetadata;\n }\n }\n\n let attempts = 0;\n let newMetadata: Map<string, AssetMetadata> | undefined;\n while (attempts <= 3 && !newMetadata) {\n try {\n newMetadata = await this._options.metadataResolver(\n assetIds.map(normalizeAssetIdWithDot),\n normalizeAssetIdWithDot,\n isAdaAsset\n );\n } catch (e) {\n attempts++;\n }\n }\n\n if (!newMetadata) {\n newMetadata = await this.fallbackMetadataResolver(\n assetIds.map(normalizeAssetIdWithDot),\n normalizeAssetIdWithDot,\n isAdaAsset\n );\n }\n\n this._cachedMetadata = newMetadata;\n\n const end = performance.now();\n if (this._options.debug) {\n console.log(`metadataResolver: ${end - start}ms`);\n }\n return newMetadata;\n };\n\n /**\n * A fallback metadata resolver function that generates default metadata for given asset IDs.\n *\n * @type {TMetadataResolverFunc<AssetMetadata>}\n */\n public fallbackMetadataResolver: TMetadataResolverFunc<AssetMetadata> =\n async (assetIds) => {\n const map = new Map<string, AssetMetadata>();\n assetIds.forEach((id) =>\n map.set(normalizeAssetIdWithDot(id), {\n assetId: normalizeAssetIdWithDot(id),\n decimals: 6,\n } as AssetMetadata)\n );\n\n return map;\n };\n\n /**\n * Helper method to retrieve the cached utils instance.\n *\n * @returns {Promise<WalletObserverUtils>} Resolves to a WalletObserverUtils class.\n */\n public async getUtils(): Promise<WalletObserverUtils> {\n if (!this.utils) {\n this.utils = await WalletObserverUtils.new(this.network);\n }\n\n return this.utils;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -45,9 +45,7 @@ export const useProviderEventListeners = (observer, syncWallet, hooks) => {
45
45
  * Ensure the wallet syncs on connect and disconnect.
46
46
  */
47
47
  useEffect(() => {
48
- window.addEventListener("focus", () => {
49
- syncWallet;
50
- });
48
+ window.addEventListener("focus", syncWallet);
51
49
  observer.addEventListener(EWalletObserverEvents.CONNECT_WALLET_END, syncWallet);
52
50
  observer.addEventListener(EWalletObserverEvents.DISCONNECT, syncWallet);
53
51
  return () => {
@@ -1 +1 @@
1
- {"version":3,"file":"useProviderEventListeners.js","names":["useEffect","EWalletObserverEvents","useProviderEventListeners","observer","syncWallet","hooks","setConnectingStart","onConnectWalletStart","setConnectingEnd","onConnectWalletEnd","setSyncingStart","onSyncWalletStart","setSyncingEnd","onSyncWalletEnd","addEventListener","CONNECT_WALLET_START","CONNECT_WALLET_END","SYNCING_WALLET_START","SYNCING_WALLET_END","removeEventListener","window","DISCONNECT"],"sources":["../../../../../../src/react-components/WalletObserverProvider/hooks/effects/useProviderEventListeners.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\nimport { EWalletObserverEvents } from \"../../../../@types/events.js\";\nimport { WalletObserver } from \"../../../../classes/WalletObserver.class.js\";\nimport { TWalletProviderHooks } from \"../../../contexts/observer/index.js\";\n\n/**\n * Internal use only. This is run in every WalletObserverProvider\n * component on initial mount. It adds all relevant event listeners\n * to the WalletObserver class.\n *\n * @param observer\n * @param syncWallet\n * @param hooks\n */\nexport const useProviderEventListeners = (\n observer: WalletObserver,\n syncWallet: () => Promise<void>,\n hooks?: TWalletProviderHooks\n) => {\n /**\n * Add user-defined hooks into the event stream.\n */\n useEffect(() => {\n if (!hooks) {\n return;\n }\n\n const setConnectingStart = () => {\n hooks?.onConnectWalletStart?.();\n };\n const setConnectingEnd = () => {\n hooks?.onConnectWalletEnd?.();\n };\n const setSyncingStart = () => {\n hooks?.onSyncWalletStart?.();\n };\n const setSyncingEnd = () => {\n hooks?.onSyncWalletEnd?.();\n };\n\n observer.addEventListener(\n EWalletObserverEvents.CONNECT_WALLET_START,\n setConnectingStart\n );\n observer.addEventListener(\n EWalletObserverEvents.CONNECT_WALLET_END,\n setConnectingEnd\n );\n observer.addEventListener(\n EWalletObserverEvents.SYNCING_WALLET_START,\n setSyncingStart\n );\n observer.addEventListener(\n EWalletObserverEvents.SYNCING_WALLET_END,\n setSyncingEnd\n );\n\n return () => {\n observer.removeEventListener(\n EWalletObserverEvents.CONNECT_WALLET_START,\n setConnectingStart\n );\n observer.removeEventListener(\n EWalletObserverEvents.CONNECT_WALLET_END,\n setConnectingEnd\n );\n observer.removeEventListener(\n EWalletObserverEvents.SYNCING_WALLET_START,\n setSyncingStart\n );\n observer.removeEventListener(\n EWalletObserverEvents.SYNCING_WALLET_END,\n setSyncingEnd\n );\n };\n }, [observer, hooks]);\n\n /**\n * Ensure the wallet syncs on connect and disconnect.\n */\n useEffect(() => {\n window.addEventListener(\"focus\", () => {\n syncWallet;\n });\n\n observer.addEventListener(\n EWalletObserverEvents.CONNECT_WALLET_END,\n syncWallet\n );\n\n observer.addEventListener(EWalletObserverEvents.DISCONNECT, syncWallet);\n\n return () => {\n window.addEventListener(\"focus\", syncWallet);\n observer.removeEventListener(\n EWalletObserverEvents.CONNECT_WALLET_END,\n syncWallet\n );\n\n observer.removeEventListener(\n EWalletObserverEvents.DISCONNECT,\n syncWallet\n );\n };\n }, [observer, syncWallet]);\n};\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AAEjC,SAASC,qBAAqB,QAAQ,8BAA8B;AAIpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,yBAAyB,GAAGA,CACvCC,QAAwB,EACxBC,UAA+B,EAC/BC,KAA4B,KACzB;EACH;AACF;AACA;EACEL,SAAS,CAAC,MAAM;IACd,IAAI,CAACK,KAAK,EAAE;MACV;IACF;IAEA,MAAMC,kBAAkB,GAAGA,CAAA,KAAM;MAC/BD,KAAK,EAAEE,oBAAoB,GAAG,CAAC;IACjC,CAAC;IACD,MAAMC,gBAAgB,GAAGA,CAAA,KAAM;MAC7BH,KAAK,EAAEI,kBAAkB,GAAG,CAAC;IAC/B,CAAC;IACD,MAAMC,eAAe,GAAGA,CAAA,KAAM;MAC5BL,KAAK,EAAEM,iBAAiB,GAAG,CAAC;IAC9B,CAAC;IACD,MAAMC,aAAa,GAAGA,CAAA,KAAM;MAC1BP,KAAK,EAAEQ,eAAe,GAAG,CAAC;IAC5B,CAAC;IAEDV,QAAQ,CAACW,gBAAgB,CACvBb,qBAAqB,CAACc,oBAAoB,EAC1CT,kBACF,CAAC;IACDH,QAAQ,CAACW,gBAAgB,CACvBb,qBAAqB,CAACe,kBAAkB,EACxCR,gBACF,CAAC;IACDL,QAAQ,CAACW,gBAAgB,CACvBb,qBAAqB,CAACgB,oBAAoB,EAC1CP,eACF,CAAC;IACDP,QAAQ,CAACW,gBAAgB,CACvBb,qBAAqB,CAACiB,kBAAkB,EACxCN,aACF,CAAC;IAED,OAAO,MAAM;MACXT,QAAQ,CAACgB,mBAAmB,CAC1BlB,qBAAqB,CAACc,oBAAoB,EAC1CT,kBACF,CAAC;MACDH,QAAQ,CAACgB,mBAAmB,CAC1BlB,qBAAqB,CAACe,kBAAkB,EACxCR,gBACF,CAAC;MACDL,QAAQ,CAACgB,mBAAmB,CAC1BlB,qBAAqB,CAACgB,oBAAoB,EAC1CP,eACF,CAAC;MACDP,QAAQ,CAACgB,mBAAmB,CAC1BlB,qBAAqB,CAACiB,kBAAkB,EACxCN,aACF,CAAC;IACH,CAAC;EACH,CAAC,EAAE,CAACT,QAAQ,EAAEE,KAAK,CAAC,CAAC;;EAErB;AACF;AACA;EACEL,SAAS,CAAC,MAAM;IACdoB,MAAM,CAACN,gBAAgB,CAAC,OAAO,EAAE,MAAM;MACrCV,UAAU;IACZ,CAAC,CAAC;IAEFD,QAAQ,CAACW,gBAAgB,CACvBb,qBAAqB,CAACe,kBAAkB,EACxCZ,UACF,CAAC;IAEDD,QAAQ,CAACW,gBAAgB,CAACb,qBAAqB,CAACoB,UAAU,EAAEjB,UAAU,CAAC;IAEvE,OAAO,MAAM;MACXgB,MAAM,CAACN,gBAAgB,CAAC,OAAO,EAAEV,UAAU,CAAC;MAC5CD,QAAQ,CAACgB,mBAAmB,CAC1BlB,qBAAqB,CAACe,kBAAkB,EACxCZ,UACF,CAAC;MAEDD,QAAQ,CAACgB,mBAAmB,CAC1BlB,qBAAqB,CAACoB,UAAU,EAChCjB,UACF,CAAC;IACH,CAAC;EACH,CAAC,EAAE,CAACD,QAAQ,EAAEC,UAAU,CAAC,CAAC;AAC5B,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"useProviderEventListeners.js","names":["useEffect","EWalletObserverEvents","useProviderEventListeners","observer","syncWallet","hooks","setConnectingStart","onConnectWalletStart","setConnectingEnd","onConnectWalletEnd","setSyncingStart","onSyncWalletStart","setSyncingEnd","onSyncWalletEnd","addEventListener","CONNECT_WALLET_START","CONNECT_WALLET_END","SYNCING_WALLET_START","SYNCING_WALLET_END","removeEventListener","window","DISCONNECT"],"sources":["../../../../../../src/react-components/WalletObserverProvider/hooks/effects/useProviderEventListeners.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\nimport { EWalletObserverEvents } from \"../../../../@types/events.js\";\nimport { WalletObserver } from \"../../../../classes/WalletObserver.class.js\";\nimport { TWalletProviderHooks } from \"../../../contexts/observer/index.js\";\n\n/**\n * Internal use only. This is run in every WalletObserverProvider\n * component on initial mount. It adds all relevant event listeners\n * to the WalletObserver class.\n *\n * @param observer\n * @param syncWallet\n * @param hooks\n */\nexport const useProviderEventListeners = (\n observer: WalletObserver,\n syncWallet: () => Promise<void>,\n hooks?: TWalletProviderHooks\n) => {\n /**\n * Add user-defined hooks into the event stream.\n */\n useEffect(() => {\n if (!hooks) {\n return;\n }\n\n const setConnectingStart = () => {\n hooks?.onConnectWalletStart?.();\n };\n const setConnectingEnd = () => {\n hooks?.onConnectWalletEnd?.();\n };\n const setSyncingStart = () => {\n hooks?.onSyncWalletStart?.();\n };\n const setSyncingEnd = () => {\n hooks?.onSyncWalletEnd?.();\n };\n\n observer.addEventListener(\n EWalletObserverEvents.CONNECT_WALLET_START,\n setConnectingStart\n );\n observer.addEventListener(\n EWalletObserverEvents.CONNECT_WALLET_END,\n setConnectingEnd\n );\n observer.addEventListener(\n EWalletObserverEvents.SYNCING_WALLET_START,\n setSyncingStart\n );\n observer.addEventListener(\n EWalletObserverEvents.SYNCING_WALLET_END,\n setSyncingEnd\n );\n\n return () => {\n observer.removeEventListener(\n EWalletObserverEvents.CONNECT_WALLET_START,\n setConnectingStart\n );\n observer.removeEventListener(\n EWalletObserverEvents.CONNECT_WALLET_END,\n setConnectingEnd\n );\n observer.removeEventListener(\n EWalletObserverEvents.SYNCING_WALLET_START,\n setSyncingStart\n );\n observer.removeEventListener(\n EWalletObserverEvents.SYNCING_WALLET_END,\n setSyncingEnd\n );\n };\n }, [observer, hooks]);\n\n /**\n * Ensure the wallet syncs on connect and disconnect.\n */\n useEffect(() => {\n window.addEventListener(\"focus\", syncWallet);\n\n observer.addEventListener(\n EWalletObserverEvents.CONNECT_WALLET_END,\n syncWallet\n );\n\n observer.addEventListener(EWalletObserverEvents.DISCONNECT, syncWallet);\n\n return () => {\n window.addEventListener(\"focus\", syncWallet);\n observer.removeEventListener(\n EWalletObserverEvents.CONNECT_WALLET_END,\n syncWallet\n );\n\n observer.removeEventListener(\n EWalletObserverEvents.DISCONNECT,\n syncWallet\n );\n };\n }, [observer, syncWallet]);\n};\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AAEjC,SAASC,qBAAqB,QAAQ,8BAA8B;AAIpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,yBAAyB,GAAGA,CACvCC,QAAwB,EACxBC,UAA+B,EAC/BC,KAA4B,KACzB;EACH;AACF;AACA;EACEL,SAAS,CAAC,MAAM;IACd,IAAI,CAACK,KAAK,EAAE;MACV;IACF;IAEA,MAAMC,kBAAkB,GAAGA,CAAA,KAAM;MAC/BD,KAAK,EAAEE,oBAAoB,GAAG,CAAC;IACjC,CAAC;IACD,MAAMC,gBAAgB,GAAGA,CAAA,KAAM;MAC7BH,KAAK,EAAEI,kBAAkB,GAAG,CAAC;IAC/B,CAAC;IACD,MAAMC,eAAe,GAAGA,CAAA,KAAM;MAC5BL,KAAK,EAAEM,iBAAiB,GAAG,CAAC;IAC9B,CAAC;IACD,MAAMC,aAAa,GAAGA,CAAA,KAAM;MAC1BP,KAAK,EAAEQ,eAAe,GAAG,CAAC;IAC5B,CAAC;IAEDV,QAAQ,CAACW,gBAAgB,CACvBb,qBAAqB,CAACc,oBAAoB,EAC1CT,kBACF,CAAC;IACDH,QAAQ,CAACW,gBAAgB,CACvBb,qBAAqB,CAACe,kBAAkB,EACxCR,gBACF,CAAC;IACDL,QAAQ,CAACW,gBAAgB,CACvBb,qBAAqB,CAACgB,oBAAoB,EAC1CP,eACF,CAAC;IACDP,QAAQ,CAACW,gBAAgB,CACvBb,qBAAqB,CAACiB,kBAAkB,EACxCN,aACF,CAAC;IAED,OAAO,MAAM;MACXT,QAAQ,CAACgB,mBAAmB,CAC1BlB,qBAAqB,CAACc,oBAAoB,EAC1CT,kBACF,CAAC;MACDH,QAAQ,CAACgB,mBAAmB,CAC1BlB,qBAAqB,CAACe,kBAAkB,EACxCR,gBACF,CAAC;MACDL,QAAQ,CAACgB,mBAAmB,CAC1BlB,qBAAqB,CAACgB,oBAAoB,EAC1CP,eACF,CAAC;MACDP,QAAQ,CAACgB,mBAAmB,CAC1BlB,qBAAqB,CAACiB,kBAAkB,EACxCN,aACF,CAAC;IACH,CAAC;EACH,CAAC,EAAE,CAACT,QAAQ,EAAEE,KAAK,CAAC,CAAC;;EAErB;AACF;AACA;EACEL,SAAS,CAAC,MAAM;IACdoB,MAAM,CAACN,gBAAgB,CAAC,OAAO,EAAEV,UAAU,CAAC;IAE5CD,QAAQ,CAACW,gBAAgB,CACvBb,qBAAqB,CAACe,kBAAkB,EACxCZ,UACF,CAAC;IAEDD,QAAQ,CAACW,gBAAgB,CAACb,qBAAqB,CAACoB,UAAU,EAAEjB,UAAU,CAAC;IAEvE,OAAO,MAAM;MACXgB,MAAM,CAACN,gBAAgB,CAAC,OAAO,EAAEV,UAAU,CAAC;MAC5CD,QAAQ,CAACgB,mBAAmB,CAC1BlB,qBAAqB,CAACe,kBAAkB,EACxCZ,UACF,CAAC;MAEDD,QAAQ,CAACgB,mBAAmB,CAC1BlB,qBAAqB,CAACoB,UAAU,EAChCjB,UACF,CAAC;IACH,CAAC;EACH,CAAC,EAAE,CAACD,QAAQ,EAAEC,UAAU,CAAC,CAAC;AAC5B,CAAC","ignoreList":[]}