@cfxjs/sirius-next-common 0.2.17 → 0.2.18

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 (157) hide show
  1. package/dist/{chunk-SX6R4MHO.js → chunk-2WEBXRNL.js} +2 -2
  2. package/dist/{chunk-CNF26YY7.js → chunk-6L4ZEJQI.js} +2 -2
  3. package/dist/{chunk-2KXTTKRI.js → chunk-7AVQOIDM.js} +2 -2
  4. package/dist/{chunk-ZLNQICQZ.js → chunk-7VQL3G7K.js} +4 -4
  5. package/dist/{chunk-GSWIFV2B.js → chunk-AYCHKB2Y.js} +2 -2
  6. package/dist/{chunk-E3ZD2GGG.js → chunk-BEI5TWJL.js} +2 -2
  7. package/dist/{chunk-CKVDFS45.js → chunk-BHAXBHVC.js} +8 -13
  8. package/dist/chunk-BHAXBHVC.js.map +1 -0
  9. package/dist/{chunk-LBWKTQYK.js → chunk-C6CGZ6KN.js} +2 -2
  10. package/dist/{chunk-P4EE3QGM.js → chunk-C7OIVXE3.js} +3 -3
  11. package/dist/{chunk-BUSBM33B.js → chunk-CMOP3BKX.js} +3 -3
  12. package/dist/{chunk-6H5A42YS.js → chunk-DCQANK66.js} +2 -2
  13. package/dist/{chunk-OZ4OJLIM.js → chunk-DYNSSHD5.js} +7 -7
  14. package/dist/{chunk-OCQIWTDC.js → chunk-ELF2EOGF.js} +2 -2
  15. package/dist/{chunk-5M5ECKFB.js → chunk-GG7ROFBQ.js} +45 -41
  16. package/dist/chunk-GG7ROFBQ.js.map +1 -0
  17. package/dist/{chunk-YIZCD4WG.js → chunk-GHHUAWSG.js} +3 -3
  18. package/dist/{chunk-DF3PVTB5.js → chunk-GQRCW7WX.js} +2 -2
  19. package/dist/{chunk-YIXV7A4J.js → chunk-H5ZJBRIK.js} +4 -4
  20. package/dist/{chunk-JRB53YY7.js → chunk-K4SBN5ZT.js} +22 -18
  21. package/dist/chunk-K4SBN5ZT.js.map +1 -0
  22. package/dist/{chunk-3PXUIH3S.js → chunk-LCIBOT5P.js} +2 -2
  23. package/dist/chunk-MUW5KBWU.js +25 -0
  24. package/dist/chunk-MUW5KBWU.js.map +1 -0
  25. package/dist/{chunk-7OSADJ6H.js → chunk-NFPBS22O.js} +24 -9
  26. package/dist/chunk-NFPBS22O.js.map +1 -0
  27. package/dist/{chunk-CPPQCJEV.js → chunk-NM3BMITL.js} +4 -5
  28. package/dist/chunk-NM3BMITL.js.map +1 -0
  29. package/dist/{chunk-L62OTV7F.js → chunk-OT7NZ4PK.js} +3 -3
  30. package/dist/{chunk-EMPFZFBS.js → chunk-RUU22F7R.js} +2 -2
  31. package/dist/{chunk-CPR4QZT6.js → chunk-UF5BN4QN.js} +2 -2
  32. package/dist/{chunk-TP67325Z.js → chunk-UZALXR3J.js} +4 -4
  33. package/dist/{chunk-5EDEEGZK.js → chunk-VGYNHJFT.js} +16 -3
  34. package/dist/chunk-VGYNHJFT.js.map +1 -0
  35. package/dist/{chunk-CL6QEKM6.js → chunk-W64AF7LA.js} +5 -5
  36. package/dist/chunk-WZIT54AU.js +51 -0
  37. package/dist/chunk-WZIT54AU.js.map +1 -0
  38. package/dist/{chunk-LUCBUM2Y.js → chunk-XZL5CZFT.js} +4 -4
  39. package/dist/{chunk-5Y7I6VYA.js → chunk-YEAWH772.js} +2 -2
  40. package/dist/{chunk-5CDCNIBM.js → chunk-YKHDBNJD.js} +21 -24
  41. package/dist/chunk-YKHDBNJD.js.map +1 -0
  42. package/dist/{chunk-LVFMTP5H.js → chunk-YVV32ON3.js} +2 -2
  43. package/dist/components/AceEditor/index.js +4 -4
  44. package/dist/components/AddressContainer/CoreAddressContainer.d.ts +1 -0
  45. package/dist/components/AddressContainer/CoreAddressContainer.js +10 -10
  46. package/dist/components/AddressContainer/EVMAddressContainer.d.ts +1 -0
  47. package/dist/components/AddressContainer/EVMAddressContainer.js +9 -9
  48. package/dist/components/AddressContainer/addressSwitcher.d.ts +1 -0
  49. package/dist/components/AddressContainer/addressSwitcher.js +7 -7
  50. package/dist/components/AddressContainer/addressView.d.ts +2 -1
  51. package/dist/components/AddressContainer/addressView.js +6 -6
  52. package/dist/components/AddressContainer/label.js +45 -6
  53. package/dist/components/AddressContainer/label.js.map +1 -1
  54. package/dist/components/AddressContainer/types.d.ts +20 -23
  55. package/dist/components/AddressContainer/utils.d.ts +17 -2
  56. package/dist/components/AddressContainer/utils.js +6 -20
  57. package/dist/components/AddressContainer/utils.js.map +1 -1
  58. package/dist/components/Age/index.js +4 -4
  59. package/dist/components/AutoComplete/index.js +3 -3
  60. package/dist/components/Charts/PreviewChartTemplate.js +1 -1
  61. package/dist/components/Charts/StockChartTemplate.js +1 -1
  62. package/dist/components/CopyButton/index.js +3 -3
  63. package/dist/components/DecimalsSelect/index.js +3 -3
  64. package/dist/components/DownloadCSV/index.js +4 -4
  65. package/dist/components/GasPriceDropdown/index.js +2 -2
  66. package/dist/components/IncreasePercent/index.js +2 -2
  67. package/dist/components/InfoIconWithTooltip/index.js +4 -4
  68. package/dist/components/InputData/AddressLabel.js +8 -9
  69. package/dist/components/InputData/ContractDetail.js +3 -3
  70. package/dist/components/InputData/JsonDecode.js +5 -5
  71. package/dist/components/InputData/OptimizationDecode.js +10 -11
  72. package/dist/components/InputData/UTF8.js +3 -3
  73. package/dist/components/InputData/index.js +14 -15
  74. package/dist/components/Modal/index.js +3 -3
  75. package/dist/components/NetworkIcon/index.js +2 -2
  76. package/dist/components/OutputData/ErrorDecode.js +13 -14
  77. package/dist/components/OutputData/index.js +15 -16
  78. package/dist/components/PhishingAddressContainer/index.js +4 -4
  79. package/dist/components/Popover/index.js +3 -3
  80. package/dist/components/Price/index.js +3 -3
  81. package/dist/components/ProxyContractAddress/index.d.ts +1 -1
  82. package/dist/components/ProxyContractAddress/index.js +24 -15
  83. package/dist/components/ProxyContractAddress/index.js.map +1 -1
  84. package/dist/components/Radio/index.js +2 -2
  85. package/dist/components/SearchInput/index.js +4 -4
  86. package/dist/components/Select/index.js +4 -4
  87. package/dist/components/Select/select.js +3 -3
  88. package/dist/components/Text/index.js +4 -4
  89. package/dist/components/Tooltip/index.js +3 -3
  90. package/dist/components/TransactionAction/coreTransactionAction.js +13 -18
  91. package/dist/components/TransactionAction/coreTransactionAction.js.map +1 -1
  92. package/dist/components/TransactionAction/evmTransactionAction.js +12 -17
  93. package/dist/components/TransactionAction/evmTransactionAction.js.map +1 -1
  94. package/dist/components/TransactionTrace/TraceDetail.js +23 -24
  95. package/dist/components/TransactionTrace/TreeTraceTable.js +24 -25
  96. package/dist/components/TransactionTrace/index.js +24 -25
  97. package/dist/utils/address.js +2 -2
  98. package/dist/utils/contractManagerTool.js +2 -2
  99. package/dist/utils/hooks/useAddressLabel.js +3 -3
  100. package/dist/utils/hooks/useAddressNameMap.d.ts +6 -0
  101. package/dist/utils/hooks/useAddressNameMap.js +12 -0
  102. package/dist/utils/hooks/useAddressNameMap.js.map +1 -0
  103. package/dist/utils/hooks/useAge.js +1 -1
  104. package/dist/utils/hooks/useAge.js.map +1 -1
  105. package/dist/utils/hooks/useAutoSetHolderFilterParams.js +2 -2
  106. package/dist/utils/hooks/useContractDetail.js +2 -2
  107. package/dist/utils/hooks/useDecodeFunctionData.js +5 -5
  108. package/dist/utils/hooks/useDecodeFunctionError.js +3 -3
  109. package/dist/utils/hooks/useENS.js +3 -3
  110. package/dist/utils/hooks/useEnhanceDataWithNameMap.d.ts +30 -0
  111. package/dist/utils/hooks/useEnhanceDataWithNameMap.js +71 -0
  112. package/dist/utils/hooks/useEnhanceDataWithNameMap.js.map +1 -0
  113. package/dist/utils/hooks/useMethodAbi.js +2 -2
  114. package/dist/utils/hooks/useTableData.d.ts +34 -0
  115. package/dist/utils/hooks/useTableData.js +95 -0
  116. package/dist/utils/hooks/useTableData.js.map +1 -0
  117. package/dist/utils/hooks/useTxTrace.d.ts +3 -40
  118. package/dist/utils/hooks/useTxTrace.js +5 -15
  119. package/dist/utils/hooks/useTxTrace.js.map +1 -1
  120. package/dist/utils/index.js +2 -2
  121. package/dist/utils/request.d.ts +7 -2
  122. package/dist/utils/request.js +3 -1
  123. package/dist/utils/request.types.d.ts +35 -1
  124. package/package.json +10 -10
  125. package/dist/chunk-5CDCNIBM.js.map +0 -1
  126. package/dist/chunk-5EDEEGZK.js.map +0 -1
  127. package/dist/chunk-5M5ECKFB.js.map +0 -1
  128. package/dist/chunk-7OSADJ6H.js.map +0 -1
  129. package/dist/chunk-CKVDFS45.js.map +0 -1
  130. package/dist/chunk-CPPQCJEV.js.map +0 -1
  131. package/dist/chunk-JRB53YY7.js.map +0 -1
  132. package/dist/chunk-Q2DX6IDH.js +0 -49
  133. package/dist/chunk-Q2DX6IDH.js.map +0 -1
  134. /package/dist/{chunk-SX6R4MHO.js.map → chunk-2WEBXRNL.js.map} +0 -0
  135. /package/dist/{chunk-CNF26YY7.js.map → chunk-6L4ZEJQI.js.map} +0 -0
  136. /package/dist/{chunk-2KXTTKRI.js.map → chunk-7AVQOIDM.js.map} +0 -0
  137. /package/dist/{chunk-ZLNQICQZ.js.map → chunk-7VQL3G7K.js.map} +0 -0
  138. /package/dist/{chunk-GSWIFV2B.js.map → chunk-AYCHKB2Y.js.map} +0 -0
  139. /package/dist/{chunk-E3ZD2GGG.js.map → chunk-BEI5TWJL.js.map} +0 -0
  140. /package/dist/{chunk-LBWKTQYK.js.map → chunk-C6CGZ6KN.js.map} +0 -0
  141. /package/dist/{chunk-P4EE3QGM.js.map → chunk-C7OIVXE3.js.map} +0 -0
  142. /package/dist/{chunk-BUSBM33B.js.map → chunk-CMOP3BKX.js.map} +0 -0
  143. /package/dist/{chunk-6H5A42YS.js.map → chunk-DCQANK66.js.map} +0 -0
  144. /package/dist/{chunk-OZ4OJLIM.js.map → chunk-DYNSSHD5.js.map} +0 -0
  145. /package/dist/{chunk-OCQIWTDC.js.map → chunk-ELF2EOGF.js.map} +0 -0
  146. /package/dist/{chunk-YIZCD4WG.js.map → chunk-GHHUAWSG.js.map} +0 -0
  147. /package/dist/{chunk-DF3PVTB5.js.map → chunk-GQRCW7WX.js.map} +0 -0
  148. /package/dist/{chunk-YIXV7A4J.js.map → chunk-H5ZJBRIK.js.map} +0 -0
  149. /package/dist/{chunk-3PXUIH3S.js.map → chunk-LCIBOT5P.js.map} +0 -0
  150. /package/dist/{chunk-L62OTV7F.js.map → chunk-OT7NZ4PK.js.map} +0 -0
  151. /package/dist/{chunk-EMPFZFBS.js.map → chunk-RUU22F7R.js.map} +0 -0
  152. /package/dist/{chunk-CPR4QZT6.js.map → chunk-UF5BN4QN.js.map} +0 -0
  153. /package/dist/{chunk-TP67325Z.js.map → chunk-UZALXR3J.js.map} +0 -0
  154. /package/dist/{chunk-CL6QEKM6.js.map → chunk-W64AF7LA.js.map} +0 -0
  155. /package/dist/{chunk-LUCBUM2Y.js.map → chunk-XZL5CZFT.js.map} +0 -0
  156. /package/dist/{chunk-5Y7I6VYA.js.map → chunk-YEAWH772.js.map} +0 -0
  157. /package/dist/{chunk-LVFMTP5H.js.map → chunk-YVV32ON3.js.map} +0 -0
