@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,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UrlStruct = void 0;
4
+ const superstruct_1 = require("@metamask/superstruct");
5
+ /**
6
+ * Validates that a string is a valid and safe URL.
7
+ *
8
+ * It rejects:
9
+ * - Non-HTTP/HTTPS/WSS protocols
10
+ * - Malformed URL format or incorrect protocol format
11
+ * - Invalid hostname format (must follow proper domain naming conventions)
12
+ * - Protocol pollution attempts (backslashes, @ symbol, %2f@, %5c@)
13
+ * - Invalid hostname characters (backslashes, @ symbol, forward slashes, encoded forward slashes)
14
+ * - Directory traversal attempts (../, ..%2f, ..%2F)
15
+ *
16
+ * Dangerous patterns including:
17
+ * - HTML tags.
18
+ * - JavaScript protocol.
19
+ * - Data URI scheme.
20
+ * - Template injection (${...}, #{...}).
21
+ * - Command injection (|, ;).
22
+ * - CRLF injection.
23
+ * - URL credential injection.
24
+ * - SQL injection attempts.
25
+ * - Open redirect parameters.
26
+ * - Non-printable characters.
27
+ */
28
+ exports.UrlStruct = (0, superstruct_1.refine)((0, superstruct_1.string)(), 'safe-url', (value) => {
29
+ try {
30
+ // Basic URL validation
31
+ const url = new URL(value);
32
+ // Protocol check
33
+ const supportedProtocols = ['http:', 'https:', 'wss:'];
34
+ if (!supportedProtocols.includes(url.protocol)) {
35
+ return `URL must use one of the following protocols: ${supportedProtocols.join(', ')}`;
36
+ }
37
+ // Validate URL format
38
+ if (!value.match(/^(https?|wss):\/\/[^/]+\/?/u)) {
39
+ return 'Malformed URL - incorrect protocol format';
40
+ }
41
+ // Validate hostname format. Accepts localhost and ports (needed for tests)
42
+ const hostname = url.hostname.toLowerCase();
43
+ if (hostname !== 'localhost' &&
44
+ (!hostname.includes('.') ||
45
+ !/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/u.test(hostname))) {
46
+ return 'Invalid hostname format';
47
+ }
48
+ // Check for protocol pollution in the entire URL
49
+ const decodedValue = decodeURIComponent(value.toLowerCase());
50
+ if (value.includes('\\') ||
51
+ value.includes('@') ||
52
+ decodedValue.includes('\\') ||
53
+ decodedValue.includes('@') ||
54
+ value.toLowerCase().includes('%2f@') ||
55
+ value.toLowerCase().includes('%5c@')) {
56
+ return 'URL contains protocol pollution attempts';
57
+ }
58
+ // Check for directory traversal
59
+ if (value.includes('../') ||
60
+ value.includes('..%2f') ||
61
+ value.includes('..%2F')) {
62
+ return 'Directory traversal attempts are not allowed';
63
+ }
64
+ // Check for dangerous patterns
65
+ const dangerousPatterns = [
66
+ /<[^>]*>/u, // HTML tags
67
+ /javascript:/u, // JavaScript protocol
68
+ /data:/u, // Data URI scheme
69
+ /\\[@\\]/u, // Enhanced protocol pollution check
70
+ /%2f@/u, // Protocol pollution
71
+ /[^\x20-\x7E]/u, // Non-printable characters
72
+ /\$\{.*?\}/u, // Template injection
73
+ /#\{.*?\}/u, // Template injection
74
+ /[|;]/u, // Command injection
75
+ /%0[acd]|%0[acd]/u, // CRLF injection
76
+ /\/\/\w+@/u, // URL credential injection
77
+ // Enhanced SQL injection patterns
78
+ /(?:[^a-z]|^)(?:union\s+(?:all\s+)?select|select\s+(?:.*\s+)?from|insert\s+into|update\s+.*\s+set|delete\s+from|drop\s+table|alter\s+table|create\s+table|exec(?:ute)?|union|where\s+[\d\w]\s*=\s*[\d\w]|\bor\b\s*[\d\w]\s*=\s*[\d\w])/iu,
79
+ /'.*?(?:OR|UNION|SELECT|FROM|WHERE).*?'/iu, // SQL injection
80
+ /%27.*?(?:OR|UNION|SELECT|FROM|WHERE).*?(?:%27|')/iu, // URL-encoded SQL injection
81
+ /%20(?:OR|UNION|SELECT|FROM|WHERE)%20/iu, // URL-encoded SQL keywords
82
+ /[?&](?:url|redirect|next|return_to|return_url|goto|destination|continue|redirect_uri)=(?:[^&]*\/\/|https?:)/iu, // Open redirect parameters
83
+ /[?&](?:url|redirect|next|return_to|return_url|goto|destination|continue|redirect_uri)=%(?:[^&]*\/\/|https?:)/iu, // URL-encoded open redirect parameters
84
+ ];
85
+ for (const patt of dangerousPatterns) {
86
+ if (patt.test(decodedValue)) {
87
+ return 'URL contains potentially malicious patterns';
88
+ }
89
+ }
90
+ return true;
91
+ }
92
+ catch (error) {
93
+ return `Invalid URL format: ${error.message}`;
94
+ }
95
+ });
96
+ //# sourceMappingURL=urlStruct.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urlStruct.cjs","sourceRoot":"","sources":["../../../src/utils/urlStruct/urlStruct.ts"],"names":[],"mappings":"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","sourcesContent":["import { refine, string } from '@metamask/superstruct';\n\n/**\n * Validates that a string is a valid and safe URL.\n *\n * It rejects:\n * - Non-HTTP/HTTPS/WSS protocols\n * - Malformed URL format or incorrect protocol format\n * - Invalid hostname format (must follow proper domain naming conventions)\n * - Protocol pollution attempts (backslashes, @ symbol, %2f@, %5c@)\n * - Invalid hostname characters (backslashes, @ symbol, forward slashes, encoded forward slashes)\n * - Directory traversal attempts (../, ..%2f, ..%2F)\n *\n * Dangerous patterns including:\n * - HTML tags.\n * - JavaScript protocol.\n * - Data URI scheme.\n * - Template injection (${...}, #{...}).\n * - Command injection (|, ;).\n * - CRLF injection.\n * - URL credential injection.\n * - SQL injection attempts.\n * - Open redirect parameters.\n * - Non-printable characters.\n */\nexport const UrlStruct = refine(string(), 'safe-url', (value) => {\n try {\n // Basic URL validation\n const url = new URL(value);\n\n // Protocol check\n const supportedProtocols = ['http:', 'https:', 'wss:'];\n if (!supportedProtocols.includes(url.protocol)) {\n return `URL must use one of the following protocols: ${supportedProtocols.join(', ')}`;\n }\n\n // Validate URL format\n if (!value.match(/^(https?|wss):\\/\\/[^/]+\\/?/u)) {\n return 'Malformed URL - incorrect protocol format';\n }\n\n // Validate hostname format. Accepts localhost and ports (needed for tests)\n const hostname = url.hostname.toLowerCase();\n if (\n hostname !== 'localhost' &&\n (!hostname.includes('.') ||\n !/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/u.test(\n hostname,\n ))\n ) {\n return 'Invalid hostname format';\n }\n\n // Check for protocol pollution in the entire URL\n const decodedValue = decodeURIComponent(value.toLowerCase());\n if (\n value.includes('\\\\') ||\n value.includes('@') ||\n decodedValue.includes('\\\\') ||\n decodedValue.includes('@') ||\n value.toLowerCase().includes('%2f@') ||\n value.toLowerCase().includes('%5c@')\n ) {\n return 'URL contains protocol pollution attempts';\n }\n\n // Check for directory traversal\n if (\n value.includes('../') ||\n value.includes('..%2f') ||\n value.includes('..%2F')\n ) {\n return 'Directory traversal attempts are not allowed';\n }\n\n // Check for dangerous patterns\n const dangerousPatterns = [\n /<[^>]*>/u, // HTML tags\n /javascript:/u, // JavaScript protocol\n /data:/u, // Data URI scheme\n /\\\\[@\\\\]/u, // Enhanced protocol pollution check\n /%2f@/u, // Protocol pollution\n /[^\\x20-\\x7E]/u, // Non-printable characters\n /\\$\\{.*?\\}/u, // Template injection\n /#\\{.*?\\}/u, // Template injection\n /[|;]/u, // Command injection\n /%0[acd]|%0[acd]/u, // CRLF injection\n /\\/\\/\\w+@/u, // URL credential injection\n // Enhanced SQL injection patterns\n /(?:[^a-z]|^)(?:union\\s+(?:all\\s+)?select|select\\s+(?:.*\\s+)?from|insert\\s+into|update\\s+.*\\s+set|delete\\s+from|drop\\s+table|alter\\s+table|create\\s+table|exec(?:ute)?|union|where\\s+[\\d\\w]\\s*=\\s*[\\d\\w]|\\bor\\b\\s*[\\d\\w]\\s*=\\s*[\\d\\w])/iu,\n /'.*?(?:OR|UNION|SELECT|FROM|WHERE).*?'/iu, // SQL injection\n /%27.*?(?:OR|UNION|SELECT|FROM|WHERE).*?(?:%27|')/iu, // URL-encoded SQL injection\n /%20(?:OR|UNION|SELECT|FROM|WHERE)%20/iu, // URL-encoded SQL keywords\n /[?&](?:url|redirect|next|return_to|return_url|goto|destination|continue|redirect_uri)=(?:[^&]*\\/\\/|https?:)/iu, // Open redirect parameters\n /[?&](?:url|redirect|next|return_to|return_url|goto|destination|continue|redirect_uri)=%(?:[^&]*\\/\\/|https?:)/iu, // URL-encoded open redirect parameters\n ];\n\n for (const patt of dangerousPatterns) {\n if (patt.test(decodedValue)) {\n return 'URL contains potentially malicious patterns';\n }\n }\n\n return true;\n } catch (error) {\n return `Invalid URL format: ${(error as Error).message}`;\n }\n});\n"]}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Validates that a string is a valid and safe URL.
3
+ *
4
+ * It rejects:
5
+ * - Non-HTTP/HTTPS/WSS protocols
6
+ * - Malformed URL format or incorrect protocol format
7
+ * - Invalid hostname format (must follow proper domain naming conventions)
8
+ * - Protocol pollution attempts (backslashes, @ symbol, %2f@, %5c@)
9
+ * - Invalid hostname characters (backslashes, @ symbol, forward slashes, encoded forward slashes)
10
+ * - Directory traversal attempts (../, ..%2f, ..%2F)
11
+ *
12
+ * Dangerous patterns including:
13
+ * - HTML tags.
14
+ * - JavaScript protocol.
15
+ * - Data URI scheme.
16
+ * - Template injection (${...}, #{...}).
17
+ * - Command injection (|, ;).
18
+ * - CRLF injection.
19
+ * - URL credential injection.
20
+ * - SQL injection attempts.
21
+ * - Open redirect parameters.
22
+ * - Non-printable characters.
23
+ */
24
+ export declare const UrlStruct: import("@metamask/superstruct").Struct<string, null>;
25
+ //# sourceMappingURL=urlStruct.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urlStruct.d.cts","sourceRoot":"","sources":["../../../src/utils/urlStruct/urlStruct.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,SAAS,sDAkFpB,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Validates that a string is a valid and safe URL.
3
+ *
4
+ * It rejects:
5
+ * - Non-HTTP/HTTPS/WSS protocols
6
+ * - Malformed URL format or incorrect protocol format
7
+ * - Invalid hostname format (must follow proper domain naming conventions)
8
+ * - Protocol pollution attempts (backslashes, @ symbol, %2f@, %5c@)
9
+ * - Invalid hostname characters (backslashes, @ symbol, forward slashes, encoded forward slashes)
10
+ * - Directory traversal attempts (../, ..%2f, ..%2F)
11
+ *
12
+ * Dangerous patterns including:
13
+ * - HTML tags.
14
+ * - JavaScript protocol.
15
+ * - Data URI scheme.
16
+ * - Template injection (${...}, #{...}).
17
+ * - Command injection (|, ;).
18
+ * - CRLF injection.
19
+ * - URL credential injection.
20
+ * - SQL injection attempts.
21
+ * - Open redirect parameters.
22
+ * - Non-printable characters.
23
+ */
24
+ export declare const UrlStruct: import("@metamask/superstruct").Struct<string, null>;
25
+ //# sourceMappingURL=urlStruct.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urlStruct.d.mts","sourceRoot":"","sources":["../../../src/utils/urlStruct/urlStruct.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,SAAS,sDAkFpB,CAAC"}
@@ -0,0 +1,93 @@
1
+ import { refine, string } from "@metamask/superstruct";
2
+ /**
3
+ * Validates that a string is a valid and safe URL.
4
+ *
5
+ * It rejects:
6
+ * - Non-HTTP/HTTPS/WSS protocols
7
+ * - Malformed URL format or incorrect protocol format
8
+ * - Invalid hostname format (must follow proper domain naming conventions)
9
+ * - Protocol pollution attempts (backslashes, @ symbol, %2f@, %5c@)
10
+ * - Invalid hostname characters (backslashes, @ symbol, forward slashes, encoded forward slashes)
11
+ * - Directory traversal attempts (../, ..%2f, ..%2F)
12
+ *
13
+ * Dangerous patterns including:
14
+ * - HTML tags.
15
+ * - JavaScript protocol.
16
+ * - Data URI scheme.
17
+ * - Template injection (${...}, #{...}).
18
+ * - Command injection (|, ;).
19
+ * - CRLF injection.
20
+ * - URL credential injection.
21
+ * - SQL injection attempts.
22
+ * - Open redirect parameters.
23
+ * - Non-printable characters.
24
+ */
25
+ export const UrlStruct = refine(string(), 'safe-url', (value) => {
26
+ try {
27
+ // Basic URL validation
28
+ const url = new URL(value);
29
+ // Protocol check
30
+ const supportedProtocols = ['http:', 'https:', 'wss:'];
31
+ if (!supportedProtocols.includes(url.protocol)) {
32
+ return `URL must use one of the following protocols: ${supportedProtocols.join(', ')}`;
33
+ }
34
+ // Validate URL format
35
+ if (!value.match(/^(https?|wss):\/\/[^/]+\/?/u)) {
36
+ return 'Malformed URL - incorrect protocol format';
37
+ }
38
+ // Validate hostname format. Accepts localhost and ports (needed for tests)
39
+ const hostname = url.hostname.toLowerCase();
40
+ if (hostname !== 'localhost' &&
41
+ (!hostname.includes('.') ||
42
+ !/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/u.test(hostname))) {
43
+ return 'Invalid hostname format';
44
+ }
45
+ // Check for protocol pollution in the entire URL
46
+ const decodedValue = decodeURIComponent(value.toLowerCase());
47
+ if (value.includes('\\') ||
48
+ value.includes('@') ||
49
+ decodedValue.includes('\\') ||
50
+ decodedValue.includes('@') ||
51
+ value.toLowerCase().includes('%2f@') ||
52
+ value.toLowerCase().includes('%5c@')) {
53
+ return 'URL contains protocol pollution attempts';
54
+ }
55
+ // Check for directory traversal
56
+ if (value.includes('../') ||
57
+ value.includes('..%2f') ||
58
+ value.includes('..%2F')) {
59
+ return 'Directory traversal attempts are not allowed';
60
+ }
61
+ // Check for dangerous patterns
62
+ const dangerousPatterns = [
63
+ /<[^>]*>/u, // HTML tags
64
+ /javascript:/u, // JavaScript protocol
65
+ /data:/u, // Data URI scheme
66
+ /\\[@\\]/u, // Enhanced protocol pollution check
67
+ /%2f@/u, // Protocol pollution
68
+ /[^\x20-\x7E]/u, // Non-printable characters
69
+ /\$\{.*?\}/u, // Template injection
70
+ /#\{.*?\}/u, // Template injection
71
+ /[|;]/u, // Command injection
72
+ /%0[acd]|%0[acd]/u, // CRLF injection
73
+ /\/\/\w+@/u, // URL credential injection
74
+ // Enhanced SQL injection patterns
75
+ /(?:[^a-z]|^)(?:union\s+(?:all\s+)?select|select\s+(?:.*\s+)?from|insert\s+into|update\s+.*\s+set|delete\s+from|drop\s+table|alter\s+table|create\s+table|exec(?:ute)?|union|where\s+[\d\w]\s*=\s*[\d\w]|\bor\b\s*[\d\w]\s*=\s*[\d\w])/iu,
76
+ /'.*?(?:OR|UNION|SELECT|FROM|WHERE).*?'/iu, // SQL injection
77
+ /%27.*?(?:OR|UNION|SELECT|FROM|WHERE).*?(?:%27|')/iu, // URL-encoded SQL injection
78
+ /%20(?:OR|UNION|SELECT|FROM|WHERE)%20/iu, // URL-encoded SQL keywords
79
+ /[?&](?:url|redirect|next|return_to|return_url|goto|destination|continue|redirect_uri)=(?:[^&]*\/\/|https?:)/iu, // Open redirect parameters
80
+ /[?&](?:url|redirect|next|return_to|return_url|goto|destination|continue|redirect_uri)=%(?:[^&]*\/\/|https?:)/iu, // URL-encoded open redirect parameters
81
+ ];
82
+ for (const patt of dangerousPatterns) {
83
+ if (patt.test(decodedValue)) {
84
+ return 'URL contains potentially malicious patterns';
85
+ }
86
+ }
87
+ return true;
88
+ }
89
+ catch (error) {
90
+ return `Invalid URL format: ${error.message}`;
91
+ }
92
+ });
93
+ //# sourceMappingURL=urlStruct.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urlStruct.mjs","sourceRoot":"","sources":["../../../src/utils/urlStruct/urlStruct.ts"],"names":[],"mappings":"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","sourcesContent":["import { refine, string } from '@metamask/superstruct';\n\n/**\n * Validates that a string is a valid and safe URL.\n *\n * It rejects:\n * - Non-HTTP/HTTPS/WSS protocols\n * - Malformed URL format or incorrect protocol format\n * - Invalid hostname format (must follow proper domain naming conventions)\n * - Protocol pollution attempts (backslashes, @ symbol, %2f@, %5c@)\n * - Invalid hostname characters (backslashes, @ symbol, forward slashes, encoded forward slashes)\n * - Directory traversal attempts (../, ..%2f, ..%2F)\n *\n * Dangerous patterns including:\n * - HTML tags.\n * - JavaScript protocol.\n * - Data URI scheme.\n * - Template injection (${...}, #{...}).\n * - Command injection (|, ;).\n * - CRLF injection.\n * - URL credential injection.\n * - SQL injection attempts.\n * - Open redirect parameters.\n * - Non-printable characters.\n */\nexport const UrlStruct = refine(string(), 'safe-url', (value) => {\n try {\n // Basic URL validation\n const url = new URL(value);\n\n // Protocol check\n const supportedProtocols = ['http:', 'https:', 'wss:'];\n if (!supportedProtocols.includes(url.protocol)) {\n return `URL must use one of the following protocols: ${supportedProtocols.join(', ')}`;\n }\n\n // Validate URL format\n if (!value.match(/^(https?|wss):\\/\\/[^/]+\\/?/u)) {\n return 'Malformed URL - incorrect protocol format';\n }\n\n // Validate hostname format. Accepts localhost and ports (needed for tests)\n const hostname = url.hostname.toLowerCase();\n if (\n hostname !== 'localhost' &&\n (!hostname.includes('.') ||\n !/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/u.test(\n hostname,\n ))\n ) {\n return 'Invalid hostname format';\n }\n\n // Check for protocol pollution in the entire URL\n const decodedValue = decodeURIComponent(value.toLowerCase());\n if (\n value.includes('\\\\') ||\n value.includes('@') ||\n decodedValue.includes('\\\\') ||\n decodedValue.includes('@') ||\n value.toLowerCase().includes('%2f@') ||\n value.toLowerCase().includes('%5c@')\n ) {\n return 'URL contains protocol pollution attempts';\n }\n\n // Check for directory traversal\n if (\n value.includes('../') ||\n value.includes('..%2f') ||\n value.includes('..%2F')\n ) {\n return 'Directory traversal attempts are not allowed';\n }\n\n // Check for dangerous patterns\n const dangerousPatterns = [\n /<[^>]*>/u, // HTML tags\n /javascript:/u, // JavaScript protocol\n /data:/u, // Data URI scheme\n /\\\\[@\\\\]/u, // Enhanced protocol pollution check\n /%2f@/u, // Protocol pollution\n /[^\\x20-\\x7E]/u, // Non-printable characters\n /\\$\\{.*?\\}/u, // Template injection\n /#\\{.*?\\}/u, // Template injection\n /[|;]/u, // Command injection\n /%0[acd]|%0[acd]/u, // CRLF injection\n /\\/\\/\\w+@/u, // URL credential injection\n // Enhanced SQL injection patterns\n /(?:[^a-z]|^)(?:union\\s+(?:all\\s+)?select|select\\s+(?:.*\\s+)?from|insert\\s+into|update\\s+.*\\s+set|delete\\s+from|drop\\s+table|alter\\s+table|create\\s+table|exec(?:ute)?|union|where\\s+[\\d\\w]\\s*=\\s*[\\d\\w]|\\bor\\b\\s*[\\d\\w]\\s*=\\s*[\\d\\w])/iu,\n /'.*?(?:OR|UNION|SELECT|FROM|WHERE).*?'/iu, // SQL injection\n /%27.*?(?:OR|UNION|SELECT|FROM|WHERE).*?(?:%27|')/iu, // URL-encoded SQL injection\n /%20(?:OR|UNION|SELECT|FROM|WHERE)%20/iu, // URL-encoded SQL keywords\n /[?&](?:url|redirect|next|return_to|return_url|goto|destination|continue|redirect_uri)=(?:[^&]*\\/\\/|https?:)/iu, // Open redirect parameters\n /[?&](?:url|redirect|next|return_to|return_url|goto|destination|continue|redirect_uri)=%(?:[^&]*\\/\\/|https?:)/iu, // URL-encoded open redirect parameters\n ];\n\n for (const patt of dangerousPatterns) {\n if (patt.test(decodedValue)) {\n return 'URL contains potentially malicious patterns';\n }\n }\n\n return true;\n } catch (error) {\n return `Invalid URL format: ${(error as Error).message}`;\n }\n});\n"]}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UuidStruct = void 0;
4
+ const superstruct_1 = require("@metamask/superstruct");
5
+ /**
6
+ * Superstruct for a UUID v4 string.
7
+ *
8
+ * Accepts lowercase and uppercase hex. Rejects other UUID versions and
9
+ * non-UUID strings.
10
+ */
11
+ exports.UuidStruct = (0, superstruct_1.pattern)((0, superstruct_1.string)(), /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu);
12
+ //# sourceMappingURL=uuidStruct.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uuidStruct.cjs","sourceRoot":"","sources":["../../../src/utils/uuidStruct/uuidStruct.ts"],"names":[],"mappings":";;;AAAA,uDAAwD;AAExD;;;;;GAKG;AACU,QAAA,UAAU,GAAG,IAAA,qBAAO,EAC/B,IAAA,oBAAM,GAAE,EACR,yEAAyE,CAC1E,CAAC","sourcesContent":["import { pattern, string } from '@metamask/superstruct';\n\n/**\n * Superstruct for a UUID v4 string.\n *\n * Accepts lowercase and uppercase hex. Rejects other UUID versions and\n * non-UUID strings.\n */\nexport const UuidStruct = pattern(\n string(),\n /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu,\n);\n"]}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Superstruct for a UUID v4 string.
3
+ *
4
+ * Accepts lowercase and uppercase hex. Rejects other UUID versions and
5
+ * non-UUID strings.
6
+ */
7
+ export declare const UuidStruct: import("@metamask/superstruct").Struct<string, null>;
8
+ //# sourceMappingURL=uuidStruct.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uuidStruct.d.cts","sourceRoot":"","sources":["../../../src/utils/uuidStruct/uuidStruct.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,UAAU,sDAGtB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Superstruct for a UUID v4 string.
3
+ *
4
+ * Accepts lowercase and uppercase hex. Rejects other UUID versions and
5
+ * non-UUID strings.
6
+ */
7
+ export declare const UuidStruct: import("@metamask/superstruct").Struct<string, null>;
8
+ //# sourceMappingURL=uuidStruct.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uuidStruct.d.mts","sourceRoot":"","sources":["../../../src/utils/uuidStruct/uuidStruct.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,UAAU,sDAGtB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { pattern, string } from "@metamask/superstruct";
2
+ /**
3
+ * Superstruct for a UUID v4 string.
4
+ *
5
+ * Accepts lowercase and uppercase hex. Rejects other UUID versions and
6
+ * non-UUID strings.
7
+ */
8
+ export const UuidStruct = pattern(string(), /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu);
9
+ //# sourceMappingURL=uuidStruct.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uuidStruct.mjs","sourceRoot":"","sources":["../../../src/utils/uuidStruct/uuidStruct.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,8BAA8B;AAExD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAC/B,MAAM,EAAE,EACR,yEAAyE,CAC1E,CAAC","sourcesContent":["import { pattern, string } from '@metamask/superstruct';\n\n/**\n * Superstruct for a UUID v4 string.\n *\n * Accepts lowercase and uppercase hex. Rejects other UUID versions and\n * non-UUID strings.\n */\nexport const UuidStruct = pattern(\n string(),\n /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu,\n);\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metamask/snap-networks-utils",
3
- "version": "1.0.0",
3
+ "version": "2.0.0",
4
4
  "description": "Shared utilities for MetaMask network snaps",
5
5
  "keywords": [
6
6
  "Ethereum",
@@ -32,14 +32,24 @@
32
32
  "default": "./dist/index.cjs"
33
33
  }
34
34
  },
35
+ "./dedupe": {
36
+ "import": {
37
+ "types": "./dist/utils/dedupe/InFlightCoalescer.d.mts",
38
+ "default": "./dist/utils/dedupe/InFlightCoalescer.mjs"
39
+ },
40
+ "require": {
41
+ "types": "./dist/utils/dedupe/InFlightCoalescer.d.cts",
42
+ "default": "./dist/utils/dedupe/InFlightCoalescer.cjs"
43
+ }
44
+ },
35
45
  "./logger": {
36
46
  "import": {
37
- "types": "./dist/logger.d.mts",
38
- "default": "./dist/logger.mjs"
47
+ "types": "./dist/utils/logger/Logger.d.mts",
48
+ "default": "./dist/utils/logger/Logger.mjs"
39
49
  },
40
50
  "require": {
41
- "types": "./dist/logger.d.cts",
42
- "default": "./dist/logger.cjs"
51
+ "types": "./dist/utils/logger/Logger.d.cts",
52
+ "default": "./dist/utils/logger/Logger.cjs"
43
53
  }
44
54
  },
45
55
  "./package.json": "./package.json"
@@ -49,30 +59,40 @@
49
59
  "registry": "https://registry.npmjs.org/"
50
60
  },
51
61
  "scripts": {
52
- "build": "ts-bridge --project tsconfig.build.json --verbose --clean --no-references",
53
- "build:all": "ts-bridge --project tsconfig.build.json --verbose --clean",
62
+ "build": "ts-bridge --project tsconfig.build.json --verbose --clean --no-references && yarn build:assets",
63
+ "build:all": "ts-bridge --project tsconfig.build.json --verbose --clean && yarn build:assets",
64
+ "build:assets": "rsync -a --prune-empty-dirs --include='*/' --include='*.svg' --exclude='*' src/ dist/",
54
65
  "build:docs": "typedoc",
55
66
  "changelog:update": "../../scripts/update-changelog.sh @metamask/snap-networks-utils",
56
67
  "changelog:validate": "../../scripts/validate-changelog.sh @metamask/snap-networks-utils",
57
68
  "since-latest-release": "../../scripts/since-latest-release.sh",
58
- "test": "NODE_OPTIONS=--experimental-vm-modules jest --reporters=jest-silent-reporter",
69
+ "test": "NODE_OPTIONS=--experimental-vm-modules jest --reporters=jest-silent-reporter && yarn coverage:ratchet",
70
+ "coverage:ratchet": "[ -n \"$CI\" ] || jest-it-up",
59
71
  "test:clean": "NODE_OPTIONS=--experimental-vm-modules jest --clearCache",
60
72
  "test:verbose": "NODE_OPTIONS=--experimental-vm-modules jest --verbose",
61
73
  "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch"
62
74
  },
63
75
  "dependencies": {
64
- "@metamask/assets-controller": "^13.0.0",
76
+ "@metamask/assets-controller": "^15.0.0",
77
+ "@metamask/keyring-api": "^24.1.0",
78
+ "@metamask/keyring-internal-api": "^12.0.0",
65
79
  "@metamask/remote-feature-flag-controller": "^5.0.0",
66
- "@metamask/snaps-sdk": "^11.2.0",
67
- "@metamask/utils": "^11.9.0"
80
+ "@metamask/snaps-sdk": "^12.0.1",
81
+ "@metamask/superstruct": "^3.4.1",
82
+ "@metamask/utils": "^11.11.0",
83
+ "async-mutex": "^0.5.0",
84
+ "bignumber.js": "^9.3.1",
85
+ "lodash": "^4.17.21"
68
86
  },
69
87
  "devDependencies": {
70
- "@metamask/auto-changelog": "^6.1.1",
88
+ "@metamask/auto-changelog": "^6.2.1",
71
89
  "@metamask/messenger": "^2.0.0",
72
90
  "@ts-bridge/cli": "^0.6.4",
73
91
  "@types/jest": "^30.0.0",
92
+ "@types/lodash": "^4.17.15",
74
93
  "deepmerge": "^4.2.2",
75
94
  "jest": "30.0.3",
95
+ "jest-it-up": "^2.0.2",
76
96
  "ts-jest": "^29.4.1",
77
97
  "tsx": "^4.20.5",
78
98
  "typedoc": "^0.25.13",
@@ -80,6 +100,6 @@
80
100
  "typescript": "~5.8.3"
81
101
  },
82
102
  "engines": {
83
- "node": ">=20"
103
+ "node": "^22.14.0 || ^24"
84
104
  }
85
105
  }
package/dist/logger.cjs DELETED
@@ -1,57 +0,0 @@
1
- "use strict";
2
- /**
3
- * Minimal console logger shared by network snaps.
4
- *
5
- * This is a scaffold example for `@metamask/snap-networks-utils`. Later MONO-2
6
- * tickets will expand shared utilities; snaps can start importing from here.
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.noOpLogger = exports.logger = void 0;
10
- exports.createPrefixedLogger = createPrefixedLogger;
11
- /**
12
- * Default logger that forwards to `console`.
13
- */
14
- exports.logger = {
15
- log: (...args) => {
16
- console.log(...args);
17
- },
18
- info: (...args) => {
19
- console.info(...args);
20
- },
21
- warn: (...args) => {
22
- console.warn(...args);
23
- },
24
- error: (...args) => {
25
- console.error(...args);
26
- },
27
- debug: (...args) => {
28
- console.debug(...args);
29
- },
30
- };
31
- /**
32
- * Logger that discards all messages. Useful in unit tests.
33
- */
34
- exports.noOpLogger = {
35
- log: () => undefined,
36
- info: () => undefined,
37
- warn: () => undefined,
38
- error: () => undefined,
39
- debug: () => undefined,
40
- };
41
- /**
42
- * Returns a logger that prefixes every message.
43
- *
44
- * @param baseLogger - Logger to wrap.
45
- * @param prefix - Prefix prepended to each call.
46
- * @returns Prefixed logger.
47
- */
48
- function createPrefixedLogger(baseLogger, prefix) {
49
- return {
50
- log: (...args) => baseLogger.log(prefix, ...args),
51
- info: (...args) => baseLogger.info(prefix, ...args),
52
- warn: (...args) => baseLogger.warn(prefix, ...args),
53
- error: (...args) => baseLogger.error(prefix, ...args),
54
- debug: (...args) => baseLogger.debug(prefix, ...args),
55
- };
56
- }
57
- //# sourceMappingURL=logger.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.cjs","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAiDH,oDAWC;AAlDD;;GAEG;AACU,QAAA,MAAM,GAAW;IAC5B,GAAG,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAC3B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAC3B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAC5B,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAC5B,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACzB,CAAC;CACF,CAAC;AAEF;;GAEG;AACU,QAAA,UAAU,GAAW;IAChC,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS;IACpB,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;IACrB,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;IACrB,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;IACtB,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;CACvB,CAAC;AAEF;;;;;;GAMG;AACH,SAAgB,oBAAoB,CAClC,UAAkB,EAClB,MAAc;IAEd,OAAO;QACL,GAAG,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;QAC5D,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;QAC9D,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;QAC9D,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;QAChE,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;KACjE,CAAC;AACJ,CAAC","sourcesContent":["/**\n * Minimal console logger shared by network snaps.\n *\n * This is a scaffold example for `@metamask/snap-networks-utils`. Later MONO-2\n * tickets will expand shared utilities; snaps can start importing from here.\n */\n\nexport type Logger = {\n log: (...args: unknown[]) => void;\n info: (...args: unknown[]) => void;\n warn: (...args: unknown[]) => void;\n error: (...args: unknown[]) => void;\n debug: (...args: unknown[]) => void;\n};\n\n/**\n * Default logger that forwards to `console`.\n */\nexport const logger: Logger = {\n log: (...args: unknown[]) => {\n console.log(...args);\n },\n info: (...args: unknown[]) => {\n console.info(...args);\n },\n warn: (...args: unknown[]) => {\n console.warn(...args);\n },\n error: (...args: unknown[]) => {\n console.error(...args);\n },\n debug: (...args: unknown[]) => {\n console.debug(...args);\n },\n};\n\n/**\n * Logger that discards all messages. Useful in unit tests.\n */\nexport const noOpLogger: Logger = {\n log: () => undefined,\n info: () => undefined,\n warn: () => undefined,\n error: () => undefined,\n debug: () => undefined,\n};\n\n/**\n * Returns a logger that prefixes every message.\n *\n * @param baseLogger - Logger to wrap.\n * @param prefix - Prefix prepended to each call.\n * @returns Prefixed logger.\n */\nexport function createPrefixedLogger(\n baseLogger: Logger,\n prefix: string,\n): Logger {\n return {\n log: (...args: unknown[]) => baseLogger.log(prefix, ...args),\n info: (...args: unknown[]) => baseLogger.info(prefix, ...args),\n warn: (...args: unknown[]) => baseLogger.warn(prefix, ...args),\n error: (...args: unknown[]) => baseLogger.error(prefix, ...args),\n debug: (...args: unknown[]) => baseLogger.debug(prefix, ...args),\n };\n}\n"]}
package/dist/logger.d.cts DELETED
@@ -1,30 +0,0 @@
1
- /**
2
- * Minimal console logger shared by network snaps.
3
- *
4
- * This is a scaffold example for `@metamask/snap-networks-utils`. Later MONO-2
5
- * tickets will expand shared utilities; snaps can start importing from here.
6
- */
7
- export type Logger = {
8
- log: (...args: unknown[]) => void;
9
- info: (...args: unknown[]) => void;
10
- warn: (...args: unknown[]) => void;
11
- error: (...args: unknown[]) => void;
12
- debug: (...args: unknown[]) => void;
13
- };
14
- /**
15
- * Default logger that forwards to `console`.
16
- */
17
- export declare const logger: Logger;
18
- /**
19
- * Logger that discards all messages. Useful in unit tests.
20
- */
21
- export declare const noOpLogger: Logger;
22
- /**
23
- * Returns a logger that prefixes every message.
24
- *
25
- * @param baseLogger - Logger to wrap.
26
- * @param prefix - Prefix prepended to each call.
27
- * @returns Prefixed logger.
28
- */
29
- export declare function createPrefixedLogger(baseLogger: Logger, prefix: string): Logger;
30
- //# sourceMappingURL=logger.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.d.cts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,MAAM,GAAG;IACnB,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAClC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACrC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,MAgBpB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,MAMxB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,MAAM,CAQR"}
package/dist/logger.d.mts DELETED
@@ -1,30 +0,0 @@
1
- /**
2
- * Minimal console logger shared by network snaps.
3
- *
4
- * This is a scaffold example for `@metamask/snap-networks-utils`. Later MONO-2
5
- * tickets will expand shared utilities; snaps can start importing from here.
6
- */
7
- export type Logger = {
8
- log: (...args: unknown[]) => void;
9
- info: (...args: unknown[]) => void;
10
- warn: (...args: unknown[]) => void;
11
- error: (...args: unknown[]) => void;
12
- debug: (...args: unknown[]) => void;
13
- };
14
- /**
15
- * Default logger that forwards to `console`.
16
- */
17
- export declare const logger: Logger;
18
- /**
19
- * Logger that discards all messages. Useful in unit tests.
20
- */
21
- export declare const noOpLogger: Logger;
22
- /**
23
- * Returns a logger that prefixes every message.
24
- *
25
- * @param baseLogger - Logger to wrap.
26
- * @param prefix - Prefix prepended to each call.
27
- * @returns Prefixed logger.
28
- */
29
- export declare function createPrefixedLogger(baseLogger: Logger, prefix: string): Logger;
30
- //# sourceMappingURL=logger.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.d.mts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,MAAM,GAAG;IACnB,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAClC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACrC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,MAgBpB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,MAMxB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,MAAM,CAQR"}
package/dist/logger.mjs DELETED
@@ -1,53 +0,0 @@
1
- /**
2
- * Minimal console logger shared by network snaps.
3
- *
4
- * This is a scaffold example for `@metamask/snap-networks-utils`. Later MONO-2
5
- * tickets will expand shared utilities; snaps can start importing from here.
6
- */
7
- /**
8
- * Default logger that forwards to `console`.
9
- */
10
- export const logger = {
11
- log: (...args) => {
12
- console.log(...args);
13
- },
14
- info: (...args) => {
15
- console.info(...args);
16
- },
17
- warn: (...args) => {
18
- console.warn(...args);
19
- },
20
- error: (...args) => {
21
- console.error(...args);
22
- },
23
- debug: (...args) => {
24
- console.debug(...args);
25
- },
26
- };
27
- /**
28
- * Logger that discards all messages. Useful in unit tests.
29
- */
30
- export const noOpLogger = {
31
- log: () => undefined,
32
- info: () => undefined,
33
- warn: () => undefined,
34
- error: () => undefined,
35
- debug: () => undefined,
36
- };
37
- /**
38
- * Returns a logger that prefixes every message.
39
- *
40
- * @param baseLogger - Logger to wrap.
41
- * @param prefix - Prefix prepended to each call.
42
- * @returns Prefixed logger.
43
- */
44
- export function createPrefixedLogger(baseLogger, prefix) {
45
- return {
46
- log: (...args) => baseLogger.log(prefix, ...args),
47
- info: (...args) => baseLogger.info(prefix, ...args),
48
- warn: (...args) => baseLogger.warn(prefix, ...args),
49
- error: (...args) => baseLogger.error(prefix, ...args),
50
- debug: (...args) => baseLogger.debug(prefix, ...args),
51
- };
52
- }
53
- //# sourceMappingURL=logger.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.mjs","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAW;IAC5B,GAAG,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAC3B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAC3B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAC5B,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAC5B,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACzB,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAW;IAChC,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS;IACpB,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;IACrB,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;IACrB,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;IACtB,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;CACvB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,UAAkB,EAClB,MAAc;IAEd,OAAO;QACL,GAAG,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;QAC5D,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;QAC9D,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;QAC9D,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;QAChE,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;KACjE,CAAC;AACJ,CAAC","sourcesContent":["/**\n * Minimal console logger shared by network snaps.\n *\n * This is a scaffold example for `@metamask/snap-networks-utils`. Later MONO-2\n * tickets will expand shared utilities; snaps can start importing from here.\n */\n\nexport type Logger = {\n log: (...args: unknown[]) => void;\n info: (...args: unknown[]) => void;\n warn: (...args: unknown[]) => void;\n error: (...args: unknown[]) => void;\n debug: (...args: unknown[]) => void;\n};\n\n/**\n * Default logger that forwards to `console`.\n */\nexport const logger: Logger = {\n log: (...args: unknown[]) => {\n console.log(...args);\n },\n info: (...args: unknown[]) => {\n console.info(...args);\n },\n warn: (...args: unknown[]) => {\n console.warn(...args);\n },\n error: (...args: unknown[]) => {\n console.error(...args);\n },\n debug: (...args: unknown[]) => {\n console.debug(...args);\n },\n};\n\n/**\n * Logger that discards all messages. Useful in unit tests.\n */\nexport const noOpLogger: Logger = {\n log: () => undefined,\n info: () => undefined,\n warn: () => undefined,\n error: () => undefined,\n debug: () => undefined,\n};\n\n/**\n * Returns a logger that prefixes every message.\n *\n * @param baseLogger - Logger to wrap.\n * @param prefix - Prefix prepended to each call.\n * @returns Prefixed logger.\n */\nexport function createPrefixedLogger(\n baseLogger: Logger,\n prefix: string,\n): Logger {\n return {\n log: (...args: unknown[]) => baseLogger.log(prefix, ...args),\n info: (...args: unknown[]) => baseLogger.info(prefix, ...args),\n warn: (...args: unknown[]) => baseLogger.warn(prefix, ...args),\n error: (...args: unknown[]) => baseLogger.error(prefix, ...args),\n debug: (...args: unknown[]) => baseLogger.debug(prefix, ...args),\n };\n}\n"]}