@metamask-previews/snap-networks-utils 1.0.0-preview-521475b3 → 1.0.0-preview-e00d5bb

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/dist/index.cjs +11 -11
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.cts +13 -13
  4. package/dist/index.d.cts.map +1 -1
  5. package/dist/index.d.mts +13 -13
  6. package/dist/index.d.mts.map +1 -1
  7. package/dist/index.mjs +9 -9
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/utils/async/async.cjs.map +1 -0
  10. package/dist/utils/async/async.d.cts.map +1 -0
  11. package/dist/utils/async/async.d.mts.map +1 -0
  12. package/dist/utils/async/async.mjs.map +1 -0
  13. package/dist/{buildUrl → utils/buildUrl}/buildUrl.cjs +1 -1
  14. package/dist/utils/buildUrl/buildUrl.cjs.map +1 -0
  15. package/dist/utils/buildUrl/buildUrl.d.cts.map +1 -0
  16. package/dist/utils/buildUrl/buildUrl.d.mts.map +1 -0
  17. package/dist/{buildUrl → utils/buildUrl}/buildUrl.mjs +1 -1
  18. package/dist/utils/buildUrl/buildUrl.mjs.map +1 -0
  19. package/dist/utils/dedupe/InFlightCoalescer.cjs.map +1 -0
  20. package/dist/utils/dedupe/InFlightCoalescer.d.cts.map +1 -0
  21. package/dist/utils/dedupe/InFlightCoalescer.d.mts.map +1 -0
  22. package/dist/utils/dedupe/InFlightCoalescer.mjs.map +1 -0
  23. package/dist/utils/logger/Logger.cjs.map +1 -0
  24. package/dist/utils/logger/Logger.d.cts.map +1 -0
  25. package/dist/utils/logger/Logger.d.mts.map +1 -0
  26. package/dist/utils/logger/Logger.mjs.map +1 -0
  27. package/dist/utils/originPermissions/createOriginPermissions.cjs.map +1 -0
  28. package/dist/utils/originPermissions/createOriginPermissions.d.cts.map +1 -0
  29. package/dist/utils/originPermissions/createOriginPermissions.d.mts.map +1 -0
  30. package/dist/utils/originPermissions/createOriginPermissions.mjs.map +1 -0
  31. package/dist/utils/originPermissions/validateOrigin.cjs.map +1 -0
  32. package/dist/utils/originPermissions/validateOrigin.d.cts.map +1 -0
  33. package/dist/utils/originPermissions/validateOrigin.d.mts.map +1 -0
  34. package/dist/utils/originPermissions/validateOrigin.mjs.map +1 -0
  35. package/dist/utils/safeMerge/safeMerge.cjs.map +1 -0
  36. package/dist/utils/safeMerge/safeMerge.d.cts.map +1 -0
  37. package/dist/utils/safeMerge/safeMerge.d.mts.map +1 -0
  38. package/dist/utils/safeMerge/safeMerge.mjs.map +1 -0
  39. package/dist/utils/sanitize/sanitize.cjs.map +1 -0
  40. package/dist/utils/sanitize/sanitize.d.cts.map +1 -0
  41. package/dist/utils/sanitize/sanitize.d.mts.map +1 -0
  42. package/dist/utils/sanitize/sanitize.mjs.map +1 -0
  43. package/dist/utils/serialization/serialization.cjs.map +1 -0
  44. package/dist/utils/serialization/serialization.d.cts.map +1 -0
  45. package/dist/utils/serialization/serialization.d.mts.map +1 -0
  46. package/dist/utils/serialization/serialization.mjs.map +1 -0
  47. package/dist/utils/serialization/types.cjs.map +1 -0
  48. package/dist/utils/serialization/types.d.cts.map +1 -0
  49. package/dist/utils/serialization/types.d.mts.map +1 -0
  50. package/dist/utils/serialization/types.mjs.map +1 -0
  51. package/dist/utils/urlStruct/urlStruct.cjs.map +1 -0
  52. package/dist/utils/urlStruct/urlStruct.d.cts.map +1 -0
  53. package/dist/utils/urlStruct/urlStruct.d.mts.map +1 -0
  54. package/dist/utils/urlStruct/urlStruct.mjs.map +1 -0
  55. package/package.json +9 -9
  56. package/dist/async.cjs.map +0 -1
  57. package/dist/async.d.cts.map +0 -1
  58. package/dist/async.d.mts.map +0 -1
  59. package/dist/async.mjs.map +0 -1
  60. package/dist/buildUrl/buildUrl.cjs.map +0 -1
  61. package/dist/buildUrl/buildUrl.d.cts.map +0 -1
  62. package/dist/buildUrl/buildUrl.d.mts.map +0 -1
  63. package/dist/buildUrl/buildUrl.mjs.map +0 -1
  64. package/dist/dedupe/InFlightCoalescer.cjs.map +0 -1
  65. package/dist/dedupe/InFlightCoalescer.d.cts.map +0 -1
  66. package/dist/dedupe/InFlightCoalescer.d.mts.map +0 -1
  67. package/dist/dedupe/InFlightCoalescer.mjs.map +0 -1
  68. package/dist/dedupe/index.cjs +0 -6
  69. package/dist/dedupe/index.cjs.map +0 -1
  70. package/dist/dedupe/index.d.cts +0 -2
  71. package/dist/dedupe/index.d.cts.map +0 -1
  72. package/dist/dedupe/index.d.mts +0 -2
  73. package/dist/dedupe/index.d.mts.map +0 -1
  74. package/dist/dedupe/index.mjs +0 -2
  75. package/dist/dedupe/index.mjs.map +0 -1
  76. package/dist/logger/Logger.cjs.map +0 -1
  77. package/dist/logger/Logger.d.cts.map +0 -1
  78. package/dist/logger/Logger.d.mts.map +0 -1
  79. package/dist/logger/Logger.mjs.map +0 -1
  80. package/dist/logger/index.cjs +0 -7
  81. package/dist/logger/index.cjs.map +0 -1
  82. package/dist/logger/index.d.cts +0 -3
  83. package/dist/logger/index.d.cts.map +0 -1
  84. package/dist/logger/index.d.mts +0 -3
  85. package/dist/logger/index.d.mts.map +0 -1
  86. package/dist/logger/index.mjs +0 -2
  87. package/dist/logger/index.mjs.map +0 -1
  88. package/dist/originPermissions/createOriginPermissions.cjs.map +0 -1
  89. package/dist/originPermissions/createOriginPermissions.d.cts.map +0 -1
  90. package/dist/originPermissions/createOriginPermissions.d.mts.map +0 -1
  91. package/dist/originPermissions/createOriginPermissions.mjs.map +0 -1
  92. package/dist/originPermissions/validateOrigin.cjs.map +0 -1
  93. package/dist/originPermissions/validateOrigin.d.cts.map +0 -1
  94. package/dist/originPermissions/validateOrigin.d.mts.map +0 -1
  95. package/dist/originPermissions/validateOrigin.mjs.map +0 -1
  96. package/dist/safeMerge/safeMerge.cjs.map +0 -1
  97. package/dist/safeMerge/safeMerge.d.cts.map +0 -1
  98. package/dist/safeMerge/safeMerge.d.mts.map +0 -1
  99. package/dist/safeMerge/safeMerge.mjs.map +0 -1
  100. package/dist/sanitize.cjs.map +0 -1
  101. package/dist/sanitize.d.cts.map +0 -1
  102. package/dist/sanitize.d.mts.map +0 -1
  103. package/dist/sanitize.mjs.map +0 -1
  104. package/dist/serialization/serialization.cjs.map +0 -1
  105. package/dist/serialization/serialization.d.cts.map +0 -1
  106. package/dist/serialization/serialization.d.mts.map +0 -1
  107. package/dist/serialization/serialization.mjs.map +0 -1
  108. package/dist/serialization/types.cjs.map +0 -1
  109. package/dist/serialization/types.d.cts.map +0 -1
  110. package/dist/serialization/types.d.mts.map +0 -1
  111. package/dist/serialization/types.mjs.map +0 -1
  112. package/dist/urlStruct/urlStruct.cjs.map +0 -1
  113. package/dist/urlStruct/urlStruct.d.cts.map +0 -1
  114. package/dist/urlStruct/urlStruct.d.mts.map +0 -1
  115. package/dist/urlStruct/urlStruct.mjs.map +0 -1
  116. /package/dist/{async.cjs → utils/async/async.cjs} +0 -0
  117. /package/dist/{async.d.cts → utils/async/async.d.cts} +0 -0
  118. /package/dist/{async.d.mts → utils/async/async.d.mts} +0 -0
  119. /package/dist/{async.mjs → utils/async/async.mjs} +0 -0
  120. /package/dist/{buildUrl → utils/buildUrl}/buildUrl.d.cts +0 -0
  121. /package/dist/{buildUrl → utils/buildUrl}/buildUrl.d.mts +0 -0
  122. /package/dist/{dedupe → utils/dedupe}/InFlightCoalescer.cjs +0 -0
  123. /package/dist/{dedupe → utils/dedupe}/InFlightCoalescer.d.cts +0 -0
  124. /package/dist/{dedupe → utils/dedupe}/InFlightCoalescer.d.mts +0 -0
  125. /package/dist/{dedupe → utils/dedupe}/InFlightCoalescer.mjs +0 -0
  126. /package/dist/{logger → utils/logger}/Logger.cjs +0 -0
  127. /package/dist/{logger → utils/logger}/Logger.d.cts +0 -0
  128. /package/dist/{logger → utils/logger}/Logger.d.mts +0 -0
  129. /package/dist/{logger → utils/logger}/Logger.mjs +0 -0
  130. /package/dist/{originPermissions → utils/originPermissions}/createOriginPermissions.cjs +0 -0
  131. /package/dist/{originPermissions → utils/originPermissions}/createOriginPermissions.d.cts +0 -0
  132. /package/dist/{originPermissions → utils/originPermissions}/createOriginPermissions.d.mts +0 -0
  133. /package/dist/{originPermissions → utils/originPermissions}/createOriginPermissions.mjs +0 -0
  134. /package/dist/{originPermissions → utils/originPermissions}/validateOrigin.cjs +0 -0
  135. /package/dist/{originPermissions → utils/originPermissions}/validateOrigin.d.cts +0 -0
  136. /package/dist/{originPermissions → utils/originPermissions}/validateOrigin.d.mts +0 -0
  137. /package/dist/{originPermissions → utils/originPermissions}/validateOrigin.mjs +0 -0
  138. /package/dist/{safeMerge → utils/safeMerge}/safeMerge.cjs +0 -0
  139. /package/dist/{safeMerge → utils/safeMerge}/safeMerge.d.cts +0 -0
  140. /package/dist/{safeMerge → utils/safeMerge}/safeMerge.d.mts +0 -0
  141. /package/dist/{safeMerge → utils/safeMerge}/safeMerge.mjs +0 -0
  142. /package/dist/{sanitize.cjs → utils/sanitize/sanitize.cjs} +0 -0
  143. /package/dist/{sanitize.d.cts → utils/sanitize/sanitize.d.cts} +0 -0
  144. /package/dist/{sanitize.d.mts → utils/sanitize/sanitize.d.mts} +0 -0
  145. /package/dist/{sanitize.mjs → utils/sanitize/sanitize.mjs} +0 -0
  146. /package/dist/{serialization → utils/serialization}/serialization.cjs +0 -0
  147. /package/dist/{serialization → utils/serialization}/serialization.d.cts +0 -0
  148. /package/dist/{serialization → utils/serialization}/serialization.d.mts +0 -0
  149. /package/dist/{serialization → utils/serialization}/serialization.mjs +0 -0
  150. /package/dist/{serialization → utils/serialization}/types.cjs +0 -0
  151. /package/dist/{serialization → utils/serialization}/types.d.cts +0 -0
  152. /package/dist/{serialization → utils/serialization}/types.d.mts +0 -0
  153. /package/dist/{serialization → utils/serialization}/types.mjs +0 -0
  154. /package/dist/{urlStruct → utils/urlStruct}/urlStruct.cjs +0 -0
  155. /package/dist/{urlStruct → utils/urlStruct}/urlStruct.d.cts +0 -0
  156. /package/dist/{urlStruct → utils/urlStruct}/urlStruct.d.mts +0 -0
  157. /package/dist/{urlStruct → utils/urlStruct}/urlStruct.mjs +0 -0