@@ -6,7 +6,7 @@ import "../../chunk-WQG2LZMB.js";
6
6
  import { useEffect, useState } from "react";
7
7
  var useAge = (format) => {
8
8
  const [ageFormat, toggleAgeFormat] = useState(
9
- format || localStorage.getItem("CONFLUX_SCAN_TABLE_AGE_FORMAT" /* ageFormat */) !== "datetime" ? "age" : "datetime"
9
+ format || (localStorage.getItem("CONFLUX_SCAN_TABLE_AGE_FORMAT" /* ageFormat */) !== "datetime" ? "age" : "datetime")
10
10
  );
11
11
  useEffect(() => {
12
12
  if (localStorage.getItem("CONFLUX_SCAN_TABLE_AGE_FORMAT" /* ageFormat */) !== ageFormat) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/hooks/useAge.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { LOCALSTORAGE_KEYS_MAP } from '../constants';\n\nexport const useAge = (format?: string) => {\n const [ageFormat, toggleAgeFormat] = useState(\n format ||\n localStorage.getItem(LOCALSTORAGE_KEYS_MAP.ageFormat) !== 'datetime'\n ? 'age'\n : 'datetime',\n );\n useEffect(() => {\n if (localStorage.getItem(LOCALSTORAGE_KEYS_MAP.ageFormat) !== ageFormat) {\n localStorage.setItem(LOCALSTORAGE_KEYS_MAP.ageFormat, ageFormat);\n }\n }, [format, ageFormat]);\n return [ageFormat, toggleAgeFormat] as const;\n};\n"],"mappings":";;;;;AAAA,SAAS,WAAW,gBAAgB;AAG7B,IAAM,SAAS,CAAC,WAAoB;AACzC,QAAM,CAAC,WAAW,eAAe,IAAI;AAAA,IACnC,UACE,aAAa,uDAAuC,MAAM,aACxD,QACA;AAAA,EACN;AACA,YAAU,MAAM;AACd,QAAI,aAAa,uDAAuC,MAAM,WAAW;AACvE,mBAAa,yDAAyC,SAAS;AAAA,IACjE;AAAA,EACF,GAAG,CAAC,QAAQ,SAAS,CAAC;AACtB,SAAO,CAAC,WAAW,eAAe;AACpC;","names":[]}
1
+ {"version":3,"sources":["../../../src/utils/hooks/useAge.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { LOCALSTORAGE_KEYS_MAP } from '../constants';\n\nexport const useAge = (format?: string) => {\n const [ageFormat, toggleAgeFormat] = useState(\n format ||\n (localStorage.getItem(LOCALSTORAGE_KEYS_MAP.ageFormat) !== 'datetime'\n ? 'age'\n : 'datetime'),\n );\n useEffect(() => {\n if (localStorage.getItem(LOCALSTORAGE_KEYS_MAP.ageFormat) !== ageFormat) {\n localStorage.setItem(LOCALSTORAGE_KEYS_MAP.ageFormat, ageFormat);\n }\n }, [format, ageFormat]);\n return [ageFormat, toggleAgeFormat] as const;\n};\n"],"mappings":";;;;;AAAA,SAAS,WAAW,gBAAgB;AAG7B,IAAM,SAAS,CAAC,WAAoB;AACzC,QAAM,CAAC,WAAW,eAAe,IAAI;AAAA,IACnC,WACG,aAAa,uDAAuC,MAAM,aACvD,QACA;AAAA,EACR;AACA,YAAU,MAAM;AACd,QAAI,aAAa,uDAAuC,MAAM,WAAW;AACvE,mBAAa,yDAAyC,SAAS;AAAA,IACjE;AAAA,EACF,GAAG,CAAC,QAAQ,SAAS,CAAC;AACtB,SAAO,CAAC,WAAW,eAAe;AACpC;","names":[]}
@@ -3,9 +3,9 @@ import {
3
3
  } from "../../chunk-CPSXYQJ7.js";
4
4
  import {
5
5
  isAddressEqual
6
- } from "../../chunk-CNF26YY7.js";
6
+ } from "../../chunk-6L4ZEJQI.js";
7
7
  import "../../chunk-WIB76E7O.js";
8
- import "../../chunk-5EDEEGZK.js";
8
+ import "../../chunk-VGYNHJFT.js";
9
9
  import "../../chunk-J2I22Q2M.js";
10
10
  import "../../chunk-YEINMVAR.js";
11
11
  import "../../chunk-DQGLZCIG.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  useContractDetail
3
- } from "../../chunk-3PXUIH3S.js";
4
- import "../../chunk-5EDEEGZK.js";
3
+ } from "../../chunk-LCIBOT5P.js";
4
+ import "../../chunk-VGYNHJFT.js";
5
5
  import "../../chunk-J2I22Q2M.js";
