@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.
- package/README.md +20 -0
- package/dist/addresses.d.ts +65 -0
- package/dist/addresses.d.ts.map +1 -0
- package/dist/addresses.js +475 -0
- package/dist/addresses.js.map +1 -0
- package/dist/addresses.test.d.ts +2 -0
- package/dist/addresses.test.d.ts.map +1 -0
- package/dist/addresses.test.js +68 -0
- package/dist/addresses.test.js.map +1 -0
- package/dist/amount.d.ts +70 -0
- package/dist/amount.d.ts.map +1 -0
- package/dist/amount.js +143 -0
- package/dist/amount.js.map +1 -0
- package/dist/amount.test.d.ts +2 -0
- package/dist/amount.test.d.ts.map +1 -0
- package/dist/amount.test.js +113 -0
- package/dist/amount.test.js.map +1 -0
- package/dist/arrays.d.ts +11 -0
- package/dist/arrays.d.ts.map +1 -0
- package/dist/arrays.js +26 -0
- package/dist/arrays.js.map +1 -0
- package/dist/arrays.test.d.ts +2 -0
- package/dist/arrays.test.d.ts.map +1 -0
- package/dist/arrays.test.js +77 -0
- package/dist/arrays.test.js.map +1 -0
- package/dist/async.d.ts +66 -0
- package/dist/async.d.ts.map +1 -0
- package/dist/async.js +146 -0
- package/dist/async.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 +204 -0
- package/dist/async.test.js.map +1 -0
- package/dist/base58.d.ts +5 -0
- package/dist/base58.d.ts.map +1 -0
- package/dist/base58.js +15 -0
- package/dist/base58.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.d.ts +3 -0
- package/dist/base64.d.ts.map +1 -0
- package/dist/base64.js +25 -0
- package/dist/base64.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/big-numbers.d.ts +50 -0
- package/dist/big-numbers.d.ts.map +1 -0
- package/dist/big-numbers.js +80 -0
- package/dist/big-numbers.js.map +1 -0
- package/dist/big-numbers.test.d.ts +2 -0
- package/dist/big-numbers.test.d.ts.map +1 -0
- package/dist/big-numbers.test.js +96 -0
- package/dist/big-numbers.test.js.map +1 -0
- package/dist/calldata.d.ts +3 -0
- package/dist/calldata.d.ts.map +1 -0
- package/dist/calldata.js +4 -0
- package/dist/calldata.js.map +1 -0
- package/dist/checkpoints.d.ts +6 -0
- package/dist/checkpoints.d.ts.map +1 -0
- package/dist/checkpoints.js +24 -0
- package/dist/checkpoints.js.map +1 -0
- 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/config.d.ts +25 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +84 -0
- package/dist/config.js.map +1 -0
- package/dist/domains.d.ts +2 -0
- package/dist/domains.d.ts.map +1 -0
- package/dist/domains.js +6 -0
- package/dist/domains.js.map +1 -0
- package/dist/env.d.ts +4 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +17 -0
- package/dist/env.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/eslint-rules/index.d.ts +157 -0
- package/dist/eslint-rules/index.d.ts.map +1 -0
- package/dist/eslint-rules/index.js +58 -0
- package/dist/eslint-rules/index.js.map +1 -0
- package/dist/eslint-rules/no-restricted-imports-from-exports.d.ts +4 -0
- package/dist/eslint-rules/no-restricted-imports-from-exports.d.ts.map +1 -0
- package/dist/eslint-rules/no-restricted-imports-from-exports.js +141 -0
- package/dist/eslint-rules/no-restricted-imports-from-exports.js.map +1 -0
- package/dist/eslint-rules/no-restricted-imports-from-exports.test.d.ts +2 -0
- package/dist/eslint-rules/no-restricted-imports-from-exports.test.d.ts.map +1 -0
- package/dist/eslint-rules/no-restricted-imports-from-exports.test.js +258 -0
- package/dist/eslint-rules/no-restricted-imports-from-exports.test.js.map +1 -0
- package/dist/eslint-rules/sort-yaml-arrays.d.ts +39 -0
- package/dist/eslint-rules/sort-yaml-arrays.d.ts.map +1 -0
- package/dist/eslint-rules/sort-yaml-arrays.js +74 -0
- package/dist/eslint-rules/sort-yaml-arrays.js.map +1 -0
- package/dist/eslint-rules/sort-yaml-arrays.test.d.ts +2 -0
- package/dist/eslint-rules/sort-yaml-arrays.test.d.ts.map +1 -0
- package/dist/eslint-rules/sort-yaml-arrays.test.js +621 -0
- package/dist/eslint-rules/sort-yaml-arrays.test.js.map +1 -0
- package/dist/ids.d.ts +20 -0
- package/dist/ids.d.ts.map +1 -0
- package/dist/ids.js +42 -0
- package/dist/ids.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 +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/logging.d.ts +32 -0
- package/dist/logging.d.ts.map +1 -0
- package/dist/logging.js +146 -0
- package/dist/logging.js.map +1 -0
- 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.d.ts +6 -0
- package/dist/math.d.ts.map +1 -0
- package/dist/math.js +21 -0
- package/dist/math.js.map +1 -0
- 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/messages.d.ts +22 -0
- package/dist/messages.d.ts.map +1 -0
- package/dist/messages.js +64 -0
- package/dist/messages.js.map +1 -0
- package/dist/multisig.d.ts +4 -0
- package/dist/multisig.d.ts.map +1 -0
- package/dist/multisig.js +53 -0
- package/dist/multisig.js.map +1 -0
- package/dist/objects.d.ts +74 -0
- package/dist/objects.d.ts.map +1 -0
- package/dist/objects.js +331 -0
- package/dist/objects.js.map +1 -0
- package/dist/objects.test.d.ts +2 -0
- package/dist/objects.test.d.ts.map +1 -0
- package/dist/objects.test.js +655 -0
- package/dist/objects.test.js.map +1 -0
- package/dist/result.d.ts +11 -0
- package/dist/result.d.ts.map +1 -0
- package/dist/result.js +7 -0
- package/dist/result.js.map +1 -0
- package/dist/sets.d.ts +5 -0
- package/dist/sets.d.ts.map +1 -0
- package/dist/sets.js +33 -0
- package/dist/sets.js.map +1 -0
- 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.d.ts +11 -0
- package/dist/strings.d.ts.map +1 -0
- package/dist/strings.js +49 -0
- package/dist/strings.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.d.ts +3 -0
- package/dist/typeof.d.ts.map +1 -0
- package/dist/typeof.js +7 -0
- package/dist/typeof.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/types.d.ts +111 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +23 -0
- package/dist/types.js.map +1 -0
- package/dist/url.d.ts +4 -0
- package/dist/url.d.ts.map +1 -0
- package/dist/url.js +34 -0
- package/dist/url.js.map +1 -0
- package/dist/url.test.d.ts +2 -0
- package/dist/url.test.d.ts.map +1 -0
- package/dist/url.test.js +29 -0
- package/dist/url.test.js.map +1 -0
- package/dist/validation.d.ts +2 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +6 -0
- package/dist/validation.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/validator.d.ts +30 -0
- package/dist/validator.d.ts.map +1 -0
- package/dist/validator.js +76 -0
- package/dist/validator.js.map +1 -0
- package/dist/yaml.d.ts +22 -0
- package/dist/yaml.d.ts.map +1 -0
- package/dist/yaml.js +293 -0
- package/dist/yaml.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 +519 -0
- package/dist/yaml.test.js.map +1 -0
- package/package.json +80 -0
package/dist/multisig.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { BigNumber } from 'bignumber.js';
|
|
2
|
+
import { utils } from 'ethers';
|
|
3
|
+
import { addressToBytes32 } from './addresses.js';
|
|
4
|
+
export const parseLegacyMultisigIsmMetadata = (metadata) => {
|
|
5
|
+
const MERKLE_ROOT_OFFSET = 0;
|
|
6
|
+
const MERKLE_INDEX_OFFSET = 32;
|
|
7
|
+
const ORIGIN_MAILBOX_OFFSET = 36;
|
|
8
|
+
const MERKLE_PROOF_OFFSET = 68;
|
|
9
|
+
const THRESHOLD_OFFSET = 1092;
|
|
10
|
+
const SIGNATURES_OFFSET = 1093;
|
|
11
|
+
const SIGNATURE_LENGTH = 65;
|
|
12
|
+
const buf = Buffer.from(utils.arrayify(metadata));
|
|
13
|
+
const checkpointRoot = utils.hexlify(buf.slice(MERKLE_ROOT_OFFSET, MERKLE_INDEX_OFFSET));
|
|
14
|
+
const checkpointIndex = BigNumber(utils.hexlify(buf.slice(MERKLE_INDEX_OFFSET, ORIGIN_MAILBOX_OFFSET))).toNumber();
|
|
15
|
+
const originMailbox = utils.hexlify(buf.slice(ORIGIN_MAILBOX_OFFSET, MERKLE_PROOF_OFFSET));
|
|
16
|
+
const parseBytesArray = (start, count, size) => {
|
|
17
|
+
return [...Array(count).keys()].map((i) => utils.hexlify(buf.slice(start + size * i, start + size * (i + 1))));
|
|
18
|
+
};
|
|
19
|
+
const proof = parseBytesArray(MERKLE_PROOF_OFFSET, 32, 32);
|
|
20
|
+
const threshold = BigNumber(utils.hexlify(buf.slice(THRESHOLD_OFFSET, SIGNATURES_OFFSET))).toNumber();
|
|
21
|
+
const signatures = parseBytesArray(SIGNATURES_OFFSET, threshold, SIGNATURE_LENGTH);
|
|
22
|
+
const VALIDATORS_OFFSET = SIGNATURES_OFFSET + threshold * SIGNATURE_LENGTH;
|
|
23
|
+
const addressesCount = buf.slice(VALIDATORS_OFFSET).length / 32;
|
|
24
|
+
const validators = parseBytesArray(VALIDATORS_OFFSET, addressesCount, 32);
|
|
25
|
+
return {
|
|
26
|
+
checkpointRoot,
|
|
27
|
+
checkpointIndex,
|
|
28
|
+
originMailbox,
|
|
29
|
+
proof,
|
|
30
|
+
signatures,
|
|
31
|
+
validators,
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
export const formatLegacyMultisigIsmMetadata = (metadata) => {
|
|
35
|
+
return utils.solidityPack([
|
|
36
|
+
'bytes32',
|
|
37
|
+
'uint32',
|
|
38
|
+
'bytes32',
|
|
39
|
+
'bytes32[32]',
|
|
40
|
+
'uint8',
|
|
41
|
+
'bytes',
|
|
42
|
+
'address[]',
|
|
43
|
+
], [
|
|
44
|
+
metadata.checkpointRoot,
|
|
45
|
+
metadata.checkpointIndex,
|
|
46
|
+
addressToBytes32(metadata.originMailbox),
|
|
47
|
+
metadata.proof,
|
|
48
|
+
metadata.signatures.length,
|
|
49
|
+
utils.hexConcat(metadata.signatures),
|
|
50
|
+
metadata.validators,
|
|
51
|
+
]);
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=multisig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multisig.js","sourceRoot":"","sources":["../src/multisig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
export declare function isObject(item: any): boolean;
|
|
2
|
+
export declare function deepEquals(v1: any, v2: any): boolean;
|
|
3
|
+
export declare function deepCopy(v: any): any;
|
|
4
|
+
export type ValueOf<T> = T[keyof T];
|
|
5
|
+
export declare function objKeys<T extends string | number>(obj: Record<T, any>): T[];
|
|
6
|
+
export declare function objLength(obj: Record<any, any>): number;
|
|
7
|
+
export declare function isObjEmpty(obj: Record<any, any>): boolean;
|
|
8
|
+
export declare function objMapEntries<M extends Record<K, I>, K extends keyof M, O, I = ValueOf<M>>(obj: M, func: (k: K, v: I) => O): [K, O][];
|
|
9
|
+
export declare function objMap<M extends Record<K, I>, K extends keyof M, O, I = ValueOf<M>>(obj: M, func: (k: K, v: I) => O): Record<K, O>;
|
|
10
|
+
export declare function objFilter<K extends string, I, O extends I>(obj: Record<K, I>, func: (k: K, v: I) => v is O): Record<K, O>;
|
|
11
|
+
export declare function deepFind<I extends object, O extends I>(obj: I, func: (v: I) => v is O, depth?: number): O | undefined;
|
|
12
|
+
export declare function promiseObjAll<K extends string, V>(obj: {
|
|
13
|
+
[key in K]: Promise<V>;
|
|
14
|
+
}): Promise<Record<K, V>>;
|
|
15
|
+
export declare function pick<T extends object, K extends keyof T>(obj: T, keys: K[]): Pick<T, K>;
|
|
16
|
+
/**
|
|
17
|
+
* Returns a new object that recursively merges B into A
|
|
18
|
+
* Where there are conflicts, B takes priority over A
|
|
19
|
+
* If B has a value for a key that A does not have, B's value is used
|
|
20
|
+
* If B has a value for a key that A has, and both are objects, the merge recurses into those objects
|
|
21
|
+
* If B has a value for a key that A has, and both are arrays, the merge concatenates them with B's values taking priority
|
|
22
|
+
* @param a - The first object
|
|
23
|
+
* @param b - The second object
|
|
24
|
+
* @param max_depth - The maximum depth to recurse
|
|
25
|
+
* @param mergeArrays - If true, arrays will be concatenated instead of replaced
|
|
26
|
+
*/
|
|
27
|
+
export declare function objMerge<T = any>(a: Record<string, any>, b: Record<string, any>, max_depth?: number, mergeArrays?: boolean): T;
|
|
28
|
+
/**
|
|
29
|
+
* Return a new object with the fields in b removed from a
|
|
30
|
+
* @param a Base object to remove fields from
|
|
31
|
+
* @param b The partial object to remove from the base object
|
|
32
|
+
* @param max_depth The maximum depth to recurse
|
|
33
|
+
* @param sliceArrays If true, arrays will have values sliced out instead of being removed entirely
|
|
34
|
+
*/
|
|
35
|
+
export declare function objOmit<T extends Record<string, any> = any>(a: Record<string, any>, b: Record<string, any>, max_depth?: number, sliceArrays?: boolean): T;
|
|
36
|
+
export declare function objOmitKeys<T extends Record<string, any> = any>(obj: Record<string, any>, keys: string[]): Partial<T>;
|
|
37
|
+
export declare function invertKeysAndValues(data: any): any;
|
|
38
|
+
export declare function arrayToObject(keys: Array<string>, val?: boolean): Record<string, boolean>;
|
|
39
|
+
export declare function stringifyObject(object: any, format?: 'json' | 'yaml', space?: number): string;
|
|
40
|
+
interface ObjectDiffOutput {
|
|
41
|
+
actual: any;
|
|
42
|
+
expected: any;
|
|
43
|
+
}
|
|
44
|
+
export type ObjectDiff = {
|
|
45
|
+
[key: string]: ObjectDiffOutput | ObjectDiff;
|
|
46
|
+
} | ObjectDiff[] | undefined;
|
|
47
|
+
/**
|
|
48
|
+
* Merges 2 objects showing any difference in value for common fields.
|
|
49
|
+
*/
|
|
50
|
+
export declare function diffObjMerge(actual: Record<string, any>, expected: Record<string, any>, maxDepth?: number): {
|
|
51
|
+
mergedObject: ObjectDiff;
|
|
52
|
+
isInvalid: boolean;
|
|
53
|
+
};
|
|
54
|
+
export declare function keepOnlyDiffObjects(obj: any): any;
|
|
55
|
+
export declare function mustGet<T>(obj: Record<string, T>, key: string): T;
|
|
56
|
+
export type TransformObjectTransformer = (obj: any, propPath: ReadonlyArray<string>) => any;
|
|
57
|
+
/**
|
|
58
|
+
* Recursively applies `formatter` to the provided object
|
|
59
|
+
*
|
|
60
|
+
* @param obj
|
|
61
|
+
* @param transformer a user defined function that takes an object and transforms it.
|
|
62
|
+
* @param maxDepth the maximum depth that can be reached when going through nested fields of a property
|
|
63
|
+
*
|
|
64
|
+
* @throws if `maxDepth` is reached in an object property
|
|
65
|
+
*/
|
|
66
|
+
export declare function transformObj(obj: any, transformer: TransformObjectTransformer, maxDepth?: number): any;
|
|
67
|
+
export declare function sortArraysInObject(obj: any, sortFunction?: (a: any, b: any) => number): any;
|
|
68
|
+
type JSPrimitiveTypes = string | number | bigint | boolean | undefined | symbol | null;
|
|
69
|
+
/**
|
|
70
|
+
* Returns an object where only the keys from `a` that are not in `b` or are different values, are kept
|
|
71
|
+
*/
|
|
72
|
+
export declare function objDiff<TKey extends string | number, TValue extends JSPrimitiveTypes>(a: Record<TKey, TValue>, b: Record<TKey, TValue>, areEquals?: (a: TValue, b: TValue) => boolean): Record<TKey, TValue>;
|
|
73
|
+
export {};
|
|
74
|
+
//# sourceMappingURL=objects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objects.d.ts","sourceRoot":"","sources":["../src/objects.ts"],"names":[],"mappings":"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"}
|
package/dist/objects.js
ADDED
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
import { cloneDeep, isEqual } from 'lodash-es';
|
|
2
|
+
import { stringify as yamlStringify } from 'yaml';
|
|
3
|
+
import { ethersBigNumberSerializer } from './logging.js';
|
|
4
|
+
import { isNullish } from './typeof.js';
|
|
5
|
+
import { assert } from './validation.js';
|
|
6
|
+
export function isObject(item) {
|
|
7
|
+
return !!item && typeof item === 'object' && !Array.isArray(item);
|
|
8
|
+
}
|
|
9
|
+
export function deepEquals(v1, v2) {
|
|
10
|
+
return isEqual(v1, v2);
|
|
11
|
+
}
|
|
12
|
+
export function deepCopy(v) {
|
|
13
|
+
return cloneDeep(v);
|
|
14
|
+
}
|
|
15
|
+
// Useful for maintaining type safety when using Object.keys
|
|
16
|
+
export function objKeys(obj) {
|
|
17
|
+
return Object.keys(obj);
|
|
18
|
+
}
|
|
19
|
+
export function objLength(obj) {
|
|
20
|
+
return Object.keys(obj).length;
|
|
21
|
+
}
|
|
22
|
+
export function isObjEmpty(obj) {
|
|
23
|
+
return objLength(obj) === 0;
|
|
24
|
+
}
|
|
25
|
+
export function objMapEntries(obj, func) {
|
|
26
|
+
return Object.entries(obj).map(([k, v]) => [k, func(k, v)]);
|
|
27
|
+
}
|
|
28
|
+
// Map over the values of the object
|
|
29
|
+
export function objMap(obj, func) {
|
|
30
|
+
return Object.fromEntries(objMapEntries(obj, func));
|
|
31
|
+
}
|
|
32
|
+
export function objFilter(obj, func) {
|
|
33
|
+
return Object.fromEntries(Object.entries(obj).filter(([k, v]) => func(k, v)));
|
|
34
|
+
}
|
|
35
|
+
export function deepFind(obj, func, depth = 10) {
|
|
36
|
+
assert(depth > 0, 'deepFind max depth reached');
|
|
37
|
+
if (func(obj)) {
|
|
38
|
+
return obj;
|
|
39
|
+
}
|
|
40
|
+
const entries = isObject(obj)
|
|
41
|
+
? Object.values(obj)
|
|
42
|
+
: Array.isArray(obj)
|
|
43
|
+
? obj
|
|
44
|
+
: [];
|
|
45
|
+
return entries.map((e) => deepFind(e, func, depth - 1)).find((v) => v);
|
|
46
|
+
}
|
|
47
|
+
// promiseObjectAll :: {k: Promise a} -> Promise {k: a}
|
|
48
|
+
export function promiseObjAll(obj) {
|
|
49
|
+
const promiseList = Object.entries(obj).map(([name, promise]) => promise.then((result) => [name, result]));
|
|
50
|
+
return Promise.all(promiseList).then(Object.fromEntries);
|
|
51
|
+
}
|
|
52
|
+
// Get the subset of the object from key list
|
|
53
|
+
export function pick(obj, keys) {
|
|
54
|
+
const ret = {};
|
|
55
|
+
const objKeys = Object.keys(obj);
|
|
56
|
+
for (const key of keys) {
|
|
57
|
+
if (objKeys.includes(key.toString())) {
|
|
58
|
+
ret[key] = obj[key];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return ret;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Returns a new object that recursively merges B into A
|
|
65
|
+
* Where there are conflicts, B takes priority over A
|
|
66
|
+
* If B has a value for a key that A does not have, B's value is used
|
|
67
|
+
* If B has a value for a key that A has, and both are objects, the merge recurses into those objects
|
|
68
|
+
* If B has a value for a key that A has, and both are arrays, the merge concatenates them with B's values taking priority
|
|
69
|
+
* @param a - The first object
|
|
70
|
+
* @param b - The second object
|
|
71
|
+
* @param max_depth - The maximum depth to recurse
|
|
72
|
+
* @param mergeArrays - If true, arrays will be concatenated instead of replaced
|
|
73
|
+
*/
|
|
74
|
+
export function objMerge(a, b, max_depth = 10, mergeArrays = false) {
|
|
75
|
+
// If we've reached the max depth, throw an error
|
|
76
|
+
if (max_depth === 0) {
|
|
77
|
+
throw new Error('objMerge tried to go too deep');
|
|
78
|
+
}
|
|
79
|
+
// If either A or B is not an object, return the other value
|
|
80
|
+
if (!isObject(a) || !isObject(b)) {
|
|
81
|
+
return (b ?? a);
|
|
82
|
+
}
|
|
83
|
+
// Initialize returned object with values from A
|
|
84
|
+
const ret = { ...a };
|
|
85
|
+
// Iterate over keys in B
|
|
86
|
+
for (const key in b) {
|
|
87
|
+
// If both A and B have the same key, recursively merge the values from B into A
|
|
88
|
+
if (isObject(a[key]) && isObject(b[key])) {
|
|
89
|
+
ret[key] = objMerge(a[key], b[key], max_depth - 1, mergeArrays);
|
|
90
|
+
}
|
|
91
|
+
// If A & B are both arrays, and we're merging them, concatenate them with B's values taking priority before A
|
|
92
|
+
else if (mergeArrays && Array.isArray(a[key]) && Array.isArray(b[key])) {
|
|
93
|
+
ret[key] = [...b[key], ...a[key]];
|
|
94
|
+
}
|
|
95
|
+
// If B has a value for the key, set the value to B's value
|
|
96
|
+
// This better handles the case where A has a value for the key, but B does not
|
|
97
|
+
// In which case we want to keep A's value
|
|
98
|
+
else if (b[key] !== undefined) {
|
|
99
|
+
ret[key] = b[key];
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Return the merged object
|
|
103
|
+
return ret;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Return a new object with the fields in b removed from a
|
|
107
|
+
* @param a Base object to remove fields from
|
|
108
|
+
* @param b The partial object to remove from the base object
|
|
109
|
+
* @param max_depth The maximum depth to recurse
|
|
110
|
+
* @param sliceArrays If true, arrays will have values sliced out instead of being removed entirely
|
|
111
|
+
*/
|
|
112
|
+
export function objOmit(a, b, max_depth = 10, sliceArrays = false) {
|
|
113
|
+
if (max_depth === 0) {
|
|
114
|
+
throw new Error('objSlice tried to go too deep');
|
|
115
|
+
}
|
|
116
|
+
if (!isObject(a) || !isObject(b)) {
|
|
117
|
+
return a;
|
|
118
|
+
}
|
|
119
|
+
const ret = {};
|
|
120
|
+
const aKeys = new Set(Object.keys(a));
|
|
121
|
+
const bKeys = new Set(Object.keys(b));
|
|
122
|
+
for (const key of aKeys.values()) {
|
|
123
|
+
if (bKeys.has(key)) {
|
|
124
|
+
if (sliceArrays && Array.isArray(a[key]) && Array.isArray(b[key])) {
|
|
125
|
+
ret[key] = a[key].filter((v) => !b[key].some((bv) => deepEquals(v, bv)));
|
|
126
|
+
}
|
|
127
|
+
else if (isObject(a[key]) && isObject(b[key])) {
|
|
128
|
+
const sliced = objOmit(a[key], b[key], max_depth - 1, sliceArrays);
|
|
129
|
+
if (Object.keys(sliced).length > 0) {
|
|
130
|
+
ret[key] = sliced;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
else if (!!b[key] == false) {
|
|
134
|
+
ret[key] = objOmit(a[key], b[key], max_depth - 1, sliceArrays);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
ret[key] = a[key];
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return ret;
|
|
142
|
+
}
|
|
143
|
+
export function objOmitKeys(obj, keys) {
|
|
144
|
+
return objFilter(obj, (k, _v) => !keys.includes(k));
|
|
145
|
+
}
|
|
146
|
+
export function invertKeysAndValues(data) {
|
|
147
|
+
return Object.fromEntries(Object.entries(data)
|
|
148
|
+
.filter(([_, value]) => value !== undefined && value !== null) // Filter out undefined and null values
|
|
149
|
+
.map(([key, value]) => [value, key]));
|
|
150
|
+
}
|
|
151
|
+
// Returns an object with the keys as values from an array and value set to true
|
|
152
|
+
export function arrayToObject(keys, val = true) {
|
|
153
|
+
return keys.reduce((result, k) => {
|
|
154
|
+
result[k] = val;
|
|
155
|
+
return result;
|
|
156
|
+
}, {});
|
|
157
|
+
}
|
|
158
|
+
export function stringifyObject(object, format = 'yaml', space) {
|
|
159
|
+
// run through JSON first because ethersBigNumberSerializer does not play nice with yamlStringify
|
|
160
|
+
// so we fix up in JSON, then parse and if required return yaml on processed JSON after
|
|
161
|
+
const json = JSON.stringify(object, ethersBigNumberSerializer, space);
|
|
162
|
+
if (format === 'json') {
|
|
163
|
+
return json;
|
|
164
|
+
}
|
|
165
|
+
return yamlStringify(JSON.parse(json), null, {
|
|
166
|
+
indent: space ?? 2,
|
|
167
|
+
sortMapEntries: true,
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Merges 2 objects showing any difference in value for common fields.
|
|
172
|
+
*/
|
|
173
|
+
export function diffObjMerge(actual, expected, maxDepth = 10) {
|
|
174
|
+
if (maxDepth === 0) {
|
|
175
|
+
throw new Error('diffObjMerge tried to go too deep');
|
|
176
|
+
}
|
|
177
|
+
let isDiff = false;
|
|
178
|
+
if (!isObject(actual) && !isObject(expected) && actual === expected) {
|
|
179
|
+
return {
|
|
180
|
+
isInvalid: isDiff,
|
|
181
|
+
mergedObject: actual,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
if (isNullish(actual) && isNullish(expected)) {
|
|
185
|
+
return { mergedObject: undefined, isInvalid: isDiff };
|
|
186
|
+
}
|
|
187
|
+
if (isObject(actual) && isObject(expected)) {
|
|
188
|
+
const ret = {};
|
|
189
|
+
const actualKeys = new Set(Object.keys(actual));
|
|
190
|
+
const expectedKeys = new Set(Object.keys(expected));
|
|
191
|
+
const allKeys = new Set([...actualKeys, ...expectedKeys]);
|
|
192
|
+
for (const key of allKeys.values()) {
|
|
193
|
+
if (actualKeys.has(key) && expectedKeys.has(key)) {
|
|
194
|
+
const { mergedObject, isInvalid } = diffObjMerge(actual[key], expected[key], maxDepth - 1) ?? {};
|
|
195
|
+
ret[key] = mergedObject;
|
|
196
|
+
isDiff ||= isInvalid;
|
|
197
|
+
}
|
|
198
|
+
else if (actualKeys.has(key) && !isNullish(actual[key])) {
|
|
199
|
+
ret[key] = {
|
|
200
|
+
actual: actual[key],
|
|
201
|
+
expected: '',
|
|
202
|
+
};
|
|
203
|
+
isDiff = true;
|
|
204
|
+
}
|
|
205
|
+
else if (!isNullish(expected[key])) {
|
|
206
|
+
ret[key] = {
|
|
207
|
+
actual: '',
|
|
208
|
+
expected: expected[key],
|
|
209
|
+
};
|
|
210
|
+
isDiff = true;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return {
|
|
214
|
+
isInvalid: isDiff,
|
|
215
|
+
mergedObject: ret,
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
// Merge the elements of the array to see if there are any differences
|
|
219
|
+
if (Array.isArray(actual) &&
|
|
220
|
+
Array.isArray(expected) &&
|
|
221
|
+
actual.length === expected.length) {
|
|
222
|
+
const merged = actual.reduce((acc, curr, idx) => {
|
|
223
|
+
const { isInvalid, mergedObject } = diffObjMerge(curr, expected[idx]);
|
|
224
|
+
acc[0].push(mergedObject);
|
|
225
|
+
acc[1] ||= isInvalid;
|
|
226
|
+
return acc;
|
|
227
|
+
}, [[], isDiff]);
|
|
228
|
+
return {
|
|
229
|
+
isInvalid: merged[1],
|
|
230
|
+
mergedObject: merged[0],
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
return {
|
|
234
|
+
mergedObject: { expected: expected ?? '', actual: actual ?? '' },
|
|
235
|
+
isInvalid: true,
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
// Recursively visit all the fields in an object and keep
|
|
239
|
+
// only those that describe mismatches
|
|
240
|
+
export function keepOnlyDiffObjects(obj) {
|
|
241
|
+
const result = {};
|
|
242
|
+
if (Array.isArray(obj)) {
|
|
243
|
+
return obj
|
|
244
|
+
.map((item) => (isObject(item) ? keepOnlyDiffObjects(item) : {}))
|
|
245
|
+
.filter((item) => !isObjEmpty(item));
|
|
246
|
+
}
|
|
247
|
+
else if (isObject(obj)) {
|
|
248
|
+
const casted = obj;
|
|
249
|
+
if (!isNullish(casted.expected) && !isNullish(casted.actual)) {
|
|
250
|
+
return obj;
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
const filtered = Object.fromEntries(Object.entries(obj)
|
|
254
|
+
.map(([key, value]) => [
|
|
255
|
+
key,
|
|
256
|
+
keepOnlyDiffObjects(value),
|
|
257
|
+
])
|
|
258
|
+
.filter(([_key, value]) => !isObjEmpty(value)));
|
|
259
|
+
// if this object has a type field we include to easily
|
|
260
|
+
// identify the type of the hook or ism
|
|
261
|
+
if (!isObjEmpty(filtered) && obj.type) {
|
|
262
|
+
filtered.type = obj.type;
|
|
263
|
+
}
|
|
264
|
+
return filtered;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
return result;
|
|
268
|
+
}
|
|
269
|
+
export function mustGet(obj, key) {
|
|
270
|
+
const value = obj[key];
|
|
271
|
+
if (!value) {
|
|
272
|
+
throw new Error(`Missing key ${key} in object ${JSON.stringify(obj)}`);
|
|
273
|
+
}
|
|
274
|
+
return value;
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Recursively applies `formatter` to the provided object
|
|
278
|
+
*
|
|
279
|
+
* @param obj
|
|
280
|
+
* @param transformer a user defined function that takes an object and transforms it.
|
|
281
|
+
* @param maxDepth the maximum depth that can be reached when going through nested fields of a property
|
|
282
|
+
*
|
|
283
|
+
* @throws if `maxDepth` is reached in an object property
|
|
284
|
+
*/
|
|
285
|
+
export function transformObj(obj, transformer, maxDepth = 15) {
|
|
286
|
+
return internalTransformObj(obj, transformer, [], maxDepth);
|
|
287
|
+
}
|
|
288
|
+
function internalTransformObj(obj, transformer, propPath, maxDepth) {
|
|
289
|
+
if (propPath.length > maxDepth) {
|
|
290
|
+
throw new Error(`transformObj went too deep. Max depth is ${maxDepth}`);
|
|
291
|
+
}
|
|
292
|
+
if (Array.isArray(obj)) {
|
|
293
|
+
return obj.map((obj) => internalTransformObj(obj, transformer, [...propPath], maxDepth));
|
|
294
|
+
}
|
|
295
|
+
else if (isObject(obj)) {
|
|
296
|
+
const newObj = Object.entries(obj)
|
|
297
|
+
.map(([key, value]) => {
|
|
298
|
+
return [
|
|
299
|
+
key,
|
|
300
|
+
internalTransformObj(value, transformer, [...propPath, key], maxDepth),
|
|
301
|
+
];
|
|
302
|
+
})
|
|
303
|
+
.filter(([_key, value]) => value !== undefined && value !== null);
|
|
304
|
+
return transformer(Object.fromEntries(newObj), propPath);
|
|
305
|
+
}
|
|
306
|
+
return transformer(obj, propPath);
|
|
307
|
+
}
|
|
308
|
+
export function sortArraysInObject(obj, sortFunction) {
|
|
309
|
+
// Check if the current object is an array
|
|
310
|
+
if (Array.isArray(obj)) {
|
|
311
|
+
return obj
|
|
312
|
+
.sort(sortFunction)
|
|
313
|
+
.map((item) => sortArraysInObject(item, sortFunction));
|
|
314
|
+
}
|
|
315
|
+
// Check if it's an object and not null or undefined
|
|
316
|
+
else if (isObject(obj)) {
|
|
317
|
+
return Object.fromEntries(Object.entries(obj).map(([key, value]) => [
|
|
318
|
+
key,
|
|
319
|
+
sortArraysInObject(value, sortFunction),
|
|
320
|
+
]));
|
|
321
|
+
}
|
|
322
|
+
return obj;
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Returns an object where only the keys from `a` that are not in `b` or are different values, are kept
|
|
326
|
+
*/
|
|
327
|
+
export function objDiff(a, b, areEquals = (a, b) => a === b) {
|
|
328
|
+
const bKeys = new Set(objKeys(b));
|
|
329
|
+
return objFilter(a, (key, value) => !bKeys.has(key) || !areEquals(value, b[key]));
|
|
330
|
+
}
|
|
331
|
+
//# sourceMappingURL=objects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objects.js","sourceRoot":"","sources":["../src/objects.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objects.test.d.ts","sourceRoot":"","sources":["../src/objects.test.ts"],"names":[],"mappings":""}
|