@hyperlane-xyz/utils 0.0.0-beta-20251201221151

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 (210) hide show
  1. package/README.md +20 -0
  2. package/dist/addresses.d.ts +65 -0
  3. package/dist/addresses.d.ts.map +1 -0
  4. package/dist/addresses.js +475 -0
  5. package/dist/addresses.js.map +1 -0
  6. package/dist/addresses.test.d.ts +2 -0
  7. package/dist/addresses.test.d.ts.map +1 -0
  8. package/dist/addresses.test.js +68 -0
  9. package/dist/addresses.test.js.map +1 -0
  10. package/dist/amount.d.ts +70 -0
  11. package/dist/amount.d.ts.map +1 -0
  12. package/dist/amount.js +143 -0
  13. package/dist/amount.js.map +1 -0
  14. package/dist/amount.test.d.ts +2 -0
  15. package/dist/amount.test.d.ts.map +1 -0
  16. package/dist/amount.test.js +113 -0
  17. package/dist/amount.test.js.map +1 -0
  18. package/dist/arrays.d.ts +11 -0
  19. package/dist/arrays.d.ts.map +1 -0
  20. package/dist/arrays.js +26 -0
  21. package/dist/arrays.js.map +1 -0
  22. package/dist/arrays.test.d.ts +2 -0
  23. package/dist/arrays.test.d.ts.map +1 -0
  24. package/dist/arrays.test.js +77 -0
  25. package/dist/arrays.test.js.map +1 -0
  26. package/dist/async.d.ts +66 -0
  27. package/dist/async.d.ts.map +1 -0
  28. package/dist/async.js +146 -0
  29. package/dist/async.js.map +1 -0
  30. package/dist/async.test.d.ts +2 -0
  31. package/dist/async.test.d.ts.map +1 -0
  32. package/dist/async.test.js +204 -0
  33. package/dist/async.test.js.map +1 -0
  34. package/dist/base58.d.ts +5 -0
  35. package/dist/base58.d.ts.map +1 -0
  36. package/dist/base58.js +15 -0
  37. package/dist/base58.js.map +1 -0
  38. package/dist/base58.test.d.ts +2 -0
  39. package/dist/base58.test.d.ts.map +1 -0
  40. package/dist/base58.test.js +31 -0
  41. package/dist/base58.test.js.map +1 -0
  42. package/dist/base64.d.ts +3 -0
  43. package/dist/base64.d.ts.map +1 -0
  44. package/dist/base64.js +25 -0
  45. package/dist/base64.js.map +1 -0
  46. package/dist/base64.test.d.ts +2 -0
  47. package/dist/base64.test.d.ts.map +1 -0
  48. package/dist/base64.test.js +54 -0
  49. package/dist/base64.test.js.map +1 -0
  50. package/dist/big-numbers.d.ts +50 -0
  51. package/dist/big-numbers.d.ts.map +1 -0
  52. package/dist/big-numbers.js +80 -0
  53. package/dist/big-numbers.js.map +1 -0
  54. package/dist/big-numbers.test.d.ts +2 -0
  55. package/dist/big-numbers.test.d.ts.map +1 -0
  56. package/dist/big-numbers.test.js +96 -0
  57. package/dist/big-numbers.test.js.map +1 -0
  58. package/dist/calldata.d.ts +3 -0
  59. package/dist/calldata.d.ts.map +1 -0
  60. package/dist/calldata.js +4 -0
  61. package/dist/calldata.js.map +1 -0
  62. package/dist/checkpoints.d.ts +6 -0
  63. package/dist/checkpoints.d.ts.map +1 -0
  64. package/dist/checkpoints.js +24 -0
  65. package/dist/checkpoints.js.map +1 -0
  66. package/dist/checkpoints.test.d.ts +2 -0
  67. package/dist/checkpoints.test.d.ts.map +1 -0
  68. package/dist/checkpoints.test.js +105 -0
  69. package/dist/checkpoints.test.js.map +1 -0
  70. package/dist/config.d.ts +25 -0
  71. package/dist/config.d.ts.map +1 -0
  72. package/dist/config.js +84 -0
  73. package/dist/config.js.map +1 -0
  74. package/dist/domains.d.ts +2 -0
  75. package/dist/domains.d.ts.map +1 -0
  76. package/dist/domains.js +6 -0
  77. package/dist/domains.js.map +1 -0
  78. package/dist/env.d.ts +4 -0
  79. package/dist/env.d.ts.map +1 -0
  80. package/dist/env.js +17 -0
  81. package/dist/env.js.map +1 -0
  82. package/dist/env.test.d.ts +2 -0
  83. package/dist/env.test.d.ts.map +1 -0
  84. package/dist/env.test.js +16 -0
  85. package/dist/env.test.js.map +1 -0
  86. package/dist/eslint-rules/index.d.ts +157 -0
  87. package/dist/eslint-rules/index.d.ts.map +1 -0
  88. package/dist/eslint-rules/index.js +58 -0
  89. package/dist/eslint-rules/index.js.map +1 -0
  90. package/dist/eslint-rules/no-restricted-imports-from-exports.d.ts +4 -0
  91. package/dist/eslint-rules/no-restricted-imports-from-exports.d.ts.map +1 -0
  92. package/dist/eslint-rules/no-restricted-imports-from-exports.js +141 -0
  93. package/dist/eslint-rules/no-restricted-imports-from-exports.js.map +1 -0
  94. package/dist/eslint-rules/no-restricted-imports-from-exports.test.d.ts +2 -0
  95. package/dist/eslint-rules/no-restricted-imports-from-exports.test.d.ts.map +1 -0
  96. package/dist/eslint-rules/no-restricted-imports-from-exports.test.js +258 -0
  97. package/dist/eslint-rules/no-restricted-imports-from-exports.test.js.map +1 -0
  98. package/dist/eslint-rules/sort-yaml-arrays.d.ts +39 -0
  99. package/dist/eslint-rules/sort-yaml-arrays.d.ts.map +1 -0
  100. package/dist/eslint-rules/sort-yaml-arrays.js +74 -0
  101. package/dist/eslint-rules/sort-yaml-arrays.js.map +1 -0
  102. package/dist/eslint-rules/sort-yaml-arrays.test.d.ts +2 -0
  103. package/dist/eslint-rules/sort-yaml-arrays.test.d.ts.map +1 -0
  104. package/dist/eslint-rules/sort-yaml-arrays.test.js +621 -0
  105. package/dist/eslint-rules/sort-yaml-arrays.test.js.map +1 -0
  106. package/dist/ids.d.ts +20 -0
  107. package/dist/ids.d.ts.map +1 -0
  108. package/dist/ids.js +42 -0
  109. package/dist/ids.js.map +1 -0
  110. package/dist/ids.test.d.ts +2 -0
  111. package/dist/ids.test.d.ts.map +1 -0
  112. package/dist/ids.test.js +39 -0
  113. package/dist/ids.test.js.map +1 -0
  114. package/dist/index.d.ts +30 -0
  115. package/dist/index.d.ts.map +1 -0
  116. package/dist/index.js +29 -0
  117. package/dist/index.js.map +1 -0
  118. package/dist/logging.d.ts +32 -0
  119. package/dist/logging.d.ts.map +1 -0
  120. package/dist/logging.js +146 -0
  121. package/dist/logging.js.map +1 -0
  122. package/dist/logging.test.d.ts +2 -0
  123. package/dist/logging.test.d.ts.map +1 -0
  124. package/dist/logging.test.js +35 -0
  125. package/dist/logging.test.js.map +1 -0
  126. package/dist/math.d.ts +6 -0
  127. package/dist/math.d.ts.map +1 -0
  128. package/dist/math.js +21 -0
  129. package/dist/math.js.map +1 -0
  130. package/dist/math.test.d.ts +2 -0
  131. package/dist/math.test.d.ts.map +1 -0
  132. package/dist/math.test.js +45 -0
  133. package/dist/math.test.js.map +1 -0
  134. package/dist/messages.d.ts +22 -0
  135. package/dist/messages.d.ts.map +1 -0
  136. package/dist/messages.js +64 -0
  137. package/dist/messages.js.map +1 -0
  138. package/dist/multisig.d.ts +4 -0
  139. package/dist/multisig.d.ts.map +1 -0
  140. package/dist/multisig.js +53 -0
  141. package/dist/multisig.js.map +1 -0
  142. package/dist/objects.d.ts +74 -0
  143. package/dist/objects.d.ts.map +1 -0
  144. package/dist/objects.js +331 -0
  145. package/dist/objects.js.map +1 -0
  146. package/dist/objects.test.d.ts +2 -0
  147. package/dist/objects.test.d.ts.map +1 -0
  148. package/dist/objects.test.js +655 -0
  149. package/dist/objects.test.js.map +1 -0
  150. package/dist/result.d.ts +11 -0
  151. package/dist/result.d.ts.map +1 -0
  152. package/dist/result.js +7 -0
  153. package/dist/result.js.map +1 -0
  154. package/dist/sets.d.ts +5 -0
  155. package/dist/sets.d.ts.map +1 -0
  156. package/dist/sets.js +33 -0
  157. package/dist/sets.js.map +1 -0
  158. package/dist/sets.test.d.ts +2 -0
  159. package/dist/sets.test.d.ts.map +1 -0
  160. package/dist/sets.test.js +35 -0
  161. package/dist/sets.test.js.map +1 -0
  162. package/dist/strings.d.ts +11 -0
  163. package/dist/strings.d.ts.map +1 -0
  164. package/dist/strings.js +49 -0
  165. package/dist/strings.js.map +1 -0
  166. package/dist/strings.test.d.ts +2 -0
  167. package/dist/strings.test.d.ts.map +1 -0
  168. package/dist/strings.test.js +42 -0
  169. package/dist/strings.test.js.map +1 -0
  170. package/dist/typeof.d.ts +3 -0
  171. package/dist/typeof.d.ts.map +1 -0
  172. package/dist/typeof.js +7 -0
  173. package/dist/typeof.js.map +1 -0
  174. package/dist/typeof.test.d.ts +2 -0
  175. package/dist/typeof.test.d.ts.map +1 -0
  176. package/dist/typeof.test.js +34 -0
  177. package/dist/typeof.test.js.map +1 -0
  178. package/dist/types.d.ts +111 -0
  179. package/dist/types.d.ts.map +1 -0
  180. package/dist/types.js +23 -0
  181. package/dist/types.js.map +1 -0
  182. package/dist/url.d.ts +4 -0
  183. package/dist/url.d.ts.map +1 -0
  184. package/dist/url.js +34 -0
  185. package/dist/url.js.map +1 -0
  186. package/dist/url.test.d.ts +2 -0
  187. package/dist/url.test.d.ts.map +1 -0
  188. package/dist/url.test.js +29 -0
  189. package/dist/url.test.js.map +1 -0
  190. package/dist/validation.d.ts +2 -0
  191. package/dist/validation.d.ts.map +1 -0
  192. package/dist/validation.js +6 -0
  193. package/dist/validation.js.map +1 -0
  194. package/dist/validation.test.d.ts +2 -0
  195. package/dist/validation.test.d.ts.map +1 -0
  196. package/dist/validation.test.js +11 -0
  197. package/dist/validation.test.js.map +1 -0
  198. package/dist/validator.d.ts +30 -0
  199. package/dist/validator.d.ts.map +1 -0
  200. package/dist/validator.js +76 -0
  201. package/dist/validator.js.map +1 -0
  202. package/dist/yaml.d.ts +22 -0
  203. package/dist/yaml.d.ts.map +1 -0
  204. package/dist/yaml.js +293 -0
  205. package/dist/yaml.js.map +1 -0
  206. package/dist/yaml.test.d.ts +2 -0
  207. package/dist/yaml.test.d.ts.map +1 -0
  208. package/dist/yaml.test.js +519 -0
  209. package/dist/yaml.test.js.map +1 -0
  210. package/package.json +80 -0