6
6
  import "../../chunk-YEINMVAR.js";
7
7
  import "../../chunk-DQGLZCIG.js";
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  useDecodeFunctionData
3
- } from "../../chunk-LUCBUM2Y.js";
4
- import "../../chunk-E3ZD2GGG.js";
3
+ } from "../../chunk-XZL5CZFT.js";
4
+ import "../../chunk-BEI5TWJL.js";
5
5
  import "../../chunk-6SXAFSBF.js";
6
6
  import "../../chunk-JIRLY7OG.js";
7
7
  import "../../chunk-4B6ASBYQ.js";
8
- import "../../chunk-3PXUIH3S.js";
9
- import "../../chunk-CPPQCJEV.js";
8
+ import "../../chunk-LCIBOT5P.js";
9
+ import "../../chunk-NM3BMITL.js";
10
10
  import "../../chunk-WIB76E7O.js";
11
- import "../../chunk-5EDEEGZK.js";
11
+ import "../../chunk-VGYNHJFT.js";
12
12
  import "../../chunk-J2I22Q2M.js";
13
13
  import "../../chunk-YEINMVAR.js";
14
14
  import "../../chunk-DQGLZCIG.js";
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  useDecodeFunctionError
3
- } from "../../chunk-2KXTTKRI.js";
3
+ } from "../../chunk-7AVQOIDM.js";
4
4
  import "../../chunk-6SXAFSBF.js";
5
5
  import "../../chunk-JIRLY7OG.js";
6
6
  import "../../chunk-4B6ASBYQ.js";
7
- import "../../chunk-3PXUIH3S.js";
7
+ import "../../chunk-LCIBOT5P.js";
8
8
  import "../../chunk-5TGK2EA2.js";
9
9
  import "../../chunk-ADNS57X5.js";
10
10
  import "../../chunk-WIB76E7O.js";
11
- import "../../chunk-5EDEEGZK.js";
11
+ import "../../chunk-VGYNHJFT.js";
12
12
  import "../../chunk-J2I22Q2M.js";
13
13
  import "../../chunk-YEINMVAR.js";
14
14
  import "../../chunk-DQGLZCIG.js";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  useENS
3
- } from "../../chunk-BUSBM33B.js";
4
- import "../../chunk-CNF26YY7.js";
3
+ } from "../../chunk-CMOP3BKX.js";
4
+ import "../../chunk-6L4ZEJQI.js";
5
5
  import "../../chunk-WIB76E7O.js";
6
- import "../../chunk-5EDEEGZK.js";
6
+ import "../../chunk-VGYNHJFT.js";
7
7
  import "../../chunk-J2I22Q2M.js";
8
8
  import "../../chunk-YEINMVAR.js";
9
9
  import "../../chunk-DQGLZCIG.js";
@@ -0,0 +1,30 @@
1
+ import { AddressNameMap } from '../request.types.js';
2
+
3
+ declare const transformNameMapKeysToLowerCase: (nameMap?: Record<string, AddressNameMap>) => {
4
+ [k: string]: AddressNameMap;
5
+ } | undefined;
6
+ declare const enhanceDataWithNameMap: (list?: Record<string, unknown>[], nameMap?: Record<string, AddressNameMap>) => Record<string, unknown>[] | {
7
+ nameMap: {
8
+ [k: string]: AddressNameMap;
9
+ } | undefined;
10
+ }[] | undefined;
11
+ declare const formatListResponseWithNameMap: <T extends Record<string, unknown>>(res: T) => T & {
12
+ list: Record<string, unknown>[] | {
13
+ nameMap: {
14
+ [k: string]: AddressNameMap;
15
+ } | undefined;
16
+ }[] | undefined;
17
+ };
18
+ declare const useEnhanceDataWithNameMap: (list?: Record<string, unknown>[], { addressKeys, nameMap, }?: {
19
+ addressKeys?: string[] | undefined;
20
+ nameMap?: Record<string, AddressNameMap> | undefined;
21
+ }) => {
22
+ data: Record<string, unknown>[] | {
23
+ nameMap: {
24
+ [k: string]: AddressNameMap;
25
+ } | undefined;
26
+ }[] | undefined;
27
+ isLoading: boolean;
28
+ };
29
+
30
+ export { enhanceDataWithNameMap, formatListResponseWithNameMap, transformNameMapKeysToLowerCase, useEnhanceDataWithNameMap };
@@ -0,0 +1,71 @@
1
+ import {
2
+ useAddressNameMap
3
+ } from "../../chunk-MUW5KBWU.js";
4
+ import "../../chunk-VGYNHJFT.js";
5
+ import "../../chunk-J2I22Q2M.js";
6
+ import "../../chunk-YEINMVAR.js";
7
+ import "../../chunk-DQGLZCIG.js";
8
+ import "../../chunk-WQG2LZMB.js";
9
+
10
+ // src/utils/hooks/useEnhanceDataWithNameMap.ts
11
+ import { useMemo } from "react";
12
+ var transformNameMapKeysToLowerCase = (nameMap) => nameMap && Object.fromEntries(
13
+ Object.entries(nameMap).map(([k, v]) => [k.toLowerCase(), v])
14
+ );
15
+ var enhanceDataWithNameMap = (list, nameMap) => {
16
+ if (!nameMap || !list)
17
+ return list;
18
+ const normalizedNameMap = transformNameMapKeysToLowerCase(nameMap);
19
+ return list.map((item) => {
20
+ const newItem = {
21
+ ...item,
22
+ nameMap: normalizedNameMap
23
+ };
24
+ return newItem;
25
+ }) || [];
26
+ };
27
+ var formatListResponseWithNameMap = (res) => {
28
+ return {
29
+ ...res,
30
+ list: enhanceDataWithNameMap(
31
+ res.list,
32
+ res.nameMap
33
+ )
34
+ };
35
+ };
36
+ var useEnhanceDataWithNameMap = (list, {
37
+ addressKeys,
38
+ nameMap
39
+ } = {}) => {
40
+ const keys = useMemo(() => addressKeys?.join(",") || "", [addressKeys]);
41
+ const addresses = useMemo(() => {
42
+ const set = /* @__PURE__ */ new Set();
43
+ list?.forEach((item) => {
44
+ addressKeys?.forEach((key) => {
45
+ const address = item[key];
46
+ if (address && typeof address === "string") {
47
+ set.add(address);
48
+ }
49
+ });
50
+ });
51
+ return Array.from(set);
52
+ }, [list, keys]);
53
+ const { data: fetchedNameMap, isLoading } = useAddressNameMap(
54
+ addresses,
55
+ !nameMap
56
+ );
57
+ const finalNameMap = nameMap || fetchedNameMap;
58
+ return useMemo(() => {
59
+ return {
60
+ data: enhanceDataWithNameMap(list, finalNameMap),
61
+ isLoading
62
+ };
63
+ }, [list, finalNameMap, isLoading]);
64
+ };
65
+ export {
66
+ enhanceDataWithNameMap,
67
+ formatListResponseWithNameMap,
68
+ transformNameMapKeysToLowerCase,
69
+ useEnhanceDataWithNameMap
70
+ };
71
+ //# sourceMappingURL=useEnhanceDataWithNameMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/hooks/useEnhanceDataWithNameMap.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { useAddressNameMap } from './useAddressNameMap';\nimport { AddressNameMap } from '../request.types';\n\nexport const transformNameMapKeysToLowerCase = (\n nameMap?: Record<string, AddressNameMap>,\n) =>\n nameMap &&\n Object.fromEntries(\n Object.entries(nameMap).map(([k, v]) => [k.toLowerCase(), v]),\n );\n\nexport const enhanceDataWithNameMap = (\n list?: Record<string, unknown>[],\n nameMap?: Record<string, AddressNameMap>,\n) => {\n if (!nameMap || !list) return list;\n const normalizedNameMap = transformNameMapKeysToLowerCase(nameMap);\n\n return (\n list.map(item => {\n const newItem = {\n ...item,\n nameMap: normalizedNameMap,\n };\n return newItem;\n }) || []\n );\n};\n\nexport const formatListResponseWithNameMap = <\n T extends Record<string, unknown>,\n>(\n res: T,\n) => {\n return {\n ...res,\n list: enhanceDataWithNameMap(\n res.list as Record<string, unknown>[],\n res.nameMap as Record<string, AddressNameMap>,\n ),\n };\n};\n\nexport const useEnhanceDataWithNameMap = (\n list?: Record<string, unknown>[],\n {\n addressKeys,\n nameMap,\n }: {\n addressKeys?: string[];\n nameMap?: Record<string, AddressNameMap>;\n } = {},\n) => {\n const keys = useMemo(() => addressKeys?.join(',') || '', [addressKeys]);\n const addresses = useMemo(() => {\n const set = new Set<string>();\n list?.forEach(item => {\n addressKeys?.forEach(key => {\n const address = item[key];\n if (address && typeof address === 'string') {\n set.add(address);\n }\n });\n });\n return Array.from(set);\n }, [list, keys]);\n const { data: fetchedNameMap, isLoading } = useAddressNameMap(\n addresses,\n !nameMap,\n );\n const finalNameMap = nameMap || fetchedNameMap;\n return useMemo(() => {\n return {\n data: enhanceDataWithNameMap(list, finalNameMap),\n isLoading,\n };\n }, [list, finalNameMap, isLoading]);\n};\n"],"mappings":";;;;;;;;;;AAAA,SAAS,eAAe;AAIjB,IAAM,kCAAkC,CAC7C,YAEA,WACA,OAAO;AAAA,EACL,OAAO,QAAQ,OAAO,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC;AAC9D;AAEK,IAAM,yBAAyB,CACpC,MACA,YACG;AACH,MAAI,CAAC,WAAW,CAAC;AAAM,WAAO;AAC9B,QAAM,oBAAoB,gCAAgC,OAAO;AAEjE,SACE,KAAK,IAAI,UAAQ;AACf,UAAM,UAAU;AAAA,MACd,GAAG;AAAA,MACH,SAAS;AAAA,IACX;AACA,WAAO;AAAA,EACT,CAAC,KAAK,CAAC;AAEX;AAEO,IAAM,gCAAgC,CAG3C,QACG;AACH,SAAO;AAAA,IACL,GAAG;AAAA,IACH,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAAA,EACF;AACF;AAEO,IAAM,4BAA4B,CACvC,MACA;AAAA,EACE;AAAA,EACA;AACF,IAGI,CAAC,MACF;AACH,QAAM,OAAO,QAAQ,MAAM,aAAa,KAAK,GAAG,KAAK,IAAI,CAAC,WAAW,CAAC;AACtE,QAAM,YAAY,QAAQ,MAAM;AAC9B,UAAM,MAAM,oBAAI,IAAY;AAC5B,UAAM,QAAQ,UAAQ;AACpB,mBAAa,QAAQ,SAAO;AAC1B,cAAM,UAAU,KAAK,GAAG;AACxB,YAAI,WAAW,OAAO,YAAY,UAAU;AAC1C,cAAI,IAAI,OAAO;AAAA,QACjB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AACD,WAAO,MAAM,KAAK,GAAG;AAAA,EACvB,GAAG,CAAC,MAAM,IAAI,CAAC;AACf,QAAM,EAAE,MAAM,gBAAgB,UAAU,IAAI;AAAA,IAC1C;AAAA,IACA,CAAC;AAAA,EACH;AACA,QAAM,eAAe,WAAW;AAChC,SAAO,QAAQ,MAAM;AACnB,WAAO;AAAA,MACL,MAAM,uBAAuB,MAAM,YAAY;AAAA,MAC/C;AAAA,IACF;AAAA,EACF,GAAG,CAAC,MAAM,cAAc,SAAS,CAAC;AACpC;","names":[]}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  useMethodAbi
3
- } from "../../chunk-E3ZD2GGG.js";
4
- import "../../chunk-5EDEEGZK.js";
3
+ } from "../../chunk-BEI5TWJL.js";
4
+ import "../../chunk-VGYNHJFT.js";
5
5
  import "../../chunk-J2I22Q2M.js";
