@hyperlane-xyz/utils 0.0.0-beta-20251201221151

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/README.md +20 -0
  2. package/dist/addresses.d.ts +65 -0
  3. package/dist/addresses.d.ts.map +1 -0
  4. package/dist/addresses.js +475 -0
  5. package/dist/addresses.js.map +1 -0
  6. package/dist/addresses.test.d.ts +2 -0
  7. package/dist/addresses.test.d.ts.map +1 -0
  8. package/dist/addresses.test.js +68 -0
  9. package/dist/addresses.test.js.map +1 -0
  10. package/dist/amount.d.ts +70 -0
  11. package/dist/amount.d.ts.map +1 -0
  12. package/dist/amount.js +143 -0
  13. package/dist/amount.js.map +1 -0
  14. package/dist/amount.test.d.ts +2 -0
  15. package/dist/amount.test.d.ts.map +1 -0
  16. package/dist/amount.test.js +113 -0
  17. package/dist/amount.test.js.map +1 -0
  18. package/dist/arrays.d.ts +11 -0
  19. package/dist/arrays.d.ts.map +1 -0
  20. package/dist/arrays.js +26 -0
  21. package/dist/arrays.js.map +1 -0
  22. package/dist/arrays.test.d.ts +2 -0
  23. package/dist/arrays.test.d.ts.map +1 -0
  24. package/dist/arrays.test.js +77 -0
  25. package/dist/arrays.test.js.map +1 -0
  26. package/dist/async.d.ts +66 -0
  27. package/dist/async.d.ts.map +1 -0
  28. package/dist/async.js +146 -0
  29. package/dist/async.js.map +1 -0
  30. package/dist/async.test.d.ts +2 -0
  31. package/dist/async.test.d.ts.map +1 -0
  32. package/dist/async.test.js +204 -0
  33. package/dist/async.test.js.map +1 -0
  34. package/dist/base58.d.ts +5 -0
  35. package/dist/base58.d.ts.map +1 -0
  36. package/dist/base58.js +15 -0
  37. package/dist/base58.js.map +1 -0
  38. package/dist/base58.test.d.ts +2 -0
  39. package/dist/base58.test.d.ts.map +1 -0
  40. package/dist/base58.test.js +31 -0
  41. package/dist/base58.test.js.map +1 -0
  42. package/dist/base64.d.ts +3 -0
  43. package/dist/base64.d.ts.map +1 -0
  44. package/dist/base64.js +25 -0
  45. package/dist/base64.js.map +1 -0
  46. package/dist/base64.test.d.ts +2 -0
  47. package/dist/base64.test.d.ts.map +1 -0
  48. package/dist/base64.test.js +54 -0
  49. package/dist/base64.test.js.map +1 -0
  50. package/dist/big-numbers.d.ts +50 -0
  51. package/dist/big-numbers.d.ts.map +1 -0
  52. package/dist/big-numbers.js +80 -0
  53. package/dist/big-numbers.js.map +1 -0
  54. package/dist/big-numbers.test.d.ts +2 -0
  55. package/dist/big-numbers.test.d.ts.map +1 -0
  56. package/dist/big-numbers.test.js +96 -0
  57. package/dist/big-numbers.test.js.map +1 -0
  58. package/dist/calldata.d.ts +3 -0
  59. package/dist/calldata.d.ts.map +1 -0
  60. package/dist/calldata.js +4 -0
  61. package/dist/calldata.js.map +1 -0
  62. package/dist/checkpoints.d.ts +6 -0
  63. package/dist/checkpoints.d.ts.map +1 -0
  64. package/dist/checkpoints.js +24 -0
  65. package/dist/checkpoints.js.map +1 -0
  66. package/dist/checkpoints.test.d.ts +2 -0
  67. package/dist/checkpoints.test.d.ts.map +1 -0
  68. package/dist/checkpoints.test.js +105 -0
  69. package/dist/checkpoints.test.js.map +1 -0
  70. package/dist/config.d.ts +25 -0
  71. package/dist/config.d.ts.map +1 -0
  72. package/dist/config.js +84 -0
  73. package/dist/config.js.map +1 -0
  74. package/dist/domains.d.ts +2 -0
  75. package/dist/domains.d.ts.map +1 -0
  76. package/dist/domains.js +6 -0
  77. package/dist/domains.js.map +1 -0
  78. package/dist/env.d.ts +4 -0
  79. package/dist/env.d.ts.map +1 -0
  80. package/dist/env.js +17 -0
  81. package/dist/env.js.map +1 -0
  82. package/dist/env.test.d.ts +2 -0
  83. package/dist/env.test.d.ts.map +1 -0
  84. package/dist/env.test.js +16 -0
  85. package/dist/env.test.js.map +1 -0
  86. package/dist/eslint-rules/index.d.ts +157 -0
  87. package/dist/eslint-rules/index.d.ts.map +1 -0
  88. package/dist/eslint-rules/index.js +58 -0
  89. package/dist/eslint-rules/index.js.map +1 -0
  90. package/dist/eslint-rules/no-restricted-imports-from-exports.d.ts +4 -0
  91. package/dist/eslint-rules/no-restricted-imports-from-exports.d.ts.map +1 -0
  92. package/dist/eslint-rules/no-restricted-imports-from-exports.js +141 -0
  93. package/dist/eslint-rules/no-restricted-imports-from-exports.js.map +1 -0
  94. package/dist/eslint-rules/no-restricted-imports-from-exports.test.d.ts +2 -0
  95. package/dist/eslint-rules/no-restricted-imports-from-exports.test.d.ts.map +1 -0
  96. package/dist/eslint-rules/no-restricted-imports-from-exports.test.js +258 -0
  97. package/dist/eslint-rules/no-restricted-imports-from-exports.test.js.map +1 -0
  98. package/dist/eslint-rules/sort-yaml-arrays.d.ts +39 -0
  99. package/dist/eslint-rules/sort-yaml-arrays.d.ts.map +1 -0
  100. package/dist/eslint-rules/sort-yaml-arrays.js +74 -0
  101. package/dist/eslint-rules/sort-yaml-arrays.js.map +1 -0
  102. package/dist/eslint-rules/sort-yaml-arrays.test.d.ts +2 -0
  103. package/dist/eslint-rules/sort-yaml-arrays.test.d.ts.map +1 -0
  104. package/dist/eslint-rules/sort-yaml-arrays.test.js +621 -0
  105. package/dist/eslint-rules/sort-yaml-arrays.test.js.map +1 -0
  106. package/dist/ids.d.ts +20 -0
  107. package/dist/ids.d.ts.map +1 -0
  108. package/dist/ids.js +42 -0
  109. package/dist/ids.js.map +1 -0
  110. package/dist/ids.test.d.ts +2 -0
  111. package/dist/ids.test.d.ts.map +1 -0
  112. package/dist/ids.test.js +39 -0
  113. package/dist/ids.test.js.map +1 -0
  114. package/dist/index.d.ts +30 -0
  115. package/dist/index.d.ts.map +1 -0
  116. package/dist/index.js +29 -0
  117. package/dist/index.js.map +1 -0
  118. package/dist/logging.d.ts +32 -0
  119. package/dist/logging.d.ts.map +1 -0
  120. package/dist/logging.js +146 -0
  121. package/dist/logging.js.map +1 -0
  122. package/dist/logging.test.d.ts +2 -0
  123. package/dist/logging.test.d.ts.map +1 -0
  124. package/dist/logging.test.js +35 -0
  125. package/dist/logging.test.js.map +1 -0
  126. package/dist/math.d.ts +6 -0
  127. package/dist/math.d.ts.map +1 -0
  128. package/dist/math.js +21 -0
  129. package/dist/math.js.map +1 -0
  130. package/dist/math.test.d.ts +2 -0
  131. package/dist/math.test.d.ts.map +1 -0
  132. package/dist/math.test.js +45 -0
  133. package/dist/math.test.js.map +1 -0
  134. package/dist/messages.d.ts +22 -0
  135. package/dist/messages.d.ts.map +1 -0
  136. package/dist/messages.js +64 -0
  137. package/dist/messages.js.map +1 -0
  138. package/dist/multisig.d.ts +4 -0
  139. package/dist/multisig.d.ts.map +1 -0
  140. package/dist/multisig.js +53 -0
  141. package/dist/multisig.js.map +1 -0
  142. package/dist/objects.d.ts +74 -0
  143. package/dist/objects.d.ts.map +1 -0
  144. package/dist/objects.js +331 -0
  145. package/dist/objects.js.map +1 -0
  146. package/dist/objects.test.d.ts +2 -0
  147. package/dist/objects.test.d.ts.map +1 -0
  148. package/dist/objects.test.js +655 -0
  149. package/dist/objects.test.js.map +1 -0
  150. package/dist/result.d.ts +11 -0
  151. package/dist/result.d.ts.map +1 -0
  152. package/dist/result.js +7 -0
  153. package/dist/result.js.map +1 -0
  154. package/dist/sets.d.ts +5 -0
  155. package/dist/sets.d.ts.map +1 -0
  156. package/dist/sets.js +33 -0
  157. package/dist/sets.js.map +1 -0
  158. package/dist/sets.test.d.ts +2 -0
  159. package/dist/sets.test.d.ts.map +1 -0
  160. package/dist/sets.test.js +35 -0
  161. package/dist/sets.test.js.map +1 -0
  162. package/dist/strings.d.ts +11 -0
  163. package/dist/strings.d.ts.map +1 -0
  164. package/dist/strings.js +49 -0
  165. package/dist/strings.js.map +1 -0
  166. package/dist/strings.test.d.ts +2 -0
  167. package/dist/strings.test.d.ts.map +1 -0
  168. package/dist/strings.test.js +42 -0
  169. package/dist/strings.test.js.map +1 -0
  170. package/dist/typeof.d.ts +3 -0
  171. package/dist/typeof.d.ts.map +1 -0
  172. package/dist/typeof.js +7 -0
  173. package/dist/typeof.js.map +1 -0
  174. package/dist/typeof.test.d.ts +2 -0
  175. package/dist/typeof.test.d.ts.map +1 -0
  176. package/dist/typeof.test.js +34 -0
  177. package/dist/typeof.test.js.map +1 -0
  178. package/dist/types.d.ts +111 -0
  179. package/dist/types.d.ts.map +1 -0
  180. package/dist/types.js +23 -0
  181. package/dist/types.js.map +1 -0
  182. package/dist/url.d.ts +4 -0
  183. package/dist/url.d.ts.map +1 -0
  184. package/dist/url.js +34 -0
  185. package/dist/url.js.map +1 -0
  186. package/dist/url.test.d.ts +2 -0
  187. package/dist/url.test.d.ts.map +1 -0
  188. package/dist/url.test.js +29 -0
  189. package/dist/url.test.js.map +1 -0
  190. package/dist/validation.d.ts +2 -0
  191. package/dist/validation.d.ts.map +1 -0
  192. package/dist/validation.js +6 -0
  193. package/dist/validation.js.map +1 -0
  194. package/dist/validation.test.d.ts +2 -0
  195. package/dist/validation.test.d.ts.map +1 -0
  196. package/dist/validation.test.js +11 -0
  197. package/dist/validation.test.js.map +1 -0
  198. package/dist/validator.d.ts +30 -0
  199. package/dist/validator.d.ts.map +1 -0
  200. package/dist/validator.js +76 -0
  201. package/dist/validator.js.map +1 -0
  202. package/dist/yaml.d.ts +22 -0
  203. package/dist/yaml.d.ts.map +1 -0
  204. package/dist/yaml.js +293 -0
  205. package/dist/yaml.js.map +1 -0
  206. package/dist/yaml.test.d.ts +2 -0
  207. package/dist/yaml.test.d.ts.map +1 -0
  208. package/dist/yaml.test.js +519 -0
  209. package/dist/yaml.test.js.map +1 -0
  210. package/package.json +80 -0
@@ -0,0 +1,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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"}
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=objects.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objects.test.d.ts","sourceRoot":"","sources":["../src/objects.test.ts"],"names":[],"mappings":""}