@metamask/snap-networks-utils 1.0.0 → 2.0.0

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 (360) hide show
  1. package/CHANGELOG.md +63 -1
  2. package/README.md +4 -10
  3. package/dist/index.cjs +102 -5
  4. package/dist/index.cjs.map +1 -1
  5. package/dist/index.d.cts +51 -2
  6. package/dist/index.d.cts.map +1 -1
  7. package/dist/index.d.mts +51 -2
  8. package/dist/index.d.mts.map +1 -1
  9. package/dist/index.mjs +32 -1
  10. package/dist/index.mjs.map +1 -1
  11. package/dist/providers/assets/AssetsProvider.cjs +36 -18
  12. package/dist/providers/assets/AssetsProvider.cjs.map +1 -1
  13. package/dist/providers/assets/AssetsProvider.d.cts +30 -2
  14. package/dist/providers/assets/AssetsProvider.d.cts.map +1 -1
  15. package/dist/providers/assets/AssetsProvider.d.mts +30 -2
  16. package/dist/providers/assets/AssetsProvider.d.mts.map +1 -1
  17. package/dist/providers/assets/AssetsProvider.mjs +36 -18
  18. package/dist/providers/assets/AssetsProvider.mjs.map +1 -1
  19. package/dist/providers/remote-feature-flags/RemoteFeatureFlagsProvider.cjs +4 -17
  20. package/dist/providers/remote-feature-flags/RemoteFeatureFlagsProvider.cjs.map +1 -1
  21. package/dist/providers/remote-feature-flags/RemoteFeatureFlagsProvider.mjs +4 -17
  22. package/dist/providers/remote-feature-flags/RemoteFeatureFlagsProvider.mjs.map +1 -1
  23. package/dist/services/analytics/AnalyticsService.cjs +225 -0
  24. package/dist/services/analytics/AnalyticsService.cjs.map +1 -0
  25. package/dist/services/analytics/AnalyticsService.d.cts +175 -0
  26. package/dist/services/analytics/AnalyticsService.d.cts.map +1 -0
  27. package/dist/services/analytics/AnalyticsService.d.mts +175 -0
  28. package/dist/services/analytics/AnalyticsService.d.mts.map +1 -0
  29. package/dist/services/analytics/AnalyticsService.mjs +221 -0
  30. package/dist/services/analytics/AnalyticsService.mjs.map +1 -0
  31. package/dist/ui/ActionHeader/ActionHeader.cjs +23 -0
  32. package/dist/ui/ActionHeader/ActionHeader.cjs.map +1 -0
  33. package/dist/ui/ActionHeader/ActionHeader.d.cts +27 -0
  34. package/dist/ui/ActionHeader/ActionHeader.d.cts.map +1 -0
  35. package/dist/ui/ActionHeader/ActionHeader.d.mts +27 -0
  36. package/dist/ui/ActionHeader/ActionHeader.d.mts.map +1 -0
  37. package/dist/ui/ActionHeader/ActionHeader.mjs +19 -0
  38. package/dist/ui/ActionHeader/ActionHeader.mjs.map +1 -0
  39. package/dist/ui/Asset/Asset.cjs +68 -0
  40. package/dist/ui/Asset/Asset.cjs.map +1 -0
  41. package/dist/ui/Asset/Asset.d.cts +83 -0
  42. package/dist/ui/Asset/Asset.d.cts.map +1 -0
  43. package/dist/ui/Asset/Asset.d.mts +83 -0
  44. package/dist/ui/Asset/Asset.d.mts.map +1 -0
  45. package/dist/ui/Asset/Asset.mjs +60 -0
  46. package/dist/ui/Asset/Asset.mjs.map +1 -0
  47. package/dist/ui/Asset/question-mark.svg +3 -0
  48. package/dist/ui/EstimatedChanges/EstimatedChanges.cjs +57 -0
  49. package/dist/ui/EstimatedChanges/EstimatedChanges.cjs.map +1 -0
  50. package/dist/ui/EstimatedChanges/EstimatedChanges.d.cts +50 -0
  51. package/dist/ui/EstimatedChanges/EstimatedChanges.d.cts.map +1 -0
  52. package/dist/ui/EstimatedChanges/EstimatedChanges.d.mts +50 -0
  53. package/dist/ui/EstimatedChanges/EstimatedChanges.d.mts.map +1 -0
  54. package/dist/ui/EstimatedChanges/EstimatedChanges.mjs +53 -0
  55. package/dist/ui/EstimatedChanges/EstimatedChanges.mjs.map +1 -0
  56. package/dist/ui/TransactionAlert/TransactionAlert.cjs +72 -0
  57. package/dist/ui/TransactionAlert/TransactionAlert.cjs.map +1 -0
  58. package/dist/ui/TransactionAlert/TransactionAlert.d.cts +58 -0
  59. package/dist/ui/TransactionAlert/TransactionAlert.d.cts.map +1 -0
  60. package/dist/ui/TransactionAlert/TransactionAlert.d.mts +58 -0
  61. package/dist/ui/TransactionAlert/TransactionAlert.d.mts.map +1 -0
  62. package/dist/ui/TransactionAlert/TransactionAlert.mjs +68 -0
  63. package/dist/ui/TransactionAlert/TransactionAlert.mjs.map +1 -0
  64. package/dist/utils/async/async.cjs +95 -0
  65. package/dist/utils/async/async.cjs.map +1 -0
  66. package/dist/utils/async/async.d.cts +51 -0
  67. package/dist/utils/async/async.d.cts.map +1 -0
  68. package/dist/utils/async/async.d.mts +51 -0
  69. package/dist/utils/async/async.d.mts.map +1 -0
  70. package/dist/utils/async/async.mjs +88 -0
  71. package/dist/utils/async/async.mjs.map +1 -0
  72. package/dist/utils/buildUrl/buildUrl.cjs +54 -0
  73. package/dist/utils/buildUrl/buildUrl.cjs.map +1 -0
  74. package/dist/utils/buildUrl/buildUrl.d.cts +15 -0
  75. package/dist/utils/buildUrl/buildUrl.d.cts.map +1 -0
  76. package/dist/utils/buildUrl/buildUrl.d.mts +15 -0
  77. package/dist/utils/buildUrl/buildUrl.d.mts.map +1 -0
  78. package/dist/utils/buildUrl/buildUrl.mjs +51 -0
  79. package/dist/utils/buildUrl/buildUrl.mjs.map +1 -0
  80. package/dist/utils/cache/InMemoryCache.cjs +134 -0
  81. package/dist/utils/cache/InMemoryCache.cjs.map +1 -0
  82. package/dist/utils/cache/InMemoryCache.d.cts +29 -0
  83. package/dist/utils/cache/InMemoryCache.d.cts.map +1 -0
  84. package/dist/utils/cache/InMemoryCache.d.mts +29 -0
  85. package/dist/utils/cache/InMemoryCache.d.mts.map +1 -0
  86. package/dist/utils/cache/InMemoryCache.mjs +130 -0
  87. package/dist/utils/cache/InMemoryCache.mjs.map +1 -0
  88. package/dist/utils/cache/StateCache.cjs +193 -0
  89. package/dist/utils/cache/StateCache.cjs.map +1 -0
  90. package/dist/utils/cache/StateCache.d.cts +96 -0
  91. package/dist/utils/cache/StateCache.d.cts.map +1 -0
  92. package/dist/utils/cache/StateCache.d.mts +96 -0
  93. package/dist/utils/cache/StateCache.d.mts.map +1 -0
  94. package/dist/utils/cache/StateCache.mjs +189 -0
  95. package/dist/utils/cache/StateCache.mjs.map +1 -0
  96. package/dist/utils/cache/types.cjs +3 -0
  97. package/dist/utils/cache/types.cjs.map +1 -0
  98. package/dist/utils/cache/types.d.cts +99 -0
  99. package/dist/utils/cache/types.d.cts.map +1 -0
  100. package/dist/utils/cache/types.d.mts +99 -0
  101. package/dist/utils/cache/types.d.mts.map +1 -0
  102. package/dist/utils/cache/types.mjs +2 -0
  103. package/dist/utils/cache/types.mjs.map +1 -0
  104. package/dist/utils/cache/useCache.cjs +82 -0
  105. package/dist/utils/cache/useCache.cjs.map +1 -0
  106. package/dist/utils/cache/useCache.d.cts +57 -0
  107. package/dist/utils/cache/useCache.d.cts.map +1 -0
  108. package/dist/utils/cache/useCache.d.mts +57 -0
  109. package/dist/utils/cache/useCache.d.mts.map +1 -0
  110. package/dist/utils/cache/useCache.mjs +78 -0
  111. package/dist/utils/cache/useCache.mjs.map +1 -0
  112. package/dist/utils/cache/useCacheUntil.cjs +80 -0
  113. package/dist/utils/cache/useCacheUntil.cjs.map +1 -0
  114. package/dist/utils/cache/useCacheUntil.d.cts +54 -0
  115. package/dist/utils/cache/useCacheUntil.d.cts.map +1 -0
  116. package/dist/utils/cache/useCacheUntil.d.mts +54 -0
  117. package/dist/utils/cache/useCacheUntil.d.mts.map +1 -0
  118. package/dist/utils/cache/useCacheUntil.mjs +76 -0
  119. package/dist/utils/cache/useCacheUntil.mjs.map +1 -0
  120. package/dist/utils/config/BaseConfigProvider.cjs +62 -0
  121. package/dist/utils/config/BaseConfigProvider.cjs.map +1 -0
  122. package/dist/utils/config/BaseConfigProvider.d.cts +54 -0
  123. package/dist/utils/config/BaseConfigProvider.d.cts.map +1 -0
  124. package/dist/utils/config/BaseConfigProvider.d.mts +54 -0
  125. package/dist/utils/config/BaseConfigProvider.d.mts.map +1 -0
  126. package/dist/utils/config/BaseConfigProvider.mjs +58 -0
  127. package/dist/utils/config/BaseConfigProvider.mjs.map +1 -0
  128. package/dist/utils/config/envStructs.cjs +69 -0
  129. package/dist/utils/config/envStructs.cjs.map +1 -0
  130. package/dist/utils/config/envStructs.d.cts +57 -0
  131. package/dist/utils/config/envStructs.d.cts.map +1 -0
  132. package/dist/utils/config/envStructs.d.mts +57 -0
  133. package/dist/utils/config/envStructs.d.mts.map +1 -0
  134. package/dist/utils/config/envStructs.mjs +61 -0
  135. package/dist/utils/config/envStructs.mjs.map +1 -0
  136. package/dist/utils/config/environmentStruct.cjs +19 -0
  137. package/dist/utils/config/environmentStruct.cjs.map +1 -0
  138. package/dist/utils/config/environmentStruct.d.cts +20 -0
  139. package/dist/utils/config/environmentStruct.d.cts.map +1 -0
  140. package/dist/utils/config/environmentStruct.d.mts +20 -0
  141. package/dist/utils/config/environmentStruct.d.mts.map +1 -0
  142. package/dist/utils/config/environmentStruct.mjs +16 -0
  143. package/dist/utils/config/environmentStruct.mjs.map +1 -0
  144. package/dist/utils/config/logLevelStruct.cjs +14 -0
  145. package/dist/utils/config/logLevelStruct.cjs.map +1 -0
  146. package/dist/utils/config/logLevelStruct.d.cts +17 -0
  147. package/dist/utils/config/logLevelStruct.d.cts.map +1 -0
  148. package/dist/utils/config/logLevelStruct.d.mts +17 -0
  149. package/dist/utils/config/logLevelStruct.d.mts.map +1 -0
  150. package/dist/utils/config/logLevelStruct.mjs +11 -0
  151. package/dist/utils/config/logLevelStruct.mjs.map +1 -0
  152. package/dist/utils/config/parseEnv.cjs +30 -0
  153. package/dist/utils/config/parseEnv.cjs.map +1 -0
  154. package/dist/utils/config/parseEnv.d.cts +19 -0
  155. package/dist/utils/config/parseEnv.d.cts.map +1 -0
  156. package/dist/utils/config/parseEnv.d.mts +19 -0
  157. package/dist/utils/config/parseEnv.d.mts.map +1 -0
  158. package/dist/utils/config/parseEnv.mjs +26 -0
  159. package/dist/utils/config/parseEnv.mjs.map +1 -0
  160. package/dist/utils/dedupe/InFlightCoalescer.cjs +28 -0
  161. package/dist/utils/dedupe/InFlightCoalescer.cjs.map +1 -0
  162. package/dist/utils/dedupe/InFlightCoalescer.d.cts +12 -0
  163. package/dist/utils/dedupe/InFlightCoalescer.d.cts.map +1 -0
  164. package/dist/utils/dedupe/InFlightCoalescer.d.mts +12 -0
  165. package/dist/utils/dedupe/InFlightCoalescer.d.mts.map +1 -0
  166. package/dist/utils/dedupe/InFlightCoalescer.mjs +24 -0
  167. package/dist/utils/dedupe/InFlightCoalescer.mjs.map +1 -0
  168. package/dist/utils/errors/errors.cjs +44 -0
  169. package/dist/utils/errors/errors.cjs.map +1 -0
  170. package/dist/utils/errors/errors.d.cts +37 -0
  171. package/dist/utils/errors/errors.d.cts.map +1 -0
  172. package/dist/utils/errors/errors.d.mts +37 -0
  173. package/dist/utils/errors/errors.d.mts.map +1 -0
  174. package/dist/utils/errors/errors.mjs +40 -0
  175. package/dist/utils/errors/errors.mjs.map +1 -0
  176. package/dist/utils/errors/index.cjs +18 -0
  177. package/dist/utils/errors/index.cjs.map +1 -0
  178. package/dist/utils/errors/index.d.cts +10 -0
  179. package/dist/utils/errors/index.d.cts.map +1 -0
  180. package/dist/utils/errors/index.d.mts +10 -0
  181. package/dist/utils/errors/index.d.mts.map +1 -0
  182. package/dist/utils/errors/index.mjs +6 -0
  183. package/dist/utils/errors/index.mjs.map +1 -0
  184. package/dist/utils/errors/snapRpcError.cjs +33 -0
  185. package/dist/utils/errors/snapRpcError.cjs.map +1 -0
  186. package/dist/utils/errors/snapRpcError.d.cts +11 -0
  187. package/dist/utils/errors/snapRpcError.d.cts.map +1 -0
  188. package/dist/utils/errors/snapRpcError.d.mts +11 -0
  189. package/dist/utils/errors/snapRpcError.d.mts.map +1 -0
  190. package/dist/utils/errors/snapRpcError.mjs +30 -0
  191. package/dist/utils/errors/snapRpcError.mjs.map +1 -0
  192. package/dist/utils/errors/stringifyReason.cjs +36 -0
  193. package/dist/utils/errors/stringifyReason.cjs.map +1 -0
  194. package/dist/utils/errors/stringifyReason.d.cts +15 -0
  195. package/dist/utils/errors/stringifyReason.d.cts.map +1 -0
  196. package/dist/utils/errors/stringifyReason.d.mts +15 -0
  197. package/dist/utils/errors/stringifyReason.d.mts.map +1 -0
  198. package/dist/utils/errors/stringifyReason.mjs +33 -0
  199. package/dist/utils/errors/stringifyReason.mjs.map +1 -0
  200. package/dist/utils/errors/syncError.cjs +98 -0
  201. package/dist/utils/errors/syncError.cjs.map +1 -0
  202. package/dist/utils/errors/syncError.d.cts +60 -0
  203. package/dist/utils/errors/syncError.d.cts.map +1 -0
  204. package/dist/utils/errors/syncError.d.mts +60 -0
  205. package/dist/utils/errors/syncError.d.mts.map +1 -0
  206. package/dist/utils/errors/syncError.mjs +92 -0
  207. package/dist/utils/errors/syncError.mjs.map +1 -0
  208. package/dist/utils/errors/trackError.cjs +76 -0
  209. package/dist/utils/errors/trackError.cjs.map +1 -0
  210. package/dist/utils/errors/trackError.d.cts +64 -0
  211. package/dist/utils/errors/trackError.d.cts.map +1 -0
  212. package/dist/utils/errors/trackError.d.mts +64 -0
  213. package/dist/utils/errors/trackError.d.mts.map +1 -0
  214. package/dist/utils/errors/trackError.mjs +72 -0
  215. package/dist/utils/errors/trackError.mjs.map +1 -0
  216. package/dist/utils/handlers/wrapSnapHandlers.cjs +57 -0
  217. package/dist/utils/handlers/wrapSnapHandlers.cjs.map +1 -0
  218. package/dist/utils/handlers/wrapSnapHandlers.d.cts +74 -0
  219. package/dist/utils/handlers/wrapSnapHandlers.d.cts.map +1 -0
  220. package/dist/utils/handlers/wrapSnapHandlers.d.mts +74 -0
  221. package/dist/utils/handlers/wrapSnapHandlers.d.mts.map +1 -0
  222. package/dist/utils/handlers/wrapSnapHandlers.mjs +53 -0
  223. package/dist/utils/handlers/wrapSnapHandlers.mjs.map +1 -0
  224. package/dist/utils/keyringAccount/keyringAccount.cjs +25 -0
  225. package/dist/utils/keyringAccount/keyringAccount.cjs.map +1 -0
  226. package/dist/utils/keyringAccount/keyringAccount.d.cts +29 -0
  227. package/dist/utils/keyringAccount/keyringAccount.d.cts.map +1 -0
  228. package/dist/utils/keyringAccount/keyringAccount.d.mts +29 -0
  229. package/dist/utils/keyringAccount/keyringAccount.d.mts.map +1 -0
  230. package/dist/utils/keyringAccount/keyringAccount.mjs +22 -0
  231. package/dist/utils/keyringAccount/keyringAccount.mjs.map +1 -0
  232. package/dist/utils/logger/Logger.cjs +140 -0
  233. package/dist/utils/logger/Logger.cjs.map +1 -0
  234. package/dist/utils/logger/Logger.d.cts +118 -0
  235. package/dist/utils/logger/Logger.d.cts.map +1 -0
  236. package/dist/utils/logger/Logger.d.mts +118 -0
  237. package/dist/utils/logger/Logger.d.mts.map +1 -0
  238. package/dist/utils/logger/Logger.mjs +136 -0
  239. package/dist/utils/logger/Logger.mjs.map +1 -0
  240. package/dist/utils/logger/__mocks__/Logger.cjs +26 -0
  241. package/dist/utils/logger/__mocks__/Logger.cjs.map +1 -0
  242. package/dist/utils/logger/__mocks__/Logger.d.cts +3 -0
  243. package/dist/utils/logger/__mocks__/Logger.d.cts.map +1 -0
  244. package/dist/utils/logger/__mocks__/Logger.d.mts +3 -0
  245. package/dist/utils/logger/__mocks__/Logger.d.mts.map +1 -0
  246. package/dist/utils/logger/__mocks__/Logger.mjs +23 -0
  247. package/dist/utils/logger/__mocks__/Logger.mjs.map +1 -0
  248. package/dist/utils/originPermissions/createOriginPermissions.cjs +30 -0
  249. package/dist/utils/originPermissions/createOriginPermissions.cjs.map +1 -0
  250. package/dist/utils/originPermissions/createOriginPermissions.d.cts +24 -0
  251. package/dist/utils/originPermissions/createOriginPermissions.d.cts.map +1 -0
  252. package/dist/utils/originPermissions/createOriginPermissions.d.mts +24 -0
  253. package/dist/utils/originPermissions/createOriginPermissions.d.mts.map +1 -0
  254. package/dist/utils/originPermissions/createOriginPermissions.mjs +26 -0
  255. package/dist/utils/originPermissions/createOriginPermissions.mjs.map +1 -0
  256. package/dist/utils/originPermissions/validateOrigin.cjs +23 -0
  257. package/dist/utils/originPermissions/validateOrigin.cjs.map +1 -0
  258. package/dist/utils/originPermissions/validateOrigin.d.cts +10 -0
  259. package/dist/utils/originPermissions/validateOrigin.d.cts.map +1 -0
  260. package/dist/utils/originPermissions/validateOrigin.d.mts +10 -0
  261. package/dist/utils/originPermissions/validateOrigin.d.mts.map +1 -0
  262. package/dist/utils/originPermissions/validateOrigin.mjs +19 -0
  263. package/dist/utils/originPermissions/validateOrigin.mjs.map +1 -0
  264. package/dist/utils/proofOfOwnership/proofOfOwnership.cjs +89 -0
  265. package/dist/utils/proofOfOwnership/proofOfOwnership.cjs.map +1 -0
  266. package/dist/utils/proofOfOwnership/proofOfOwnership.d.cts +143 -0
  267. package/dist/utils/proofOfOwnership/proofOfOwnership.d.cts.map +1 -0
  268. package/dist/utils/proofOfOwnership/proofOfOwnership.d.mts +143 -0
  269. package/dist/utils/proofOfOwnership/proofOfOwnership.d.mts.map +1 -0
  270. package/dist/utils/proofOfOwnership/proofOfOwnership.mjs +85 -0
  271. package/dist/utils/proofOfOwnership/proofOfOwnership.mjs.map +1 -0
  272. package/dist/utils/safeMerge/safeMerge.cjs +26 -0
  273. package/dist/utils/safeMerge/safeMerge.cjs.map +1 -0
  274. package/dist/utils/safeMerge/safeMerge.d.cts +17 -0
  275. package/dist/utils/safeMerge/safeMerge.d.cts.map +1 -0
  276. package/dist/utils/safeMerge/safeMerge.d.mts +17 -0
  277. package/dist/utils/safeMerge/safeMerge.d.mts.map +1 -0
  278. package/dist/utils/safeMerge/safeMerge.mjs +22 -0
  279. package/dist/utils/safeMerge/safeMerge.mjs.map +1 -0
  280. package/dist/utils/sanitize/sanitize.cjs +42 -0
  281. package/dist/utils/sanitize/sanitize.cjs.map +1 -0
  282. package/dist/utils/sanitize/sanitize.d.cts +15 -0
  283. package/dist/utils/sanitize/sanitize.d.cts.map +1 -0
  284. package/dist/utils/sanitize/sanitize.d.mts +15 -0
  285. package/dist/utils/sanitize/sanitize.d.mts.map +1 -0
  286. package/dist/utils/sanitize/sanitize.mjs +38 -0
  287. package/dist/utils/sanitize/sanitize.mjs.map +1 -0
  288. package/dist/utils/serialization/serialization.cjs +73 -0
  289. package/dist/utils/serialization/serialization.cjs.map +1 -0
  290. package/dist/utils/serialization/serialization.d.cts +19 -0
  291. package/dist/utils/serialization/serialization.d.cts.map +1 -0
  292. package/dist/utils/serialization/serialization.d.mts +19 -0
  293. package/dist/utils/serialization/serialization.d.mts.map +1 -0
  294. package/dist/utils/serialization/serialization.mjs +69 -0
  295. package/dist/utils/serialization/serialization.mjs.map +1 -0
  296. package/dist/utils/serialization/types.cjs +3 -0
  297. package/dist/utils/serialization/types.cjs.map +1 -0
  298. package/dist/utils/serialization/types.d.cts +8 -0
  299. package/dist/utils/serialization/types.d.cts.map +1 -0
  300. package/dist/utils/serialization/types.d.mts +8 -0
  301. package/dist/utils/serialization/types.d.mts.map +1 -0
  302. package/dist/utils/serialization/types.mjs +2 -0
  303. package/dist/utils/serialization/types.mjs.map +1 -0
  304. package/dist/utils/state/IStateManager.cjs +3 -0
  305. package/dist/utils/state/IStateManager.cjs.map +1 -0
  306. package/dist/utils/state/IStateManager.d.cts +69 -0
  307. package/dist/utils/state/IStateManager.d.cts.map +1 -0
  308. package/dist/utils/state/IStateManager.d.mts +69 -0
  309. package/dist/utils/state/IStateManager.d.mts.map +1 -0
  310. package/dist/utils/state/IStateManager.mjs +2 -0
  311. package/dist/utils/state/IStateManager.mjs.map +1 -0
  312. package/dist/utils/state/InMemoryState.cjs +41 -0
  313. package/dist/utils/state/InMemoryState.cjs.map +1 -0
  314. package/dist/utils/state/InMemoryState.d.cts +18 -0
  315. package/dist/utils/state/InMemoryState.d.cts.map +1 -0
  316. package/dist/utils/state/InMemoryState.d.mts +18 -0
  317. package/dist/utils/state/InMemoryState.d.mts.map +1 -0
  318. package/dist/utils/state/InMemoryState.mjs +38 -0
  319. package/dist/utils/state/InMemoryState.mjs.map +1 -0
  320. package/dist/utils/state/State.cjs +159 -0
  321. package/dist/utils/state/State.cjs.map +1 -0
  322. package/dist/utils/state/State.d.cts +25 -0
  323. package/dist/utils/state/State.d.cts.map +1 -0
  324. package/dist/utils/state/State.d.mts +25 -0
  325. package/dist/utils/state/State.d.mts.map +1 -0
  326. package/dist/utils/state/State.mjs +156 -0
  327. package/dist/utils/state/State.mjs.map +1 -0
  328. package/dist/utils/transactionType/transactionType.cjs +32 -0
  329. package/dist/utils/transactionType/transactionType.cjs.map +1 -0
  330. package/dist/utils/transactionType/transactionType.d.cts +17 -0
  331. package/dist/utils/transactionType/transactionType.d.cts.map +1 -0
  332. package/dist/utils/transactionType/transactionType.d.mts +17 -0
  333. package/dist/utils/transactionType/transactionType.d.mts.map +1 -0
  334. package/dist/utils/transactionType/transactionType.mjs +28 -0
  335. package/dist/utils/transactionType/transactionType.mjs.map +1 -0
  336. package/dist/utils/urlStruct/urlStruct.cjs +96 -0
  337. package/dist/utils/urlStruct/urlStruct.cjs.map +1 -0
  338. package/dist/utils/urlStruct/urlStruct.d.cts +25 -0
  339. package/dist/utils/urlStruct/urlStruct.d.cts.map +1 -0
  340. package/dist/utils/urlStruct/urlStruct.d.mts +25 -0
  341. package/dist/utils/urlStruct/urlStruct.d.mts.map +1 -0
  342. package/dist/utils/urlStruct/urlStruct.mjs +93 -0
  343. package/dist/utils/urlStruct/urlStruct.mjs.map +1 -0
  344. package/dist/utils/uuidStruct/uuidStruct.cjs +12 -0
  345. package/dist/utils/uuidStruct/uuidStruct.cjs.map +1 -0
  346. package/dist/utils/uuidStruct/uuidStruct.d.cts +8 -0
  347. package/dist/utils/uuidStruct/uuidStruct.d.cts.map +1 -0
  348. package/dist/utils/uuidStruct/uuidStruct.d.mts +8 -0
  349. package/dist/utils/uuidStruct/uuidStruct.d.mts.map +1 -0
  350. package/dist/utils/uuidStruct/uuidStruct.mjs +9 -0
  351. package/dist/utils/uuidStruct/uuidStruct.mjs.map +1 -0
  352. package/package.json +33 -13
  353. package/dist/logger.cjs +0 -57
  354. package/dist/logger.cjs.map +0 -1
  355. package/dist/logger.d.cts +0 -30
  356. package/dist/logger.d.cts.map +0 -1
  357. package/dist/logger.d.mts +0 -30
  358. package/dist/logger.d.mts.map +0 -1
  359. package/dist/logger.mjs +0 -53
  360. package/dist/logger.mjs.map +0 -1