6
6
  import "../../chunk-YEINMVAR.js";
7
7
  import "../../chunk-DQGLZCIG.js";
@@ -0,0 +1,34 @@
1
+ import { SWRConfiguration, KeyedMutator } from 'swr';
2
+
3
+ interface UseTableDataOptions<T> {
4
+ url: string;
5
+ query?: Record<string, any>;
6
+ defaultSkip?: number;
7
+ defaultLimit?: number;
8
+ shouldFetch?: boolean;
9
+ swrConfig?: SWRConfiguration<T>;
10
+ }
11
+ interface TablePagination {
12
+ current: number;
13
+ pageSize: number;
14
+ total: number;
15
+ }
16
+ interface TableData {
17
+ list: Record<string, unknown>[];
18
+ total: number;
19
+ listLimit?: number;
20
+ }
21
+ interface UseTableDataResult<T extends TableData> {
22
+ data: T | undefined;
23
+ loading: boolean;
24
+ error: any;
25
+ mutate: KeyedMutator<T>;
26
+ pagination: TablePagination;
27
+ setPagination: (next: {
28
+ current?: number;
29
+ pageSize?: number;
30
+ }) => void;
31
+ }
32
+ declare const useTableData: <T extends TableData = TableData>({ url, query, defaultSkip, defaultLimit, shouldFetch, swrConfig, }: UseTableDataOptions<T>) => UseTableDataResult<T>;
33
+
34
+ export { TablePagination, UseTableDataOptions, UseTableDataResult, useTableData };
@@ -0,0 +1,95 @@
1
+ import {
2
+ useSearchParams
3
+ } from "../../chunk-CPSXYQJ7.js";
4
+ import {
5
+ fetchWithPrefix
6
+ } from "../../chunk-VGYNHJFT.js";
7
+ import "../../chunk-J2I22Q2M.js";
8
+ import "../../chunk-YEINMVAR.js";
9
+ import "../../chunk-DQGLZCIG.js";
10
+ import "../../chunk-WQG2LZMB.js";
11
+
12
+ // src/utils/hooks/useTableData.ts
13
+ import { useCallback, useMemo } from "react";
14
+ import { useHistory } from "react-router-dom";
15
+ import qs from "query-string";
16
+ import useSWR from "swr";
17
+ var toPositiveInt = (value, fallback, { allowZero = false } = {}) => {
18
+ const raw = Array.isArray(value) ? value[0] : value;
19
+ const n = Number(raw);
20
+ if (!Number.isFinite(n))
21
+ return fallback;
22
+ if (!Number.isInteger(n))
23
+ return fallback;
24
+ if (allowZero ? n < 0 : n <= 0)
25
+ return fallback;
26
+ return n;
27
+ };
28
+ var useTableData = ({
29
+ url,
30
+ query,
31
+ defaultSkip = 0,
32
+ defaultLimit = 10,
33
+ shouldFetch = true,
34
+ swrConfig
35
+ }) => {
36
+ const history = useHistory();
37
+ const search = useSearchParams();
38
+ const skip = toPositiveInt(search.skip, defaultSkip, { allowZero: true });
39
+ const limit = toPositiveInt(search.limit, defaultLimit);
40
+ const pageSize = limit;
41
+ const current = Math.floor(skip / limit) + 1;
42
+ const requestUrl = useMemo(() => {
43
+ const { skip: _s, limit: _l, ...restSearch } = search;
44
+ return qs.stringifyUrl({
45
+ url,
46
+ query: {
47
+ ...query || {},
48
+ ...restSearch,
49
+ skip: String(skip),
50
+ limit: String(limit)
51
+ }
52
+ });
53
+ }, [url, query, search, skip, limit]);
54
+ const key = shouldFetch ? requestUrl : null;
55
+ const { data, error, isLoading, mutate } = useSWR(
56
+ key,
57
+ () => fetchWithPrefix(requestUrl),
58
+ {
59
+ ...swrConfig
60
+ }
61
+ );
62
+ const setPagination = useCallback(
63
+ (next) => {
64
+ const nextPageSize = next.pageSize ?? pageSize;
65
+ const nextCurrent = next.current ?? current;
66
+ const nextSkip = Math.max(0, (nextCurrent - 1) * nextPageSize);
67
+ const nextSearch = qs.stringify({
68
+ ...search,
69
+ skip: String(nextSkip),
70
+ limit: String(nextPageSize)
71
+ });
72
+ history.push({
73
+ pathname: history.location.pathname,
74
+ search: nextSearch ? `?${nextSearch}` : ""
75
+ });
76
+ },
77
+ [history, search, current, pageSize]
78
+ );
79
+ return {
80
+ data,
81
+ loading: isLoading,
82
+ error,
83
+ mutate,
84
+ pagination: {
85
+ current,
86
+ pageSize,
87
+ total: data?.listLimit != null ? Math.min(data?.total ?? 0, data.listLimit) : data?.total ?? 0
88
+ },
89
+ setPagination
90
+ };
91
+ };
92
+ export {
93
+ useTableData
94
+ };
95
+ //# sourceMappingURL=useTableData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/hooks/useTableData.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport qs from 'query-string';\nimport useSWR, { SWRConfiguration, KeyedMutator } from 'swr';\nimport { fetchWithPrefix } from '../request';\nimport { useSearchParams } from './useSearchParams';\n\nexport interface UseTableDataOptions<T> {\n url: string;\n query?: Record<string, any>;\n defaultSkip?: number;\n defaultLimit?: number;\n shouldFetch?: boolean;\n swrConfig?: SWRConfiguration<T>;\n}\n\nexport interface TablePagination {\n current: number;\n pageSize: number;\n total: number;\n}\n\ninterface TableData {\n list: Record<string, unknown>[];\n total: number;\n listLimit?: number;\n}\n\nexport interface UseTableDataResult<T extends TableData> {\n data: T | undefined;\n loading: boolean;\n error: any;\n mutate: KeyedMutator<T>;\n pagination: TablePagination;\n setPagination: (next: { current?: number; pageSize?: number }) => void;\n}\n\nconst toPositiveInt = (\n value: unknown,\n fallback: number,\n { allowZero = false }: { allowZero?: boolean } = {},\n) => {\n const raw = Array.isArray(value) ? value[0] : value;\n const n = Number(raw);\n if (!Number.isFinite(n)) return fallback;\n if (!Number.isInteger(n)) return fallback;\n if (allowZero ? n < 0 : n <= 0) return fallback;\n return n;\n};\n\nexport const useTableData = <T extends TableData = TableData>({\n url,\n query,\n defaultSkip = 0,\n defaultLimit = 10,\n shouldFetch = true,\n swrConfig,\n}: UseTableDataOptions<T>): UseTableDataResult<T> => {\n const history = useHistory();\n const search = useSearchParams();\n\n const skip = toPositiveInt(search.skip, defaultSkip, { allowZero: true });\n const limit = toPositiveInt(search.limit, defaultLimit);\n\n const pageSize = limit;\n const current = Math.floor(skip / limit) + 1;\n\n const requestUrl = useMemo(() => {\n const { skip: _s, limit: _l, ...restSearch } = search;\n return qs.stringifyUrl({\n url,\n query: {\n ...(query || {}),\n ...restSearch,\n skip: String(skip),\n limit: String(limit),\n },\n });\n }, [url, query, search, skip, limit]);\n\n const key = shouldFetch ? requestUrl : null;\n\n const { data, error, isLoading, mutate } = useSWR<T>(\n key,\n () => fetchWithPrefix<T>(requestUrl),\n {\n ...swrConfig,\n },\n );\n\n const setPagination = useCallback(\n (next: { current?: number; pageSize?: number }) => {\n const nextPageSize = next.pageSize ?? pageSize;\n const nextCurrent = next.current ?? current;\n const nextSkip = Math.max(0, (nextCurrent - 1) * nextPageSize);\n const nextSearch = qs.stringify({\n ...search,\n skip: String(nextSkip),\n limit: String(nextPageSize),\n });\n history.push({\n pathname: history.location.pathname,\n search: nextSearch ? `?${nextSearch}` : '',\n });\n },\n [history, search, current, pageSize],\n );\n\n return {\n data,\n loading: isLoading,\n error,\n mutate,\n pagination: {\n current,\n pageSize,\n total:\n data?.listLimit != null\n ? Math.min(data?.total ?? 0, data.listLimit)\n : data?.total ?? 0,\n },\n setPagination,\n };\n};\n"],"mappings":";;;;;;;;;;;;AAAA,SAAS,aAAa,eAAe;AACrC,SAAS,kBAAkB;AAC3B,OAAO,QAAQ;AACf,OAAO,YAAgD;AAkCvD,IAAM,gBAAgB,CACpB,OACA,UACA,EAAE,YAAY,MAAM,IAA6B,CAAC,MAC/C;AACH,QAAM,MAAM,MAAM,QAAQ,KAAK,IAAI,MAAM,CAAC,IAAI;AAC9C,QAAM,IAAI,OAAO,GAAG;AACpB,MAAI,CAAC,OAAO,SAAS,CAAC;AAAG,WAAO;AAChC,MAAI,CAAC,OAAO,UAAU,CAAC;AAAG,WAAO;AACjC,MAAI,YAAY,IAAI,IAAI,KAAK;AAAG,WAAO;AACvC,SAAO;AACT;AAEO,IAAM,eAAe,CAAkC;AAAA,EAC5D;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,eAAe;AAAA,EACf,cAAc;AAAA,EACd;AACF,MAAqD;AACnD,QAAM,UAAU,WAAW;AAC3B,QAAM,SAAS,gBAAgB;AAE/B,QAAM,OAAO,cAAc,OAAO,MAAM,aAAa,EAAE,WAAW,KAAK,CAAC;AACxE,QAAM,QAAQ,cAAc,OAAO,OAAO,YAAY;AAEtD,QAAM,WAAW;AACjB,QAAM,UAAU,KAAK,MAAM,OAAO,KAAK,IAAI;AAE3C,QAAM,aAAa,QAAQ,MAAM;AAC/B,UAAM,EAAE,MAAM,IAAI,OAAO,IAAI,GAAG,WAAW,IAAI;AAC/C,WAAO,GAAG,aAAa;AAAA,MACrB;AAAA,MACA,OAAO;AAAA,QACL,GAAI,SAAS,CAAC;AAAA,QACd,GAAG;AAAA,QACH,MAAM,OAAO,IAAI;AAAA,QACjB,OAAO,OAAO,KAAK;AAAA,MACrB;AAAA,IACF,CAAC;AAAA,EACH,GAAG,CAAC,KAAK,OAAO,QAAQ,MAAM,KAAK,CAAC;AAEpC,QAAM,MAAM,cAAc,aAAa;AAEvC,QAAM,EAAE,MAAM,OAAO,WAAW,OAAO,IAAI;AAAA,IACzC;AAAA,IACA,MAAM,gBAAmB,UAAU;AAAA,IACnC;AAAA,MACE,GAAG;AAAA,IACL;AAAA,EACF;AAEA,QAAM,gBAAgB;AAAA,IACpB,CAAC,SAAkD;AACjD,YAAM,eAAe,KAAK,YAAY;AACtC,YAAM,cAAc,KAAK,WAAW;AACpC,YAAM,WAAW,KAAK,IAAI,IAAI,cAAc,KAAK,YAAY;AAC7D,YAAM,aAAa,GAAG,UAAU;AAAA,QAC9B,GAAG;AAAA,QACH,MAAM,OAAO,QAAQ;AAAA,QACrB,OAAO,OAAO,YAAY;AAAA,MAC5B,CAAC;AACD,cAAQ,KAAK;AAAA,QACX,UAAU,QAAQ,SAAS;AAAA,QAC3B,QAAQ,aAAa,IAAI,eAAe;AAAA,MAC1C,CAAC;AAAA,IACH;AAAA,IACA,CAAC,SAAS,QAAQ,SAAS,QAAQ;AAAA,EACrC;AAEA,SAAO;AAAA,IACL;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA,YAAY;AAAA,MACV;AAAA,MACA;AAAA,MACA,OACE,MAAM,aAAa,OACf,KAAK,IAAI,MAAM,SAAS,GAAG,KAAK,SAAS,IACzC,MAAM,SAAS;AAAA,IACvB;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import * as swr from 'swr';
2
2
  import { AbiFunctionWithoutGas } from '../sdk.js';
