@hyperlane-xyz/utils 1.4.3-beta0 → 1.4.3-beta1

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 (98) hide show
  1. package/dist/index.d.ts +21 -4
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +115 -29
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/addresses.d.ts +29 -0
  6. package/dist/src/addresses.d.ts.map +1 -0
  7. package/dist/src/addresses.js +202 -0
  8. package/dist/src/addresses.js.map +1 -0
  9. package/dist/src/amount.d.ts +9 -0
  10. package/dist/src/amount.d.ts.map +1 -0
  11. package/dist/src/amount.js +79 -0
  12. package/dist/src/amount.js.map +1 -0
  13. package/dist/src/arrays.d.ts +8 -0
  14. package/dist/src/arrays.d.ts.map +1 -0
  15. package/dist/src/arrays.js +16 -0
  16. package/dist/src/arrays.js.map +1 -0
  17. package/dist/src/async.d.ts +37 -0
  18. package/dist/src/async.d.ts.map +1 -0
  19. package/dist/src/async.js +106 -0
  20. package/dist/src/async.js.map +1 -0
  21. package/dist/src/base64.d.ts +3 -0
  22. package/dist/src/base64.d.ts.map +1 -0
  23. package/dist/src/base64.js +30 -0
  24. package/dist/src/base64.js.map +1 -0
  25. package/dist/src/big-numbers.d.ts +36 -0
  26. package/dist/src/big-numbers.d.ts.map +1 -0
  27. package/dist/src/big-numbers.js +93 -0
  28. package/dist/src/big-numbers.js.map +1 -0
  29. package/dist/src/big-numbers.test.d.ts +2 -0
  30. package/dist/src/big-numbers.test.d.ts.map +1 -0
  31. package/dist/src/big-numbers.test.js +41 -0
  32. package/dist/src/big-numbers.test.js.map +1 -0
  33. package/dist/src/calldata.d.ts +3 -0
  34. package/dist/src/calldata.d.ts.map +1 -0
  35. package/dist/src/calldata.js +8 -0
  36. package/dist/src/calldata.js.map +1 -0
  37. package/dist/src/checkpoints.d.ts +5 -0
  38. package/dist/src/checkpoints.d.ts.map +1 -0
  39. package/dist/src/checkpoints.js +30 -0
  40. package/dist/src/checkpoints.js.map +1 -0
  41. package/dist/src/domains.d.ts +2 -0
  42. package/dist/src/domains.d.ts.map +1 -0
  43. package/dist/src/domains.js +10 -0
  44. package/dist/src/domains.js.map +1 -0
  45. package/dist/src/env.d.ts +2 -0
  46. package/dist/src/env.d.ts.map +1 -0
  47. package/dist/src/env.js +15 -0
  48. package/dist/src/env.js.map +1 -0
  49. package/dist/src/ids.d.ts +20 -0
  50. package/dist/src/ids.d.ts.map +1 -0
  51. package/dist/src/ids.js +47 -0
  52. package/dist/src/ids.js.map +1 -0
  53. package/dist/src/logging.js +5 -7
  54. package/dist/src/logging.js.map +1 -1
  55. package/dist/src/math.d.ts +5 -0
  56. package/dist/src/math.d.ts.map +1 -0
  57. package/dist/src/math.js +25 -0
  58. package/dist/src/math.js.map +1 -0
  59. package/dist/src/messages.d.ts +21 -0
  60. package/dist/src/messages.d.ts.map +1 -0
  61. package/dist/src/messages.js +58 -0
  62. package/dist/src/messages.js.map +1 -0
  63. package/dist/src/multisig.d.ts +4 -0
  64. package/dist/src/multisig.d.ts.map +1 -0
  65. package/dist/src/multisig.js +57 -0
  66. package/dist/src/multisig.js.map +1 -0
  67. package/dist/src/objects.d.ts +18 -0
  68. package/dist/src/objects.d.ts.map +1 -0
  69. package/dist/src/objects.js +84 -0
  70. package/dist/src/objects.js.map +1 -0
  71. package/dist/src/sets.d.ts +4 -0
  72. package/dist/src/sets.d.ts.map +1 -0
  73. package/dist/src/sets.js +30 -0
  74. package/dist/src/sets.js.map +1 -0
  75. package/dist/src/strings.d.ts +7 -0
  76. package/dist/src/strings.d.ts.map +1 -0
  77. package/dist/src/strings.js +51 -0
  78. package/dist/src/strings.js.map +1 -0
  79. package/dist/src/typeof.d.ts +3 -0
  80. package/dist/src/typeof.d.ts.map +1 -0
  81. package/dist/src/typeof.js +15 -0
  82. package/dist/src/typeof.js.map +1 -0
  83. package/dist/src/types.d.ts +23 -13
  84. package/dist/src/types.d.ts.map +1 -1
  85. package/dist/src/types.js +13 -3
  86. package/dist/src/types.js.map +1 -1
  87. package/dist/src/validation.d.ts +2 -0
  88. package/dist/src/validation.d.ts.map +1 -0
  89. package/dist/src/validation.js +10 -0
  90. package/dist/src/validation.js.map +1 -0
  91. package/dist/src/validator.d.ts.map +1 -1
  92. package/dist/src/validator.js +33 -20
  93. package/dist/src/validator.js.map +1 -1
  94. package/package.json +9 -6
  95. package/dist/src/utils.d.ts +0 -57
  96. package/dist/src/utils.d.ts.map +0 -1
  97. package/dist/src/utils.js +0 -307
  98. package/dist/src/utils.js.map +0 -1