package/dist/index.cjs CHANGED
@@ -7,32 +7,32 @@ Object.defineProperty(exports, "AssetsProvider", { enumerable: true, get: functi
7
7
  var RemoteFeatureFlagsProvider_1 = require("./providers/remote-feature-flags/RemoteFeatureFlagsProvider.cjs");
8
8
  Object.defineProperty(exports, "REMOTE_FEATURE_FLAGS_PROVIDER_NAME", { enumerable: true, get: function () { return RemoteFeatureFlagsProvider_1.REMOTE_FEATURE_FLAGS_PROVIDER_NAME; } });
9
9
  Object.defineProperty(exports, "RemoteFeatureFlagsProvider", { enumerable: true, get: function () { return RemoteFeatureFlagsProvider_1.RemoteFeatureFlagsProvider; } });
10
- var safeMerge_1 = require("./safeMerge/safeMerge.cjs");
10
+ var safeMerge_1 = require("./utils/safeMerge/safeMerge.cjs");
11
11
  Object.defineProperty(exports, "safeMerge", { enumerable: true, get: function () { return safeMerge_1.safeMerge; } });
12
- var buildUrl_1 = require("./buildUrl/buildUrl.cjs");
12
+ var buildUrl_1 = require("./utils/buildUrl/buildUrl.cjs");
13
13
  Object.defineProperty(exports, "buildUrl", { enumerable: true, get: function () { return buildUrl_1.buildUrl; } });
14
- var sanitize_1 = require("./sanitize.cjs");
14
+ var sanitize_1 = require("./utils/sanitize/sanitize.cjs");
15
15
  Object.defineProperty(exports, "sanitizeControlCharacters", { enumerable: true, get: function () { return sanitize_1.sanitizeControlCharacters; } });
16
16
  Object.defineProperty(exports, "sanitizeUri", { enumerable: true, get: function () { return sanitize_1.sanitizeUri; } });
17
- var urlStruct_1 = require("./urlStruct/urlStruct.cjs");
17
+ var urlStruct_1 = require("./utils/urlStruct/urlStruct.cjs");
18
18
  Object.defineProperty(exports, "UrlStruct", { enumerable: true, get: function () { return urlStruct_1.UrlStruct; } });
19
- var async_1 = require("./async.cjs");
19
+ var async_1 = require("./utils/async/async.cjs");
20
20
  Object.defineProperty(exports, "batchesAll", { enumerable: true, get: function () { return async_1.batchesAll; } });
21
21
  Object.defineProperty(exports, "batchesAllSettled", { enumerable: true, get: function () { return async_1.batchesAllSettled; } });
22
22
  Object.defineProperty(exports, "batchesAllSettledWithChunks", { enumerable: true, get: function () { return async_1.batchesAllSettledWithChunks; } });
23
23
  Object.defineProperty(exports, "batchesAllWithChunks", { enumerable: true, get: function () { return async_1.batchesAllWithChunks; } });
24
24
  Object.defineProperty(exports, "chunks", { enumerable: true, get: function () { return async_1.chunks; } });
25
- var logger_1 = require("./logger/index.cjs");
26
- Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return logger_1.Logger; } });
27
- Object.defineProperty(exports, "LogLevel", { enumerable: true, get: function () { return logger_1.LogLevel; } });
28
- var serialization_1 = require("./serialization/serialization.cjs");
25
+ var Logger_1 = require("./utils/logger/Logger.cjs");
26
+ Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return Logger_1.Logger; } });
27
+ Object.defineProperty(exports, "LogLevel", { enumerable: true, get: function () { return Logger_1.LogLevel; } });
28
+ var serialization_1 = require("./utils/serialization/serialization.cjs");
29
29
  Object.defineProperty(exports, "serialize", { enumerable: true, get: function () { return serialization_1.serialize; } });
30
30
  Object.defineProperty(exports, "deserialize", { enumerable: true, get: function () { return serialization_1.deserialize; } });
31
- var createOriginPermissions_1 = require("./originPermissions/createOriginPermissions.cjs");
31
+ var createOriginPermissions_1 = require("./utils/originPermissions/createOriginPermissions.cjs");
32
32
  Object.defineProperty(exports, "createOriginPermissions", { enumerable: true, get: function () { return createOriginPermissions_1.createOriginPermissions; } });
33
33
  Object.defineProperty(exports, "DEFAULT_PROD_ORIGINS", { enumerable: true, get: function () { return createOriginPermissions_1.DEFAULT_PROD_ORIGINS; } });
34
34
  Object.defineProperty(exports, "DEFAULT_DEV_ORIGINS", { enumerable: true, get: function () { return createOriginPermissions_1.DEFAULT_DEV_ORIGINS; } });
35
35
  Object.defineProperty(exports, "DEFAULT_METAMASK_ORIGIN", { enumerable: true, get: function () { return createOriginPermissions_1.DEFAULT_METAMASK_ORIGIN; } });
36
- var validateOrigin_1 = require("./originPermissions/validateOrigin.cjs");
36
+ var validateOrigin_1 = require("./utils/originPermissions/validateOrigin.cjs");
37
37
  Object.defineProperty(exports, "validateOrigin", { enumerable: true, get: function () { return validateOrigin_1.validateOrigin; } });
38
38
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,wEAI2C;AAHzC,sHAAA,oBAAoB,OAAA;AACpB,gHAAA,cAAc,OAAA;AAGhB,8GAIqE;AAHnE,gJAAA,kCAAkC,OAAA;AAClC,wIAAA,0BAA0B,OAAA;AAG5B,uDAAkD;AAAzC,sGAAA,SAAS,OAAA;AAClB,oDAA+C;AAAtC,oGAAA,QAAQ,OAAA;AAEjB,2CAAoE;AAA3D,qHAAA,yBAAyB,OAAA;AAAE,uGAAA,WAAW,OAAA;AAC/C,uDAAkD;AAAzC,sGAAA,SAAS,OAAA;AAClB,qCAMiB;AALf,mGAAA,UAAU,OAAA;AACV,0GAAA,iBAAiB,OAAA;AACjB,oHAAA,2BAA2B,OAAA;AAC3B,6GAAA,oBAAoB,OAAA;AACpB,+FAAA,MAAM,OAAA;AAER,6CAA4C;AAAnC,gGAAA,MAAM,OAAA;AAAE,kGAAA,QAAQ,OAAA;AAQzB,mEAAuE;AAA9D,0GAAA,SAAS,OAAA;AAAE,4GAAA,WAAW,OAAA;AAE/B,2FAKqD;AAJnD,kIAAA,uBAAuB,OAAA;AACvB,+HAAA,oBAAoB,OAAA;AACpB,8HAAA,mBAAmB,OAAA;AACnB,kIAAA,uBAAuB,OAAA;AAGzB,yEAAoE;AAA3D,gHAAA,cAAc,OAAA","sourcesContent":["export {\n ASSETS_PROVIDER_NAME,\n AssetsProvider,\n type AssetsProviderMessenger,\n} from './providers/assets/AssetsProvider';\nexport {\n REMOTE_FEATURE_FLAGS_PROVIDER_NAME,\n RemoteFeatureFlagsProvider,\n type RemoteFeatureFlagsProviderMessenger,\n} from './providers/remote-feature-flags/RemoteFeatureFlagsProvider';\nexport { safeMerge } from './safeMerge/safeMerge';\nexport { buildUrl } from './buildUrl/buildUrl';\nexport type { BuildUrlParams } from './buildUrl/buildUrl';\nexport { sanitizeControlCharacters, sanitizeUri } from './sanitize';\nexport { UrlStruct } from './urlStruct/urlStruct';\nexport {\n batchesAll,\n batchesAllSettled,\n batchesAllSettledWithChunks,\n batchesAllWithChunks,\n chunks,\n} from './async';\nexport { Logger, LogLevel } from './logger';\nexport type {\n LoggerOptions,\n LoggerMethod,\n LogMethod,\n LogMethodDecorator,\n LoggerDecorators,\n} from './logger';\nexport { serialize, deserialize } from './serialization/serialization';\nexport type { Serializable } from './serialization/types';\nexport {\n createOriginPermissions,\n DEFAULT_PROD_ORIGINS,\n DEFAULT_DEV_ORIGINS,\n DEFAULT_METAMASK_ORIGIN,\n} from './originPermissions/createOriginPermissions';\nexport type { CreateOriginPermissionsParams } from './originPermissions/createOriginPermissions';\nexport { validateOrigin } from './originPermissions/validateOrigin';\n"]}
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,wEAI2C;AAHzC,sHAAA,oBAAoB,OAAA;AACpB,gHAAA,cAAc,OAAA;AAGhB,8GAIqE;AAHnE,gJAAA,kCAAkC,OAAA;AAClC,wIAAA,0BAA0B,OAAA;AAG5B,6DAAwD;AAA/C,sGAAA,SAAS,OAAA;AAClB,0DAAqD;AAA5C,oGAAA,QAAQ,OAAA;AAEjB,0DAGmC;AAFjC,qHAAA,yBAAyB,OAAA;AACzB,uGAAA,WAAW,OAAA;AAEb,6DAAwD;AAA/C,sGAAA,SAAS,OAAA;AAClB,iDAM6B;AAL3B,mGAAA,UAAU,OAAA;AACV,0GAAA,iBAAiB,OAAA;AACjB,oHAAA,2BAA2B,OAAA;AAC3B,6GAAA,oBAAoB,OAAA;AACpB,+FAAA,MAAM,OAAA;AAER,oDAAyD;AAAhD,gGAAA,MAAM,OAAA;AAAE,kGAAA,QAAQ,OAAA;AAQzB,yEAA6E;AAApE,0GAAA,SAAS,OAAA;AAAE,4GAAA,WAAW,OAAA;AAE/B,iGAK2D;AAJzD,kIAAA,uBAAuB,OAAA;AACvB,+HAAA,oBAAoB,OAAA;AACpB,8HAAA,mBAAmB,OAAA;AACnB,kIAAA,uBAAuB,OAAA;AAGzB,+EAA0E;AAAjE,gHAAA,cAAc,OAAA","sourcesContent":["export {\n ASSETS_PROVIDER_NAME,\n AssetsProvider,\n type AssetsProviderMessenger,\n} from './providers/assets/AssetsProvider';\nexport {\n REMOTE_FEATURE_FLAGS_PROVIDER_NAME,\n RemoteFeatureFlagsProvider,\n type RemoteFeatureFlagsProviderMessenger,\n} from './providers/remote-feature-flags/RemoteFeatureFlagsProvider';\nexport { safeMerge } from './utils/safeMerge/safeMerge';\nexport { buildUrl } from './utils/buildUrl/buildUrl';\nexport type { BuildUrlParams } from './utils/buildUrl/buildUrl';\nexport {\n sanitizeControlCharacters,\n sanitizeUri,\n} from './utils/sanitize/sanitize';\nexport { UrlStruct } from './utils/urlStruct/urlStruct';\nexport {\n batchesAll,\n batchesAllSettled,\n batchesAllSettledWithChunks,\n batchesAllWithChunks,\n chunks,\n} from './utils/async/async';\nexport { Logger, LogLevel } from './utils/logger/Logger';\nexport type {\n LoggerOptions,\n LoggerMethod,\n LogMethod,\n LogMethodDecorator,\n LoggerDecorators,\n} from './utils/logger/Logger';\nexport { serialize, deserialize } from './utils/serialization/serialization';\nexport type { Serializable } from './utils/serialization/types';\nexport {\n createOriginPermissions,\n DEFAULT_PROD_ORIGINS,\n DEFAULT_DEV_ORIGINS,\n DEFAULT_METAMASK_ORIGIN,\n} from './utils/originPermissions/createOriginPermissions';\nexport type { CreateOriginPermissionsParams } from './utils/originPermissions/createOriginPermissions';\nexport { validateOrigin } from './utils/originPermissions/validateOrigin';\n"]}
package/dist/index.d.cts CHANGED
@@ -1,16 +1,16 @@
1
1
  export { ASSETS_PROVIDER_NAME, AssetsProvider, type AssetsProviderMessenger, } from "./providers/assets/AssetsProvider.cjs";