@@ -0,0 +1,74 @@
1
+ import type { OnActiveHandler, OnAssetHistoricalPriceHandler, OnAssetsConversionHandler, OnAssetsLookupHandler, OnAssetsMarketDataHandler, OnClientRequestHandler, OnCronjobHandler, OnHomePageHandler, OnInactiveHandler, OnInstallHandler, OnKeyringRequestHandler, OnNameLookupHandler, OnProtocolRequestHandler, OnRpcRequestHandler, OnSettingsPageHandler, OnSignatureHandler, OnStartHandler, OnTransactionHandler, OnUpdateHandler, OnUserInputHandler, OnWebSocketEventHandler } from "@metamask/snaps-sdk";
2
+ import type { LogErrorFn } from "../errors/errors.cjs";
3
+ export type WithCatchAndThrowSnapError = <Response>(handler: () => Promise<Response>, logErrorOverride?: LogErrorFn) => Promise<Response>;
4
+ /**
5
+ * Snap entrypoint names mapped to their SDK handler types.
6
+ */
7
+ export type SnapHandlers = {
8
+ onActive: OnActiveHandler;
9
+ onAssetHistoricalPrice: OnAssetHistoricalPriceHandler;
10
+ onAssetsConversion: OnAssetsConversionHandler;
11
+ onAssetsLookup: OnAssetsLookupHandler;
12
+ onAssetsMarketData: OnAssetsMarketDataHandler;
13
+ onClientRequest: OnClientRequestHandler;
14
+ onCronjob: OnCronjobHandler;
15
+ onHomePage: OnHomePageHandler;
16
+ onInactive: OnInactiveHandler;
17
+ onInstall: OnInstallHandler;
18
+ onKeyringRequest: OnKeyringRequestHandler;
19
+ onNameLookup: OnNameLookupHandler;
20
+ onProtocolRequest: OnProtocolRequestHandler;
21
+ onRpcRequest: OnRpcRequestHandler;
22
+ onSettingsPage: OnSettingsPageHandler;
23
+ onSignature: OnSignatureHandler;
24
+ onStart: OnStartHandler;
25
+ onTransaction: OnTransactionHandler;
26
+ onUpdate: OnUpdateHandler;
27
+ onUserInput: OnUserInputHandler;
28
+ onWebSocketEvent: OnWebSocketEventHandler;
29
+ };
30
+ /**
31
+ * Wraps each given Snap entrypoint handler with `withCatchAndThrowSnapError`.
32
+ *
33
+ * @param withCatchAndThrowSnapError - The Snap's bound error wrapper.
34
+ * @param handlers - Entrypoint handlers, keyed by their Snap export name.
35
+ * @param logError - Optional per-handler `logError` overrides, forwarded as
36
+ * the wrapper's second argument. Omitted handlers use the logger bound in the
37
+ * wrapper.
38
+ * @returns The wrapped handlers, under the same keys.
39
+ * @example
40
+ * import {
41
+ * noopAssetHandlers,
42
+ * wrapSnapHandlers,
43
+ * } from '@metamask/snap-networks-utils';
44
+ *
45
+ * import { clientRequestHandler, keyringHandler, keyringLogger } from './context';
46
+ * import { withCatchAndThrowSnapError } from './utils/errors';
47
+ *
48
+ * export const { onKeyringRequest, onClientRequest } = wrapSnapHandlers(
49
+ * withCatchAndThrowSnapError,
50
+ * {
51
+ * onKeyringRequest: ({ origin, request }) =>
52
+ * keyringHandler.handle(origin, request),
53
+ * onClientRequest: ({ request }) => clientRequestHandler.handle(request),
54
+ * },
55
+ * { onKeyringRequest: keyringLogger.error.bind(keyringLogger) },
56
+ * );
57
+ *
58
+ * export const {
59
+ * onAssetsLookup,
60
+ * onAssetsConversion,
61
+ * onAssetHistoricalPrice,
62
+ * onAssetsMarketData,
63
+ * } = noopAssetHandlers;
64
+ */
65
+ export declare function wrapSnapHandlers<HandlerName extends keyof SnapHandlers>(withCatchAndThrowSnapError: WithCatchAndThrowSnapError, handlers: {
66
+ [Name in HandlerName]: SnapHandlers[Name];
67
+ }, logError?: Partial<Record<HandlerName, LogErrorFn>>): Pick<SnapHandlers, HandlerName>;
68
+ /**
69
+ * No-op asset handlers that network Snaps must export to keep the
70
+ * `endowment:assets` permission, since assets are provided through the
71
+ * Assets API instead.
72
+ */
73
+ export declare const noopAssetHandlers: Pick<SnapHandlers, 'onAssetsLookup' | 'onAssetsConversion' | 'onAssetHistoricalPrice' | 'onAssetsMarketData'>;
74
+ //# sourceMappingURL=wrapSnapHandlers.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapSnapHandlers.d.cts","sourceRoot":"","sources":["../../../src/utils/handlers/wrapSnapHandlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,6BAA6B,EAC7B,yBAAyB,EACzB,qBAAqB,EACrB,yBAAyB,EACzB,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACxB,4BAA4B;AAE7B,OAAO,KAAK,EAAE,UAAU,EAAE,6BAAyB;AAEnD,MAAM,MAAM,0BAA0B,GAAG,CAAC,QAAQ,EAChD,OAAO,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,EAChC,gBAAgB,CAAC,EAAE,UAAU,KAC1B,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEvB;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,eAAe,CAAC;IAC1B,sBAAsB,EAAE,6BAA6B,CAAC;IACtD,kBAAkB,EAAE,yBAAyB,CAAC;IAC9C,cAAc,EAAE,qBAAqB,CAAC;IACtC,kBAAkB,EAAE,yBAAyB,CAAC;IAC9C,eAAe,EAAE,sBAAsB,CAAC;IACxC,SAAS,EAAE,gBAAgB,CAAC;IAC5B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,gBAAgB,EAAE,uBAAuB,CAAC;IAC1C,YAAY,EAAE,mBAAmB,CAAC;IAClC,iBAAiB,EAAE,wBAAwB,CAAC;IAC5C,YAAY,EAAE,mBAAmB,CAAC;IAClC,cAAc,EAAE,qBAAqB,CAAC;IACtC,WAAW,EAAE,kBAAkB,CAAC;IAChC,OAAO,EAAE,cAAc,CAAC;IACxB,aAAa,EAAE,oBAAoB,CAAC;IACpC,QAAQ,EAAE,eAAe,CAAC;IAC1B,WAAW,EAAE,kBAAkB,CAAC;IAChC,gBAAgB,EAAE,uBAAuB,CAAC;CAC3C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,SAAS,MAAM,YAAY,EACrE,0BAA0B,EAAE,0BAA0B,EACtD,QAAQ,EAAE;KAAG,IAAI,IAAI,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC;CAAE,EACvD,QAAQ,GAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,CAAM,GACtD,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAWjC;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,IAAI,CAClC,YAAY,EACV,gBAAgB,GAChB,oBAAoB,GACpB,wBAAwB,GACxB,oBAAoB,CAMvB,CAAC"}
@@ -0,0 +1,74 @@
1
+ import type { OnActiveHandler, OnAssetHistoricalPriceHandler, OnAssetsConversionHandler, OnAssetsLookupHandler, OnAssetsMarketDataHandler, OnClientRequestHandler, OnCronjobHandler, OnHomePageHandler, OnInactiveHandler, OnInstallHandler, OnKeyringRequestHandler, OnNameLookupHandler, OnProtocolRequestHandler, OnRpcRequestHandler, OnSettingsPageHandler, OnSignatureHandler, OnStartHandler, OnTransactionHandler, OnUpdateHandler, OnUserInputHandler, OnWebSocketEventHandler } from "@metamask/snaps-sdk";
2
+ import type { LogErrorFn } from "../errors/errors.mjs";
3
+ export type WithCatchAndThrowSnapError = <Response>(handler: () => Promise<Response>, logErrorOverride?: LogErrorFn) => Promise<Response>;
4
+ /**
5
+ * Snap entrypoint names mapped to their SDK handler types.
6
+ */
7
+ export type SnapHandlers = {
8
+ onActive: OnActiveHandler;
9
+ onAssetHistoricalPrice: OnAssetHistoricalPriceHandler;
10
+ onAssetsConversion: OnAssetsConversionHandler;
11
+ onAssetsLookup: OnAssetsLookupHandler;
12
+ onAssetsMarketData: OnAssetsMarketDataHandler;
13
+ onClientRequest: OnClientRequestHandler;
14
+ onCronjob: OnCronjobHandler;
15
+ onHomePage: OnHomePageHandler;
16
+ onInactive: OnInactiveHandler;
17
+ onInstall: OnInstallHandler;
18
+ onKeyringRequest: OnKeyringRequestHandler;
19
+ onNameLookup: OnNameLookupHandler;
20
+ onProtocolRequest: OnProtocolRequestHandler;
21
+ onRpcRequest: OnRpcRequestHandler;
22
+ onSettingsPage: OnSettingsPageHandler;
23
+ onSignature: OnSignatureHandler;
24
+ onStart: OnStartHandler;
25
+ onTransaction: OnTransactionHandler;
26
+ onUpdate: OnUpdateHandler;
27
+ onUserInput: OnUserInputHandler;
28
+ onWebSocketEvent: OnWebSocketEventHandler;
29
+ };
30
+ /**
31
+ * Wraps each given Snap entrypoint handler with `withCatchAndThrowSnapError`.
32
+ *
33
+ * @param withCatchAndThrowSnapError - The Snap's bound error wrapper.
34
+ * @param handlers - Entrypoint handlers, keyed by their Snap export name.
35
+ * @param logError - Optional per-handler `logError` overrides, forwarded as
36
+ * the wrapper's second argument. Omitted handlers use the logger bound in the
37
+ * wrapper.
38
+ * @returns The wrapped handlers, under the same keys.
39
+ * @example
40
+ * import {
41
+ * noopAssetHandlers,
42
+ * wrapSnapHandlers,
43
+ * } from '@metamask/snap-networks-utils';
44
+ *
45
+ * import { clientRequestHandler, keyringHandler, keyringLogger } from './context';
46
+ * import { withCatchAndThrowSnapError } from './utils/errors';
47
+ *
48
+ * export const { onKeyringRequest, onClientRequest } = wrapSnapHandlers(
49
+ * withCatchAndThrowSnapError,
50
+ * {
51
+ * onKeyringRequest: ({ origin, request }) =>
52
+ * keyringHandler.handle(origin, request),
53
+ * onClientRequest: ({ request }) => clientRequestHandler.handle(request),
54
+ * },
55
+ * { onKeyringRequest: keyringLogger.error.bind(keyringLogger) },
56
+ * );
57
+ *
58
+ * export const {
59
+ * onAssetsLookup,
60
+ * onAssetsConversion,
61
+ * onAssetHistoricalPrice,
62
+ * onAssetsMarketData,
63
+ * } = noopAssetHandlers;
64
+ */
65
+ export declare function wrapSnapHandlers<HandlerName extends keyof SnapHandlers>(withCatchAndThrowSnapError: WithCatchAndThrowSnapError, handlers: {
66
+ [Name in HandlerName]: SnapHandlers[Name];
67
+ }, logError?: Partial<Record<HandlerName, LogErrorFn>>): Pick<SnapHandlers, HandlerName>;
68
+ /**
69
+ * No-op asset handlers that network Snaps must export to keep the
70
+ * `endowment:assets` permission, since assets are provided through the
71
+ * Assets API instead.
72
+ */
73
+ export declare const noopAssetHandlers: Pick<SnapHandlers, 'onAssetsLookup' | 'onAssetsConversion' | 'onAssetHistoricalPrice' | 'onAssetsMarketData'>;
74
+ //# sourceMappingURL=wrapSnapHandlers.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapSnapHandlers.d.mts","sourceRoot":"","sources":["../../../src/utils/handlers/wrapSnapHandlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,6BAA6B,EAC7B,yBAAyB,EACzB,qBAAqB,EACrB,yBAAyB,EACzB,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACxB,4BAA4B;AAE7B,OAAO,KAAK,EAAE,UAAU,EAAE,6BAAyB;AAEnD,MAAM,MAAM,0BAA0B,GAAG,CAAC,QAAQ,EAChD,OAAO,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,EAChC,gBAAgB,CAAC,EAAE,UAAU,KAC1B,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEvB;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,eAAe,CAAC;IAC1B,sBAAsB,EAAE,6BAA6B,CAAC;IACtD,kBAAkB,EAAE,yBAAyB,CAAC;IAC9C,cAAc,EAAE,qBAAqB,CAAC;IACtC,kBAAkB,EAAE,yBAAyB,CAAC;IAC9C,eAAe,EAAE,sBAAsB,CAAC;IACxC,SAAS,EAAE,gBAAgB,CAAC;IAC5B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,gBAAgB,EAAE,uBAAuB,CAAC;IAC1C,YAAY,EAAE,mBAAmB,CAAC;IAClC,iBAAiB,EAAE,wBAAwB,CAAC;IAC5C,YAAY,EAAE,mBAAmB,CAAC;IAClC,cAAc,EAAE,qBAAqB,CAAC;IACtC,WAAW,EAAE,kBAAkB,CAAC;IAChC,OAAO,EAAE,cAAc,CAAC;IACxB,aAAa,EAAE,oBAAoB,CAAC;IACpC,QAAQ,EAAE,eAAe,CAAC;IAC1B,WAAW,EAAE,kBAAkB,CAAC;IAChC,gBAAgB,EAAE,uBAAuB,CAAC;CAC3C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,SAAS,MAAM,YAAY,EACrE,0BAA0B,EAAE,0BAA0B,EACtD,QAAQ,EAAE;KAAG,IAAI,IAAI,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC;CAAE,EACvD,QAAQ,GAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,CAAM,GACtD,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAWjC;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,IAAI,CAClC,YAAY,EACV,gBAAgB,GAChB,oBAAoB,GACpB,wBAAwB,GACxB,oBAAoB,CAMvB,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Wraps each given Snap entrypoint handler with `withCatchAndThrowSnapError`.
3
+ *
4
+ * @param withCatchAndThrowSnapError - The Snap's bound error wrapper.
5
+ * @param handlers - Entrypoint handlers, keyed by their Snap export name.
6
+ * @param logError - Optional per-handler `logError` overrides, forwarded as
7
+ * the wrapper's second argument. Omitted handlers use the logger bound in the
8
+ * wrapper.
9
+ * @returns The wrapped handlers, under the same keys.
10
+ * @example
11
+ * import {
12
+ * noopAssetHandlers,
13
+ * wrapSnapHandlers,
14
+ * } from '@metamask/snap-networks-utils';
15
+ *
16
+ * import { clientRequestHandler, keyringHandler, keyringLogger } from './context';
17
+ * import { withCatchAndThrowSnapError } from './utils/errors';
18
+ *
19
+ * export const { onKeyringRequest, onClientRequest } = wrapSnapHandlers(
20
+ * withCatchAndThrowSnapError,
21
+ * {
22
+ * onKeyringRequest: ({ origin, request }) =>
23
+ * keyringHandler.handle(origin, request),
24
+ * onClientRequest: ({ request }) => clientRequestHandler.handle(request),
25
+ * },
26
+ * { onKeyringRequest: keyringLogger.error.bind(keyringLogger) },
27
+ * );
28
+ *
29
+ * export const {
30
+ * onAssetsLookup,
31
+ * onAssetsConversion,
32
+ * onAssetHistoricalPrice,
33
+ * onAssetsMarketData,
34
+ * } = noopAssetHandlers;
35
+ */
36
+ export function wrapSnapHandlers(withCatchAndThrowSnapError, handlers, logError = {}) {
37
+ return Object.fromEntries(Object.entries(handlers).map(([name, handler]) => [
38
+ name,
39
+ async (args) => withCatchAndThrowSnapError(async () => handler(args), logError[name]),
40
+ ]));
41
+ }
42
+ /**
43
+ * No-op asset handlers that network Snaps must export to keep the
44
+ * `endowment:assets` permission, since assets are provided through the
45
+ * Assets API instead.
46
+ */
47
+ export const noopAssetHandlers = {
48
+ onAssetsLookup: async () => ({ assets: {} }),
49
+ onAssetsConversion: async () => ({ conversionRates: {} }),
50
+ onAssetHistoricalPrice: async () => null,
51
+ onAssetsMarketData: async () => ({ marketData: {} }),
52
+ };
53
+ //# sourceMappingURL=wrapSnapHandlers.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapSnapHandlers.mjs","sourceRoot":"","sources":["../../../src/utils/handlers/wrapSnapHandlers.ts"],"names":[],"mappings":"AA0DA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,UAAU,gBAAgB,CAC9B,0BAAsD,EACtD,QAAuD,EACvD,WAAqD,EAAE;IAEvD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;QAChD,IAAI;QACJ,KAAK,EAAE,IAAa,EAAoB,EAAE,CACxC,0BAA0B,CACxB,KAAK,IAAI,EAAE,CAAE,OAA+C,CAAC,IAAI,CAAC,EAClE,QAAQ,CAAC,IAAmB,CAAC,CAC9B;KACJ,CAAC,CACgC,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAM1B;IACF,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAC5C,kBAAkB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC;IACzD,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;IACxC,kBAAkB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;CACrD,CAAC","sourcesContent":["import type {\n OnActiveHandler,\n OnAssetHistoricalPriceHandler,\n OnAssetsConversionHandler,\n OnAssetsLookupHandler,\n OnAssetsMarketDataHandler,\n OnClientRequestHandler,\n OnCronjobHandler,\n OnHomePageHandler,\n OnInactiveHandler,\n OnInstallHandler,\n OnKeyringRequestHandler,\n OnNameLookupHandler,\n OnProtocolRequestHandler,\n OnRpcRequestHandler,\n OnSettingsPageHandler,\n OnSignatureHandler,\n OnStartHandler,\n OnTransactionHandler,\n OnUpdateHandler,\n OnUserInputHandler,\n OnWebSocketEventHandler,\n} from '@metamask/snaps-sdk';\n\nimport type { LogErrorFn } from '../errors/errors';\n\nexport type WithCatchAndThrowSnapError = <Response>(\n handler: () => Promise<Response>,\n logErrorOverride?: LogErrorFn,\n) => Promise<Response>;\n\n/**\n * Snap entrypoint names mapped to their SDK handler types.\n */\nexport type SnapHandlers = {\n onActive: OnActiveHandler;\n onAssetHistoricalPrice: OnAssetHistoricalPriceHandler;\n onAssetsConversion: OnAssetsConversionHandler;\n onAssetsLookup: OnAssetsLookupHandler;\n onAssetsMarketData: OnAssetsMarketDataHandler;\n onClientRequest: OnClientRequestHandler;\n onCronjob: OnCronjobHandler;\n onHomePage: OnHomePageHandler;\n onInactive: OnInactiveHandler;\n onInstall: OnInstallHandler;\n onKeyringRequest: OnKeyringRequestHandler;\n onNameLookup: OnNameLookupHandler;\n onProtocolRequest: OnProtocolRequestHandler;\n onRpcRequest: OnRpcRequestHandler;\n onSettingsPage: OnSettingsPageHandler;\n onSignature: OnSignatureHandler;\n onStart: OnStartHandler;\n onTransaction: OnTransactionHandler;\n onUpdate: OnUpdateHandler;\n onUserInput: OnUserInputHandler;\n onWebSocketEvent: OnWebSocketEventHandler;\n};\n\n/**\n * Wraps each given Snap entrypoint handler with `withCatchAndThrowSnapError`.\n *\n * @param withCatchAndThrowSnapError - The Snap's bound error wrapper.\n * @param handlers - Entrypoint handlers, keyed by their Snap export name.\n * @param logError - Optional per-handler `logError` overrides, forwarded as\n * the wrapper's second argument. Omitted handlers use the logger bound in the\n * wrapper.\n * @returns The wrapped handlers, under the same keys.\n * @example\n * import {\n * noopAssetHandlers,\n * wrapSnapHandlers,\n * } from '@metamask/snap-networks-utils';\n *\n * import { clientRequestHandler, keyringHandler, keyringLogger } from './context';\n * import { withCatchAndThrowSnapError } from './utils/errors';\n *\n * export const { onKeyringRequest, onClientRequest } = wrapSnapHandlers(\n * withCatchAndThrowSnapError,\n * {\n * onKeyringRequest: ({ origin, request }) =>\n * keyringHandler.handle(origin, request),\n * onClientRequest: ({ request }) => clientRequestHandler.handle(request),\n * },\n * { onKeyringRequest: keyringLogger.error.bind(keyringLogger) },\n * );\n *\n * export const {\n * onAssetsLookup,\n * onAssetsConversion,\n * onAssetHistoricalPrice,\n * onAssetsMarketData,\n * } = noopAssetHandlers;\n */\nexport function wrapSnapHandlers<HandlerName extends keyof SnapHandlers>(\n withCatchAndThrowSnapError: WithCatchAndThrowSnapError,\n handlers: { [Name in HandlerName]: SnapHandlers[Name] },\n logError: Partial<Record<HandlerName, LogErrorFn>> = {},\n): Pick<SnapHandlers, HandlerName> {\n return Object.fromEntries(\n Object.entries(handlers).map(([name, handler]) => [\n name,\n async (args: unknown): Promise<unknown> =>\n withCatchAndThrowSnapError(\n async () => (handler as (args: unknown) => Promise<unknown>)(args),\n logError[name as HandlerName],\n ),\n ]),\n ) as Pick<SnapHandlers, HandlerName>;\n}\n\n/**\n * No-op asset handlers that network Snaps must export to keep the\n * `endowment:assets` permission, since assets are provided through the\n * Assets API instead.\n */\nexport const noopAssetHandlers: Pick<\n SnapHandlers,\n | 'onAssetsLookup'\n | 'onAssetsConversion'\n | 'onAssetHistoricalPrice'\n | 'onAssetsMarketData'\n> = {\n onAssetsLookup: async () => ({ assets: {} }),\n onAssetsConversion: async () => ({ conversionRates: {} }),\n onAssetHistoricalPrice: async () => null,\n onAssetsMarketData: async () => ({ marketData: {} }),\n};\n"]}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.asStrictKeyringAccount = asStrictKeyringAccount;
4
+ /**
5
+ * Converts an extended snap account to the Keyring API shape.
6
+ *
7
+ * Snaps persist `entropySource`, `derivationPath`, and `index` on the account
8
+ * object. The Keyring API must not receive those fields, so this copies only
9
+ * the six `KeyringAccount` properties.
10
+ *
11
+ * @param account - A snap keyring account with derivation fields.
12
+ * @returns A `KeyringAccount` with no extra properties.
13
+ */
14
+ function asStrictKeyringAccount(account) {
15
+ const { id, address, type, options, methods, scopes } = account;
16
+ return {
17
+ id,
18
+ address,
19
+ type,
20
+ options,
21
+ methods,
22
+ scopes,
23
+ };
24
+ }
25
+ //# sourceMappingURL=keyringAccount.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyringAccount.cjs","sourceRoot":"","sources":["../../../src/utils/keyringAccount/keyringAccount.ts"],"names":[],"mappings":";;AA8BA,wDAYC;AAtBD;;;;;;;;;GASG;AACH,SAAgB,sBAAsB,CACpC,OAA+B;IAE/B,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAChE,OAAO;QACL,EAAE;QACF,OAAO;QACP,IAAI;QACJ,OAAO;QACP,OAAO;QACP,MAAM;KACP,CAAC;AACJ,CAAC","sourcesContent":["import type { EntropySourceId, KeyringAccount } from '@metamask/keyring-api';\n\n/**\n * Keyring account fields snaps persist in addition to `@metamask/keyring-api`'s\n * `KeyringAccount`. `index` is stored so an account can be restored at a\n * previously used derivation index.\n */\nexport type KeyringAccountExtension = {\n entropySource: EntropySourceId;\n derivationPath: `m/${string}`;\n index: number;\n};\n\n/**\n * A `KeyringAccount` plus the derivation fields used by Solana, Tron, and Stellar.\n *\n * A snap may narrow `derivationPath` (for example Stellar's BIP-44 coin type).\n */\nexport type ExtendedKeyringAccount = KeyringAccount & KeyringAccountExtension;\n\n/**\n * Converts an extended snap account to the Keyring API shape.\n *\n * Snaps persist `entropySource`, `derivationPath`, and `index` on the account\n * object. The Keyring API must not receive those fields, so this copies only\n * the six `KeyringAccount` properties.\n *\n * @param account - A snap keyring account with derivation fields.\n * @returns A `KeyringAccount` with no extra properties.\n */\nexport function asStrictKeyringAccount(\n account: ExtendedKeyringAccount,\n): KeyringAccount {\n const { id, address, type, options, methods, scopes } = account;\n return {\n id,\n address,\n type,\n options,\n methods,\n scopes,\n };\n}\n"]}
@@ -0,0 +1,29 @@
1
+ import type { EntropySourceId, KeyringAccount } from "@metamask/keyring-api";
2
+ /**
3
+ * Keyring account fields snaps persist in addition to `@metamask/keyring-api`'s
4
+ * `KeyringAccount`. `index` is stored so an account can be restored at a
5
+ * previously used derivation index.
6
+ */
7
+ export type KeyringAccountExtension = {
8
+ entropySource: EntropySourceId;
9
+ derivationPath: `m/${string}`;
10
+ index: number;
11
+ };
12
+ /**
13
+ * A `KeyringAccount` plus the derivation fields used by Solana, Tron, and Stellar.
14
+ *
15
+ * A snap may narrow `derivationPath` (for example Stellar's BIP-44 coin type).
16
+ */
17
+ export type ExtendedKeyringAccount = KeyringAccount & KeyringAccountExtension;
18
+ /**
19
+ * Converts an extended snap account to the Keyring API shape.
20
+ *
21
+ * Snaps persist `entropySource`, `derivationPath`, and `index` on the account
22
+ * object. The Keyring API must not receive those fields, so this copies only
23
+ * the six `KeyringAccount` properties.
24
+ *
25
+ * @param account - A snap keyring account with derivation fields.
26
+ * @returns A `KeyringAccount` with no extra properties.
27
+ */
28
+ export declare function asStrictKeyringAccount(account: ExtendedKeyringAccount): KeyringAccount;
29
+ //# sourceMappingURL=keyringAccount.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyringAccount.d.cts","sourceRoot":"","sources":["../../../src/utils/keyringAccount/keyringAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,8BAA8B;AAE7E;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,aAAa,EAAE,eAAe,CAAC;IAC/B,cAAc,EAAE,KAAK,MAAM,EAAE,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,cAAc,GAAG,uBAAuB,CAAC;AAE9E;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,sBAAsB,GAC9B,cAAc,CAUhB"}
@@ -0,0 +1,29 @@
1
+ import type { EntropySourceId, KeyringAccount } from "@metamask/keyring-api";
2
+ /**
3
+ * Keyring account fields snaps persist in addition to `@metamask/keyring-api`'s
4
+ * `KeyringAccount`. `index` is stored so an account can be restored at a
5
+ * previously used derivation index.
6
+ */
7
+ export type KeyringAccountExtension = {
8
+ entropySource: EntropySourceId;
9
+ derivationPath: `m/${string}`;
10
+ index: number;
11
+ };
12
+ /**
13
+ * A `KeyringAccount` plus the derivation fields used by Solana, Tron, and Stellar.
14
+ *
15
+ * A snap may narrow `derivationPath` (for example Stellar's BIP-44 coin type).
16
+ */
17
+ export type ExtendedKeyringAccount = KeyringAccount & KeyringAccountExtension;
18
+ /**
19
+ * Converts an extended snap account to the Keyring API shape.
20
+ *
21
+ * Snaps persist `entropySource`, `derivationPath`, and `index` on the account
22
+ * object. The Keyring API must not receive those fields, so this copies only
23
+ * the six `KeyringAccount` properties.
24
+ *
25
+ * @param account - A snap keyring account with derivation fields.
26
+ * @returns A `KeyringAccount` with no extra properties.
27
+ */
28
+ export declare function asStrictKeyringAccount(account: ExtendedKeyringAccount): KeyringAccount;
29
+ //# sourceMappingURL=keyringAccount.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyringAccount.d.mts","sourceRoot":"","sources":["../../../src/utils/keyringAccount/keyringAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,8BAA8B;AAE7E;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,aAAa,EAAE,eAAe,CAAC;IAC/B,cAAc,EAAE,KAAK,MAAM,EAAE,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,cAAc,GAAG,uBAAuB,CAAC;AAE9E;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,sBAAsB,GAC9B,cAAc,CAUhB"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Converts an extended snap account to the Keyring API shape.
3
+ *
4
+ * Snaps persist `entropySource`, `derivationPath`, and `index` on the account
5
+ * object. The Keyring API must not receive those fields, so this copies only
6
+ * the six `KeyringAccount` properties.
7
+ *
8
+ * @param account - A snap keyring account with derivation fields.
9
+ * @returns A `KeyringAccount` with no extra properties.
10
+ */
11
+ export function asStrictKeyringAccount(account) {
12
+ const { id, address, type, options, methods, scopes } = account;
13
+ return {
14
+ id,
15
+ address,
16
+ type,
17
+ options,
18
+ methods,
19
+ scopes,
20
+ };
21
+ }
22
+ //# sourceMappingURL=keyringAccount.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyringAccount.mjs","sourceRoot":"","sources":["../../../src/utils/keyringAccount/keyringAccount.ts"],"names":[],"mappings":"AAoBA;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAA+B;IAE/B,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAChE,OAAO;QACL,EAAE;QACF,OAAO;QACP,IAAI;QACJ,OAAO;QACP,OAAO;QACP,MAAM;KACP,CAAC;AACJ,CAAC","sourcesContent":["import type { EntropySourceId, KeyringAccount } from '@metamask/keyring-api';\n\n/**\n * Keyring account fields snaps persist in addition to `@metamask/keyring-api`'s\n * `KeyringAccount`. `index` is stored so an account can be restored at a\n * previously used derivation index.\n */\nexport type KeyringAccountExtension = {\n entropySource: EntropySourceId;\n derivationPath: `m/${string}`;\n index: number;\n};\n\n/**\n * A `KeyringAccount` plus the derivation fields used by Solana, Tron, and Stellar.\n *\n * A snap may narrow `derivationPath` (for example Stellar's BIP-44 coin type).\n */\nexport type ExtendedKeyringAccount = KeyringAccount & KeyringAccountExtension;\n\n/**\n * Converts an extended snap account to the Keyring API shape.\n *\n * Snaps persist `entropySource`, `derivationPath`, and `index` on the account\n * object. The Keyring API must not receive those fields, so this copies only\n * the six `KeyringAccount` properties.\n *\n * @param account - A snap keyring account with derivation fields.\n * @returns A `KeyringAccount` with no extra properties.\n */\nexport function asStrictKeyringAccount(\n account: ExtendedKeyringAccount,\n): KeyringAccount {\n const { id, address, type, options, methods, scopes } = account;\n return {\n id,\n address,\n type,\n options,\n methods,\n scopes,\n };\n}\n"]}
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Logger = exports.LogLevel = void 0;
4
+ const superstruct_1 = require("@metamask/superstruct");
5
+ /**
6
+ * The severity levels supported by {@link Logger}.
7
+ */
8
+ exports.LogLevel = {
9
+ SILENT: 'silent',
10
+ ERROR: 'error',
11
+ WARN: 'warn',
12
+ INFO: 'info',
13
+ DEBUG: 'debug',
14
+ TRACE: 'trace',
15
+ };
16
+ /**
17
+ * Defines the severity ordering used to filter log messages.
18
+ *
19
+ * Lower values are less verbose. Changing these numeric priorities changes
20
+ * which messages are emitted for each configured {@link LogLevel}, including
21
+ * in production.
22
+ */
23
+ const logLevelPriority = {
24
+ [exports.LogLevel.SILENT]: 0,
25
+ [exports.LogLevel.ERROR]: 1,
26
+ [exports.LogLevel.WARN]: 2,
27
+ [exports.LogLevel.INFO]: 3,
28
+ [exports.LogLevel.DEBUG]: 4,
29
+ [exports.LogLevel.TRACE]: 5,
30
+ };
31
+ const LogLevelStruct = (0, superstruct_1.enums)(Object.values(exports.LogLevel));
32
+ /**
33
+ * Logs network Snap messages to the console at configurable severity levels.
34
+ *
35
+ * Disable output with {@link LogLevel.SILENT}.
36
+ *
37
+ * **Example: create an enabled logger.**
38
+ *
39
+ * ```ts
40
+ * import { Logger } from '@metamask/snap-networks-utils';
41
+ *
42
+ * const logger = new Logger({ level: LogLevel.TRACE });
43
+ * logger.info('Account synced');
44
+ * ```
45
+ *
46
+ * **Example: add a Snap or component prefix.**
47
+ *
48
+ * ```ts
49
+ * const rootLogger = new Logger({ level: LogLevel.TRACE });
50
+ * const snapLogger = rootLogger.withPrefix('[tron-wallet-snap]');
51
+ * const accountsLogger = snapLogger.withPrefix('[accounts]');
52
+ *
53
+ * accountsLogger.debug('Refreshing account balances');
54
+ * ```
55
+ *
56
+ * **Example: decorate a method with Snap-specific behavior.**
57
+ *
58
+ * ```ts
59
+ * const logger = new Logger({
60
+ * level: LogLevel.TRACE,
61
+ * decorators: {
62
+ * error: (next, error) => {
63
+ * const details = getSolanaErrorDetails(error);
64
+ * next(details ?? error);
65
+ * },
66
+ * },
67
+ * });
68
+ * ```
69
+ */
70
+ class Logger {
71
+ #level;
72
+ #prefix;
73
+ #decorators;
74
+ constructor({ level, prefix, decorators }) {
75
+ (0, superstruct_1.assert)(level, LogLevelStruct);
76
+ this.#level = level;
77
+ this.#prefix = prefix;
78
+ this.#decorators = decorators;
79
+ }
80
+ /**
81
+ * Returns a logger with an additional prefix.
82
+ *
83
+ * The returned logger has the same log level and decorators as this one. Call
84
+ * this method as many times as needed; each derived logger appends its prefix
85
+ * to the existing prefix.
86
+ *
87
+ * @param prefix - The prefix to add to each message.
88
+ * @returns A derived logger.
89
+ */
90
+ withPrefix(prefix) {
91
+ return new Logger({
92
+ level: this.#level,
93
+ prefix: this.#prefix ? `${this.#prefix} ${prefix}` : prefix,
94
+ decorators: this.#decorators,
95
+ });
96
+ }
97
+ error(...args) {
98
+ this.#write(exports.LogLevel.ERROR, console.error, args);
99
+ }
100
+ warn(...args) {
101
+ this.#write(exports.LogLevel.WARN, console.warn, args);
102
+ }
103
+ /**
104
+ * Logs an informational message.
105
+ *
106
+ * @param args - The values to write to the console.
107
+ * @deprecated Use {@link Logger.info} instead.
108
+ */
109
+ log(...args) {
110
+ this.info(...args);
111
+ }
112
+ info(...args) {
113
+ this.#write(exports.LogLevel.INFO, console.info, args);
114
+ }
115
+ debug(...args) {
116
+ this.#write(exports.LogLevel.DEBUG, console.debug, args);
117
+ }
118
+ trace(...args) {
119
+ this.#write(exports.LogLevel.TRACE, console.trace, args);
120
+ }
121
+ #isLevelDisabled(level) {
122
+ return logLevelPriority[level] > logLevelPriority[this.#level];
123
+ }
124
+ #write(level, writeToConsole, args) {
125
+ if (this.#isLevelDisabled(level)) {
126
+ return;
127
+ }
128
+ const next = this.#prefix
129
+ ? (...nextArgs) => writeToConsole(this.#prefix, ...nextArgs)
130
+ : writeToConsole;
131
+ const decorator = this.#decorators?.[level];
132
+ if (decorator) {
133
+ decorator(next, ...args);
134
+ return;
135
+ }
136
+ next(...args);
137
+ }
138
+ }
139
+ exports.Logger = Logger;
140
+ //# sourceMappingURL=Logger.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logger.cjs","sourceRoot":"","sources":["../../../src/utils/logger/Logger.ts"],"names":[],"mappings":";;;AAAA,uDAAsD;AAEtD;;GAEG;AACU,QAAA,QAAQ,GAAG;IACtB,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;CACN,CAAC;AAIX;;;;;;GAMG;AACH,MAAM,gBAAgB,GAAG;IACvB,CAAC,gBAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;IACpB,CAAC,gBAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;IACnB,CAAC,gBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IAClB,CAAC,gBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IAClB,CAAC,gBAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;IACnB,CAAC,gBAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;CACpB,CAAC;AAEF,MAAM,cAAc,GAAG,IAAA,mBAAK,EAAC,MAAM,CAAC,MAAM,CAAC,gBAAQ,CAAC,CAAC,CAAC;AAiDtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAa,MAAM;IACR,MAAM,CAAW;IAEjB,OAAO,CAAU;IAEjB,WAAW,CAAoB;IAExC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAiB;QACtD,IAAA,oBAAM,EAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAE9B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAChC,CAAC;IAED;;;;;;;;;OASG;IACH,UAAU,CAAC,MAAc;QACvB,OAAO,IAAI,MAAM,CAAC;YAChB,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM;YAC3D,UAAU,EAAE,IAAI,CAAC,WAAW;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,IAAe;QACtB,IAAI,CAAC,MAAM,CAAC,gBAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,CAAC,GAAG,IAAe;QACrB,IAAI,CAAC,MAAM,CAAC,gBAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,GAAG,IAAe;QACpB,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,IAAI,CAAC,GAAG,IAAe;QACrB,IAAI,CAAC,MAAM,CAAC,gBAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,GAAG,IAAe;QACtB,IAAI,CAAC,MAAM,CAAC,gBAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,GAAG,IAAe;QACtB,IAAI,CAAC,MAAM,CAAC,gBAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,gBAAgB,CAAC,KAAmB;QAClC,OAAO,gBAAgB,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,CACJ,KAAmB,EACnB,cAA4C,EAC5C,IAAe;QAEf,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAc,IAAI,CAAC,OAAO;YAClC,CAAC,CAAC,CAAC,GAAG,QAAmB,EAAQ,EAAE,CAC/B,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC;YAC7C,CAAC,CAAC,cAAc,CAAC;QAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC;QAE5C,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;YACzB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAChB,CAAC;CACF;AA1FD,wBA0FC","sourcesContent":["import { assert, enums } from '@metamask/superstruct';\n\n/**\n * The severity levels supported by {@link Logger}.\n */\nexport const LogLevel = {\n SILENT: 'silent',\n ERROR: 'error',\n WARN: 'warn',\n INFO: 'info',\n DEBUG: 'debug',\n TRACE: 'trace',\n} as const;\n\nexport type LogLevel = (typeof LogLevel)[keyof typeof LogLevel];\n\n/**\n * Defines the severity ordering used to filter log messages.\n *\n * Lower values are less verbose. Changing these numeric priorities changes\n * which messages are emitted for each configured {@link LogLevel}, including\n * in production.\n */\nconst logLevelPriority = {\n [LogLevel.SILENT]: 0,\n [LogLevel.ERROR]: 1,\n [LogLevel.WARN]: 2,\n [LogLevel.INFO]: 3,\n [LogLevel.DEBUG]: 4,\n [LogLevel.TRACE]: 5,\n};\n\nconst LogLevelStruct = enums(Object.values(LogLevel));\n\nexport type LoggerMethod = Exclude<LogLevel, typeof LogLevel.SILENT>;\n\nexport type LogMethod = (...args: unknown[]) => void;\n\n/**\n * A function that can add behavior around a logger method.\n *\n * Call `next` to forward a message through the logger's configured output.\n */\nexport type LogMethodDecorator = (next: LogMethod, ...args: unknown[]) => void;\n\nexport type LoggerDecorators = Partial<\n Record<LoggerMethod, LogMethodDecorator>\n>;\n\n/**\n * Configuration for a {@link Logger}.\n *\n * **Example: configure logging with `LOG_LEVEL`.**\n *\n * ```ts\n * const logger = new Logger({\n * level: process.env.LOG_LEVEL\n * });\n * ```\n */\nexport type LoggerOptions = {\n /**\n * The most verbose severity level that should be logged. Use\n * {@link LogLevel.SILENT} to disable logging.\n */\n level: LogLevel;\n /**\n * An optional prefix prepended to every message.\n *\n * Use {@link Logger.withPrefix} to add prefixes after construction.\n */\n prefix?: string;\n /**\n * Optional behavior to apply to individual log methods.\n *\n * Decorators receive `next`, which preserves this logger's configured level,\n * prefix, and console output.\n */\n decorators?: LoggerDecorators;\n};\n\n/**\n * Logs network Snap messages to the console at configurable severity levels.\n *\n * Disable output with {@link LogLevel.SILENT}.\n *\n * **Example: create an enabled logger.**\n *\n * ```ts\n * import { Logger } from '@metamask/snap-networks-utils';\n *\n * const logger = new Logger({ level: LogLevel.TRACE });\n * logger.info('Account synced');\n * ```\n *\n * **Example: add a Snap or component prefix.**\n *\n * ```ts\n * const rootLogger = new Logger({ level: LogLevel.TRACE });\n * const snapLogger = rootLogger.withPrefix('[tron-wallet-snap]');\n * const accountsLogger = snapLogger.withPrefix('[accounts]');\n *\n * accountsLogger.debug('Refreshing account balances');\n * ```\n *\n * **Example: decorate a method with Snap-specific behavior.**\n *\n * ```ts\n * const logger = new Logger({\n * level: LogLevel.TRACE,\n * decorators: {\n * error: (next, error) => {\n * const details = getSolanaErrorDetails(error);\n * next(details ?? error);\n * },\n * },\n * });\n * ```\n */\nexport class Logger {\n readonly #level: LogLevel;\n\n readonly #prefix?: string;\n\n readonly #decorators?: LoggerDecorators;\n\n constructor({ level, prefix, decorators }: LoggerOptions) {\n assert(level, LogLevelStruct);\n\n this.#level = level;\n this.#prefix = prefix;\n this.#decorators = decorators;\n }\n\n /**\n * Returns a logger with an additional prefix.\n *\n * The returned logger has the same log level and decorators as this one. Call\n * this method as many times as needed; each derived logger appends its prefix\n * to the existing prefix.\n *\n * @param prefix - The prefix to add to each message.\n * @returns A derived logger.\n */\n withPrefix(prefix: string): Logger {\n return new Logger({\n level: this.#level,\n prefix: this.#prefix ? `${this.#prefix} ${prefix}` : prefix,\n decorators: this.#decorators,\n });\n }\n\n error(...args: unknown[]): void {\n this.#write(LogLevel.ERROR, console.error, args);\n }\n\n warn(...args: unknown[]): void {\n this.#write(LogLevel.WARN, console.warn, args);\n }\n\n /**\n * Logs an informational message.\n *\n * @param args - The values to write to the console.\n * @deprecated Use {@link Logger.info} instead.\n */\n log(...args: unknown[]): void {\n this.info(...args);\n }\n\n info(...args: unknown[]): void {\n this.#write(LogLevel.INFO, console.info, args);\n }\n\n debug(...args: unknown[]): void {\n this.#write(LogLevel.DEBUG, console.debug, args);\n }\n\n trace(...args: unknown[]): void {\n this.#write(LogLevel.TRACE, console.trace, args);\n }\n\n #isLevelDisabled(level: LoggerMethod): boolean {\n return logLevelPriority[level] > logLevelPriority[this.#level];\n }\n\n #write(\n level: LoggerMethod,\n writeToConsole: (...args: unknown[]) => void,\n args: unknown[],\n ): void {\n if (this.#isLevelDisabled(level)) {\n return;\n }\n\n const next: LogMethod = this.#prefix\n ? (...nextArgs: unknown[]): void =>\n writeToConsole(this.#prefix, ...nextArgs)\n : writeToConsole;\n\n const decorator = this.#decorators?.[level];\n\n if (decorator) {\n decorator(next, ...args);\n return;\n }\n\n next(...args);\n }\n}\n"]}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * The severity levels supported by {@link Logger}.
3
+ */
4
+ export declare const LogLevel: {
5
+ readonly SILENT: "silent";
6
+ readonly ERROR: "error";
7
+ readonly WARN: "warn";
8
+ readonly INFO: "info";
9
+ readonly DEBUG: "debug";
10
+ readonly TRACE: "trace";
11
+ };
12
+ export type LogLevel = (typeof LogLevel)[keyof typeof LogLevel];
13
+ export type LoggerMethod = Exclude<LogLevel, typeof LogLevel.SILENT>;
14
+ export type LogMethod = (...args: unknown[]) => void;
15
+ /**
16
+ * A function that can add behavior around a logger method.
17
+ *
18
+ * Call `next` to forward a message through the logger's configured output.
19
+ */
20
+ export type LogMethodDecorator = (next: LogMethod, ...args: unknown[]) => void;
21
+ export type LoggerDecorators = Partial<Record<LoggerMethod, LogMethodDecorator>>;
22
+ /**
23
+ * Configuration for a {@link Logger}.
24
+ *
25
+ * **Example: configure logging with `LOG_LEVEL`.**
26
+ *
27
+ * ```ts
28
+ * const logger = new Logger({
29
+ * level: process.env.LOG_LEVEL
30
+ * });
31
+ * ```
32
+ */
33
+ export type LoggerOptions = {
34
+ /**
35
+ * The most verbose severity level that should be logged. Use
36
+ * {@link LogLevel.SILENT} to disable logging.
37
+ */
38
+ level: LogLevel;
39
+ /**
40
+ * An optional prefix prepended to every message.
41
+ *
42
+ * Use {@link Logger.withPrefix} to add prefixes after construction.
43
+ */
44
+ prefix?: string;
45
+ /**
46
+ * Optional behavior to apply to individual log methods.
47
+ *
48
+ * Decorators receive `next`, which preserves this logger's configured level,
49
+ * prefix, and console output.
50
+ */
51
+ decorators?: LoggerDecorators;
52
+ };
53
+ /**
54
+ * Logs network Snap messages to the console at configurable severity levels.
55
+ *
56
+ * Disable output with {@link LogLevel.SILENT}.
57
+ *
58
+ * **Example: create an enabled logger.**
59
+ *
60
+ * ```ts
61
+ * import { Logger } from '@metamask/snap-networks-utils';
62
+ *
63
+ * const logger = new Logger({ level: LogLevel.TRACE });
64
+ * logger.info('Account synced');
65
+ * ```
66
+ *
67
+ * **Example: add a Snap or component prefix.**
68
+ *
69
+ * ```ts
70
+ * const rootLogger = new Logger({ level: LogLevel.TRACE });
71
+ * const snapLogger = rootLogger.withPrefix('[tron-wallet-snap]');
72
+ * const accountsLogger = snapLogger.withPrefix('[accounts]');
73
+ *
74
+ * accountsLogger.debug('Refreshing account balances');
75
+ * ```
76
+ *
77
+ * **Example: decorate a method with Snap-specific behavior.**
78
+ *
79
+ * ```ts
80
+ * const logger = new Logger({
81
+ * level: LogLevel.TRACE,
82
+ * decorators: {
83
+ * error: (next, error) => {
84
+ * const details = getSolanaErrorDetails(error);
85
+ * next(details ?? error);
86
+ * },
87
+ * },
88
+ * });
89
+ * ```
90
+ */
91
+ export declare class Logger {
92
+ #private;
93
+ constructor({ level, prefix, decorators }: LoggerOptions);
94
+ /**
95
+ * Returns a logger with an additional prefix.
96
+ *
97
+ * The returned logger has the same log level and decorators as this one. Call
98
+ * this method as many times as needed; each derived logger appends its prefix
99
+ * to the existing prefix.
100
+ *
101
+ * @param prefix - The prefix to add to each message.
102
+ * @returns A derived logger.
103
+ */
104
+ withPrefix(prefix: string): Logger;
105
+ error(...args: unknown[]): void;
106
+ warn(...args: unknown[]): void;
107
+ /**
108
+ * Logs an informational message.
109
+ *
110
+ * @param args - The values to write to the console.
111
+ * @deprecated Use {@link Logger.info} instead.
112
+ */
113
+ log(...args: unknown[]): void;
114
+ info(...args: unknown[]): void;
115
+ debug(...args: unknown[]): void;
116
+ trace(...args: unknown[]): void;
117
+ }
118
+ //# sourceMappingURL=Logger.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logger.d.cts","sourceRoot":"","sources":["../../../src/utils/logger/Logger.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;;;CAOX,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAoBhE,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,EAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;AAErE,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;AAErD;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;AAE/E,MAAM,MAAM,gBAAgB,GAAG,OAAO,CACpC,MAAM,CAAC,YAAY,EAAE,kBAAkB,CAAC,CACzC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B;;;OAGG;IACH,KAAK,EAAE,QAAQ,CAAC;IAChB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,qBAAa,MAAM;;gBAOL,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,aAAa;IAQxD;;;;;;;;;OASG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAQlC,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI/B,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI9B;;;;;OAKG;IACH,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI7B,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI9B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI/B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;CA+BhC"}