@@ -0,0 +1,39 @@
1
+ import { expect } from 'chai';
2
+ import { utils } from 'ethers';
3
+ import { canonizeId, evmId } from './ids.js';
4
+ describe('ID Utilities', () => {
5
+ describe('canonizeId', () => {
6
+ it('should convert a 20-byte ID to a 32-byte ID', () => {
7
+ const id = '0x1234567890123456789012345678901234567890';
8
+ const result = canonizeId(id);
9
+ expect(result).to.be.instanceOf(Uint8Array);
10
+ expect(result.length).to.equal(32);
11
+ expect(utils.hexlify(result)).to.equal('0x0000000000000000000000001234567890123456789012345678901234567890');
12
+ });
13
+ it('should throw an error for IDs longer than 32 bytes', () => {
14
+ const id = '0x' + '12'.repeat(33);
15
+ expect(() => canonizeId(id)).to.throw('Too long');
16
+ });
17
+ it('should throw an error for IDs not 20 or 32 bytes', () => {
18
+ const id = '0x1234567890';
19
+ expect(() => canonizeId(id)).to.throw('bad input, expect address or bytes32');
20
+ });
21
+ });
22
+ describe('evmId', () => {
23
+ it('should convert a 32-byte ID to a 20-byte EVM address', () => {
24
+ const id = '0x' + '00'.repeat(12) + '1234567890123456789012345678901234567890';
25
+ const result = evmId(id);
26
+ expect(result).to.equal('0x1234567890123456789012345678901234567890');
27
+ });
28
+ it('should return the same 20-byte ID as a 20-byte EVM address', () => {
29
+ const id = '0x1234567890123456789012345678901234567890';
30
+ const result = evmId(id);
31
+ expect(result).to.equal(id);
32
+ });
33
+ it('should throw an error for IDs not 20 or 32 bytes', () => {
34
+ const id = '0x1234567890';
35
+ expect(() => evmId(id)).to.throw('Invalid id length. expected 20 or 32. Got 5');
36
+ });
37
+ });
38
+ });
39
+ //# sourceMappingURL=ids.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ids.test.js","sourceRoot":"","sources":["../src/ids.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAE7C,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,MAAM,EAAE,GAAG,4CAA4C,CAAC;YACxD,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CACpC,oEAAoE,CACrE,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC5D,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAClC,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC1D,MAAM,EAAE,GAAG,cAAc,CAAC;YAC1B,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CACnC,sCAAsC,CACvC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACrB,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,EAAE,GACN,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,0CAA0C,CAAC;YACtE,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;YACzB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;YACpE,MAAM,EAAE,GAAG,4CAA4C,CAAC;YACxD,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;YACzB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC1D,MAAM,EAAE,GAAG,cAAc,CAAC;YAC1B,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAC9B,6CAA6C,CAC9C,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,30 @@
1
+ export { hexToRadixCustomPrefix, addressToByteHexString, addressToBytes, addressToBytes32, addressToBytesCosmos, addressToBytesEvm, addressToBytesSol, addressToBytesStarknet, addressToBytesRadix, bytes32ToAddress, bytesToAddressCosmos, bytesToAddressEvm, bytesToAddressSol, bytesToAddressStarknet, bytesToAddressRadix, bytesToProtocolAddress, capitalizeAddress, convertToProtocolAddress, ensure0x, eqAddress, eqAddressCosmos, eqAddressEvm, eqAddressSol, eqAddressStarknet, eqAddressRadix, getAddressProtocolType, isAddress, isAddressCosmos, isCosmosIbcDenomAddress, isAddressEvm, isAddressSealevel, isAddressStarknet, isAddressRadix, isValidAddress, isValidAddressCosmos, isValidAddressEvm, isValidAddressSealevel, isValidAddressStarknet, isValidAddressRadix, isPrivateKeyEvm, isValidTransactionHash, isValidTransactionHashCosmos, isValidTransactionHashEvm, isValidTransactionHashSealevel, isValidTransactionHashStarknet, isValidTransactionHashRadix, isZeroishAddress, normalizeAddress, normalizeAddressCosmos, normalizeAddressEvm, normalizeAddressSealevel, normalizeAddressStarknet, normalizeAddressRadix, padBytesToLength, shortenAddress, strip0x, ZERO_ADDRESS_HEX_32, } from './addresses.js';
2
+ export { addBufferToGasLimit, convertDecimals, convertDecimalsToIntegerString, convertToScaledAmount, eqAmountApproximate, fromWei, fromWeiRounded, toWei, tryParseAmount, } from './amount.js';
3
+ export { chunk, exclude, randomElement, arrayEqual } from './arrays.js';
4
+ export { concurrentMap, fetchWithTimeout, pollAsync, raceWithContext, retryAsync, runWithTimeout, sleep, timeout, } from './async.js';
5
+ export { base58ToBuffer, bufferToBase58, hexOrBase58ToHex } from './base58.js';
6
+ export { fromBase64, toBase64 } from './base64.js';
7
+ export { BigNumberMax, BigNumberMin, bigToFixed, fixedToBig, isBigNumberish, isZeroish, mulBigAndFixed, } from './big-numbers.js';
8
+ export { formatCallData } from './calldata.js';
9
+ export { isCheckpoint, isS3Checkpoint, isS3CheckpointWithId, } from './checkpoints.js';
10
+ export { normalizeConfig, sortArraysInConfig } from './config.js';
11
+ export { domainHash } from './domains.js';
12
+ export { safelyAccessEnvVar, inCIMode, inKubernetes } from './env.js';
13
+ export { canonizeId, evmId } from './ids.js';
14
+ export { LogFormat, LogLevel, configureRootLogger, createHyperlanePinoLogger, ethersBigNumberSerializer, getLogFormat, getLogLevel, getRootLogger, rootLogger, setRootLogger, } from './logging.js';
15
+ export type { Logger } from './logging.js';
16
+ export { mean, median, randomInt, stdDev, sum } from './math.js';
17
+ export { formatMessage, messageId, parseMessage, parseWarpRouteMessage, } from './messages.js';
18
+ export { formatLegacyMultisigIsmMetadata, parseLegacyMultisigIsmMetadata, } from './multisig.js';
19
+ export { ObjectDiff, ValueOf, arrayToObject, deepCopy, deepEquals, deepFind, diffObjMerge, keepOnlyDiffObjects, invertKeysAndValues, isObjEmpty, isObject, mustGet, objFilter, objKeys, objLength, objMap, objMapEntries, objMerge, objOmit, objOmitKeys, pick, promiseObjAll, stringifyObject, transformObj, TransformObjectTransformer, sortArraysInObject, objDiff, } from './objects.js';
20
+ export { Result, failure, success } from './result.js';
21
+ export { difference, intersection, setEquality, symmetricDifference, } from './sets.js';
22
+ export { errorToString, fromHexString, sanitizeString, streamToString, toHexString, toTitleCase, toUpperCamelCase, trimToLength, } from './strings.js';
23
+ export { isNullish, isNumeric } from './typeof.js';
24
+ export { Address, AddressBytes32, Annotated, Announcement, CallData, ChainCaip2Id, ChainId, Checkpoint, CheckpointWithId, Domain, EvmChainId, HexString, MerkleProof, MessageStatus, Numberish, ParsedLegacyMultisigIsmMetadata, ParsedMessage, ProtocolSmallestUnit, ProtocolType, ProtocolTypeValue, S3Announcement, S3Checkpoint, S3CheckpointWithId, SignatureLike, TokenCaip19Id, ValidatorMetadata, WithAddress, } from './types.js';
25
+ export { isHttpsUrl, isRelativeUrl, isUrl } from './url.js';
26
+ export { assert } from './validation.js';
27
+ export { BaseValidator, ValidatorConfig } from './validator.js';
28
+ export { tryParseJsonOrYaml } from './yaml.js';
29
+ export { createServiceLogger } from './logging.js';
30
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,29 @@
1
+ export { hexToRadixCustomPrefix, addressToByteHexString, addressToBytes, addressToBytes32, addressToBytesCosmos, addressToBytesEvm, addressToBytesSol, addressToBytesStarknet, addressToBytesRadix, bytes32ToAddress, bytesToAddressCosmos, bytesToAddressEvm, bytesToAddressSol, bytesToAddressStarknet, bytesToAddressRadix, bytesToProtocolAddress, capitalizeAddress, convertToProtocolAddress, ensure0x, eqAddress, eqAddressCosmos, eqAddressEvm, eqAddressSol, eqAddressStarknet, eqAddressRadix, getAddressProtocolType, isAddress, isAddressCosmos, isCosmosIbcDenomAddress, isAddressEvm, isAddressSealevel, isAddressStarknet, isAddressRadix, isValidAddress, isValidAddressCosmos, isValidAddressEvm, isValidAddressSealevel, isValidAddressStarknet, isValidAddressRadix, isPrivateKeyEvm, isValidTransactionHash, isValidTransactionHashCosmos, isValidTransactionHashEvm, isValidTransactionHashSealevel, isValidTransactionHashStarknet, isValidTransactionHashRadix, isZeroishAddress, normalizeAddress, normalizeAddressCosmos, normalizeAddressEvm, normalizeAddressSealevel, normalizeAddressStarknet, normalizeAddressRadix, padBytesToLength, shortenAddress, strip0x, ZERO_ADDRESS_HEX_32, } from './addresses.js';
2
+ export { addBufferToGasLimit, convertDecimals, convertDecimalsToIntegerString, convertToScaledAmount, eqAmountApproximate, fromWei, fromWeiRounded, toWei, tryParseAmount, } from './amount.js';
3
+ export { chunk, exclude, randomElement, arrayEqual } from './arrays.js';
4
+ export { concurrentMap, fetchWithTimeout, pollAsync, raceWithContext, retryAsync, runWithTimeout, sleep, timeout, } from './async.js';
5
+ export { base58ToBuffer, bufferToBase58, hexOrBase58ToHex } from './base58.js';
6
+ export { fromBase64, toBase64 } from './base64.js';
7
+ export { BigNumberMax, BigNumberMin, bigToFixed, fixedToBig, isBigNumberish, isZeroish, mulBigAndFixed, } from './big-numbers.js';
8
+ export { formatCallData } from './calldata.js';
9
+ export { isCheckpoint, isS3Checkpoint, isS3CheckpointWithId, } from './checkpoints.js';
10
+ export { normalizeConfig, sortArraysInConfig } from './config.js';
11
+ export { domainHash } from './domains.js';
12
+ export { safelyAccessEnvVar, inCIMode, inKubernetes } from './env.js';
13
+ export { canonizeId, evmId } from './ids.js';
14
+ export { LogFormat, LogLevel, configureRootLogger, createHyperlanePinoLogger, ethersBigNumberSerializer, getLogFormat, getLogLevel, getRootLogger, rootLogger, setRootLogger, } from './logging.js';
15
+ export { mean, median, randomInt, stdDev, sum } from './math.js';
16
+ export { formatMessage, messageId, parseMessage, parseWarpRouteMessage, } from './messages.js';
17
+ export { formatLegacyMultisigIsmMetadata, parseLegacyMultisigIsmMetadata, } from './multisig.js';
18
+ export { arrayToObject, deepCopy, deepEquals, deepFind, diffObjMerge, keepOnlyDiffObjects, invertKeysAndValues, isObjEmpty, isObject, mustGet, objFilter, objKeys, objLength, objMap, objMapEntries, objMerge, objOmit, objOmitKeys, pick, promiseObjAll, stringifyObject, transformObj, sortArraysInObject, objDiff, } from './objects.js';
19
+ export { failure, success } from './result.js';
20
+ export { difference, intersection, setEquality, symmetricDifference, } from './sets.js';
21
+ export { errorToString, fromHexString, sanitizeString, streamToString, toHexString, toTitleCase, toUpperCamelCase, trimToLength, } from './strings.js';
22
+ export { isNullish, isNumeric } from './typeof.js';
23
+ export { MessageStatus, ProtocolSmallestUnit, ProtocolType, } from './types.js';
24
+ export { isHttpsUrl, isRelativeUrl, isUrl } from './url.js';
25
+ export { assert } from './validation.js';
26
+ export { BaseValidator } from './validator.js';
27
+ export { tryParseJsonOrYaml } from './yaml.js';
28
+ export { createServiceLogger } from './logging.js';
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { LevelWithSilent, Logger, pino } from 'pino';
2
+ export type { Logger };
3
+ export declare enum LogLevel {
4
+ Trace = "trace",
5
+ Debug = "debug",
6
+ Info = "info",
7
+ Warn = "warn",
8
+ Error = "error",
9
+ Off = "off"
10
+ }
11
+ export declare function getLogLevel(): pino.LevelWithSilent;
12
+ export declare enum LogFormat {
13
+ Pretty = "pretty",
14
+ JSON = "json"
15
+ }
16
+ export declare function getLogFormat(): LogFormat;
17
+ export declare let rootLogger: Logger<never>;
18
+ export declare function getRootLogger(): Logger<never>;
19
+ export declare function configureRootLogger(newLogFormat: LogFormat, newLogLevel: LogLevel): Logger<never>;
20
+ export declare function setRootLogger(logger: Logger): Logger<never>;
21
+ export declare function createHyperlanePinoLogger(logLevel: LevelWithSilent, logFormat: LogFormat): Logger<never>;
22
+ export declare function ethersBigNumberSerializer(key: string, value: any): any;
23
+ export declare function tryInitializeGcpLogger(options?: {
24
+ service?: string;
25
+ version?: string;
26
+ }): Promise<Logger | null>;
27
+ export declare function createServiceLogger(options: {
28
+ service: string;
29
+ version: string;
30
+ module?: string;
31
+ }): Promise<Logger>;
32
+ //# sourceMappingURL=logging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../src/logging.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAiB,IAAI,EAAE,MAAM,MAAM,CAAC;AAKpE,YAAY,EAAE,MAAM,EAAE,CAAC;AAOvB,oBAAY,QAAQ;IAClB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;IACf,GAAG,QAAQ;CACZ;AAYD,wBAAgB,WAAW,yBAE1B;AAED,oBAAY,SAAS;IACnB,MAAM,WAAW;IACjB,IAAI,SAAS;CACd;AAQD,wBAAgB,YAAY,cAE3B;AAGD,eAAO,IAAI,UAAU,eAAiD,CAAC;AAEvE,wBAAgB,aAAa,kBAE5B;AAED,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,SAAS,EACvB,WAAW,EAAE,QAAQ,iBAMtB;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,iBAG3C;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,eAAe,EACzB,SAAS,EAAE,SAAS,iBAgDrB;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,CActE;AAED,wBAAsB,sBAAsB,CAAC,OAAO,CAAC,EAAE;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA6BzB;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,MAAM,CAAC,CAUlB"}
@@ -0,0 +1,146 @@
1
+ import { BigNumber } from 'ethers';
2
+ import { pino } from 'pino';
3
+ import { inKubernetes, safelyAccessEnvVar } from './env.js';
4
+ // Level and format here should correspond with the agent options as much as possible
5
+ // https://docs.hyperlane.xyz/docs/operate/config-reference#logfmt
6
+ // A custom enum definition because pino does not export an enum
7
+ // and because we use 'off' instead of 'silent' to match the agent options
8
+ export var LogLevel;
9
+ (function (LogLevel) {
10
+ LogLevel["Trace"] = "trace";
11
+ LogLevel["Debug"] = "debug";
12
+ LogLevel["Info"] = "info";
13
+ LogLevel["Warn"] = "warn";
14
+ LogLevel["Error"] = "error";
15
+ LogLevel["Off"] = "off";
16
+ })(LogLevel || (LogLevel = {}));
17
+ let logLevel = toPinoLevel(safelyAccessEnvVar('LOG_LEVEL', true)) || 'info';
18
+ function toPinoLevel(level) {
19
+ if (level && pino.levels.values[level])
20
+ return level;
21
+ // For backwards compat and also to match agent level options
22
+ else if (level === 'none' || level === 'off')
23
+ return 'silent';
24
+ else
25
+ return undefined;
26
+ }
27
+ export function getLogLevel() {
28
+ return logLevel;
29
+ }
30
+ export var LogFormat;
31
+ (function (LogFormat) {
32
+ LogFormat["Pretty"] = "pretty";
33
+ LogFormat["JSON"] = "json";
34
+ })(LogFormat || (LogFormat = {}));
35
+ let logFormat = LogFormat.JSON;
36
+ const envLogFormat = safelyAccessEnvVar('LOG_FORMAT', true);
37
+ if (envLogFormat && Object.values(LogFormat).includes(envLogFormat))
38
+ logFormat = envLogFormat;
39
+ export function getLogFormat() {
40
+ return logFormat;
41
+ }
42
+ // Note, for brevity and convenience, the rootLogger is exported directly
43
+ export let rootLogger = createHyperlanePinoLogger(logLevel, logFormat);
44
+ export function getRootLogger() {
45
+ return rootLogger;
46
+ }
47
+ export function configureRootLogger(newLogFormat, newLogLevel) {
48
+ logFormat = newLogFormat;
49
+ logLevel = toPinoLevel(newLogLevel) || logLevel;
50
+ rootLogger = createHyperlanePinoLogger(logLevel, logFormat);
51
+ return rootLogger;
52
+ }
53
+ export function setRootLogger(logger) {
54
+ rootLogger = logger;
55
+ return rootLogger;
56
+ }
57
+ export function createHyperlanePinoLogger(logLevel, logFormat) {
58
+ // In development, pino-pretty is used for a better dev experience,
59
+ // but only if the log format is 'pretty'. This allows for JSON logs
60
+ // in development as well if explicitly configured.
61
+ if (process.env.NODE_ENV === 'development' &&
62
+ logFormat === LogFormat.Pretty) {
63
+ return pino({
64
+ level: logLevel,
65
+ transport: {
66
+ target: 'pino-pretty',
67
+ options: {
68
+ colorize: true,
69
+ translateTime: 'SYS:standard',
70
+ ignore: 'pid,hostname',
71
+ },
72
+ },
73
+ });
74
+ }
75
+ // In production (or other envs), use the original hook-based logger
76
+ return pino({
77
+ level: logLevel,
78
+ name: 'hyperlane',
79
+ formatters: {
80
+ // Remove pino's default bindings of hostname but keep pid
81
+ bindings: (defaultBindings) => ({ pid: defaultBindings.pid }),
82
+ },
83
+ hooks: {
84
+ logMethod(inputArgs, method, level) {
85
+ // Pino has no simple way of setting custom log shapes and they
86
+ // recommend against using pino-pretty in production so when
87
+ // pretty is enabled we circumvent pino and log directly to console
88
+ if (logFormat === LogFormat.Pretty &&
89
+ level >= pino.levels.values[logLevel]) {
90
+ // eslint-disable-next-line no-console
91
+ console.log(...inputArgs);
92
+ // Then return null to prevent pino from logging
93
+ return null;
94
+ }
95
+ return method.apply(this, inputArgs);
96
+ },
97
+ },
98
+ });
99
+ }
100
+ export function ethersBigNumberSerializer(key, value) {
101
+ // Check if the value looks like a serialized BigNumber
102
+ if (typeof value === 'object' &&
103
+ value !== null &&
104
+ value.type === 'BigNumber' &&
105
+ value.hex) {
106
+ return BigNumber.from(value.hex).toString();
107
+ }
108
+ if (typeof value === 'bigint') {
109
+ return value.toString();
110
+ }
111
+ return value;
112
+ }
113
+ export async function tryInitializeGcpLogger(options) {
114
+ if (!inKubernetes())
115
+ return null;
116
+ try {
117
+ const { createGcpLoggingPinoConfig } = await import(
118
+ /* webpackIgnore: true */ '@google-cloud/pino-logging-gcp-config');
119
+ const serviceContext = options
120
+ ? {
121
+ service: options.service ?? 'hyperlane-service',
122
+ version: options.version ?? 'unknown',
123
+ }
124
+ : {};
125
+ const gcpConfig = createGcpLoggingPinoConfig({ serviceContext }, {
126
+ base: undefined,
127
+ name: 'hyperlane',
128
+ });
129
+ const gcpLogger = pino(gcpConfig);
130
+ return gcpLogger;
131
+ }
132
+ catch (err) {
133
+ rootLogger.warn(err, 'Could not initialize GCP structured logging, ensure @google-cloud/pino-logging-gcp-config is installed');
134
+ return null;
135
+ }
136
+ }
137
+ export async function createServiceLogger(options) {
138
+ const { service, version, module } = options;
139
+ const gcpLogger = await tryInitializeGcpLogger({ service, version });
140
+ if (gcpLogger) {
141
+ return gcpLogger;
142
+ }
143
+ // For local development, create a child logger with module info
144
+ return rootLogger.child({ module: module ?? service });
145
+ }
146
+ //# sourceMappingURL=logging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../src/logging.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=logging.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.test.d.ts","sourceRoot":"","sources":["../src/logging.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,35 @@
1
+ import { expect } from 'chai';
2
+ import { BigNumber } from 'ethers';
3
+ import { ethersBigNumberSerializer } from './logging.js';
4
+ describe('Logging Utilities', () => {
5
+ describe('ethersBigNumberSerializer', () => {
6
+ it('should serialize a BigNumber object correctly', () => {
7
+ const key = 'testKey';
8
+ const value = {
9
+ type: 'BigNumber',
10
+ hex: '0x1a',
11
+ };
12
+ const result = ethersBigNumberSerializer(key, value);
13
+ expect(result).to.equal(BigNumber.from(value.hex).toString());
14
+ });
15
+ it('should return the value unchanged if it is not a BigNumber', () => {
16
+ const key = 'testKey';
17
+ const value = { some: 'object' };
18
+ const result = ethersBigNumberSerializer(key, value);
19
+ expect(result).to.equal(value);
20
+ });
21
+ it('should return the value unchanged if it is null', () => {
22
+ const key = 'testKey';
23
+ const value = null;
24
+ const result = ethersBigNumberSerializer(key, value);
25
+ expect(result).to.equal(value);
26
+ });
27
+ it('should return the value unchanged if it is not an object', () => {
28
+ const key = 'testKey';
29
+ const value = 'string';
30
+ const result = ethersBigNumberSerializer(key, value);
31
+ expect(result).to.equal(value);
32
+ });
33
+ });
34
+ });
35
+ //# sourceMappingURL=logging.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.test.js","sourceRoot":"","sources":["../src/logging.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAEzD,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACzC,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,GAAG,GAAG,SAAS,CAAC;YACtB,MAAM,KAAK,GAAG;gBACZ,IAAI,EAAE,WAAW;gBACjB,GAAG,EAAE,MAAM;aACZ,CAAC;YACF,MAAM,MAAM,GAAG,yBAAyB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;YACpE,MAAM,GAAG,GAAG,SAAS,CAAC;YACtB,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,yBAAyB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,GAAG,GAAG,SAAS,CAAC;YACtB,MAAM,KAAK,GAAG,IAAI,CAAC;YACnB,MAAM,MAAM,GAAG,yBAAyB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;YAClE,MAAM,GAAG,GAAG,SAAS,CAAC;YACtB,MAAM,KAAK,GAAG,QAAQ,CAAC;YACvB,MAAM,MAAM,GAAG,yBAAyB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/dist/math.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export declare function median(a: number[]): number;
2
+ export declare function sum(a: number[]): number;
3
+ export declare function mean(a: number[]): number;
4
+ export declare function stdDev(a: number[]): number;
5
+ export declare function randomInt(max: number, min?: number): number;
6
+ //# sourceMappingURL=math.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../src/math.ts"],"names":[],"mappings":"AAAA,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAM1C;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAEvC;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAExC;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAI1C;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,SAAI,GAAG,MAAM,CAEtD"}
package/dist/math.js ADDED
@@ -0,0 +1,21 @@
1
+ export function median(a) {
2
+ const sorted = a.slice().sort();
3
+ const mid = Math.floor(sorted.length / 2);
4
+ const median = sorted.length % 2 == 0 ? (sorted[mid - 1] + sorted[mid]) / 2 : sorted[mid];
5
+ return median;
6
+ }
7
+ export function sum(a) {
8
+ return a.reduce((acc, i) => acc + i);
9
+ }
10
+ export function mean(a) {
11
+ return sum(a) / a.length;
12
+ }
13
+ export function stdDev(a) {
14
+ const xbar = mean(a);
15
+ const squaredDifferences = a.map((x) => Math.pow(x - xbar, 2));
16
+ return Math.sqrt(mean(squaredDifferences));
17
+ }
18
+ export function randomInt(max, min = 0) {
19
+ return Math.floor(Math.random() * (max - min)) + min;
20
+ }
21
+ //# sourceMappingURL=math.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.js","sourceRoot":"","sources":["../src/math.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,MAAM,CAAC,CAAW;IAChC,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC1C,MAAM,MAAM,GACV,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7E,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,CAAW;IAC7B,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,CAAW;IAC9B,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,CAAW;IAChC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,kBAAkB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAW,EAAE,GAAG,GAAG,CAAC;IAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AACvD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=math.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.test.d.ts","sourceRoot":"","sources":["../src/math.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,45 @@
1
+ import { expect } from 'chai';
2
+ import { mean, median, randomInt, stdDev, sum } from './math.js';
3
+ describe('Math Utility Functions', () => {
4
+ describe('median', () => {
5
+ it('should return the median of an odd-length array', () => {
6
+ expect(median([1, 3, 2])).to.equal(2);
7
+ });
8
+ it('should return the median of an even-length array', () => {
9
+ expect(median([1, 2, 3, 4])).to.equal(2.5);
10
+ });
11
+ it('should return the median of an even-length array with non sorted numbers', () => {
12
+ expect(median([1, 2, 0, 4, 5, 6])).to.equal(3);
13
+ });
14
+ });
15
+ describe('sum', () => {
16
+ it('should return the sum of an array', () => {
17
+ expect(sum([1, 2, 3, 4])).to.equal(10);
18
+ expect(sum([1, -2, 3, 4])).to.equal(6);
19
+ });
20
+ });
21
+ describe('mean', () => {
22
+ it('should return the mean of an array', () => {
23
+ expect(mean([1, 2, 3, 4])).to.equal(2.5);
24
+ });
25
+ });
26
+ describe('stdDev', () => {
27
+ it('should return the standard deviation of an array', () => {
28
+ expect(stdDev([1, 2, 3, 4])).to.be.closeTo(1.118, 0.001);
29
+ });
30
+ it('should return the standard deviation of an array with negative numbers', () => {
31
+ expect(stdDev([-1, -2, -3, -4])).to.be.closeTo(1.118, 0.001);
32
+ });
33
+ });
34
+ describe('randomInt', () => {
35
+ it('should return a random integer within the specified range', () => {
36
+ const min = 1;
37
+ const max = 10;
38
+ const result = randomInt(max, min);
39
+ expect(result).to.be.at.least(min);
40
+ expect(result).to.be.below(max);
41
+ expect(result % 1).to.equal(0); // its an integer
42
+ });
43
+ });
44
+ });
45
+ //# sourceMappingURL=math.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.test.js","sourceRoot":"","sources":["../src/math.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { BigNumber } from 'ethers';
2
+ import { Address, Domain, HexString, ParsedMessage, ParsedWarpRouteMessage } from './types.js';
3
+ /**
4
+ * JS Implementation of solidity/contracts/libs/Message.sol#formatMessage
5
+ * @returns Hex string of the packed message
6
+ */
7
+ export declare const formatMessage: (version: number | BigNumber, nonce: number | BigNumber, originDomain: Domain, senderAddr: Address, destinationDomain: Domain, recipientAddr: Address, body: HexString) => HexString;
8
+ /**
9
+ * Get ID given message bytes
10
+ * @param message Hex string of the packed message (see formatMessage)
11
+ * @returns Hex string of message id
12
+ */
13
+ export declare function messageId(message: HexString): HexString;
14
+ /**
15
+ * Parse a serialized Hyperlane message from raw bytes.
16
+ *
17
+ * @param message
18
+ * @returns
19
+ */
20
+ export declare function parseMessage(message: string): ParsedMessage;
21
+ export declare function parseWarpRouteMessage(messageBody: string): ParsedWarpRouteMessage;
22
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAiB,MAAM,QAAQ,CAAC;AAIlD,OAAO,EACL,OAAO,EACP,MAAM,EACN,SAAS,EACT,aAAa,EACb,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,eAAO,MAAM,aAAa,YACf,MAAM,GAAG,SAAS,SACpB,MAAM,GAAG,SAAS,gBACX,MAAM,cACR,OAAO,qBACA,MAAM,iBACV,OAAO,QAChB,SAAS,KACd,SAgBF,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,CAEvD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAkB3D;AAED,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,GAClB,sBAAsB,CAcxB"}
@@ -0,0 +1,64 @@
1
+ import { ethers, utils } from 'ethers';
2
+ import { addressToBytes32 } from './addresses.js';
3
+ import { fromHexString, toHexString } from './strings.js';
4
+ /**
5
+ * JS Implementation of solidity/contracts/libs/Message.sol#formatMessage
6
+ * @returns Hex string of the packed message
7
+ */
8
+ export const formatMessage = (version, nonce, originDomain, senderAddr, destinationDomain, recipientAddr, body) => {
9
+ senderAddr = addressToBytes32(senderAddr);
10
+ recipientAddr = addressToBytes32(recipientAddr);
11
+ return ethers.utils.solidityPack(['uint8', 'uint32', 'uint32', 'bytes32', 'uint32', 'bytes32', 'bytes'], [
12
+ version,
13
+ nonce,
14
+ originDomain,
15
+ senderAddr,
16
+ destinationDomain,
17
+ recipientAddr,
18
+ body,
19
+ ]);
20
+ };
21
+ /**
22
+ * Get ID given message bytes
23
+ * @param message Hex string of the packed message (see formatMessage)
24
+ * @returns Hex string of message id
25
+ */
26
+ export function messageId(message) {
27
+ return ethers.utils.solidityKeccak256(['bytes'], [message]);
28
+ }
29
+ /**
30
+ * Parse a serialized Hyperlane message from raw bytes.
31
+ *
32
+ * @param message
33
+ * @returns
34
+ */
35
+ export function parseMessage(message) {
36
+ const VERSION_OFFSET = 0;
37
+ const NONCE_OFFSET = 1;
38
+ const ORIGIN_OFFSET = 5;
39
+ const SENDER_OFFSET = 9;
40
+ const DESTINATION_OFFSET = 41;
41
+ const RECIPIENT_OFFSET = 45;
42
+ const BODY_OFFSET = 77;
43
+ const buf = Buffer.from(utils.arrayify(message));
44
+ const version = buf.readUint8(VERSION_OFFSET);
45
+ const nonce = buf.readUInt32BE(NONCE_OFFSET);
46
+ const origin = buf.readUInt32BE(ORIGIN_OFFSET);
47
+ const sender = utils.hexlify(buf.subarray(SENDER_OFFSET, DESTINATION_OFFSET));
48
+ const destination = buf.readUInt32BE(DESTINATION_OFFSET);
49
+ const recipient = utils.hexlify(buf.subarray(RECIPIENT_OFFSET, BODY_OFFSET));
50
+ const body = utils.hexlify(buf.subarray(BODY_OFFSET));
51
+ return { version, nonce, origin, sender, destination, recipient, body };
52
+ }
53
+ export function parseWarpRouteMessage(messageBody) {
54
+ const RECIPIENT_OFFSET = 0;
55
+ const AMOUNT_OFFSET = 32;
56
+ const buf = fromHexString(messageBody);
57
+ const recipient = toHexString(buf.subarray(RECIPIENT_OFFSET, RECIPIENT_OFFSET + 32));
58
+ const amount = BigInt(toHexString(buf.subarray(AMOUNT_OFFSET, AMOUNT_OFFSET + 32)));
59
+ return {
60
+ recipient,
61
+ amount,
62
+ };
63
+ }
64
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { ParsedLegacyMultisigIsmMetadata } from './types.js';
2
+ export declare const parseLegacyMultisigIsmMetadata: (metadata: string) => ParsedLegacyMultisigIsmMetadata;
3
+ export declare const formatLegacyMultisigIsmMetadata: (metadata: ParsedLegacyMultisigIsmMetadata) => string;
4
+ //# sourceMappingURL=multisig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multisig.d.ts","sourceRoot":"","sources":["../src/multisig.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,+BAA+B,EAAE,MAAM,YAAY,CAAC;AAE7D,eAAO,MAAM,8BAA8B,aAC/B,MAAM,KACf,+BA4CF,CAAC;AAEF,eAAO,MAAM,+BAA+B,aAChC,+BAA+B,KACxC,MAqBF,CAAC"}