2
2
  export { REMOTE_FEATURE_FLAGS_PROVIDER_NAME, RemoteFeatureFlagsProvider, type RemoteFeatureFlagsProviderMessenger, } from "./providers/remote-feature-flags/RemoteFeatureFlagsProvider.cjs";
3
- export { safeMerge } from "./safeMerge/safeMerge.cjs";
4
- export { buildUrl } from "./buildUrl/buildUrl.cjs";
5
- export type { BuildUrlParams } from "./buildUrl/buildUrl.cjs";
6
- export { sanitizeControlCharacters, sanitizeUri } from "./sanitize.cjs";
7
- export { UrlStruct } from "./urlStruct/urlStruct.cjs";
8
- export { batchesAll, batchesAllSettled, batchesAllSettledWithChunks, batchesAllWithChunks, chunks, } from "./async.cjs";
9
- export { Logger, LogLevel } from "./logger/index.cjs";
10
- export type { LoggerOptions, LoggerMethod, LogMethod, LogMethodDecorator, LoggerDecorators, } from "./logger/index.cjs";
11
- export { serialize, deserialize } from "./serialization/serialization.cjs";
12
- export type { Serializable } from "./serialization/types.cjs";
13
- export { createOriginPermissions, DEFAULT_PROD_ORIGINS, DEFAULT_DEV_ORIGINS, DEFAULT_METAMASK_ORIGIN, } from "./originPermissions/createOriginPermissions.cjs";
14
- export type { CreateOriginPermissionsParams } from "./originPermissions/createOriginPermissions.cjs";
15
- export { validateOrigin } from "./originPermissions/validateOrigin.cjs";
3
+ export { safeMerge } from "./utils/safeMerge/safeMerge.cjs";
4
+ export { buildUrl } from "./utils/buildUrl/buildUrl.cjs";
5
+ export type { BuildUrlParams } from "./utils/buildUrl/buildUrl.cjs";
6
+ export { sanitizeControlCharacters, sanitizeUri, } from "./utils/sanitize/sanitize.cjs";
7
+ export { UrlStruct } from "./utils/urlStruct/urlStruct.cjs";
8
+ export { batchesAll, batchesAllSettled, batchesAllSettledWithChunks, batchesAllWithChunks, chunks, } from "./utils/async/async.cjs";
9
+ export { Logger, LogLevel } from "./utils/logger/Logger.cjs";
10
+ export type { LoggerOptions, LoggerMethod, LogMethod, LogMethodDecorator, LoggerDecorators, } from "./utils/logger/Logger.cjs";
11
+ export { serialize, deserialize } from "./utils/serialization/serialization.cjs";
12
+ export type { Serializable } from "./utils/serialization/types.cjs";
13
+ export { createOriginPermissions, DEFAULT_PROD_ORIGINS, DEFAULT_DEV_ORIGINS, DEFAULT_METAMASK_ORIGIN, } from "./utils/originPermissions/createOriginPermissions.cjs";
14
+ export type { CreateOriginPermissionsParams } from "./utils/originPermissions/createOriginPermissions.cjs";
15
+ export { validateOrigin } from "./utils/originPermissions/validateOrigin.cjs";
16
16
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,KAAK,uBAAuB,GAC7B,8CAA0C;AAC3C,OAAO,EACL,kCAAkC,EAClC,0BAA0B,EAC1B,KAAK,mCAAmC,GACzC,wEAAoE;AACrE,OAAO,EAAE,SAAS,EAAE,kCAA8B;AAClD,OAAO,EAAE,QAAQ,EAAE,gCAA4B;AAC/C,YAAY,EAAE,cAAc,EAAE,gCAA4B;AAC1D,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,uBAAmB;AACpE,OAAO,EAAE,SAAS,EAAE,kCAA8B;AAClD,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,2BAA2B,EAC3B,oBAAoB,EACpB,MAAM,GACP,oBAAgB;AACjB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,2BAAiB;AAC5C,YAAY,EACV,aAAa,EACb,YAAY,EACZ,SAAS,EACT,kBAAkB,EAClB,gBAAgB,GACjB,2BAAiB;AAClB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,0CAAsC;AACvE,YAAY,EAAE,YAAY,EAAE,kCAA8B;AAC1D,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,GACxB,wDAAoD;AACrD,YAAY,EAAE,6BAA6B,EAAE,wDAAoD;AACjG,OAAO,EAAE,cAAc,EAAE,+CAA2C"}
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,KAAK,uBAAuB,GAC7B,8CAA0C;AAC3C,OAAO,EACL,kCAAkC,EAClC,0BAA0B,EAC1B,KAAK,mCAAmC,GACzC,wEAAoE;AACrE,OAAO,EAAE,SAAS,EAAE,wCAAoC;AACxD,OAAO,EAAE,QAAQ,EAAE,sCAAkC;AACrD,YAAY,EAAE,cAAc,EAAE,sCAAkC;AAChE,OAAO,EACL,yBAAyB,EACzB,WAAW,GACZ,sCAAkC;AACnC,OAAO,EAAE,SAAS,EAAE,wCAAoC;AACxD,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,2BAA2B,EAC3B,oBAAoB,EACpB,MAAM,GACP,gCAA4B;AAC7B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,kCAA8B;AACzD,YAAY,EACV,aAAa,EACb,YAAY,EACZ,SAAS,EACT,kBAAkB,EAClB,gBAAgB,GACjB,kCAA8B;AAC/B,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,gDAA4C;AAC7E,YAAY,EAAE,YAAY,EAAE,wCAAoC;AAChE,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,GACxB,8DAA0D;AAC3D,YAAY,EAAE,6BAA6B,EAAE,8DAA0D;AACvG,OAAO,EAAE,cAAc,EAAE,qDAAiD"}
package/dist/index.d.mts CHANGED
@@ -1,16 +1,16 @@
1
1
  export { ASSETS_PROVIDER_NAME, AssetsProvider, type AssetsProviderMessenger, } from "./providers/assets/AssetsProvider.mjs";
2
2
  export { REMOTE_FEATURE_FLAGS_PROVIDER_NAME, RemoteFeatureFlagsProvider, type RemoteFeatureFlagsProviderMessenger, } from "./providers/remote-feature-flags/RemoteFeatureFlagsProvider.mjs";
3
- export { safeMerge } from "./safeMerge/safeMerge.mjs";
4
- export { buildUrl } from "./buildUrl/buildUrl.mjs";
5
- export type { BuildUrlParams } from "./buildUrl/buildUrl.mjs";
6
- export { sanitizeControlCharacters, sanitizeUri } from "./sanitize.mjs";
7
- export { UrlStruct } from "./urlStruct/urlStruct.mjs";
8
- export { batchesAll, batchesAllSettled, batchesAllSettledWithChunks, batchesAllWithChunks, chunks, } from "./async.mjs";
9
- export { Logger, LogLevel } from "./logger/index.mjs";
10
- export type { LoggerOptions, LoggerMethod, LogMethod, LogMethodDecorator, LoggerDecorators, } from "./logger/index.mjs";
11
- export { serialize, deserialize } from "./serialization/serialization.mjs";
12
- export type { Serializable } from "./serialization/types.mjs";
13
- export { createOriginPermissions, DEFAULT_PROD_ORIGINS, DEFAULT_DEV_ORIGINS, DEFAULT_METAMASK_ORIGIN, } from "./originPermissions/createOriginPermissions.mjs";
14
- export type { CreateOriginPermissionsParams } from "./originPermissions/createOriginPermissions.mjs";
15
- export { validateOrigin } from "./originPermissions/validateOrigin.mjs";
3
+ export { safeMerge } from "./utils/safeMerge/safeMerge.mjs";
4
+ export { buildUrl } from "./utils/buildUrl/buildUrl.mjs";
5
+ export type { BuildUrlParams } from "./utils/buildUrl/buildUrl.mjs";
6
+ export { sanitizeControlCharacters, sanitizeUri, } from "./utils/sanitize/sanitize.mjs";
7
+ export { UrlStruct } from "./utils/urlStruct/urlStruct.mjs";
8
+ export { batchesAll, batchesAllSettled, batchesAllSettledWithChunks, batchesAllWithChunks, chunks, } from "./utils/async/async.mjs";
9
+ export { Logger, LogLevel } from "./utils/logger/Logger.mjs";
10
+ export type { LoggerOptions, LoggerMethod, LogMethod, LogMethodDecorator, LoggerDecorators, } from "./utils/logger/Logger.mjs";
11
+ export { serialize, deserialize } from "./utils/serialization/serialization.mjs";
12
+ export type { Serializable } from "./utils/serialization/types.mjs";
13
+ export { createOriginPermissions, DEFAULT_PROD_ORIGINS, DEFAULT_DEV_ORIGINS, DEFAULT_METAMASK_ORIGIN, } from "./utils/originPermissions/createOriginPermissions.mjs";
14
+ export type { CreateOriginPermissionsParams } from "./utils/originPermissions/createOriginPermissions.mjs";
15
+ export { validateOrigin } from "./utils/originPermissions/validateOrigin.mjs";
16
16
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,KAAK,uBAAuB,GAC7B,8CAA0C;AAC3C,OAAO,EACL,kCAAkC,EAClC,0BAA0B,EAC1B,KAAK,mCAAmC,GACzC,wEAAoE;AACrE,OAAO,EAAE,SAAS,EAAE,kCAA8B;AAClD,OAAO,EAAE,QAAQ,EAAE,gCAA4B;AAC/C,YAAY,EAAE,cAAc,EAAE,gCAA4B;AAC1D,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,uBAAmB;AACpE,OAAO,EAAE,SAAS,EAAE,kCAA8B;AAClD,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,2BAA2B,EAC3B,oBAAoB,EACpB,MAAM,GACP,oBAAgB;AACjB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,2BAAiB;AAC5C,YAAY,EACV,aAAa,EACb,YAAY,EACZ,SAAS,EACT,kBAAkB,EAClB,gBAAgB,GACjB,2BAAiB;AAClB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,0CAAsC;AACvE,YAAY,EAAE,YAAY,EAAE,kCAA8B;AAC1D,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,GACxB,wDAAoD;AACrD,YAAY,EAAE,6BAA6B,EAAE,wDAAoD;AACjG,OAAO,EAAE,cAAc,EAAE,+CAA2C"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,KAAK,uBAAuB,GAC7B,8CAA0C;AAC3C,OAAO,EACL,kCAAkC,EAClC,0BAA0B,EAC1B,KAAK,mCAAmC,GACzC,wEAAoE;AACrE,OAAO,EAAE,SAAS,EAAE,wCAAoC;AACxD,OAAO,EAAE,QAAQ,EAAE,sCAAkC;AACrD,YAAY,EAAE,cAAc,EAAE,sCAAkC;AAChE,OAAO,EACL,yBAAyB,EACzB,WAAW,GACZ,sCAAkC;AACnC,OAAO,EAAE,SAAS,EAAE,wCAAoC;AACxD,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,2BAA2B,EAC3B,oBAAoB,EACpB,MAAM,GACP,gCAA4B;AAC7B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,kCAA8B;AACzD,YAAY,EACV,aAAa,EACb,YAAY,EACZ,SAAS,EACT,kBAAkB,EAClB,gBAAgB,GACjB,kCAA8B;AAC/B,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,gDAA4C;AAC7E,YAAY,EAAE,YAAY,EAAE,wCAAoC;AAChE,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,GACxB,8DAA0D;AAC3D,YAAY,EAAE,6BAA6B,EAAE,8DAA0D;AACvG,OAAO,EAAE,cAAc,EAAE,qDAAiD"}
package/dist/index.mjs CHANGED
@@ -1,12 +1,12 @@
1
1
  export { ASSETS_PROVIDER_NAME, AssetsProvider } from "./providers/assets/AssetsProvider.mjs";