@@ -1,8 +1,17 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  exports.Validator = exports.BaseValidator = void 0;
4
13
  const ethers_1 = require("ethers");
5
- const utils_1 = require("./utils");
14
+ const domains_1 = require("./domains");
6
15
  /**
7
16
  * Utilities for validators to construct and verify checkpoints.
8
17
  */
@@ -13,12 +22,12 @@ class BaseValidator {
13
22
  this.mailbox = mailbox;
14
23
  }
15
24
  domainHash() {
16
- return (0, utils_1.domainHash)(this.localDomain, this.mailbox);
25
+ return (0, domains_1.domainHash)(this.localDomain, this.mailbox);
17
26
  }
18
27
  message(checkpoint, messageId) {
19
- let types = ['bytes32', 'bytes32', 'uint32'];
20
- let values = [this.domainHash(), checkpoint.root, checkpoint.index];
21
- if (!!messageId) {
28
+ const types = ['bytes32', 'bytes32', 'uint32'];
29
+ const values = [this.domainHash(), checkpoint.root, checkpoint.index];
30
+ if (messageId) {
22
31
  types.push('bytes32');
23
32
  values.push(messageId);
24
33
  }
@@ -42,22 +51,26 @@ class Validator extends BaseValidator {
42
51
  super(address, localDomain, mailbox);
43
52
  this.signer = signer;
44
53
  }
45
- static async fromSigner(signer, localDomain, mailbox) {
46
- return new Validator(signer, await signer.getAddress(), localDomain, mailbox);
54
+ static fromSigner(signer, localDomain, mailbox) {
55
+ return __awaiter(this, void 0, void 0, function* () {
56
+ return new Validator(signer, yield signer.getAddress(), localDomain, mailbox);
57
+ });
47
58
  }
48
- async signCheckpoint(root, index) {
49
- const checkpoint = {
50
- root,
51
- index,
52
- mailbox_address: this.mailbox,
53
- mailbox_domain: this.localDomain,
54
- };
55
- const msgHash = this.messageHash(checkpoint);
56
- const signature = await this.signer.signMessage(msgHash);
57
- return {
58
- value: checkpoint,
59
- signature,
60
- };
59
+ signCheckpoint(root, index) {
60
+ return __awaiter(this, void 0, void 0, function* () {
61
+ const checkpoint = {
62
+ root,
63
+ index,
64
+ mailbox_address: this.mailbox,
65
+ mailbox_domain: this.localDomain,
66
+ };
67
+ const msgHash = this.messageHash(checkpoint);
68
+ const signature = yield this.signer.signMessage(msgHash);
69
+ return {
70
+ value: checkpoint,
71
+ signature,
72
+ };
73
+ });
61
74
  }
62
75
  }
63
76
  exports.Validator = Validator;
@@ -1 +1 @@
1
- {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/validator.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAUhC,mCAAqC;AAErC;;GAEG;AACH,MAAa,aAAa;IAKxB,YAAY,OAAgB,EAAE,WAAmB,EAAE,OAAgB;QACjE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,UAAU;QACR,OAAO,IAAA,kBAAU,EAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,CAAC,UAAsB,EAAE,SAAqB;QACnD,IAAI,KAAK,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC7C,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QACpE,IAAI,CAAC,CAAC,SAAS,EAAE;YACf,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACxB;QACD,OAAO,eAAM,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,WAAW,CAAC,UAAsB,EAAE,SAAqB;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACpD,OAAO,eAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,4BAA4B,CAC1B,UAAsB,EACtB,SAAwB,EACxB,SAAqB;QAErB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACxD,OAAO,eAAM,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACxD,CAAC;IAED,aAAa,CACX,UAAsB,EACtB,SAAwB,EACxB,SAAqB;QAErB,OAAO,CACL,IAAI,CAAC,4BAA4B,CAC/B,UAAU,EACV,SAAS,EACT,SAAS,CACV,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAC/C,CAAC;IACJ,CAAC;CACF;AApDD,sCAoDC;AAED,MAAa,SAAU,SAAQ,aAAa;IAC1C,YACY,MAAqB,EAC/B,OAAgB,EAChB,WAAmB,EACnB,OAAgB;QAEhB,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAL3B,WAAM,GAAN,MAAM,CAAe;IAMjC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,UAAU,CACrB,MAAqB,EACrB,WAAmB,EACnB,OAAgB;QAEhB,OAAO,IAAI,SAAS,CAClB,MAAM,EACN,MAAM,MAAM,CAAC,UAAU,EAAE,EACzB,WAAW,EACX,OAAO,CACR,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,IAAe,EAAE,KAAa;QACjD,MAAM,UAAU,GAAG;YACjB,IAAI;YACJ,KAAK;YACL,eAAe,EAAE,IAAI,CAAC,OAAO;YAC7B,cAAc,EAAE,IAAI,CAAC,WAAW;SACjC,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACzD,OAAO;YACL,KAAK,EAAE,UAAU;YACjB,SAAS;SACV,CAAC;IACJ,CAAC;CACF;AArCD,8BAqCC"}
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/validator.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mCAAgC;AAEhC,uCAAuC;AAUvC;;GAEG;AACH,MAAa,aAAa;IAKxB,YAAY,OAAgB,EAAE,WAAmB,EAAE,OAAgB;QACjE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,UAAU;QACR,OAAO,IAAA,oBAAU,EAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,CAAC,UAAsB,EAAE,SAAqB;QACnD,MAAM,KAAK,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QACtE,IAAI,SAAS,EAAE;YACb,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACxB;QACD,OAAO,eAAM,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,WAAW,CAAC,UAAsB,EAAE,SAAqB;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACpD,OAAO,eAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,4BAA4B,CAC1B,UAAsB,EACtB,SAAwB,EACxB,SAAqB;QAErB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACxD,OAAO,eAAM,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACxD,CAAC;IAED,aAAa,CACX,UAAsB,EACtB,SAAwB,EACxB,SAAqB;QAErB,OAAO,CACL,IAAI,CAAC,4BAA4B,CAC/B,UAAU,EACV,SAAS,EACT,SAAS,CACV,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAC/C,CAAC;IACJ,CAAC;CACF;AApDD,sCAoDC;AAED,MAAa,SAAU,SAAQ,aAAa;IAC1C,YACY,MAAqB,EAC/B,OAAgB,EAChB,WAAmB,EACnB,OAAgB;QAEhB,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAL3B,WAAM,GAAN,MAAM,CAAe;IAMjC,CAAC;IAED,MAAM,CAAO,UAAU,CACrB,MAAqB,EACrB,WAAmB,EACnB,OAAgB;;YAEhB,OAAO,IAAI,SAAS,CAClB,MAAM,EACN,MAAM,MAAM,CAAC,UAAU,EAAE,EACzB,WAAW,EACX,OAAO,CACR,CAAC;QACJ,CAAC;KAAA;IAEK,cAAc,CAAC,IAAe,EAAE,KAAa;;YACjD,MAAM,UAAU,GAAG;gBACjB,IAAI;gBACJ,KAAK;gBACL,eAAe,EAAE,IAAI,CAAC,OAAO;gBAC7B,cAAc,EAAE,IAAI,CAAC,WAAW;aACjC,CAAC;YACF,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAC7C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACzD,OAAO;gBACL,KAAK,EAAE,UAAU;gBACjB,SAAS;aACV,CAAC;QACJ,CAAC;KAAA;CACF;AArCD,8BAqCC"}
package/package.json CHANGED
@@ -1,19 +1,21 @@
1
1
  {
2
2
  "name": "@hyperlane-xyz/utils",
3
- "description": "General utilities for the Hyperlane network",
4
- "version": "1.4.3-beta0",
3
+ "description": "General utilities and types for the Hyperlane network",
4
+ "version": "1.4.3-beta1",
5
5
  "dependencies": {
6
+ "@solana/web3.js": "^1.78.0",
7
+ "bignumber.js": "^9.1.1",
6
8
  "ethers": "^5.7.2"
7
9
  },
8
10
  "devDependencies": {
9
11
  "chai": "^4.3.0",
10
- "prettier": "^2.8.8",
11
- "typescript": "^5.1.6"
12
+ "prettier": "^2.4.1",
13
+ "typescript": "^4.7.2"
12
14
  },
13
15
  "homepage": "https://www.hyperlane.xyz",
14
16
  "keywords": [
15
17
  "Hyperlane",
16
- "SDK",
18
+ "Utilities",
17
19
  "Typescript"
18
20
  ],
19
21
  "license": "Apache-2.0",
@@ -26,9 +28,10 @@
26
28
  "check": "tsc --noEmit",
27
29
  "prettier": "prettier --write ./src"
28
30
  },
31
+ "sideEffects": false,
29
32
  "types": "dist/index.d.ts",
30
33
  "files": [
31
34
  "/dist"
32
35
  ],
33
36
  "stableVersion": "1.4.2"
34
- }
37
+ }
@@ -1,57 +0,0 @@
1
- /// <reference types="node" />
2
- import { BigNumber, ethers } from 'ethers';
3
- import { Address, Checkpoint, Domain, HexString, ParsedLegacyMultisigIsmMetadata, ParsedMessage, S3Checkpoint, S3CheckpointWithId } from './types';
4
- export declare function exclude<T>(item: T, list: T[]): T[];
5
- export declare function assert(predicate: any, errorMessage?: string): void;
6
- export declare function deepEquals(v1: any, v2: any): boolean;
7
- export declare function eqAddress(a: string, b: string): boolean;
8
- export declare const ensure0x: (hexstr: string) => string;
9
- export declare const strip0x: (hexstr: string) => string;
10
- export declare function addressToBytes32(address: Address): string;
11
- export declare function bytes32ToAddress(bytes32: string): Address;
12
- export declare function formatCallData<C extends ethers.Contract, I extends Parameters<C['interface']['encodeFunctionData']>>(destinationContract: C, functionName: I[0], functionArgs: I[1]): string;
13
- export declare const parseLegacyMultisigIsmMetadata: (metadata: string) => ParsedLegacyMultisigIsmMetadata;
14
- export declare const formatLegacyMultisigIsmMetadata: (metadata: ParsedLegacyMultisigIsmMetadata) => string;
15
- /**
16
- * JS Implementation of solidity/contracts/libs/Message.sol#formatMessage
17
- * @returns Hex string of the packed message
18
- */
19
- export declare const formatMessage: (version: number | BigNumber, nonce: number | BigNumber, originDomain: Domain, senderAddr: Address, destinationDomain: Domain, recipientAddr: Address, body: HexString) => HexString;
20
- /**
21
- * Get ID given message bytes
22
- * @param message Hex string of the packed message (see formatMessage)
23
- * @returns Hex string of message id
24
- */
25
- export declare function messageId(message: HexString): HexString;
26
- /**
27
- * Parse a serialized Hyperlane message from raw bytes.
28
- *
29
- * @param message
30
- * @returns
31
- */
32
- export declare function parseMessage(message: string): ParsedMessage;
33
- export declare function domainHash(domain: number, mailbox: string): string;
34
- export declare function sleep(ms: number): Promise<void>;
35
- export declare function retryAsync<T>(runner: () => T, attempts?: number, baseRetryMs?: number): Promise<T>;
36
- export declare function pollAsync<T>(runner: () => Promise<T>, delayMs?: number, maxAttempts?: number | undefined): Promise<T>;
37
- export declare function median(a: number[]): number;
38
- export declare function sum(a: number[]): number;
39
- export declare function mean(a: number[]): number;
40
- export declare function stdDev(a: number[]): number;
41
- export declare function streamToString(stream: NodeJS.ReadableStream): Promise<string>;
42
- export declare function isS3Checkpoint(obj: any): obj is S3Checkpoint;
43
- export declare function isS3CheckpointWithId(obj: any): obj is S3CheckpointWithId;
44
- export declare function isCheckpoint(obj: any): obj is Checkpoint;
45
- /**
46
- * Wait up to a given amount of time, and throw an error if the promise does not resolve in time.
47
- * @param promise The promise to timeout on.
48
- * @param timeoutMs How long to wait for the promise in milliseconds.
49
- * @param message The error message if a timeout occurs.
50
- */
51
- export declare function timeout<T>(promise: Promise<T>, timeoutMs?: number, message?: string): Promise<T>;
52
- export declare function safelyAccessEnvVar(name: string): string | undefined;
53
- export declare function difference<T>(a: Set<T>, b: Set<T>): Set<T>;
54
- export declare function symmetricDifference<T>(a: Set<T>, b: Set<T>): Set<T>;
55
- export declare function setEquality<T>(a: Set<T>, b: Set<T>): boolean;
56
- export declare function runWithTimeout<T>(timeoutMs: number, callback: () => Promise<T>): Promise<T | void>;
57
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
package/dist/src/utils.js DELETED
@@ -1,307 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.runWithTimeout = exports.setEquality = exports.symmetricDifference = exports.difference = exports.safelyAccessEnvVar = exports.timeout = exports.isCheckpoint = exports.isS3CheckpointWithId = exports.isS3Checkpoint = exports.streamToString = exports.stdDev = exports.mean = exports.sum = exports.median = exports.pollAsync = exports.retryAsync = exports.sleep = exports.domainHash = exports.parseMessage = exports.messageId = exports.formatMessage = exports.formatLegacyMultisigIsmMetadata = exports.parseLegacyMultisigIsmMetadata = exports.formatCallData = exports.bytes32ToAddress = exports.addressToBytes32 = exports.strip0x = exports.ensure0x = exports.eqAddress = exports.deepEquals = exports.assert = exports.exclude = void 0;
4
- const ethers_1 = require("ethers");
5
- function exclude(item, list) {
6
- return list.filter((i) => i !== item);
7
- }
8
- exports.exclude = exclude;
9
- function assert(predicate, errorMessage) {
10
- if (!predicate) {
11
- throw new Error(errorMessage ?? 'Error');
12
- }
13
- }
14
- exports.assert = assert;
15
- function deepEquals(v1, v2) {
16
- return JSON.stringify(v1) === JSON.stringify(v2);
17
- }
18
- exports.deepEquals = deepEquals;
19
- function eqAddress(a, b) {
20
- return ethers_1.ethers.utils.getAddress(a) === ethers_1.ethers.utils.getAddress(b);
21
- }
22
- exports.eqAddress = eqAddress;
23
- const ensure0x = (hexstr) => hexstr.startsWith('0x') ? hexstr : `0x${hexstr}`;
24
- exports.ensure0x = ensure0x;
25
- const strip0x = (hexstr) => hexstr.startsWith('0x') ? hexstr.slice(2) : hexstr;
26
- exports.strip0x = strip0x;
27
- function addressToBytes32(address) {
28
- return ethers_1.ethers.utils
29
- .hexZeroPad(ethers_1.ethers.utils.hexStripZeros(address), 32)
30
- .toLowerCase();
31
- }
32
- exports.addressToBytes32 = addressToBytes32;
33
- function bytes32ToAddress(bytes32) {
34
- return ethers_1.ethers.utils.getAddress(bytes32.slice(-40));
35
- }
36
- exports.bytes32ToAddress = bytes32ToAddress;
37
- function formatCallData(destinationContract, functionName, functionArgs) {
38
- return destinationContract.interface.encodeFunctionData(functionName, functionArgs);
39
- }
40
- exports.formatCallData = formatCallData;
41
- const parseLegacyMultisigIsmMetadata = (metadata) => {
42
- const MERKLE_ROOT_OFFSET = 0;
43
- const MERKLE_INDEX_OFFSET = 32;
44
- const ORIGIN_MAILBOX_OFFSET = 36;
45
- const MERKLE_PROOF_OFFSET = 68;
46
- const THRESHOLD_OFFSET = 1092;
47
- const SIGNATURES_OFFSET = 1093;
48
- const SIGNATURE_LENGTH = 65;
49
- const buf = Buffer.from(ethers_1.utils.arrayify(metadata));
50
- const checkpointRoot = ethers_1.utils.hexlify(buf.slice(MERKLE_ROOT_OFFSET, MERKLE_INDEX_OFFSET));
51
- const checkpointIndex = ethers_1.BigNumber.from(ethers_1.utils.hexlify(buf.slice(MERKLE_INDEX_OFFSET, ORIGIN_MAILBOX_OFFSET))).toNumber();
52
- const originMailbox = ethers_1.utils.hexlify(buf.slice(ORIGIN_MAILBOX_OFFSET, MERKLE_PROOF_OFFSET));
53
- const parseBytesArray = (start, count, size) => {
54
- return [...Array(count).keys()].map((i) => ethers_1.utils.hexlify(buf.slice(start + size * i, start + size * (i + 1))));
55
- };
56
- const proof = parseBytesArray(MERKLE_PROOF_OFFSET, 32, 32);
57
- const threshold = ethers_1.BigNumber.from(ethers_1.utils.hexlify(buf.slice(THRESHOLD_OFFSET, SIGNATURES_OFFSET))).toNumber();
58
- const signatures = parseBytesArray(SIGNATURES_OFFSET, threshold, SIGNATURE_LENGTH);
59
- const VALIDATORS_OFFSET = SIGNATURES_OFFSET + threshold * SIGNATURE_LENGTH;
60
- const addressesCount = buf.slice(VALIDATORS_OFFSET).length / 32;
61
- const validators = parseBytesArray(VALIDATORS_OFFSET, addressesCount, 32);
62
- return {
63
- checkpointRoot,
64
- checkpointIndex,
65
- originMailbox,
66
- proof,
67
- signatures,
68
- validators,
69
- };
70
- };
71
- exports.parseLegacyMultisigIsmMetadata = parseLegacyMultisigIsmMetadata;
72
- const formatLegacyMultisigIsmMetadata = (metadata) => {
73
- return ethers_1.ethers.utils.solidityPack([
74
- 'bytes32',
75
- 'uint32',
76
- 'bytes32',
77
- 'bytes32[32]',
78
- 'uint8',
79
- 'bytes',
80
- 'address[]',
81
- ], [
82
- metadata.checkpointRoot,
83
- metadata.checkpointIndex,
84
- addressToBytes32(metadata.originMailbox),
85
- metadata.proof,
86
- metadata.signatures.length,
87
- ethers_1.ethers.utils.hexConcat(metadata.signatures),
88
- metadata.validators,
89
- ]);
90
- };
91
- exports.formatLegacyMultisigIsmMetadata = formatLegacyMultisigIsmMetadata;
92
- /**
93
- * JS Implementation of solidity/contracts/libs/Message.sol#formatMessage
94
- * @returns Hex string of the packed message
95
- */
96
- const formatMessage = (version, nonce, originDomain, senderAddr, destinationDomain, recipientAddr, body) => {
97
- senderAddr = addressToBytes32(senderAddr);
98
- recipientAddr = addressToBytes32(recipientAddr);
99
- return ethers_1.ethers.utils.solidityPack(['uint8', 'uint32', 'uint32', 'bytes32', 'uint32', 'bytes32', 'bytes'], [
100
- version,
101
- nonce,
102
- originDomain,
103
- senderAddr,
104
- destinationDomain,
105
- recipientAddr,
106
- body,
107
- ]);
108
- };
109
- exports.formatMessage = formatMessage;
110
- /**
111
- * Get ID given message bytes
112
- * @param message Hex string of the packed message (see formatMessage)
113
- * @returns Hex string of message id
114
- */
115
- function messageId(message) {
116
- return ethers_1.ethers.utils.solidityKeccak256(['bytes'], [message]);
117
- }
118
- exports.messageId = messageId;
119
- /**
120
- * Parse a serialized Hyperlane message from raw bytes.
121
- *
122
- * @param message
123
- * @returns
124
- */
125
- function parseMessage(message) {
126
- const VERSION_OFFSET = 0;
127
- const NONCE_OFFSET = 1;
128
- const ORIGIN_OFFSET = 5;
129
- const SENDER_OFFSET = 9;
130
- const DESTINATION_OFFSET = 41;
131
- const RECIPIENT_OFFSET = 45;
132
- const BODY_OFFSET = 77;
133
- const buf = Buffer.from(ethers_1.utils.arrayify(message));
134
- const version = buf.readUint8(VERSION_OFFSET);
135
- const nonce = buf.readUInt32BE(NONCE_OFFSET);
136
- const origin = buf.readUInt32BE(ORIGIN_OFFSET);
137
- const sender = ethers_1.utils.hexlify(buf.slice(SENDER_OFFSET, DESTINATION_OFFSET));
138
- const destination = buf.readUInt32BE(DESTINATION_OFFSET);
139
- const recipient = ethers_1.utils.hexlify(buf.slice(RECIPIENT_OFFSET, BODY_OFFSET));
140
- const body = ethers_1.utils.hexlify(buf.slice(BODY_OFFSET));
141
- return { version, nonce, origin, sender, destination, recipient, body };
142
- }
143
- exports.parseMessage = parseMessage;
144
- function domainHash(domain, mailbox) {
145
- return ethers_1.ethers.utils.solidityKeccak256(['uint32', 'bytes32', 'string'], [domain, addressToBytes32(mailbox), 'HYPERLANE']);
146
- }
147
- exports.domainHash = domainHash;
148
- function sleep(ms) {
149
- return new Promise((resolve) => setTimeout(resolve, ms));
150
- }
151
- exports.sleep = sleep;
152
- // Retries an async function if it raises an exception,
153
- // with exponential backoff.
154
- // If all the tries fail it raises the last thrown exception
155
- async function retryAsync(runner, attempts = 5, baseRetryMs = 50) {
156
- let saveError;
157
- for (let i = 0; i < attempts; i++) {
158
- try {
159
- const result = await runner();
160
- return result;
161
- }
162
- catch (error) {
163
- saveError = error;
164
- await sleep(baseRetryMs * 2 ** i);
165
- }
166
- }
167
- throw saveError;
168
- }
169
- exports.retryAsync = retryAsync;
170
- async function pollAsync(runner, delayMs = 500, maxAttempts = undefined) {
171
- let attempts = 0;
172
- let saveError;
173
- while (!maxAttempts || attempts < maxAttempts) {
174
- try {
175
- const ret = await runner();
176
- return ret;
177
- }
178
- catch (error) {
179
- saveError = error;
180
- attempts += 1;
181
- await sleep(delayMs);
182
- }
183
- }
184
- throw saveError;
185
- }
186
- exports.pollAsync = pollAsync;
187
- function median(a) {
188
- const sorted = a.slice().sort();
189
- const mid = Math.floor(sorted.length / 2);
190
- const median = sorted.length % 2 == 0 ? (sorted[mid] + sorted[mid + 1]) / 2 : sorted[mid];
191
- return median;
192
- }
193
- exports.median = median;
194
- function sum(a) {
195
- return a.reduce((acc, i) => acc + i);
196
- }
197
- exports.sum = sum;
198
- function mean(a) {
199
- return sum(a) / a.length;
200
- }
201
- exports.mean = mean;
202
- function stdDev(a) {
203
- const xbar = mean(a);
204
- const squaredDifferences = a.map((x) => Math.pow(x - xbar, 2));
205
- return Math.sqrt(mean(squaredDifferences));
206
- }
207
- exports.stdDev = stdDev;
208
- function streamToString(stream) {
209
- return new Promise((resolve, reject) => {
210
- const chunks = [];
211
- stream
212
- .setEncoding('utf8')
213
- .on('data', (chunk) => chunks.push(chunk))
214
- .on('error', (err) => reject(err))
215
- .on('end', () => resolve(String.prototype.concat(...chunks)));
216
- });
217
- }
218
- exports.streamToString = streamToString;
219
- function isValidSignature(signature) {
220
- return typeof signature === 'string'
221
- ? ethers_1.ethers.utils.isHexString(signature)
222
- : ethers_1.ethers.utils.isHexString(signature.r) &&
223
- ethers_1.ethers.utils.isHexString(signature.s) &&
224
- Number.isSafeInteger(signature.v);
225
- }
226
- function isS3Checkpoint(obj) {
227
- return isValidSignature(obj.signature) && isCheckpoint(obj.value);
228
- }
229
- exports.isS3Checkpoint = isS3Checkpoint;
230
- function isS3CheckpointWithId(obj) {
231
- return (isValidSignature(obj.signature) &&
232
- isCheckpoint(obj.value.checkpoint) &&
233
- ethers_1.ethers.utils.isHexString(obj.value.message_id));
234
- }
235
- exports.isS3CheckpointWithId = isS3CheckpointWithId;
236
- function isCheckpoint(obj) {
237
- const isValidRoot = ethers_1.ethers.utils.isHexString(obj.root);
238
- const isValidIndex = Number.isSafeInteger(obj.index);
239
- const isValidMailbox = ethers_1.ethers.utils.isHexString(obj.mailbox_address);
240
- const isValidDomain = Number.isSafeInteger(obj.mailbox_domain);
241
- return isValidIndex && isValidRoot && isValidMailbox && isValidDomain;
242
- }
243
- exports.isCheckpoint = isCheckpoint;
244
- /**
245
- * Wait up to a given amount of time, and throw an error if the promise does not resolve in time.
246
- * @param promise The promise to timeout on.
247
- * @param timeoutMs How long to wait for the promise in milliseconds.
248
- * @param message The error message if a timeout occurs.
249
- */
250
- function timeout(promise, timeoutMs, message = 'Timeout reached') {
251
- if (!timeoutMs || timeoutMs <= 0)
252
- return promise;
253
- return new Promise((resolve, reject) => {
254
- setTimeout(() => {
255
- reject(new Error(message));
256
- }, timeoutMs);
257
- promise.then(resolve).catch(reject);
258
- });
259
- }
260
- exports.timeout = timeout;
261
- // Should be used instead of referencing process directly in case we don't
262
- // run in node.js
263
- function safelyAccessEnvVar(name) {
264
- try {
265
- return process.env[name];
266
- }
267
- catch (error) {
268
- return undefined;
269
- }
270
- }
271
- exports.safelyAccessEnvVar = safelyAccessEnvVar;
272
- // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set#implementing_basic_set_operations
273
- function difference(a, b) {
274
- const _difference = new Set(a);
275
- for (const elem of b) {
276
- _difference.delete(elem);
277
- }
278
- return _difference;
279
- }
280
- exports.difference = difference;
281
- function symmetricDifference(a, b) {
282
- const _difference = new Set(a);
283
- for (const elem of b) {
284
- if (_difference.has(elem)) {
285
- _difference.delete(elem);
286
- }
287
- else {
288
- _difference.add(elem);
289
- }
290
- }
291
- return _difference;
292
- }
293
- exports.symmetricDifference = symmetricDifference;
294
- function setEquality(a, b) {
295
- return symmetricDifference(a, b).size === 0;
296
- }
297
- exports.setEquality = setEquality;
298
- async function runWithTimeout(timeoutMs, callback) {
299
- let timeout;
300
- const timeoutProm = new Promise((_, reject) => (timeout = setTimeout(() => reject(new Error(`Timed out in ${timeoutMs}ms.`)), timeoutMs)));
301
- const ret = await Promise.race([callback(), timeoutProm]);
302
- // @ts-ignore timeout gets set immediately by the promise constructor
303
- clearTimeout(timeout);
304
- return ret;
305
- }
306
- exports.runWithTimeout = runWithTimeout;
307
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}