@hyperlane-xyz/utils 5.6.2 → 5.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/arrays.test.d.ts +2 -0
- package/dist/arrays.test.d.ts.map +1 -0
- package/dist/arrays.test.js +45 -0
- package/dist/arrays.test.js.map +1 -0
- package/dist/async.test.d.ts +2 -0
- package/dist/async.test.d.ts.map +1 -0
- package/dist/async.test.js +124 -0
- package/dist/async.test.js.map +1 -0
- package/dist/base58.test.d.ts +2 -0
- package/dist/base58.test.d.ts.map +1 -0
- package/dist/base58.test.js +31 -0
- package/dist/base58.test.js.map +1 -0
- package/dist/base64.test.d.ts +2 -0
- package/dist/base64.test.d.ts.map +1 -0
- package/dist/base64.test.js +54 -0
- package/dist/base64.test.js.map +1 -0
- package/dist/checkpoints.d.ts +2 -1
- package/dist/checkpoints.d.ts.map +1 -1
- package/dist/checkpoints.js +1 -1
- package/dist/checkpoints.js.map +1 -1
- package/dist/checkpoints.test.d.ts +2 -0
- package/dist/checkpoints.test.d.ts.map +1 -0
- package/dist/checkpoints.test.js +105 -0
- package/dist/checkpoints.test.js.map +1 -0
- package/dist/env.test.d.ts +2 -0
- package/dist/env.test.d.ts.map +1 -0
- package/dist/env.test.js +16 -0
- package/dist/env.test.js.map +1 -0
- package/dist/ids.test.d.ts +2 -0
- package/dist/ids.test.d.ts.map +1 -0
- package/dist/ids.test.js +39 -0
- package/dist/ids.test.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/logging.test.d.ts +2 -0
- package/dist/logging.test.d.ts.map +1 -0
- package/dist/logging.test.js +35 -0
- package/dist/logging.test.js.map +1 -0
- package/dist/math.js +1 -1
- package/dist/math.js.map +1 -1
- package/dist/math.test.d.ts +2 -0
- package/dist/math.test.d.ts.map +1 -0
- package/dist/math.test.js +45 -0
- package/dist/math.test.js.map +1 -0
- package/dist/objects.d.ts.map +1 -1
- package/dist/objects.js +3 -1
- package/dist/objects.js.map +1 -1
- package/dist/objects.test.js +95 -1
- package/dist/objects.test.js.map +1 -1
- package/dist/sets.d.ts +1 -0
- package/dist/sets.d.ts.map +1 -1
- package/dist/sets.js +9 -0
- package/dist/sets.js.map +1 -1
- package/dist/sets.test.d.ts +2 -0
- package/dist/sets.test.d.ts.map +1 -0
- package/dist/sets.test.js +35 -0
- package/dist/sets.test.js.map +1 -0
- package/dist/strings.test.d.ts +2 -0
- package/dist/strings.test.d.ts.map +1 -0
- package/dist/strings.test.js +42 -0
- package/dist/strings.test.js.map +1 -0
- package/dist/typeof.test.d.ts +2 -0
- package/dist/typeof.test.d.ts.map +1 -0
- package/dist/typeof.test.js +34 -0
- package/dist/typeof.test.js.map +1 -0
- package/dist/validation.test.d.ts +2 -0
- package/dist/validation.test.d.ts.map +1 -0
- package/dist/validation.test.js +11 -0
- package/dist/validation.test.js.map +1 -0
- package/dist/yaml.test.d.ts +2 -0
- package/dist/yaml.test.d.ts.map +1 -0
- package/dist/yaml.test.js +29 -0
- package/dist/yaml.test.js.map +1 -0
- package/package.json +4 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrays.test.d.ts","sourceRoot":"","sources":["../src/arrays.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { chunk, exclude, randomElement } from './arrays.js';
|
|
3
|
+
describe('Arrays utilities', () => {
|
|
4
|
+
describe('chunk', () => {
|
|
5
|
+
it('should split an array into chunks of the specified size', () => {
|
|
6
|
+
const result = chunk([1, 2, 3, 4, 5], 2);
|
|
7
|
+
expect(result).to.deep.equal([[1, 2], [3, 4], [5]]);
|
|
8
|
+
});
|
|
9
|
+
it('should return an empty array when input is empty', () => {
|
|
10
|
+
const result = chunk([], 2);
|
|
11
|
+
expect(result).to.deep.equal([]);
|
|
12
|
+
});
|
|
13
|
+
it('should handle chunk size larger than array length', () => {
|
|
14
|
+
const result = chunk([1, 2], 5);
|
|
15
|
+
expect(result).to.deep.equal([[1, 2]]);
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
describe('exclude', () => {
|
|
19
|
+
it('should exclude the specified item from the list', () => {
|
|
20
|
+
const result = exclude(2, [1, 2, 3, 2]);
|
|
21
|
+
expect(result).to.deep.equal([1, 3]);
|
|
22
|
+
});
|
|
23
|
+
it('should return the same list if item is not found', () => {
|
|
24
|
+
const result = exclude(4, [1, 2, 3]);
|
|
25
|
+
expect(result).to.deep.equal([1, 2, 3]);
|
|
26
|
+
});
|
|
27
|
+
it('should return an empty list if all items are excluded', () => {
|
|
28
|
+
const result = exclude(1, [1, 1, 1]);
|
|
29
|
+
expect(result).to.deep.equal([]);
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
describe('randomElement', () => {
|
|
33
|
+
beforeEach(() => { });
|
|
34
|
+
it('should return a random element from the list', () => {
|
|
35
|
+
const list = [10, 20, 30];
|
|
36
|
+
const result = randomElement(list);
|
|
37
|
+
expect(result).to.be.oneOf(list);
|
|
38
|
+
});
|
|
39
|
+
it('should handle an empty list gracefully', () => {
|
|
40
|
+
const result = randomElement([]);
|
|
41
|
+
expect(result).to.be.undefined;
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=arrays.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrays.test.js","sourceRoot":"","sources":["../src/arrays.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5D,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACrB,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YACjE,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;YAC3D,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;YAC/D,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,UAAU,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAErB,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YAC1B,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAChD,MAAM,MAAM,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async.test.d.ts","sourceRoot":"","sources":["../src/async.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { concurrentMap, fetchWithTimeout, pollAsync, raceWithContext, retryAsync, runWithTimeout, sleep, timeout, } from './async.js';
|
|
3
|
+
describe('Async Utilities', () => {
|
|
4
|
+
describe('sleep', () => {
|
|
5
|
+
it('should resolve after sleep duration', async () => {
|
|
6
|
+
const start = Date.now();
|
|
7
|
+
await sleep(100);
|
|
8
|
+
const duration = Date.now() - start;
|
|
9
|
+
expect(duration).to.be.at.least(100);
|
|
10
|
+
expect(duration).to.be.lessThan(200);
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
describe('timeout', () => {
|
|
14
|
+
it('should timeout a promise', async () => {
|
|
15
|
+
const promise = new Promise((resolve) => setTimeout(resolve, 200));
|
|
16
|
+
try {
|
|
17
|
+
await timeout(promise, 100);
|
|
18
|
+
throw new Error('Expected timeout error');
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
expect(error.message).to.equal('Timeout reached');
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
describe('runWithTimeout', () => {
|
|
26
|
+
it('should run a callback with a timeout', async () => {
|
|
27
|
+
const result = await runWithTimeout(100, async () => {
|
|
28
|
+
await sleep(50);
|
|
29
|
+
return 'success';
|
|
30
|
+
});
|
|
31
|
+
expect(result).to.equal('success');
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
describe('fetchWithTimeout', () => {
|
|
35
|
+
it('should fetch with timeout', async () => {
|
|
36
|
+
// Mock fetch for testing
|
|
37
|
+
global.fetch = async () => {
|
|
38
|
+
await sleep(50);
|
|
39
|
+
return new Response('ok');
|
|
40
|
+
};
|
|
41
|
+
const response = await fetchWithTimeout('https://example.com', {}, 100);
|
|
42
|
+
expect(await response.text()).to.equal('ok');
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
describe('retryAsync', () => {
|
|
46
|
+
it('should retry async function with exponential backoff', async () => {
|
|
47
|
+
let attempt = 0;
|
|
48
|
+
const runner = async () => {
|
|
49
|
+
attempt++;
|
|
50
|
+
if (attempt < 3)
|
|
51
|
+
throw new Error('fail');
|
|
52
|
+
return 'success';
|
|
53
|
+
};
|
|
54
|
+
const result = await retryAsync(runner, 5, 10);
|
|
55
|
+
expect(result).to.equal('success');
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
describe('pollAsync', () => {
|
|
59
|
+
it('should poll async function until success', async () => {
|
|
60
|
+
let attempt = 0;
|
|
61
|
+
const runner = async () => {
|
|
62
|
+
attempt++;
|
|
63
|
+
if (attempt < 3)
|
|
64
|
+
throw new Error('fail');
|
|
65
|
+
return 'success';
|
|
66
|
+
};
|
|
67
|
+
const result = await pollAsync(runner, 10, 5);
|
|
68
|
+
expect(result).to.equal('success');
|
|
69
|
+
});
|
|
70
|
+
it('should fail after reaching max retries', async () => {
|
|
71
|
+
let attempt = 0;
|
|
72
|
+
const runner = async () => {
|
|
73
|
+
attempt++;
|
|
74
|
+
throw new Error('fail');
|
|
75
|
+
};
|
|
76
|
+
try {
|
|
77
|
+
await pollAsync(runner, 10, 3); // Set maxAttempts to 3
|
|
78
|
+
throw new Error('Expected pollAsync to throw an error');
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
expect(attempt).to.equal(3); // Ensure it attempted 3 times
|
|
82
|
+
expect(error.message).to.equal('fail');
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
describe('raceWithContext', () => {
|
|
87
|
+
it('should race with context', async () => {
|
|
88
|
+
const promises = [
|
|
89
|
+
sleep(50).then(() => 'first'),
|
|
90
|
+
sleep(100).then(() => 'second'),
|
|
91
|
+
];
|
|
92
|
+
const result = await raceWithContext(promises);
|
|
93
|
+
expect(result.resolved).to.equal('first');
|
|
94
|
+
expect(result.index).to.equal(0);
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
describe('concurrentMap', () => {
|
|
98
|
+
it('should map concurrently with correct results', async () => {
|
|
99
|
+
const xs = [1, 2, 3, 4, 5, 6];
|
|
100
|
+
const mapFn = async (val) => {
|
|
101
|
+
await new Promise((resolve) => setTimeout(resolve, 50)); // Simulate async work
|
|
102
|
+
return val * 2;
|
|
103
|
+
};
|
|
104
|
+
const result = await concurrentMap(2, xs, mapFn);
|
|
105
|
+
expect(result).to.deep.equal([2, 4, 6, 8, 10, 12]);
|
|
106
|
+
});
|
|
107
|
+
it('should respect concurrency limit', async () => {
|
|
108
|
+
const xs = [1, 2, 3, 4, 5, 6];
|
|
109
|
+
const concurrency = 2;
|
|
110
|
+
let activeTasks = 0;
|
|
111
|
+
let maxActiveTasks = 0;
|
|
112
|
+
const mapFn = async (val) => {
|
|
113
|
+
activeTasks++;
|
|
114
|
+
maxActiveTasks = Math.max(maxActiveTasks, activeTasks);
|
|
115
|
+
await new Promise((resolve) => setTimeout(resolve, 50)); // Simulate async work
|
|
116
|
+
activeTasks--;
|
|
117
|
+
return val * 2;
|
|
118
|
+
};
|
|
119
|
+
await concurrentMap(concurrency, xs, mapFn);
|
|
120
|
+
expect(maxActiveTasks).to.equal(concurrency);
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
//# sourceMappingURL=async.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async.test.js","sourceRoot":"","sources":["../src/async.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base58.test.d.ts","sourceRoot":"","sources":["../src/base58.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { utils } from 'ethers';
|
|
3
|
+
import { base58ToBuffer, bufferToBase58, hexOrBase58ToHex } from './base58.js';
|
|
4
|
+
describe('Base58 Utilities', () => {
|
|
5
|
+
describe('base58ToBuffer', () => {
|
|
6
|
+
it('should convert a base58 string to a buffer', () => {
|
|
7
|
+
const base58String = '3mJr7AoUXx2Wqd';
|
|
8
|
+
const expectedBuffer = Buffer.from(utils.base58.decode(base58String));
|
|
9
|
+
expect(base58ToBuffer(base58String)).to.deep.equal(expectedBuffer);
|
|
10
|
+
});
|
|
11
|
+
});
|
|
12
|
+
describe('bufferToBase58', () => {
|
|
13
|
+
it('should convert a buffer to a base58 string', () => {
|
|
14
|
+
const buffer = Buffer.from([1, 2, 3, 4]);
|
|
15
|
+
const expectedBase58String = utils.base58.encode(buffer);
|
|
16
|
+
expect(bufferToBase58(buffer)).to.equal(expectedBase58String);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
describe('hexOrBase58ToHex', () => {
|
|
20
|
+
it('should return the hex string as is if it starts with 0x', () => {
|
|
21
|
+
const hexString = '0x1234abcd';
|
|
22
|
+
expect(hexOrBase58ToHex(hexString)).to.equal(hexString);
|
|
23
|
+
});
|
|
24
|
+
it('should convert a base58 string to a hex string', () => {
|
|
25
|
+
const base58String = '3mJr7AoUXx2Wqd';
|
|
26
|
+
const expectedHexString = utils.hexlify(Buffer.from(utils.base58.decode(base58String)));
|
|
27
|
+
expect(hexOrBase58ToHex(base58String)).to.equal(expectedHexString);
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=base58.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base58.test.js","sourceRoot":"","sources":["../src/base58.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/E,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,YAAY,GAAG,gBAAgB,CAAC;YACtC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;YACtE,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,oBAAoB,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACzD,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YACjE,MAAM,SAAS,GAAG,YAAY,CAAC;YAC/B,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,MAAM,YAAY,GAAG,gBAAgB,CAAC;YACtC,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CACrC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAC/C,CAAC;YACF,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base64.test.d.ts","sourceRoot":"","sources":["../src/base64.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import Sinon from 'sinon';
|
|
3
|
+
import { fromBase64, toBase64 } from './base64.js';
|
|
4
|
+
import { rootLogger } from './logging.js';
|
|
5
|
+
describe('Base64 Utility Functions', () => {
|
|
6
|
+
let loggerStub;
|
|
7
|
+
beforeEach(() => {
|
|
8
|
+
loggerStub = Sinon.stub(rootLogger, 'error');
|
|
9
|
+
});
|
|
10
|
+
afterEach(() => {
|
|
11
|
+
loggerStub.restore();
|
|
12
|
+
});
|
|
13
|
+
describe('toBase64', () => {
|
|
14
|
+
it('should encode a valid object to a base64 string', () => {
|
|
15
|
+
const data = { key: 'value' };
|
|
16
|
+
const result = toBase64(data);
|
|
17
|
+
expect(result).to.be.a('string');
|
|
18
|
+
expect(result).to.equal(btoa(JSON.stringify(data)));
|
|
19
|
+
});
|
|
20
|
+
it('should return undefined for null or undefined input', () => {
|
|
21
|
+
expect(toBase64(null)).to.be.undefined;
|
|
22
|
+
expect(toBase64(undefined)).to.be.undefined;
|
|
23
|
+
});
|
|
24
|
+
it('should log an error for invalid input', () => {
|
|
25
|
+
toBase64(null);
|
|
26
|
+
expect(loggerStub.calledOnce).to.be.true;
|
|
27
|
+
expect(loggerStub.calledWith('Unable to serialize + encode data to base64', null)).to.be.true;
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
describe('fromBase64', () => {
|
|
31
|
+
it('should decode a valid base64 string to an object', () => {
|
|
32
|
+
const data = { key: 'value' };
|
|
33
|
+
const base64String = btoa(JSON.stringify(data));
|
|
34
|
+
const result = fromBase64(base64String);
|
|
35
|
+
expect(result).to.deep.equal(data);
|
|
36
|
+
});
|
|
37
|
+
it('should return undefined for null or undefined input', () => {
|
|
38
|
+
expect(fromBase64(null)).to.be.undefined;
|
|
39
|
+
expect(fromBase64(undefined)).to.be.undefined;
|
|
40
|
+
});
|
|
41
|
+
it('should handle array input and decode the first element', () => {
|
|
42
|
+
const data = { key: 'value' };
|
|
43
|
+
const base64String = btoa(JSON.stringify(data));
|
|
44
|
+
const result = fromBase64([base64String, 'anotherString']);
|
|
45
|
+
expect(result).to.deep.equal(data);
|
|
46
|
+
});
|
|
47
|
+
it('should log an error for invalid base64 input', () => {
|
|
48
|
+
fromBase64('invalidBase64');
|
|
49
|
+
expect(loggerStub.calledOnce).to.be.true;
|
|
50
|
+
expect(loggerStub.calledWith('Unable to decode + deserialize data from base64', 'invalidBase64')).to.be.true;
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
//# sourceMappingURL=base64.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base64.test.js","sourceRoot":"","sources":["../src/base64.test.ts"],"names":[],"mappings":"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"}
|
package/dist/checkpoints.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { Checkpoint, S3Checkpoint, S3CheckpointWithId } from './types.js';
|
|
1
|
+
import { Checkpoint, S3Checkpoint, S3CheckpointWithId, SignatureLike } from './types.js';
|
|
2
|
+
export declare function isValidSignature(signature: any): signature is SignatureLike;
|
|
2
3
|
export declare function isS3Checkpoint(obj: any): obj is S3Checkpoint;
|
|
3
4
|
export declare function isS3CheckpointWithId(obj: any): obj is S3CheckpointWithId;
|
|
4
5
|
export declare function isCheckpoint(obj: any): obj is Checkpoint;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoints.d.ts","sourceRoot":"","sources":["../src/checkpoints.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,UAAU,EACV,YAAY,EACZ,kBAAkB,
|
|
1
|
+
{"version":3,"file":"checkpoints.d.ts","sourceRoot":"","sources":["../src/checkpoints.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,UAAU,EACV,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,GAAG,GAAG,SAAS,IAAI,aAAa,CAM3E;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,YAAY,CAE5D;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,kBAAkB,CAMxE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,UAAU,CAMxD"}
|
package/dist/checkpoints.js
CHANGED
package/dist/checkpoints.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoints.js","sourceRoot":"","sources":["../src/checkpoints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAS/B,
|
|
1
|
+
{"version":3,"file":"checkpoints.js","sourceRoot":"","sources":["../src/checkpoints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAS/B,MAAM,UAAU,gBAAgB,CAAC,SAAc;IAC7C,OAAO,OAAO,SAAS,KAAK,QAAQ;QAClC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC;QAC9B,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;YAC5B,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAQ;IACrC,OAAO,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAQ;IAC3C,OAAO,CACL,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC;QAC/B,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC;QAClC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CACxC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAQ;IACnC,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrD,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACvE,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC/D,OAAO,YAAY,IAAI,WAAW,IAAI,cAAc,IAAI,aAAa,CAAC;AACxE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoints.test.d.ts","sourceRoot":"","sources":["../src/checkpoints.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { isCheckpoint, isS3Checkpoint, isS3CheckpointWithId, isValidSignature, } from './checkpoints.js';
|
|
3
|
+
describe('Checkpoints', () => {
|
|
4
|
+
describe('isValidSignature', () => {
|
|
5
|
+
it('should return true for valid string signature', () => {
|
|
6
|
+
const signature = '0x' + 'a'.repeat(130); // Example of a valid hex string
|
|
7
|
+
expect(isValidSignature(signature)).to.be.true;
|
|
8
|
+
});
|
|
9
|
+
it('should return true for valid object signature', () => {
|
|
10
|
+
const signature = {
|
|
11
|
+
r: '0x' + 'a'.repeat(64),
|
|
12
|
+
s: '0x' + 'b'.repeat(64),
|
|
13
|
+
v: 27,
|
|
14
|
+
};
|
|
15
|
+
expect(isValidSignature(signature)).to.be.true;
|
|
16
|
+
});
|
|
17
|
+
it('should return false for invalid signature', () => {
|
|
18
|
+
const signature = {
|
|
19
|
+
r: '0x' + 'a'.repeat(64),
|
|
20
|
+
s: '0x' + 'b'.repeat(64),
|
|
21
|
+
v: 'invalid',
|
|
22
|
+
};
|
|
23
|
+
expect(isValidSignature(signature)).to.be.false;
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
describe('isCheckpoint', () => {
|
|
27
|
+
it('should return true for valid checkpoint', () => {
|
|
28
|
+
const checkpoint = {
|
|
29
|
+
root: '0x' + 'a'.repeat(64),
|
|
30
|
+
index: 1,
|
|
31
|
+
merkle_tree_hook_address: '0x' + 'b'.repeat(40),
|
|
32
|
+
mailbox_domain: 123,
|
|
33
|
+
};
|
|
34
|
+
expect(isCheckpoint(checkpoint)).to.be.true;
|
|
35
|
+
});
|
|
36
|
+
it('should return false for invalid checkpoint', () => {
|
|
37
|
+
const checkpoint = {
|
|
38
|
+
root: 'invalid',
|
|
39
|
+
index: 'invalid',
|
|
40
|
+
merkle_tree_hook_address: 'invalid',
|
|
41
|
+
mailbox_domain: 'invalid',
|
|
42
|
+
};
|
|
43
|
+
expect(isCheckpoint(checkpoint)).to.be.false;
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
describe('isS3Checkpoint', () => {
|
|
47
|
+
it('should return true for valid S3Checkpoint', () => {
|
|
48
|
+
const s3Checkpoint = {
|
|
49
|
+
signature: '0x' + 'a'.repeat(130),
|
|
50
|
+
value: {
|
|
51
|
+
root: '0x' + 'a'.repeat(64),
|
|
52
|
+
index: 1,
|
|
53
|
+
merkle_tree_hook_address: '0x' + 'b'.repeat(40),
|
|
54
|
+
mailbox_domain: 123,
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
expect(isS3Checkpoint(s3Checkpoint)).to.be.true;
|
|
58
|
+
});
|
|
59
|
+
it('should return false for invalid S3Checkpoint', () => {
|
|
60
|
+
const s3Checkpoint = {
|
|
61
|
+
signature: 'invalid',
|
|
62
|
+
value: {
|
|
63
|
+
root: 'invalid',
|
|
64
|
+
index: 'invalid',
|
|
65
|
+
merkle_tree_hook_address: 'invalid',
|
|
66
|
+
mailbox_domain: 'invalid',
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
expect(isS3Checkpoint(s3Checkpoint)).to.be.false;
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
describe('isS3CheckpointWithId', () => {
|
|
73
|
+
it('should return true for valid S3CheckpointWithId', () => {
|
|
74
|
+
const s3CheckpointWithId = {
|
|
75
|
+
signature: '0x' + 'a'.repeat(130),
|
|
76
|
+
value: {
|
|
77
|
+
checkpoint: {
|
|
78
|
+
root: '0x' + 'a'.repeat(64),
|
|
79
|
+
index: 1,
|
|
80
|
+
merkle_tree_hook_address: '0x' + 'b'.repeat(40),
|
|
81
|
+
mailbox_domain: 123,
|
|
82
|
+
},
|
|
83
|
+
message_id: '0x' + 'c'.repeat(64),
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
expect(isS3CheckpointWithId(s3CheckpointWithId)).to.be.true;
|
|
87
|
+
});
|
|
88
|
+
it('should return false for invalid S3CheckpointWithId', () => {
|
|
89
|
+
const s3CheckpointWithId = {
|
|
90
|
+
signature: 'invalid',
|
|
91
|
+
value: {
|
|
92
|
+
checkpoint: {
|
|
93
|
+
root: 'invalid',
|
|
94
|
+
index: 'invalid',
|
|
95
|
+
merkle_tree_hook_address: 'invalid',
|
|
96
|
+
mailbox_domain: 'invalid',
|
|
97
|
+
},
|
|
98
|
+
message_id: 'invalid',
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
expect(isS3CheckpointWithId(s3CheckpointWithId)).to.be.false;
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
//# sourceMappingURL=checkpoints.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoints.test.js","sourceRoot":"","sources":["../src/checkpoints.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.test.d.ts","sourceRoot":"","sources":["../src/env.test.ts"],"names":[],"mappings":""}
|
package/dist/env.test.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { safelyAccessEnvVar } from './env.js';
|
|
3
|
+
describe('Env Utilities', () => {
|
|
4
|
+
describe('safelyAccessEnvVar', () => {
|
|
5
|
+
it('should return the environment variable', () => {
|
|
6
|
+
process.env.TEST_VAR = '0xTEST_VAR';
|
|
7
|
+
expect(safelyAccessEnvVar('TEST_VAR')).to.equal('0xTEST_VAR');
|
|
8
|
+
expect(safelyAccessEnvVar('TEST_VAR', true)).to.equal('0xtest_var');
|
|
9
|
+
});
|
|
10
|
+
it('should return undefined if the environment variable is not set', () => {
|
|
11
|
+
expect(safelyAccessEnvVar('NON_EXISTENT_VAR')).to.be.undefined;
|
|
12
|
+
expect(safelyAccessEnvVar('NON_EXISTENT_VAR', true)).to.be.undefined;
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=env.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.test.js","sourceRoot":"","sources":["../src/env.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9C,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAChD,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,YAAY,CAAC;YACpC,MAAM,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC9D,MAAM,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;YACxE,MAAM,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;YAC/D,MAAM,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QACvE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ids.test.d.ts","sourceRoot":"","sources":["../src/ids.test.ts"],"names":[],"mappings":""}
|
package/dist/ids.test.js
ADDED
|
@@ -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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -14,9 +14,9 @@ export { LogFormat, LogLevel, configureRootLogger, createHyperlanePinoLogger, et
|
|
|
14
14
|
export { mean, median, randomInt, stdDev, sum } from './math.js';
|
|
15
15
|
export { formatMessage, messageId, parseMessage, parseWarpRouteMessage, } from './messages.js';
|
|
16
16
|
export { formatLegacyMultisigIsmMetadata, parseLegacyMultisigIsmMetadata, } from './multisig.js';
|
|
17
|
-
export { ValueOf, arrayToObject, deepCopy, deepEquals, invertKeysAndValues, isObjEmpty, isObject, objFilter, objKeys, objLength, objMap, objMapEntries, objMerge, objOmit, pick, promiseObjAll, stringifyObject,
|
|
17
|
+
export { ObjectDiff, ValueOf, arrayToObject, deepCopy, deepEquals, diffObjMerge, invertKeysAndValues, isObjEmpty, isObject, objFilter, objKeys, objLength, objMap, objMapEntries, objMerge, objOmit, pick, promiseObjAll, stringifyObject, } from './objects.js';
|
|
18
18
|
export { Result, failure, success } from './result.js';
|
|
19
|
-
export { difference, setEquality, symmetricDifference } from './sets.js';
|
|
19
|
+
export { difference, intersection, setEquality, symmetricDifference, } from './sets.js';
|
|
20
20
|
export { errorToString, fromHexString, sanitizeString, streamToString, toHexString, toTitleCase, trimToLength, } from './strings.js';
|
|
21
21
|
export { isNullish, isNumeric } from './typeof.js';
|
|
22
22
|
export { Address, AddressBytes32, Annotated, Announcement, CallData, ChainCaip2Id, ChainId, Checkpoint, CheckpointWithId, Domain, HexString, MerkleProof, MessageStatus, Numberish, ParsedLegacyMultisigIsmMetadata, ParsedMessage, ProtocolSmallestUnit, ProtocolType, ProtocolTypeValue, S3Announcement, S3Checkpoint, S3CheckpointWithId, SignatureLike, TokenCaip19Id, WithAddress, } from './types.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,wBAAwB,EACxB,QAAQ,EACR,SAAS,EACT,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,sBAAsB,EACtB,SAAS,EACT,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,4BAA4B,EAC5B,yBAAyB,EACzB,8BAA8B,EAC9B,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,EACxB,gBAAgB,EAChB,cAAc,EACd,OAAO,GACR,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,OAAO,EACP,cAAc,EACd,KAAK,EACL,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,UAAU,EACV,cAAc,EACd,KAAK,EACL,OAAO,GACR,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,UAAU,EACV,cAAc,EACd,SAAS,EACT,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,YAAY,EACZ,cAAc,EACd,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EACL,SAAS,EACT,QAAQ,EACR,mBAAmB,EACnB,yBAAyB,EACzB,yBAAyB,EACzB,YAAY,EACZ,WAAW,EACX,aAAa,EACb,UAAU,EACV,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EACL,aAAa,EACb,SAAS,EACT,YAAY,EACZ,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,+BAA+B,EAC/B,8BAA8B,GAC/B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,OAAO,EACP,aAAa,EACb,QAAQ,EACR,UAAU,EACV,mBAAmB,EACnB,UAAU,EACV,QAAQ,EACR,SAAS,EACT,OAAO,EACP,SAAS,EACT,MAAM,EACN,aAAa,EACb,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,aAAa,EACb,eAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -14,9 +14,9 @@ export { LogFormat, LogLevel, configureRootLogger, createHyperlanePinoLogger, et
|
|
|
14
14
|
export { mean, median, randomInt, stdDev, sum } from './math.js';
|
|
15
15
|
export { formatMessage, messageId, parseMessage, parseWarpRouteMessage, } from './messages.js';
|
|
16
16
|
export { formatLegacyMultisigIsmMetadata, parseLegacyMultisigIsmMetadata, } from './multisig.js';
|
|
17
|
-
export { arrayToObject, deepCopy, deepEquals, invertKeysAndValues, isObjEmpty, isObject, objFilter, objKeys, objLength, objMap, objMapEntries, objMerge, objOmit, pick, promiseObjAll, stringifyObject,
|
|
17
|
+
export { arrayToObject, deepCopy, deepEquals, diffObjMerge, invertKeysAndValues, isObjEmpty, isObject, objFilter, objKeys, objLength, objMap, objMapEntries, objMerge, objOmit, pick, promiseObjAll, stringifyObject, } from './objects.js';
|
|
18
18
|
export { failure, success } from './result.js';
|
|
19
|
-
export { difference, setEquality, symmetricDifference } from './sets.js';
|
|
19
|
+
export { difference, intersection, setEquality, symmetricDifference, } from './sets.js';
|
|
20
20
|
export { errorToString, fromHexString, sanitizeString, streamToString, toHexString, toTitleCase, trimToLength, } from './strings.js';
|
|
21
21
|
export { isNullish, isNumeric } from './typeof.js';
|
|
22
22
|
export { MessageStatus, ProtocolSmallestUnit, ProtocolType, } from './types.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,wBAAwB,EACxB,QAAQ,EACR,SAAS,EACT,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,sBAAsB,EACtB,SAAS,EACT,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,4BAA4B,EAC5B,yBAAyB,EACzB,8BAA8B,EAC9B,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,EACxB,gBAAgB,EAChB,cAAc,EACd,OAAO,GACR,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,OAAO,EACP,cAAc,EACd,KAAK,EACL,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,UAAU,EACV,cAAc,EACd,KAAK,EACL,OAAO,GACR,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,UAAU,EACV,cAAc,EACd,SAAS,EACT,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,YAAY,EACZ,cAAc,EACd,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EACL,SAAS,EACT,QAAQ,EACR,mBAAmB,EACnB,yBAAyB,EACzB,yBAAyB,EACzB,YAAY,EACZ,WAAW,EACX,aAAa,EACb,UAAU,EACV,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EACL,aAAa,EACb,SAAS,EACT,YAAY,EACZ,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,+BAA+B,EAC/B,8BAA8B,GAC/B,MAAM,eAAe,CAAC;AACvB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|