2
2
  export { REMOTE_FEATURE_FLAGS_PROVIDER_NAME, RemoteFeatureFlagsProvider } from "./providers/remote-feature-flags/RemoteFeatureFlagsProvider.mjs";
3
- export { safeMerge } from "./safeMerge/safeMerge.mjs";
4
- export { buildUrl } from "./buildUrl/buildUrl.mjs";
5
- export { sanitizeControlCharacters, sanitizeUri } from "./sanitize.mjs";
6
- export { UrlStruct } from "./urlStruct/urlStruct.mjs";
7
- export { batchesAll, batchesAllSettled, batchesAllSettledWithChunks, batchesAllWithChunks, chunks } from "./async.mjs";
8
- export { Logger, LogLevel } from "./logger/index.mjs";
9
- export { serialize, deserialize } from "./serialization/serialization.mjs";
10
- export { createOriginPermissions, DEFAULT_PROD_ORIGINS, DEFAULT_DEV_ORIGINS, DEFAULT_METAMASK_ORIGIN } from "./originPermissions/createOriginPermissions.mjs";
11
- export { validateOrigin } from "./originPermissions/validateOrigin.mjs";
3
+ export { safeMerge } from "./utils/safeMerge/safeMerge.mjs";
4
+ export { buildUrl } from "./utils/buildUrl/buildUrl.mjs";
5
+ export { sanitizeControlCharacters, sanitizeUri } from "./utils/sanitize/sanitize.mjs";
6
+ export { UrlStruct } from "./utils/urlStruct/urlStruct.mjs";
7
+ export { batchesAll, batchesAllSettled, batchesAllSettledWithChunks, batchesAllWithChunks, chunks } from "./utils/async/async.mjs";
8
+ export { Logger, LogLevel } from "./utils/logger/Logger.mjs";
9
+ export { serialize, deserialize } from "./utils/serialization/serialization.mjs";
10
+ export { createOriginPermissions, DEFAULT_PROD_ORIGINS, DEFAULT_DEV_ORIGINS, DEFAULT_METAMASK_ORIGIN } from "./utils/originPermissions/createOriginPermissions.mjs";
11
+ export { validateOrigin } from "./utils/originPermissions/validateOrigin.mjs";
12
12
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,cAAc,EAEf,8CAA0C;AAC3C,OAAO,EACL,kCAAkC,EAClC,0BAA0B,EAE3B,wEAAoE;AACrE,OAAO,EAAE,SAAS,EAAE,kCAA8B;AAClD,OAAO,EAAE,QAAQ,EAAE,gCAA4B;AAE/C,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,uBAAmB;AACpE,OAAO,EAAE,SAAS,EAAE,kCAA8B;AAClD,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,2BAA2B,EAC3B,oBAAoB,EACpB,MAAM,EACP,oBAAgB;AACjB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,2BAAiB;AAQ5C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,0CAAsC;AAEvE,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EACxB,wDAAoD;AAErD,OAAO,EAAE,cAAc,EAAE,+CAA2C","sourcesContent":["export {\n ASSETS_PROVIDER_NAME,\n AssetsProvider,\n type AssetsProviderMessenger,\n} from './providers/assets/AssetsProvider';\nexport {\n REMOTE_FEATURE_FLAGS_PROVIDER_NAME,\n RemoteFeatureFlagsProvider,\n type RemoteFeatureFlagsProviderMessenger,\n} from './providers/remote-feature-flags/RemoteFeatureFlagsProvider';\nexport { safeMerge } from './safeMerge/safeMerge';\nexport { buildUrl } from './buildUrl/buildUrl';\nexport type { BuildUrlParams } from './buildUrl/buildUrl';\nexport { sanitizeControlCharacters, sanitizeUri } from './sanitize';\nexport { UrlStruct } from './urlStruct/urlStruct';\nexport {\n batchesAll,\n batchesAllSettled,\n batchesAllSettledWithChunks,\n batchesAllWithChunks,\n chunks,\n} from './async';\nexport { Logger, LogLevel } from './logger';\nexport type {\n LoggerOptions,\n LoggerMethod,\n LogMethod,\n LogMethodDecorator,\n LoggerDecorators,\n} from './logger';\nexport { serialize, deserialize } from './serialization/serialization';\nexport type { Serializable } from './serialization/types';\nexport {\n createOriginPermissions,\n DEFAULT_PROD_ORIGINS,\n DEFAULT_DEV_ORIGINS,\n DEFAULT_METAMASK_ORIGIN,\n} from './originPermissions/createOriginPermissions';\nexport type { CreateOriginPermissionsParams } from './originPermissions/createOriginPermissions';\nexport { validateOrigin } from './originPermissions/validateOrigin';\n"]}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,cAAc,EAEf,8CAA0C;AAC3C,OAAO,EACL,kCAAkC,EAClC,0BAA0B,EAE3B,wEAAoE;AACrE,OAAO,EAAE,SAAS,EAAE,wCAAoC;AACxD,OAAO,EAAE,QAAQ,EAAE,sCAAkC;AAErD,OAAO,EACL,yBAAyB,EACzB,WAAW,EACZ,sCAAkC;AACnC,OAAO,EAAE,SAAS,EAAE,wCAAoC;AACxD,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,2BAA2B,EAC3B,oBAAoB,EACpB,MAAM,EACP,gCAA4B;AAC7B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,kCAA8B;AAQzD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,gDAA4C;AAE7E,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EACxB,8DAA0D;AAE3D,OAAO,EAAE,cAAc,EAAE,qDAAiD","sourcesContent":["export {\n ASSETS_PROVIDER_NAME,\n AssetsProvider,\n type AssetsProviderMessenger,\n} from './providers/assets/AssetsProvider';\nexport {\n REMOTE_FEATURE_FLAGS_PROVIDER_NAME,\n RemoteFeatureFlagsProvider,\n type RemoteFeatureFlagsProviderMessenger,\n} from './providers/remote-feature-flags/RemoteFeatureFlagsProvider';\nexport { safeMerge } from './utils/safeMerge/safeMerge';\nexport { buildUrl } from './utils/buildUrl/buildUrl';\nexport type { BuildUrlParams } from './utils/buildUrl/buildUrl';\nexport {\n sanitizeControlCharacters,\n sanitizeUri,\n} from './utils/sanitize/sanitize';\nexport { UrlStruct } from './utils/urlStruct/urlStruct';\nexport {\n batchesAll,\n batchesAllSettled,\n batchesAllSettledWithChunks,\n batchesAllWithChunks,\n chunks,\n} from './utils/async/async';\nexport { Logger, LogLevel } from './utils/logger/Logger';\nexport type {\n LoggerOptions,\n LoggerMethod,\n LogMethod,\n LogMethodDecorator,\n LoggerDecorators,\n} from './utils/logger/Logger';\nexport { serialize, deserialize } from './utils/serialization/serialization';\nexport type { Serializable } from './utils/serialization/types';\nexport {\n createOriginPermissions,\n DEFAULT_PROD_ORIGINS,\n DEFAULT_DEV_ORIGINS,\n DEFAULT_METAMASK_ORIGIN,\n} from './utils/originPermissions/createOriginPermissions';\nexport type { CreateOriginPermissionsParams } from './utils/originPermissions/createOriginPermissions';\nexport { validateOrigin } from './utils/originPermissions/validateOrigin';\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.cjs","sourceRoot":"","sources":["../../../src/utils/async/async.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Splits items into chunks of a given size.\n *\n * @param items - Input items; order is preserved in the returned chunks.\n * @param chunkSize - Size of each chunk (must be ≥ 1).\n * @returns An array of chunks, each containing `chunkSize` items.\n */\nexport function chunks<TItem>(\n items: readonly TItem[],\n chunkSize: number,\n): TItem[][] {\n if (chunkSize < 1) {\n throw new RangeError('chunkSize must be at least 1');\n }\n\n const itemsChunks: TItem[][] = [];\n for (let index = 0; index < items.length; index += chunkSize) {\n itemsChunks.push(items.slice(index, index + chunkSize));\n }\n return itemsChunks;\n}\n\n/**\n * Runs async work on items in fixed-size waves, using {@link Promise.all} per wave.\n * The next wave starts only after the current wave completes; any rejection fails the whole call.\n *\n * @param items - Input items; order is preserved in the returned results.\n * @param batchSize - Maximum concurrent mapper invocations per wave (must be ≥ 1).\n * @param mapper - Async function for each item; receives the global index in `items`.\n * @returns One result per item, in the same order as `items`.\n */\nexport async function batchesAll<TItem, TResult>(\n items: readonly TItem[],\n batchSize: number,\n mapper: (item: TItem, index: number) => Promise<TResult>,\n): Promise<TResult[]> {\n if (batchSize < 1) {\n throw new RangeError('batchSize must be at least 1');\n }\n\n const results: TResult[] = [];\n\n for (let index = 0; index < items.length; index += batchSize) {\n const batch = items.slice(index, index + batchSize);\n const batchResults = await Promise.all(\n batch.map(async (item, batchOffset) => mapper(item, index + batchOffset)),\n );\n results.push(...batchResults);\n }\n\n return results;\n}\n\n/**\n * Runs async work on items in fixed-size waves, using {@link Promise.allSettled} per wave.\n * The next wave starts only after the current one settles, limiting concurrency to `batchSize`.\n *\n * @param items - Input items; order is preserved in the returned results.\n * @param batchSize - Maximum concurrent mapper invocations per wave (must be ≥ 1).\n * @param mapper - Async function for each item; receives the global index in `items`.\n * @returns One settled result per item, in the same order as `items`.\n */\nexport async function batchesAllSettled<TItem, TResult>(\n items: readonly TItem[],\n batchSize: number,\n mapper: (item: TItem, index: number) => Promise<TResult>,\n): Promise<PromiseSettledResult<TResult>[]> {\n if (batchSize < 1) {\n throw new RangeError('batchSize must be at least 1');\n }\n\n const results: PromiseSettledResult<TResult>[] = [];\n\n for (let index = 0; index < items.length; index += batchSize) {\n const batch = items.slice(index, index + batchSize);\n const settled = await Promise.allSettled(\n batch.map(async (item, batchOffset) => mapper(item, index + batchOffset)),\n );\n results.push(...settled);\n }\n\n return results;\n}\n\n/**\n * Splits `items` into consecutive chunks of `chunkSize`, then runs {@link batchesAllSettled} on those chunks.\n * Each mapper call receives one chunk; settled results are in chunk order (same order as {@link chunks}).\n *\n * @param items - Flat input items.\n * @param chunkSize - Items per chunk (must be ≥ 1).\n * @param batchSize - Max concurrent chunk mappers per wave (must be ≥ 1).\n * @param mapper - Async work for a single chunk; second argument is the chunk index (0-based).\n * @returns One settled result per chunk.\n */\nexport async function batchesAllSettledWithChunks<TItem, TResult>(\n items: readonly TItem[],\n chunkSize: number,\n batchSize: number,\n mapper: (chunk: TItem[], chunkIndex: number) => Promise<TResult>,\n): Promise<PromiseSettledResult<TResult>[]> {\n const itemChunks = chunks(items, chunkSize);\n return batchesAllSettled(itemChunks, batchSize, async (chunk, chunkIndex) =>\n mapper(chunk, chunkIndex),\n );\n}\n\n/**\n * Splits `items` into consecutive chunks of `chunkSize`, then runs {@link batchesAll} on those chunks.\n * Each mapper call receives one chunk; results are in chunk order (same order as {@link chunks}).\n *\n * @param items - Flat input items.\n * @param chunkSize - Items per chunk (must be ≥ 1).\n * @param batchSize - Max concurrent chunk mappers per wave (must be ≥ 1).\n * @param mapper - Async work for a single chunk; second argument is the chunk index (0-based).\n * @returns One result per chunk.\n */\nexport async function batchesAllWithChunks<TItem, TResult>(\n items: readonly TItem[],\n chunkSize: number,\n batchSize: number,\n mapper: (chunk: TItem[], chunkIndex: number) => Promise<TResult>,\n): Promise<TResult[]> {\n const itemChunks = chunks(items, chunkSize);\n return batchesAll(itemChunks, batchSize, async (chunk, chunkIndex) =>\n mapper(chunk, chunkIndex),\n );\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.d.cts","sourceRoot":"","sources":["../../../src/utils/async/async.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAC1B,KAAK,EAAE,SAAS,KAAK,EAAE,EACvB,SAAS,EAAE,MAAM,GAChB,KAAK,EAAE,EAAE,CAUX;AAED;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,OAAO,EAC7C,KAAK,EAAE,SAAS,KAAK,EAAE,EACvB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GACvD,OAAO,CAAC,OAAO,EAAE,CAAC,CAgBpB;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EACpD,KAAK,EAAE,SAAS,KAAK,EAAE,EACvB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GACvD,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,CAgB1C;AAED;;;;;;;;;GASG;AACH,wBAAsB,2BAA2B,CAAC,KAAK,EAAE,OAAO,EAC9D,KAAK,EAAE,SAAS,KAAK,EAAE,EACvB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAC/D,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,CAK1C;AAED;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,OAAO,EACvD,KAAK,EAAE,SAAS,KAAK,EAAE,EACvB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAC/D,OAAO,CAAC,OAAO,EAAE,CAAC,CAKpB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.d.mts","sourceRoot":"","sources":["../../../src/utils/async/async.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAC1B,KAAK,EAAE,SAAS,KAAK,EAAE,EACvB,SAAS,EAAE,MAAM,GAChB,KAAK,EAAE,EAAE,CAUX;AAED;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,OAAO,EAC7C,KAAK,EAAE,SAAS,KAAK,EAAE,EACvB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GACvD,OAAO,CAAC,OAAO,EAAE,CAAC,CAgBpB;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EACpD,KAAK,EAAE,SAAS,KAAK,EAAE,EACvB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GACvD,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,CAgB1C;AAED;;;;;;;;;GASG;AACH,wBAAsB,2BAA2B,CAAC,KAAK,EAAE,OAAO,EAC9D,KAAK,EAAE,SAAS,KAAK,EAAE,EACvB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAC/D,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,CAK1C;AAED;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,OAAO,EACvD,KAAK,EAAE,SAAS,KAAK,EAAE,EACvB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAC/D,OAAO,CAAC,OAAO,EAAE,CAAC,CAKpB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.mjs","sourceRoot":"","sources":["../../../src/utils/async/async.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Splits items into chunks of a given size.\n *\n * @param items - Input items; order is preserved in the returned chunks.\n * @param chunkSize - Size of each chunk (must be ≥ 1).\n * @returns An array of chunks, each containing `chunkSize` items.\n */\nexport function chunks<TItem>(\n items: readonly TItem[],\n chunkSize: number,\n): TItem[][] {\n if (chunkSize < 1) {\n throw new RangeError('chunkSize must be at least 1');\n }\n\n const itemsChunks: TItem[][] = [];\n for (let index = 0; index < items.length; index += chunkSize) {\n itemsChunks.push(items.slice(index, index + chunkSize));\n }\n return itemsChunks;\n}\n\n/**\n * Runs async work on items in fixed-size waves, using {@link Promise.all} per wave.\n * The next wave starts only after the current wave completes; any rejection fails the whole call.\n *\n * @param items - Input items; order is preserved in the returned results.\n * @param batchSize - Maximum concurrent mapper invocations per wave (must be ≥ 1).\n * @param mapper - Async function for each item; receives the global index in `items`.\n * @returns One result per item, in the same order as `items`.\n */\nexport async function batchesAll<TItem, TResult>(\n items: readonly TItem[],\n batchSize: number,\n mapper: (item: TItem, index: number) => Promise<TResult>,\n): Promise<TResult[]> {\n if (batchSize < 1) {\n throw new RangeError('batchSize must be at least 1');\n }\n\n const results: TResult[] = [];\n\n for (let index = 0; index < items.length; index += batchSize) {\n const batch = items.slice(index, index + batchSize);\n const batchResults = await Promise.all(\n batch.map(async (item, batchOffset) => mapper(item, index + batchOffset)),\n );\n results.push(...batchResults);\n }\n\n return results;\n}\n\n/**\n * Runs async work on items in fixed-size waves, using {@link Promise.allSettled} per wave.\n * The next wave starts only after the current one settles, limiting concurrency to `batchSize`.\n *\n * @param items - Input items; order is preserved in the returned results.\n * @param batchSize - Maximum concurrent mapper invocations per wave (must be ≥ 1).\n * @param mapper - Async function for each item; receives the global index in `items`.\n * @returns One settled result per item, in the same order as `items`.\n */\nexport async function batchesAllSettled<TItem, TResult>(\n items: readonly TItem[],\n batchSize: number,\n mapper: (item: TItem, index: number) => Promise<TResult>,\n): Promise<PromiseSettledResult<TResult>[]> {\n if (batchSize < 1) {\n throw new RangeError('batchSize must be at least 1');\n }\n\n const results: PromiseSettledResult<TResult>[] = [];\n\n for (let index = 0; index < items.length; index += batchSize) {\n const batch = items.slice(index, index + batchSize);\n const settled = await Promise.allSettled(\n batch.map(async (item, batchOffset) => mapper(item, index + batchOffset)),\n );\n results.push(...settled);\n }\n\n return results;\n}\n\n/**\n * Splits `items` into consecutive chunks of `chunkSize`, then runs {@link batchesAllSettled} on those chunks.\n * Each mapper call receives one chunk; settled results are in chunk order (same order as {@link chunks}).\n *\n * @param items - Flat input items.\n * @param chunkSize - Items per chunk (must be ≥ 1).\n * @param batchSize - Max concurrent chunk mappers per wave (must be ≥ 1).\n * @param mapper - Async work for a single chunk; second argument is the chunk index (0-based).\n * @returns One settled result per chunk.\n */\nexport async function batchesAllSettledWithChunks<TItem, TResult>(\n items: readonly TItem[],\n chunkSize: number,\n batchSize: number,\n mapper: (chunk: TItem[], chunkIndex: number) => Promise<TResult>,\n): Promise<PromiseSettledResult<TResult>[]> {\n const itemChunks = chunks(items, chunkSize);\n return batchesAllSettled(itemChunks, batchSize, async (chunk, chunkIndex) =>\n mapper(chunk, chunkIndex),\n );\n}\n\n/**\n * Splits `items` into consecutive chunks of `chunkSize`, then runs {@link batchesAll} on those chunks.\n * Each mapper call receives one chunk; results are in chunk order (same order as {@link chunks}).\n *\n * @param items - Flat input items.\n * @param chunkSize - Items per chunk (must be ≥ 1).\n * @param batchSize - Max concurrent chunk mappers per wave (must be ≥ 1).\n * @param mapper - Async work for a single chunk; second argument is the chunk index (0-based).\n * @returns One result per chunk.\n */\nexport async function batchesAllWithChunks<TItem, TResult>(\n items: readonly TItem[],\n chunkSize: number,\n batchSize: number,\n mapper: (chunk: TItem[], chunkIndex: number) => Promise<TResult>,\n): Promise<TResult[]> {\n const itemChunks = chunks(items, chunkSize);\n return batchesAll(itemChunks, batchSize, async (chunk, chunkIndex) =>\n mapper(chunk, chunkIndex),\n );\n}\n"]}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.buildUrl = buildUrl;
4
4
  const superstruct_1 = require("@metamask/superstruct");
5
- const sanitize_1 = require("../sanitize.cjs");
5
+ const sanitize_1 = require("../sanitize/sanitize.cjs");
6
6
  const urlStruct_1 = require("../urlStruct/urlStruct.cjs");
7
7
  /**
8
8
  * Builds a safe URL from a base URL, path, and optional parameters.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildUrl.cjs","sourceRoot":"","sources":["../../../src/utils/buildUrl/buildUrl.ts"],"names":[],"mappings":";;AAmBA,4BAqDC;AAxED,uDAA+C;AAE/C,uDAA8E;AAC9E,0DAAmD;AAUnD;;;;;GAKG;AACH,SAAgB,QAAQ,CAAC,MAAsB;IAC7C,MAAM,EACJ,OAAO,EACP,IAAI,EACJ,UAAU,EACV,WAAW,EACX,gBAAgB,GAAG,IAAI,GACxB,GAAG,MAAM,CAAC;IAEX,iCAAiC;IACjC,MAAM,gBAAgB,GAAG,IAAA,sBAAW,EAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,gBAAgB,KAAK,EAAE,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IACD,IAAA,oBAAM,EAAC,gBAAgB,EAAE,qBAAS,CAAC,CAAC;IAEpC,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,GAAW,EAAE,EAAE;QACpE,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,eAAe,CAAC,CAAC;QACxD,CAAC;QACD,8DAA8D;QAC9D,MAAM,cAAc,GAAG,IAAA,oCAAyB,EAAC,KAAK,CAAC,CAAC;QACxD,OAAO,gBAAgB;YACrB,CAAC,CAAC,kBAAkB,CAAC,cAAc,CAAC;YACpC,CAAC,CAAC,cAAc,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,cAAc;SAC7B,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACpB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAExB,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC;QACtD,CAAC,CAAC,gBAAgB;QAClB,CAAC,CAAC,GAAG,gBAAgB,GAAG,CAAC;IAE3B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAElD,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;SAC9B,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC;SAC3C,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC;SACtC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACxB,IAAI,KAAK,EAAE,CAAC;YACV,+DAA+D;YAC/D,MAAM,cAAc,GAAG,IAAA,oCAAyB,EAAC,KAAK,CAAC,CAAC;YACxD,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;IAChC,IAAA,oBAAM,EAAC,QAAQ,EAAE,qBAAS,CAAC,CAAC;IAC5B,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["import { assert } from '@metamask/superstruct';\n\nimport { sanitizeControlCharacters, sanitizeUri } from '../sanitize/sanitize';\nimport { UrlStruct } from '../urlStruct/urlStruct';\n\nexport type BuildUrlParams = {\n baseUrl: string;\n path: string;\n pathParams?: Record<string, string> | undefined;\n queryParams?: Record<string, string> | undefined;\n encodePathParams?: boolean;\n};\n\n/**\n * Builds a safe URL from a base URL, path, and optional parameters.\n *\n * @param params - The parameters to build the URL from.\n * @returns The validated, sanitized URL.\n */\nexport function buildUrl(params: BuildUrlParams): string {\n const {\n baseUrl,\n path,\n pathParams,\n queryParams,\n encodePathParams = true,\n } = params;\n\n // Validate and sanitize base URL\n const sanitizedBaseUrl = sanitizeUri(baseUrl);\n if (sanitizedBaseUrl === '') {\n throw new Error('Invalid URL format');\n }\n assert(sanitizedBaseUrl, UrlStruct);\n\n const pathWithParams = path.replace(/\\{(\\w+)\\}/gu, (_, key: string) => {\n const value = pathParams?.[key];\n if (value === undefined) {\n throw new Error(`Path parameter ${key} is undefined`);\n }\n // Sanitize path parameter values to remove control characters\n const sanitizedValue = sanitizeControlCharacters(value);\n return encodePathParams\n ? encodeURIComponent(sanitizedValue)\n : sanitizedValue;\n });\n\n const cleanPath = pathWithParams\n .replace(/^\\/+/u, '')\n .replace(/\\/+/gu, '/')\n .replace(/\\/+$/u, '');\n\n const normalizedBaseUrl = sanitizedBaseUrl.endsWith('/')\n ? sanitizedBaseUrl\n : `${sanitizedBaseUrl}/`;\n\n const url = new URL(cleanPath, normalizedBaseUrl);\n\n Object.entries(queryParams ?? {})\n .filter(([_, value]) => value !== undefined)\n .filter(([_, value]) => value !== null)\n .forEach(([key, value]) => {\n if (value) {\n // Sanitize query parameter values to remove control characters\n const sanitizedValue = sanitizeControlCharacters(value);\n url.searchParams.append(key, sanitizedValue);\n }\n });\n\n const builtUrl = url.toString();\n assert(builtUrl, UrlStruct);\n return builtUrl;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildUrl.d.cts","sourceRoot":"","sources":["../../../src/utils/buildUrl/buildUrl.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IACjD,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAqDvD"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildUrl.d.mts","sourceRoot":"","sources":["../../../src/utils/buildUrl/buildUrl.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IACjD,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAqDvD"}
@@ -1,5 +1,5 @@
1
1
  import { assert } from "@metamask/superstruct";
2
- import { sanitizeControlCharacters, sanitizeUri } from "../sanitize.mjs";
2
+ import { sanitizeControlCharacters, sanitizeUri } from "../sanitize/sanitize.mjs";
3
3
  import { UrlStruct } from "../urlStruct/urlStruct.mjs";
4
4
  /**
5
5
  * Builds a safe URL from a base URL, path, and optional parameters.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildUrl.mjs","sourceRoot":"","sources":["../../../src/utils/buildUrl/buildUrl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,8BAA8B;AAE/C,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,iCAA6B;AAC9E,OAAO,EAAE,SAAS,EAAE,mCAA+B;AAUnD;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAsB;IAC7C,MAAM,EACJ,OAAO,EACP,IAAI,EACJ,UAAU,EACV,WAAW,EACX,gBAAgB,GAAG,IAAI,GACxB,GAAG,MAAM,CAAC;IAEX,iCAAiC;IACjC,MAAM,gBAAgB,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,gBAAgB,KAAK,EAAE,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;IAEpC,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,GAAW,EAAE,EAAE;QACpE,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,eAAe,CAAC,CAAC;QACxD,CAAC;QACD,8DAA8D;QAC9D,MAAM,cAAc,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;QACxD,OAAO,gBAAgB;YACrB,CAAC,CAAC,kBAAkB,CAAC,cAAc,CAAC;YACpC,CAAC,CAAC,cAAc,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,cAAc;SAC7B,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACpB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAExB,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC;QACtD,CAAC,CAAC,gBAAgB;QAClB,CAAC,CAAC,GAAG,gBAAgB,GAAG,CAAC;IAE3B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAElD,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;SAC9B,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC;SAC3C,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC;SACtC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACxB,IAAI,KAAK,EAAE,CAAC;YACV,+DAA+D;YAC/D,MAAM,cAAc,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;YACxD,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;IAChC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC5B,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["import { assert } from '@metamask/superstruct';\n\nimport { sanitizeControlCharacters, sanitizeUri } from '../sanitize/sanitize';\nimport { UrlStruct } from '../urlStruct/urlStruct';\n\nexport type BuildUrlParams = {\n baseUrl: string;\n path: string;\n pathParams?: Record<string, string> | undefined;\n queryParams?: Record<string, string> | undefined;\n encodePathParams?: boolean;\n};\n\n/**\n * Builds a safe URL from a base URL, path, and optional parameters.\n *\n * @param params - The parameters to build the URL from.\n * @returns The validated, sanitized URL.\n */\nexport function buildUrl(params: BuildUrlParams): string {\n const {\n baseUrl,\n path,\n pathParams,\n queryParams,\n encodePathParams = true,\n } = params;\n\n // Validate and sanitize base URL\n const sanitizedBaseUrl = sanitizeUri(baseUrl);\n if (sanitizedBaseUrl === '') {\n throw new Error('Invalid URL format');\n }\n assert(sanitizedBaseUrl, UrlStruct);\n\n const pathWithParams = path.replace(/\\{(\\w+)\\}/gu, (_, key: string) => {\n const value = pathParams?.[key];\n if (value === undefined) {\n throw new Error(`Path parameter ${key} is undefined`);\n }\n // Sanitize path parameter values to remove control characters\n const sanitizedValue = sanitizeControlCharacters(value);\n return encodePathParams\n ? encodeURIComponent(sanitizedValue)\n : sanitizedValue;\n });\n\n const cleanPath = pathWithParams\n .replace(/^\\/+/u, '')\n .replace(/\\/+/gu, '/')\n .replace(/\\/+$/u, '');\n\n const normalizedBaseUrl = sanitizedBaseUrl.endsWith('/')\n ? sanitizedBaseUrl\n : `${sanitizedBaseUrl}/`;\n\n const url = new URL(cleanPath, normalizedBaseUrl);\n\n Object.entries(queryParams ?? {})\n .filter(([_, value]) => value !== undefined)\n .filter(([_, value]) => value !== null)\n .forEach(([key, value]) => {\n if (value) {\n // Sanitize query parameter values to remove control characters\n const sanitizedValue = sanitizeControlCharacters(value);\n url.searchParams.append(key, sanitizedValue);\n }\n });\n\n const builtUrl = url.toString();\n assert(builtUrl, UrlStruct);\n return builtUrl;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InFlightCoalescer.cjs","sourceRoot":"","sources":["../../../src/utils/dedupe/InFlightCoalescer.ts"],"names":[],"mappings":";;;;;;;;;AAAA;;;;;;GAMG;AACH,MAAa,iBAAiB;IAA9B;QACW,sCAAY,IAAI,GAAG,EAA4B,EAAC;IAiB3D,CAAC;IAfC,KAAK,CAAC,GAAG,CAAS,GAAW,EAAE,EAAyB;QACtD,MAAM,OAAO,GAAG,uBAAA,IAAI,mCAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,OAA0B,CAAC;QACpC,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE;aAC3B,IAAI,CAAC,EAAE,CAAC;aACR,OAAO,CAAC,GAAG,EAAE;YACZ,uBAAA,IAAI,mCAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QACL,uBAAA,IAAI,mCAAU,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAE9B,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAlBD,8CAkBC","sourcesContent":["/**\n * Coalesces concurrent async operations by key: while a call for a key is in\n * flight, subsequent calls with the same key await the same promise instead of\n * starting duplicate work. Once a run settles, the next call starts a fresh one.\n *\n * Note that coalesced callers share the run's outcome, including rejections.\n */\nexport class InFlightCoalescer {\n readonly #inFlight = new Map<string, Promise<unknown>>();\n\n async run<Result>(key: string, fn: () => Promise<Result>): Promise<Result> {\n const pending = this.#inFlight.get(key);\n if (pending) {\n return pending as Promise<Result>;\n }\n\n const task = Promise.resolve()\n .then(fn)\n .finally(() => {\n this.#inFlight.delete(key);\n });\n this.#inFlight.set(key, task);\n\n return task;\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InFlightCoalescer.d.cts","sourceRoot":"","sources":["../../../src/utils/dedupe/InFlightCoalescer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,qBAAa,iBAAiB;;IAGtB,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;CAe3E"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InFlightCoalescer.d.mts","sourceRoot":"","sources":["../../../src/utils/dedupe/InFlightCoalescer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,qBAAa,iBAAiB;;IAGtB,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;CAe3E"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InFlightCoalescer.mjs","sourceRoot":"","sources":["../../../src/utils/dedupe/InFlightCoalescer.ts"],"names":[],"mappings":";;;;;;AAAA;;;;;;GAMG;AACH,MAAM,OAAO,iBAAiB;IAA9B;QACW,sCAAY,IAAI,GAAG,EAA4B,EAAC;IAiB3D,CAAC;IAfC,KAAK,CAAC,GAAG,CAAS,GAAW,EAAE,EAAyB;QACtD,MAAM,OAAO,GAAG,uBAAA,IAAI,mCAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,OAA0B,CAAC;QACpC,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE;aAC3B,IAAI,CAAC,EAAE,CAAC;aACR,OAAO,CAAC,GAAG,EAAE;YACZ,uBAAA,IAAI,mCAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QACL,uBAAA,IAAI,mCAAU,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAE9B,OAAO,IAAI,CAAC;IACd,CAAC;CACF","sourcesContent":["/**\n * Coalesces concurrent async operations by key: while a call for a key is in\n * flight, subsequent calls with the same key await the same promise instead of\n * starting duplicate work. Once a run settles, the next call starts a fresh one.\n *\n * Note that coalesced callers share the run's outcome, including rejections.\n */\nexport class InFlightCoalescer {\n readonly #inFlight = new Map<string, Promise<unknown>>();\n\n async run<Result>(key: string, fn: () => Promise<Result>): Promise<Result> {\n const pending = this.#inFlight.get(key);\n if (pending) {\n return pending as Promise<Result>;\n }\n\n const task = Promise.resolve()\n .then(fn)\n .finally(() => {\n this.#inFlight.delete(key);\n });\n this.#inFlight.set(key, task);\n\n return task;\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logger.cjs","sourceRoot":"","sources":["../../../src/utils/logger/Logger.ts"],"names":[],"mappings":"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","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 @@
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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logger.d.mts","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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logger.mjs","sourceRoot":"","sources":["../../../src/utils/logger/Logger.ts"],"names":[],"mappings":"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","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 @@
1
+ {"version":3,"file":"createOriginPermissions.cjs","sourceRoot":"","sources":["../../../src/utils/originPermissions/createOriginPermissions.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG,CAAC,+BAA+B,CAAU,CAAC;AAElE,QAAA,mBAAmB,GAAG,CAAC,uBAAuB,CAAU,CAAC;AAEzD,QAAA,uBAAuB,GAAG,UAAU,CAAC;AASlD;;;;;;;;;;;;GAYG;AACI,MAAM,uBAAuB,GAAG,CAAC,EACtC,WAAW,EACX,eAAe,EACf,OAAO,GAAG,2BAAmB,EAC7B,cAAc,GAAG,+BAAuB,GACV,EAA4B,EAAE;IAC5D,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAuB,CAAC;IACzD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;IAE7C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACjD,CAAC;IACD,iBAAiB,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;IAEhE,OAAO,iBAAiB,CAAC;AAC3B,CAAC,CAAC;AAfW,QAAA,uBAAuB,2BAelC","sourcesContent":["export const DEFAULT_PROD_ORIGINS = ['https://portfolio.metamask.io'] as const;\n\nexport const DEFAULT_DEV_ORIGINS = ['http://localhost:3000'] as const;\n\nexport const DEFAULT_METAMASK_ORIGIN = 'metamask';\n\nexport type CreateOriginPermissionsParams = {\n dappMethods: Iterable<string>;\n metamaskMethods: Iterable<string>;\n origins?: readonly string[];\n metamaskOrigin?: string;\n};\n\n/**\n * Builds the origin-to-method permission map used by network snaps.\n *\n * Those origins receive `dappMethods` as provided (pass an empty list to deny\n * dapp calls). The MetaMask origin always receives `metamaskMethods`.\n *\n * @param params - Origin and method lists for the snap.\n * @param params.dappMethods - Methods allowed for connected dapps.\n * @param params.metamaskMethods - Methods allowed for the MetaMask origin.\n * @param params.origins - Dapp origins to register. Defaults to localhost.\n * @param params.metamaskOrigin - Origin key for MetaMask. Defaults to `metamask`.\n * @returns A map of origin to allowed RPC methods.\n */\nexport const createOriginPermissions = ({\n dappMethods,\n metamaskMethods,\n origins = DEFAULT_DEV_ORIGINS,\n metamaskOrigin = DEFAULT_METAMASK_ORIGIN,\n}: CreateOriginPermissionsParams): Map<string, Set<string>> => {\n const originPermissions = new Map<string, Set<string>>();\n const dappPermissions = new Set(dappMethods);\n\n for (const origin of origins) {\n originPermissions.set(origin, dappPermissions);\n }\n originPermissions.set(metamaskOrigin, new Set(metamaskMethods));\n\n return originPermissions;\n};\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createOriginPermissions.d.cts","sourceRoot":"","sources":["../../../src/utils/originPermissions/createOriginPermissions.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,4CAA6C,CAAC;AAE/E,eAAO,MAAM,mBAAmB,oCAAqC,CAAC;AAEtE,eAAO,MAAM,uBAAuB,aAAa,CAAC;AAElD,MAAM,MAAM,6BAA6B,GAAG;IAC1C,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,uBAAuB,GAAI,4DAKrC,6BAA6B,KAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAUzD,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createOriginPermissions.d.mts","sourceRoot":"","sources":["../../../src/utils/originPermissions/createOriginPermissions.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,4CAA6C,CAAC;AAE/E,eAAO,MAAM,mBAAmB,oCAAqC,CAAC;AAEtE,eAAO,MAAM,uBAAuB,aAAa,CAAC;AAElD,MAAM,MAAM,6BAA6B,GAAG;IAC1C,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,uBAAuB,GAAI,4DAKrC,6BAA6B,KAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAUzD,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createOriginPermissions.mjs","sourceRoot":"","sources":["../../../src/utils/originPermissions/createOriginPermissions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,+BAA+B,CAAU,CAAC;AAE/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,uBAAuB,CAAU,CAAC;AAEtE,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAAC;AASlD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,EACtC,WAAW,EACX,eAAe,EACf,OAAO,GAAG,mBAAmB,EAC7B,cAAc,GAAG,uBAAuB,GACV,EAA4B,EAAE;IAC5D,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAuB,CAAC;IACzD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;IAE7C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACjD,CAAC;IACD,iBAAiB,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;IAEhE,OAAO,iBAAiB,CAAC;AAC3B,CAAC,CAAC","sourcesContent":["export const DEFAULT_PROD_ORIGINS = ['https://portfolio.metamask.io'] as const;\n\nexport const DEFAULT_DEV_ORIGINS = ['http://localhost:3000'] as const;\n\nexport const DEFAULT_METAMASK_ORIGIN = 'metamask';\n\nexport type CreateOriginPermissionsParams = {\n dappMethods: Iterable<string>;\n metamaskMethods: Iterable<string>;\n origins?: readonly string[];\n metamaskOrigin?: string;\n};\n\n/**\n * Builds the origin-to-method permission map used by network snaps.\n *\n * Those origins receive `dappMethods` as provided (pass an empty list to deny\n * dapp calls). The MetaMask origin always receives `metamaskMethods`.\n *\n * @param params - Origin and method lists for the snap.\n * @param params.dappMethods - Methods allowed for connected dapps.\n * @param params.metamaskMethods - Methods allowed for the MetaMask origin.\n * @param params.origins - Dapp origins to register. Defaults to localhost.\n * @param params.metamaskOrigin - Origin key for MetaMask. Defaults to `metamask`.\n * @returns A map of origin to allowed RPC methods.\n */\nexport const createOriginPermissions = ({\n dappMethods,\n metamaskMethods,\n origins = DEFAULT_DEV_ORIGINS,\n metamaskOrigin = DEFAULT_METAMASK_ORIGIN,\n}: CreateOriginPermissionsParams): Map<string, Set<string>> => {\n const originPermissions = new Map<string, Set<string>>();\n const dappPermissions = new Set(dappMethods);\n\n for (const origin of origins) {\n originPermissions.set(origin, dappPermissions);\n }\n originPermissions.set(metamaskOrigin, new Set(metamaskMethods));\n\n return originPermissions;\n};\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateOrigin.cjs","sourceRoot":"","sources":["../../../src/utils/originPermissions/validateOrigin.ts"],"names":[],"mappings":";;;AAAA,gHAAgH;AAChH,mDAAwD;AAExD;;;;;;;GAOG;AACI,MAAM,cAAc,GAAG,CAC5B,MAAc,EACd,MAAc,EACd,iBAA2C,EACrC,EAAE;IACR,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,6BAAiB,CAAC,kBAAkB,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,6BAAiB,CAAC,mBAAmB,CAAC,CAAC;IACnD,CAAC;AACH,CAAC,CAAC;AAXW,QAAA,cAAc,kBAWzB","sourcesContent":["/* eslint-disable @typescript-eslint/only-throw-error -- UnauthorizedError is the JSON-RPC snap error surface */\nimport { UnauthorizedError } from '@metamask/snaps-sdk';\n\n/**\n * Validates that the origin is allowed to call the given method.\n *\n * @param origin - The origin of the request.\n * @param method - The RPC method of the request.\n * @param originPermissions - Map of origin to allowed methods.\n * @throws {UnauthorizedError} If the origin is missing or the method is not allowed.\n */\nexport const validateOrigin = (\n origin: string,\n method: string,\n originPermissions: Map<string, Set<string>>,\n): void => {\n if (!origin) {\n throw new UnauthorizedError('Origin not found');\n }\n if (!originPermissions.get(origin)?.has(method)) {\n throw new UnauthorizedError('Permission denied');\n }\n};\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateOrigin.d.cts","sourceRoot":"","sources":["../../../src/utils/originPermissions/validateOrigin.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GACzB,QAAQ,MAAM,EACd,QAAQ,MAAM,EACd,mBAAmB,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,KAC1C,IAOF,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateOrigin.d.mts","sourceRoot":"","sources":["../../../src/utils/originPermissions/validateOrigin.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GACzB,QAAQ,MAAM,EACd,QAAQ,MAAM,EACd,mBAAmB,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,KAC1C,IAOF,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateOrigin.mjs","sourceRoot":"","sources":["../../../src/utils/originPermissions/validateOrigin.ts"],"names":[],"mappings":"AAAA,gHAAgH;AAChH,OAAO,EAAE,iBAAiB,EAAE,4BAA4B;AAExD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,MAAc,EACd,MAAc,EACd,iBAA2C,EACrC,EAAE;IACR,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;IACnD,CAAC;AACH,CAAC,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/only-throw-error -- UnauthorizedError is the JSON-RPC snap error surface */\nimport { UnauthorizedError } from '@metamask/snaps-sdk';\n\n/**\n * Validates that the origin is allowed to call the given method.\n *\n * @param origin - The origin of the request.\n * @param method - The RPC method of the request.\n * @param originPermissions - Map of origin to allowed methods.\n * @throws {UnauthorizedError} If the origin is missing or the method is not allowed.\n */\nexport const validateOrigin = (\n origin: string,\n method: string,\n originPermissions: Map<string, Set<string>>,\n): void => {\n if (!origin) {\n throw new UnauthorizedError('Origin not found');\n }\n if (!originPermissions.get(origin)?.has(method)) {\n throw new UnauthorizedError('Permission denied');\n }\n};\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safeMerge.cjs","sourceRoot":"","sources":["../../../src/utils/safeMerge/safeMerge.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACI,MAAM,SAAS,GAAG,CACvB,SAAqB,EACrB,SAAqB,EACI,EAAE,CAAC,CAAC;IAC7B,GAAG,SAAS;IACZ,GAAI,MAAM,CAAC,WAAW,CACpB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAC9B,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAChB,KAAK,KAAK,SAAS;QACnB,KAAK,KAAK,IAAI;QACd,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CACzE,CACa;CACjB,CAAC,CAAC;AAbU,QAAA,SAAS,aAanB","sourcesContent":["/**\n * Shallowly merges two objects at the top level, keeping values from the overridee object when the overrider's\n * corresponding top-level properties are undefined, null, or empty objects. Non-undefined values from the overrider\n * take precedence. Empty objects in the overrider are filtered out to preserve the overridee's values. Nested objects\n * are not merged recursively: if a nested property exists in the overrider, it replaces the overridee's value entirely.\n *\n * @param overridee - The object to override.\n * @param overrider - The object to override with.\n * @returns The merged object (using shallow, top-level merge semantics).\n * @example\n * const overridee = { name: 'John' };\n * const overrider = { name: undefined, age: 30 };\n * const merged = safeMerge(overridee, overrider);\n * // merged is { name: 'John', age: 30 }\n */\nexport const safeMerge = <TOverridee extends object, TOverrider extends object>(\n overridee: TOverridee,\n overrider: TOverrider,\n): TOverridee & TOverrider => ({\n ...overridee,\n ...(Object.fromEntries(\n Object.entries(overrider).filter(\n ([_key, value]) =>\n value !== undefined &&\n value !== null &&\n (!value || typeof value !== 'object' || Object.keys(value).length > 0),\n ),\n ) as TOverrider),\n});\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safeMerge.d.cts","sourceRoot":"","sources":["../../../src/utils/safeMerge/safeMerge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,SAAS,GAAI,UAAU,SAAS,MAAM,EAAE,UAAU,SAAS,MAAM,EAC5E,WAAW,UAAU,EACrB,WAAW,UAAU,KACpB,UAAU,GAAG,UAUd,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safeMerge.d.mts","sourceRoot":"","sources":["../../../src/utils/safeMerge/safeMerge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,SAAS,GAAI,UAAU,SAAS,MAAM,EAAE,UAAU,SAAS,MAAM,EAC5E,WAAW,UAAU,EACrB,WAAW,UAAU,KACpB,UAAU,GAAG,UAUd,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safeMerge.mjs","sourceRoot":"","sources":["../../../src/utils/safeMerge/safeMerge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,SAAqB,EACrB,SAAqB,EACI,EAAE,CAAC,CAAC;IAC7B,GAAG,SAAS;IACZ,GAAI,MAAM,CAAC,WAAW,CACpB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAC9B,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAChB,KAAK,KAAK,SAAS;QACnB,KAAK,KAAK,IAAI;QACd,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CACzE,CACa;CACjB,CAAC,CAAC","sourcesContent":["/**\n * Shallowly merges two objects at the top level, keeping values from the overridee object when the overrider's\n * corresponding top-level properties are undefined, null, or empty objects. Non-undefined values from the overrider\n * take precedence. Empty objects in the overrider are filtered out to preserve the overridee's values. Nested objects\n * are not merged recursively: if a nested property exists in the overrider, it replaces the overridee's value entirely.\n *\n * @param overridee - The object to override.\n * @param overrider - The object to override with.\n * @returns The merged object (using shallow, top-level merge semantics).\n * @example\n * const overridee = { name: 'John' };\n * const overrider = { name: undefined, age: 30 };\n * const merged = safeMerge(overridee, overrider);\n * // merged is { name: 'John', age: 30 }\n */\nexport const safeMerge = <TOverridee extends object, TOverrider extends object>(\n overridee: TOverridee,\n overrider: TOverrider,\n): TOverridee & TOverrider => ({\n ...overridee,\n ...(Object.fromEntries(\n Object.entries(overrider).filter(\n ([_key, value]) =>\n value !== undefined &&\n value !== null &&\n (!value || typeof value !== 'object' || Object.keys(value).length > 0),\n ),\n ) as TOverrider),\n});\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitize.cjs","sourceRoot":"","sources":["../../../src/utils/sanitize/sanitize.ts"],"names":[],"mappings":";;AAMA,8DAQC;AAQD,kCAiBC;AAvCD;;;;;GAKG;AACH,SAAgB,yBAAyB,CAAC,KAAa;IACrD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,4CAA4C;IAC5C,4CAA4C;IAC5C,OAAO,KAAK,CAAC,OAAO,CAAC,sCAAsC,EAAE,EAAE,CAAC,CAAC;AACnE,CAAC;AAED;;;;;GAKG;AACH,SAAgB,WAAW,CAAC,GAAW;IACrC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC;IAEjD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/B,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9D,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;YACxE,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC","sourcesContent":["/**\n * Removes control characters from a string.\n *\n * @param input - The string to sanitize.\n * @returns The sanitized string.\n */\nexport function sanitizeControlCharacters(input: string): string {\n if (!input || typeof input !== 'string') {\n return '';\n }\n\n // Remove all control characters except tab.\n // eslint-disable-next-line no-control-regex\n return input.replace(/[\\u0000-\\u0008\\u000A-\\u001F\\u007F]/gu, '');\n}\n\n/**\n * Validates and sanitizes a URI.\n *\n * @param uri - The URI to validate and sanitize.\n * @returns The sanitized URI or an empty string if invalid.\n */\nexport function sanitizeUri(uri: string): string {\n if (!uri || typeof uri !== 'string') {\n return '';\n }\n\n const sanitized = sanitizeControlCharacters(uri);\n\n try {\n const url = new URL(sanitized);\n const allowedProtocols = ['http:', 'https:', 'wss:', 'ipfs:'];\n if (!allowedProtocols.includes(url.protocol) || sanitized.length > 2048) {\n return '';\n }\n return sanitized;\n } catch {\n return '';\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitize.d.cts","sourceRoot":"","sources":["../../../src/utils/sanitize/sanitize.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ/D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAiB/C"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitize.d.mts","sourceRoot":"","sources":["../../../src/utils/sanitize/sanitize.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ/D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAiB/C"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitize.mjs","sourceRoot":"","sources":["../../../src/utils/sanitize/sanitize.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAa;IACrD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,4CAA4C;IAC5C,4CAA4C;IAC5C,OAAO,KAAK,CAAC,OAAO,CAAC,sCAAsC,EAAE,EAAE,CAAC,CAAC;AACnE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC;IAEjD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/B,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9D,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;YACxE,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC","sourcesContent":["/**\n * Removes control characters from a string.\n *\n * @param input - The string to sanitize.\n * @returns The sanitized string.\n */\nexport function sanitizeControlCharacters(input: string): string {\n if (!input || typeof input !== 'string') {\n return '';\n }\n\n // Remove all control characters except tab.\n // eslint-disable-next-line no-control-regex\n return input.replace(/[\\u0000-\\u0008\\u000A-\\u001F\\u007F]/gu, '');\n}\n\n/**\n * Validates and sanitizes a URI.\n *\n * @param uri - The URI to validate and sanitize.\n * @returns The sanitized URI or an empty string if invalid.\n */\nexport function sanitizeUri(uri: string): string {\n if (!uri || typeof uri !== 'string') {\n return '';\n }\n\n const sanitized = sanitizeControlCharacters(uri);\n\n try {\n const url = new URL(sanitized);\n const allowedProtocols = ['http:', 'https:', 'wss:', 'ipfs:'];\n if (!allowedProtocols.includes(url.protocol) || sanitized.length > 2048) {\n return '';\n }\n return sanitized;\n } catch {\n return '';\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialization.cjs","sourceRoot":"","sources":["../../../src/utils/serialization/serialization.ts"],"names":[],"mappings":";;;AACA,+CAAyC;AACzC,mCAAuC;AAIvC;;;;;;GAMG;AACI,MAAM,SAAS,GAAG,CAAC,KAAmB,EAAQ,EAAE,CACrD,IAAA,sBAAa,EAAC,KAAK,EAAE,CAAC,GAAY,EAAE,EAAE;IACpC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO;YACL,MAAM,EAAE,WAAW;SACpB,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,YAAY,wBAAS,EAAE,CAAC;QAC7B,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE;SACtB,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO;YACL,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE;SACtB,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,YAAY,UAAU,EAAE,CAAC;QAC9B,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAC5C,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAC1B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACX,OAAO;YACL,MAAM,EAAE,YAAY;YACpB,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC;SAC1B,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC,CAAC;AAlCQ,QAAA,SAAS,aAkCjB;AAEL;;;;;;GAMG;AACI,MAAM,WAAW,GAAG,CAAC,eAAqB,EAAgB,EAAE,CACjE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;IAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACjC,OAAO,IAAI,wBAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QAClC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAClD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YACzD,KAAK,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC,CAAC;AA5BQ,QAAA,WAAW,eA4BnB","sourcesContent":["import type { Json } from '@metamask/snaps-sdk';\nimport { BigNumber } from 'bignumber.js';\nimport { cloneDeepWith } from 'lodash';\n\nimport type { Serializable } from './types';\n\n/**\n * Serializes the passed value to a JSON object so it can be stored in JSON-serializable storage like the snap state and interface context.\n * It transforms non-JSON-serializable values into a specific JSON-serializable representation that can be deserialized later.\n *\n * @param value - The value to serialize.\n * @returns The serialized value.\n */\nexport const serialize = (value: Serializable): Json =>\n cloneDeepWith(value, (val: unknown) => {\n if (val === undefined) {\n return {\n __type: 'undefined',\n };\n }\n\n if (val instanceof BigNumber) {\n return {\n __type: 'BigNumber',\n value: val.toString(),\n };\n }\n\n if (typeof val === 'bigint') {\n return {\n __type: 'bigint',\n value: val.toString(),\n };\n }\n\n if (val instanceof Uint8Array) {\n const binaryString = Array.from(val, (byte) =>\n String.fromCharCode(byte),\n ).join('');\n return {\n __type: 'Uint8Array',\n value: btoa(binaryString),\n };\n }\n\n // Return undefined to let lodash handle the cloning of other values\n return undefined;\n });\n\n/**\n * Deserializes the passed value from a JSON object back to its original values.\n * It transforms the JSON-serializable representation of non-JSON-serializable values back into their original values.\n *\n * @param serializedValue - The value to deserialize.\n * @returns The deserialized value.\n */\nexport const deserialize = (serializedValue: Json): Serializable =>\n JSON.parse(JSON.stringify(serializedValue), (_key, value) => {\n if (!value) {\n return value;\n }\n\n if (value.__type === 'undefined') {\n return undefined;\n }\n\n if (value.__type === 'BigNumber') {\n return new BigNumber(value.value);\n }\n\n if (value.__type === 'bigint') {\n return BigInt(value.value);\n }\n\n if (value.__type === 'Uint8Array') {\n const binaryString = atob(value.value);\n const bytes = new Uint8Array(binaryString.length);\n for (let index = 0; index < binaryString.length; index++) {\n bytes[index] = binaryString.charCodeAt(index);\n }\n return bytes;\n }\n\n return value;\n });\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialization.d.cts","sourceRoot":"","sources":["../../../src/utils/serialization/serialization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,4BAA4B;AAIhD,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAgB;AAE5C;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,GAAI,OAAO,YAAY,KAAG,IAkC5C,CAAC;AAEL;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GAAI,iBAAiB,IAAI,KAAG,YA4BhD,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialization.d.mts","sourceRoot":"","sources":["../../../src/utils/serialization/serialization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,4BAA4B;AAIhD,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAgB;AAE5C;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,GAAI,OAAO,YAAY,KAAG,IAkC5C,CAAC;AAEL;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GAAI,iBAAiB,IAAI,KAAG,YA4BhD,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialization.mjs","sourceRoot":"","sources":["../../../src/utils/serialization/serialization.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,qBAAqB;;;AAKzC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAmB,EAAQ,EAAE,CACrD,aAAa,CAAC,KAAK,EAAE,CAAC,GAAY,EAAE,EAAE;IACpC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO;YACL,MAAM,EAAE,WAAW;SACpB,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,YAAY,SAAS,EAAE,CAAC;QAC7B,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE;SACtB,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO;YACL,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE;SACtB,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,YAAY,UAAU,EAAE,CAAC;QAC9B,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAC5C,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAC1B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACX,OAAO;YACL,MAAM,EAAE,YAAY;YACpB,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC;SAC1B,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC,CAAC;AAEL;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,eAAqB,EAAgB,EAAE,CACjE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;IAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACjC,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QAClC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAClD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YACzD,KAAK,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC,CAAC","sourcesContent":["import type { Json } from '@metamask/snaps-sdk';\nimport { BigNumber } from 'bignumber.js';\nimport { cloneDeepWith } from 'lodash';\n\nimport type { Serializable } from './types';\n\n/**\n * Serializes the passed value to a JSON object so it can be stored in JSON-serializable storage like the snap state and interface context.\n * It transforms non-JSON-serializable values into a specific JSON-serializable representation that can be deserialized later.\n *\n * @param value - The value to serialize.\n * @returns The serialized value.\n */\nexport const serialize = (value: Serializable): Json =>\n cloneDeepWith(value, (val: unknown) => {\n if (val === undefined) {\n return {\n __type: 'undefined',\n };\n }\n\n if (val instanceof BigNumber) {\n return {\n __type: 'BigNumber',\n value: val.toString(),\n };\n }\n\n if (typeof val === 'bigint') {\n return {\n __type: 'bigint',\n value: val.toString(),\n };\n }\n\n if (val instanceof Uint8Array) {\n const binaryString = Array.from(val, (byte) =>\n String.fromCharCode(byte),\n ).join('');\n return {\n __type: 'Uint8Array',\n value: btoa(binaryString),\n };\n }\n\n // Return undefined to let lodash handle the cloning of other values\n return undefined;\n });\n\n/**\n * Deserializes the passed value from a JSON object back to its original values.\n * It transforms the JSON-serializable representation of non-JSON-serializable values back into their original values.\n *\n * @param serializedValue - The value to deserialize.\n * @returns The deserialized value.\n */\nexport const deserialize = (serializedValue: Json): Serializable =>\n JSON.parse(JSON.stringify(serializedValue), (_key, value) => {\n if (!value) {\n return value;\n }\n\n if (value.__type === 'undefined') {\n return undefined;\n }\n\n if (value.__type === 'BigNumber') {\n return new BigNumber(value.value);\n }\n\n if (value.__type === 'bigint') {\n return BigInt(value.value);\n }\n\n if (value.__type === 'Uint8Array') {\n const binaryString = atob(value.value);\n const bytes = new Uint8Array(binaryString.length);\n for (let index = 0; index < binaryString.length; index++) {\n bytes[index] = binaryString.charCodeAt(index);\n }\n return bytes;\n }\n\n return value;\n });\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../../../src/utils/serialization/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Json } from '@metamask/snaps-sdk';\nimport type { BigNumber } from 'bignumber.js';\n\n/**\n * A primitive value that can be serialized to JSON using the `serialize` function.\n */\nexport type Serializable =\n | Json\n | undefined\n | null\n | bigint\n | BigNumber\n | Uint8Array\n | Serializable[]\n | {\n [prop: string]: Serializable;\n };\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../../../src/utils/serialization/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,4BAA4B;AAGhD;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,IAAI,GACJ,SAAS,GACT,IAAI,GACJ,MAAM,GACN,SAAS,GACT,UAAU,GACV,YAAY,EAAE,GACd;IACE,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;CAC9B,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../../../src/utils/serialization/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,4BAA4B;AAGhD;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,IAAI,GACJ,SAAS,GACT,IAAI,GACJ,MAAM,GACN,SAAS,GACT,UAAU,GACV,YAAY,EAAE,GACd;IACE,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;CAC9B,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../../../src/utils/serialization/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Json } from '@metamask/snaps-sdk';\nimport type { BigNumber } from 'bignumber.js';\n\n/**\n * A primitive value that can be serialized to JSON using the `serialize` function.\n */\nexport type Serializable =\n | Json\n | undefined\n | null\n | bigint\n | BigNumber\n | Uint8Array\n | Serializable[]\n | {\n [prop: string]: Serializable;\n };\n"]}
@@ -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 @@
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 @@
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 @@
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"]}