3
- import { Pocket } from '../request.types.js';
3
+ import { Pocket, AddressNameMap } from '../request.types.js';
4
4
  import 'viem';
5
5
 
6
6
  interface TraceAction {
@@ -23,27 +23,6 @@ interface TraceResult {
23
23
  outcome: 'success' | 'fail' | 'reverted';
24
24
  returnData: `0x${string}`;
25
25
  }
26
- interface ContractInfo {
27
- address: string;
28
- isVirtual: boolean;
29
- verify: {
30
- result: number;
31
- };
32
- }
33
- interface TokenInfo {
34
- address: string;
35
- decimals: number;
36
- symbol: string;
37
- name: string;
38
- tokenType: string;
39
- }
40
- interface NameTagInfo {
41
- nameTag: string;
42
- website?: string;
43
- desc?: string;
44
- labels?: string[];
45
- caution?: number;
46
- }
47
26
  interface OriginTreeTrace {
48
27
  calls: OriginTreeTrace[];
49
28
  action: TraceAction;
@@ -60,14 +39,9 @@ interface OriginTreeTrace {
60
39
  type ProxyType = 'BeaconProxy' | 'Proxy';
61
40
  interface OriginTraceData {
62
41
  addressArray: string[];
63
- contractMap: Record<string, ContractInfo>;
64
- tokenMap: Record<string, TokenInfo>;
65
42
  proxyMap: Record<string, ProxyType>;
66
43
  methodMap: Record<string, Record<string, string>>;
67
- ensMap: Record<string, {
68
- name?: string;
69
- }>;
70
- nameTagMap: Record<string, NameTagInfo>;
44
+ nameMap: Record<string, AddressNameMap>;
71
45
  traceTree: OriginTreeTrace[];
72
46
  }
73
47
  interface ListTraceForUI {
@@ -83,18 +57,7 @@ interface ListTraceForUI {
83
57
  method?: string;
84
58
  contractCreated?: string;
85
59
  abi?: AbiFunctionWithoutGas[];
86
- fromContractInfo: ContractInfo | {};
87
- toContractInfo: ContractInfo | {};
88
- fromTokenInfo: TokenInfo | {};
89
- toTokenInfo: TokenInfo | {};
90
- fromNameTagInfo?: NameTagInfo;
91
- toNameTagInfo?: NameTagInfo;
92
- fromENSInfo?: {
93
- name?: string;
94
- };
95
- toENSInfo?: {
96
- name?: string;
97
- };
60
+ nameMap: Record<string, AddressNameMap>;
98
61
  proxy?: {
99
62
  type: ProxyType;
100
63
  beaconAddress?: string;
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  formatAddress
3
- } from "../../chunk-CNF26YY7.js";
3
+ } from "../../chunk-6L4ZEJQI.js";
4
4
  import {
5
5
  formatABI
6
- } from "../../chunk-CPPQCJEV.js";
6
+ } from "../../chunk-NM3BMITL.js";
7
7
  import "../../chunk-WIB76E7O.js";
8
8
  import {
9
9
  fetchWithPrefix
10
- } from "../../chunk-5EDEEGZK.js";
10
+ } from "../../chunk-VGYNHJFT.js";
11
11
  import {
12
12
  publishRequestError
13
13
  } from "../../chunk-J2I22Q2M.js";
@@ -19,12 +19,9 @@ import "../../chunk-WQG2LZMB.js";
19
19
  import useSWRImmutable from "swr/immutable";
20
20
  var formatTraceData = (data, space) => {
21
21
  const addressType = space === "core" ? "base32" : "hex";
22
- const contractInfo = data.contractMap || {};
23
- const tokenInfo = data.tokenMap || {};
24
22
  const proxyMap = data.proxyMap || {};
25
- const nameTagMap = data.nameTagMap || {};
26
- const ensMap = data.ensMap || {};
27
23
  const methodMap = data.methodMap || {};
24
+ const nameMap = data.nameMap || {};
28
25
  let total = 0;
29
26
  const formatList = (t, parent) => {
30
27
  total += t.length;
@@ -63,14 +60,7 @@ var formatTraceData = (data, space) => {
63
60
  method,
64
61
  abi,
65
62
  contractCreated: isContractCreated ? t.result?.addr : void 0,
66
- fromContractInfo: contractInfo[from] || {},
67
- toContractInfo: contractInfo[to ?? ""] || {},
68
- fromTokenInfo: tokenInfo[from] || {},
69
- toTokenInfo: tokenInfo[to ?? ""] || {},
70
- fromNameTagInfo: nameTagMap[from],
71
- toNameTagInfo: nameTagMap[to ?? ""],
72
- fromENSInfo: ensMap[from],
73
- toENSInfo: ensMap[to ?? ""],
63
+ nameMap,
74
64
  isCallImpl: t.isCallImpl,
75
65
  fromPocket: t.action.fromPocket,
76
66
  toPocket: t.action.toPocket
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/hooks/useTxTrace.ts"],"sourcesContent":["import useSWRImmutable from 'swr/immutable';\nimport { fetchWithPrefix } from 'src/utils/request';\nimport { publishRequestError } from '../pubsub';\nimport type { AbiFunctionWithoutGas } from 'src/utils/sdk';\nimport { formatABI } from '..';\nimport { formatAddress } from '../address';\nimport { Pocket } from '../request.types';\n\nexport interface TraceAction {\n createType: string;\n callType: string;\n from: string;\n to?: string;\n input?: `0x${string}`;\n value: string;\n gas?: string;\n space: string;\n\n // ↓↓↓↓↓↓↓↓ only for core space ↓↓↓↓↓↓↓↓\n fromPocket?: Pocket;\n toPocket?: Pocket;\n fromSpace?: 'evm' | 'none' | 'native';\n toSpace?: 'evm' | 'none' | 'native';\n}\nexport interface TraceResult {\n addr?: string;\n gasLeft: string;\n outcome: 'success' | 'fail' | 'reverted';\n returnData: `0x${string}`;\n}\n\ninterface ContractInfo {\n address: string;\n isVirtual: boolean;\n verify: {\n result: number;\n };\n}\ninterface TokenInfo {\n address: string;\n decimals: number;\n symbol: string;\n name: string;\n tokenType: string;\n}\n\ninterface NameTagInfo {\n nameTag: string;\n website?: string;\n desc?: string;\n labels?: string[];\n caution?: number;\n}\n\nexport interface OriginTreeTrace {\n calls: OriginTreeTrace[];\n action: TraceAction;\n result?: TraceResult;\n blockHash: string;\n epochHash: string;\n epochNumber: number;\n transactionHash: string;\n transactionPosition: number;\n type: string;\n valid: boolean;\n // added by frontend\n isCallImpl?: boolean;\n}\n\nexport type ProxyType = 'BeaconProxy' | 'Proxy';\n\nexport interface OriginTraceData {\n addressArray: string[];\n contractMap: Record<string, ContractInfo>;\n tokenMap: Record<string, TokenInfo>;\n proxyMap: Record<string, ProxyType>;\n methodMap: Record<string, Record<string, string>>;\n ensMap: Record<\n string,\n {\n name?: string;\n }\n >;\n nameTagMap: Record<string, NameTagInfo>;\n traceTree: OriginTreeTrace[];\n}\n\nexport interface ListTraceForUI {\n index: string;\n type: string;\n from: string;\n to?: string;\n value: string;\n input?: `0x${string}`;\n result?: TraceResult;\n gas?: string;\n isProxyCall?: boolean;\n method?: string;\n contractCreated?: string;\n abi?: AbiFunctionWithoutGas[];\n fromContractInfo: ContractInfo | {};\n toContractInfo: ContractInfo | {};\n fromTokenInfo: TokenInfo | {};\n toTokenInfo: TokenInfo | {};\n fromNameTagInfo?: NameTagInfo;\n toNameTagInfo?: NameTagInfo;\n fromENSInfo?: {\n name?: string;\n };\n toENSInfo?: {\n name?: string;\n };\n proxy?: {\n type: ProxyType;\n beaconAddress?: string;\n implAddress: string;\n };\n isCallBeacon?: boolean;\n isCallImpl?: boolean;\n // only for core space ↓↓↓↓↓↓↓↓\n toESpaceInfo?: {\n address?: string;\n };\n fromESpaceInfo?: {\n address?: string;\n };\n fromPocket?: Pocket;\n toPocket?: Pocket;\n}\n\nexport interface TreeTraceForUI extends ListTraceForUI {\n calls?: TreeTraceForUI[];\n}\n\nconst formatTraceData = (data: OriginTraceData, space: 'evm' | 'core') => {\n const addressType = space === 'core' ? 'base32' : 'hex';\n const contractInfo = data.contractMap || {};\n const tokenInfo = data.tokenMap || {};\n const proxyMap = data.proxyMap || {};\n const nameTagMap = data.nameTagMap || {};\n const ensMap = data.ensMap || {};\n const methodMap = data.methodMap || {};\n\n let total = 0;\n\n const formatList = (\n t: OriginTreeTrace[],\n parent?: TreeTraceForUI,\n ): TreeTraceForUI[] => {\n total += t.length;\n return t.map((item, index) => formatItem(item, index, parent, t));\n };\n const formatItem = (\n t: OriginTreeTrace,\n index: number,\n parent: TreeTraceForUI | undefined,\n list: OriginTreeTrace[],\n ): TreeTraceForUI => {\n const methodId = t.action.input?.slice(0, 10);\n const from = formatAddress(t.action.from, addressType);\n const to = formatAddress(t.action.to, addressType);\n let method = methodId;\n let abi: AbiFunctionWithoutGas[] | undefined = undefined;\n const methodABI = methodId && to ? methodMap[methodId]?.[to] : undefined;\n if (methodABI) {\n try {\n const result = formatABI(`[\"${methodABI}\"]`, {\n json: true,\n allowEmpty: true,\n });\n abi = JSON.parse(result) as AbiFunctionWithoutGas[];\n const jsonABI = abi[0];\n method = jsonABI?.name || methodId;\n } catch (error) {\n console.log('parse method abi error: ', methodABI, error);\n }\n }\n\n const isContractCreated = !!t.action.createType;\n\n const item: TreeTraceForUI = {\n index: `${parent?.index ? `${parent.index}_` : ''}${index}`,\n type: `${t.action.callType || t.type}`,\n from: from,\n to: to,\n input: t.action.input,\n value: t.action.value,\n result: t.result,\n gas: t.action.gas,\n method,\n abi,\n contractCreated: isContractCreated ? t.result?.addr : undefined,\n fromContractInfo: contractInfo[from] || {},\n toContractInfo: contractInfo[to ?? ''] || {},\n fromTokenInfo: tokenInfo[from] || {},\n toTokenInfo: tokenInfo[to ?? ''] || {},\n fromNameTagInfo: nameTagMap[from],\n toNameTagInfo: nameTagMap[to ?? ''],\n fromENSInfo: ensMap[from],\n toENSInfo: ensMap[to ?? ''],\n isCallImpl: t.isCallImpl,\n fromPocket: t.action.fromPocket,\n toPocket: t.action.toPocket,\n };\n if (t.action.fromSpace === 'evm') {\n item.fromESpaceInfo = {\n address: formatAddress(from, 'hex'),\n };\n }\n if (t.action.toSpace === 'evm') {\n item.toESpaceInfo = {\n address: formatAddress(to, 'hex'),\n };\n }\n if (\n parent &&\n parent.to &&\n proxyMap[parent.to] &&\n from === parent.to &&\n to\n ) {\n // proxy call\n if (\n index === 0 &&\n proxyMap[parent.to] === 'Proxy' &&\n t.action.callType === 'delegatecall'\n ) {\n parent.proxy = {\n type: 'Proxy',\n implAddress: to,\n };\n item.isCallImpl = true;\n }\n // beacon proxy call\n const second = list[1];\n if (\n index === 0 &&\n proxyMap[parent.to] === 'BeaconProxy' &&\n t.action.callType === 'staticcall' &&\n second &&\n second.action.to &&\n second.action.from === parent.to &&\n second.action.callType === 'delegatecall'\n ) {\n parent.proxy = {\n type: 'BeaconProxy',\n beaconAddress: to,\n implAddress: second.action.to,\n };\n item.isCallBeacon = true;\n second.isCallImpl = true;\n }\n }\n if (t.calls) {\n item.calls = formatList(t.calls, item);\n }\n return item;\n };\n const list = formatList(data.traceTree);\n return {\n total,\n list,\n };\n};\n\nexport const treeTraceToList = (\n data: TreeTraceForUI[],\n showProxyCall = false,\n) => {\n const result: ListTraceForUI[] = [];\n const handler = (list: TreeTraceForUI[]) => {\n list.forEach(item => {\n if (showProxyCall || (!item.isCallBeacon && !item.isCallImpl)) {\n result.push(item);\n }\n if (item.calls) {\n handler(item.calls);\n }\n });\n };\n handler(data);\n return result;\n};\n\nexport const hideProxyCallInTreeTrace = (data: TreeTraceForUI[]) => {\n const handler = (list: TreeTraceForUI[]) => {\n const result: TreeTraceForUI[] = [];\n list.forEach(item => {\n const newTrace = { ...item };\n if (!newTrace.isCallBeacon && !newTrace.isCallImpl) {\n result.push(newTrace);\n if (newTrace.calls) {\n newTrace.calls = handler(newTrace.calls);\n }\n } else if (newTrace.calls) {\n result.push(...handler(newTrace.calls));\n }\n });\n return result;\n };\n return handler(data);\n};\n\nexport const useTxTrace = (hash: string, space: 'evm' | 'core') => {\n const url = `/transferTree/${hash}`;\n\n return useSWRImmutable([url, space], () =>\n fetchWithPrefix(url)\n .then((resp: any) => {\n if (resp?.traceTree) {\n const { list, total } = formatTraceData(resp, space);\n return { list, total };\n }\n })\n .catch(e => {\n publishRequestError({ code: 60002, message: e.message }, 'code');\n }),\n );\n};\n"],"mappings":"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","names":["list"]}
1
+ {"version":3,"sources":["../../../src/utils/hooks/useTxTrace.ts"],"sourcesContent":["import useSWRImmutable from 'swr/immutable';\nimport { fetchWithPrefix } from 'src/utils/request';\nimport { publishRequestError } from '../pubsub';\nimport type { AbiFunctionWithoutGas } from 'src/utils/sdk';\nimport { formatABI } from '..';\nimport { formatAddress } from '../address';\nimport { AddressNameMap, Pocket } from '../request.types';\n\nexport interface TraceAction {\n createType: string;\n callType: string;\n from: string;\n to?: string;\n input?: `0x${string}`;\n value: string;\n gas?: string;\n space: string;\n\n // ↓↓↓↓↓↓↓↓ only for core space ↓↓↓↓↓↓↓↓\n fromPocket?: Pocket;\n toPocket?: Pocket;\n fromSpace?: 'evm' | 'none' | 'native';\n toSpace?: 'evm' | 'none' | 'native';\n}\nexport interface TraceResult {\n addr?: string;\n gasLeft: string;\n outcome: 'success' | 'fail' | 'reverted';\n returnData: `0x${string}`;\n}\n\nexport interface OriginTreeTrace {\n calls: OriginTreeTrace[];\n action: TraceAction;\n result?: TraceResult;\n blockHash: string;\n epochHash: string;\n epochNumber: number;\n transactionHash: string;\n transactionPosition: number;\n type: string;\n valid: boolean;\n // added by frontend\n isCallImpl?: boolean;\n}\n\nexport type ProxyType = 'BeaconProxy' | 'Proxy';\n\nexport interface OriginTraceData {\n addressArray: string[];\n proxyMap: Record<string, ProxyType>;\n methodMap: Record<string, Record<string, string>>;\n nameMap: Record<string, AddressNameMap>;\n traceTree: OriginTreeTrace[];\n}\n\nexport interface ListTraceForUI {\n index: string;\n type: string;\n from: string;\n to?: string;\n value: string;\n input?: `0x${string}`;\n result?: TraceResult;\n gas?: string;\n isProxyCall?: boolean;\n method?: string;\n contractCreated?: string;\n abi?: AbiFunctionWithoutGas[];\n nameMap: Record<string, AddressNameMap>;\n proxy?: {\n type: ProxyType;\n beaconAddress?: string;\n implAddress: string;\n };\n isCallBeacon?: boolean;\n isCallImpl?: boolean;\n // only for core space ↓↓↓↓↓↓↓↓\n toESpaceInfo?: {\n address?: string;\n };\n fromESpaceInfo?: {\n address?: string;\n };\n fromPocket?: Pocket;\n toPocket?: Pocket;\n}\n\nexport interface TreeTraceForUI extends ListTraceForUI {\n calls?: TreeTraceForUI[];\n}\n\nconst formatTraceData = (data: OriginTraceData, space: 'evm' | 'core') => {\n const addressType = space === 'core' ? 'base32' : 'hex';\n const proxyMap = data.proxyMap || {};\n const methodMap = data.methodMap || {};\n const nameMap = data.nameMap || {};\n\n let total = 0;\n\n const formatList = (\n t: OriginTreeTrace[],\n parent?: TreeTraceForUI,\n ): TreeTraceForUI[] => {\n total += t.length;\n return t.map((item, index) => formatItem(item, index, parent, t));\n };\n const formatItem = (\n t: OriginTreeTrace,\n index: number,\n parent: TreeTraceForUI | undefined,\n list: OriginTreeTrace[],\n ): TreeTraceForUI => {\n const methodId = t.action.input?.slice(0, 10);\n const from = formatAddress(t.action.from, addressType);\n const to = formatAddress(t.action.to, addressType);\n let method = methodId;\n let abi: AbiFunctionWithoutGas[] | undefined = undefined;\n const methodABI = methodId && to ? methodMap[methodId]?.[to] : undefined;\n if (methodABI) {\n try {\n const result = formatABI(`[\"${methodABI}\"]`, {\n json: true,\n allowEmpty: true,\n });\n abi = JSON.parse(result) as AbiFunctionWithoutGas[];\n const jsonABI = abi[0];\n method = jsonABI?.name || methodId;\n } catch (error) {\n console.log('parse method abi error: ', methodABI, error);\n }\n }\n\n const isContractCreated = !!t.action.createType;\n\n const item: TreeTraceForUI = {\n index: `${parent?.index ? `${parent.index}_` : ''}${index}`,\n type: `${t.action.callType || t.type}`,\n from: from,\n to: to,\n input: t.action.input,\n value: t.action.value,\n result: t.result,\n gas: t.action.gas,\n method,\n abi,\n contractCreated: isContractCreated ? t.result?.addr : undefined,\n nameMap,\n isCallImpl: t.isCallImpl,\n fromPocket: t.action.fromPocket,\n toPocket: t.action.toPocket,\n };\n if (t.action.fromSpace === 'evm') {\n // TODO\n item.fromESpaceInfo = {\n address: formatAddress(from, 'hex'),\n };\n }\n if (t.action.toSpace === 'evm') {\n // TODO\n item.toESpaceInfo = {\n address: formatAddress(to, 'hex'),\n };\n }\n if (\n parent &&\n parent.to &&\n proxyMap[parent.to] &&\n from === parent.to &&\n to\n ) {\n // proxy call\n if (\n index === 0 &&\n proxyMap[parent.to] === 'Proxy' &&\n t.action.callType === 'delegatecall'\n ) {\n parent.proxy = {\n type: 'Proxy',\n implAddress: to,\n };\n item.isCallImpl = true;\n }\n // beacon proxy call\n const second = list[1];\n if (\n index === 0 &&\n proxyMap[parent.to] === 'BeaconProxy' &&\n t.action.callType === 'staticcall' &&\n second &&\n second.action.to &&\n second.action.from === parent.to &&\n second.action.callType === 'delegatecall'\n ) {\n parent.proxy = {\n type: 'BeaconProxy',\n beaconAddress: to,\n implAddress: second.action.to,\n };\n item.isCallBeacon = true;\n second.isCallImpl = true;\n }\n }\n if (t.calls) {\n item.calls = formatList(t.calls, item);\n }\n return item;\n };\n const list = formatList(data.traceTree);\n return {\n total,\n list,\n };\n};\n\nexport const treeTraceToList = (\n data: TreeTraceForUI[],\n showProxyCall = false,\n) => {\n const result: ListTraceForUI[] = [];\n const handler = (list: TreeTraceForUI[]) => {\n list.forEach(item => {\n if (showProxyCall || (!item.isCallBeacon && !item.isCallImpl)) {\n result.push(item);\n }\n if (item.calls) {\n handler(item.calls);\n }\n });\n };\n handler(data);\n return result;\n};\n\nexport const hideProxyCallInTreeTrace = (data: TreeTraceForUI[]) => {\n const handler = (list: TreeTraceForUI[]) => {\n const result: TreeTraceForUI[] = [];\n list.forEach(item => {\n const newTrace = { ...item };\n if (!newTrace.isCallBeacon && !newTrace.isCallImpl) {\n result.push(newTrace);\n if (newTrace.calls) {\n newTrace.calls = handler(newTrace.calls);\n }\n } else if (newTrace.calls) {\n result.push(...handler(newTrace.calls));\n }\n });\n return result;\n };\n return handler(data);\n};\n\nexport const useTxTrace = (hash: string, space: 'evm' | 'core') => {\n const url = `/transferTree/${hash}`;\n\n return useSWRImmutable([url, space], () =>\n fetchWithPrefix(url)\n .then((resp: any) => {\n if (resp?.traceTree) {\n const { list, total } = formatTraceData(resp, space);\n return { list, total };\n }\n })\n .catch(e => {\n publishRequestError({ code: 60002, message: e.message }, 'code');\n }),\n );\n};\n"],"mappings":"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","names":["list"]}
@@ -52,9 +52,9 @@ import {
52
52
  transferToLowerCase,
53
53
  validURL,
54
54
  viewJson
55
- } from "../chunk-CPPQCJEV.js";
55
+ } from "../chunk-NM3BMITL.js";
56
56
  import "../chunk-WIB76E7O.js";
57
- import "../chunk-5EDEEGZK.js";
57
+ import "../chunk-VGYNHJFT.js";
58
58
  import "../chunk-J2I22Q2M.js";
59
59
  import "../chunk-YEINMVAR.js";
60
60
  import "../chunk-DQGLZCIG.js";
@@ -1,4 +1,4 @@
1
- import { BaseContractInfo, DetectAccountTypeResponse, MethodAbiItemResponse } from './request.types.js';
1
+ import { BaseContractInfo, DetectAccountTypeResponse, MethodAbiItemResponse, AddressNameMap } from './request.types.js';
2
2
 
3
3
  interface FetchOptions extends RequestInit {
4
4
  timeout?: number;
@@ -30,5 +30,10 @@ declare const detectAccountType: (address: string) => Promise<DetectAccountTypeR
30
30
  declare const reqAbiByMethodId: (methodId: string) => Promise<{
31
31
  list: MethodAbiItemResponse[];
32
32
  }>;
33
+ declare const fetchAddressNameMap: (addresses: string[], params?: {
34
+ withContractInfo?: 'true' | 'false';
35
+ withNameTagInfo?: 'true' | 'false';
36
+ withENSInfo?: 'true' | 'false';
37
+ }) => Promise<Record<string, AddressNameMap>>;
33
38
 
34
- export { appendApiPrefix, detectAccountType, fetch, fetchWithOpenApi, fetchWithPrefix, getContractDetail, reqAbiByMethodId, reqContractAndToken, reqNametag, sendRequestChart, sendRequestENSInfo, sendRequestGasPrice, simpleGetFetcher };
39
+ export { appendApiPrefix, detectAccountType, fetch, fetchAddressNameMap, fetchWithOpenApi, fetchWithPrefix, getContractDetail, reqAbiByMethodId, reqContractAndToken, reqNametag, sendRequestChart, sendRequestENSInfo, sendRequestGasPrice, simpleGetFetcher };
@@ -2,6 +2,7 @@ import {
2
2
  appendApiPrefix,
3
3
  detectAccountType,
4
4
  fetch,
5
+ fetchAddressNameMap,
5
6
  fetchWithOpenApi,
6
7
  fetchWithPrefix,
7
8
  getContractDetail,
@@ -12,7 +13,7 @@ import {
12
13
  sendRequestENSInfo,
13
14
  sendRequestGasPrice,
14
15
  simpleGetFetcher
15
- } from "../chunk-5EDEEGZK.js";
16
+ } from "../chunk-VGYNHJFT.js";
16
17
  import "../chunk-J2I22Q2M.js";
17
18
  import "../chunk-YEINMVAR.js";
18
19
  import "../chunk-DQGLZCIG.js";
@@ -21,6 +22,7 @@ export {
21
22
  appendApiPrefix,
22
23
  detectAccountType,
23
24
  fetch,
25
+ fetchAddressNameMap,
24
26
  fetchWithOpenApi,
25
27
  fetchWithPrefix,
26
28
  getContractDetail,
@@ -61,10 +61,44 @@ interface DetectAccountTypeResponse {
61
61
  delegatedTo: `0x${string}` | '' | null;
62
62
  extraMessage: string;
63
63
  }
64
+ interface AddressNameMap {
65
+ contract?: {
66
+ name?: string;
67
+ };
68
+ token?: {
69
+ name?: string;
70
+ symbol?: string;
71
+ decimals?: number;
72
+ iconUrl?: string;
73
+ website?: string;
74
+ tokenType?: string;
75
+ };
76
+ verification?: {
77
+ name?: string;
78
+ };
79
+ eSpace?: {
80
+ address?: string;
81
+ };
82
+ ens?: {
83
+ name?: string;
84
+ };
85
+ nameTag?: {
86
+ nameTag?: string;
87
+ website?: string;
88
+ desc?: string;
89
+ labels?: string[];
90
+ caution?: string;
91
+ };
92
+ implementation?: {
93
+ name?: string;
94
+ address?: string;
95
+ proxyPattern?: string;
96
+ };
97
+ }
64
98
  interface MethodAbiItemResponse {
65
99
  fullName: string;
66
100
  formatWithArg?: string;
67
101
  }
68
102
  type Pocket = 'balance' | 'staking_balance' | 'storage_collateral' | 'sponsor_balance_for_gas' | 'sponsor_balance_for_collateral' | 'mint_or_burn' | 'gas_payment';
69
103
 
70
- export { BaseContractInfo, DetectAccountTypeResponse, MethodAbiItemResponse, Pocket };
104
+ export { AddressNameMap, BaseContractInfo, DetectAccountTypeResponse, MethodAbiItemResponse, Pocket };