@reservoir0x/relay-kit-ui
Version:
Relay is the Fastest and Cheapest Way to Bridge and Transact Across Chains.
38 lines • 1.37 kB
JavaScript
import { sha256 as _sha256 } from '@noble/hashes/sha2.js';
function normalizeAndStringify(obj) {
const replacer = (_key, value) => {
if (typeof value === 'bigint')
return value.toString();
if (typeof value === 'undefined')
return null;
if (typeof value === 'object' &&
value !== null &&
'toString' in value &&
typeof value.toString === 'function') {
return value.toString();
}
return value;
};
const sortObject = (obj) => {
if (obj === null || typeof obj !== 'object') {
return obj;
}
if (Array.isArray(obj)) {
return obj.map(sortObject);
}
// Convert object to array of [key, value] pairs and sort by key
const sortedEntries = Object.entries(obj)
.sort(([keyA], [keyB]) => keyA.localeCompare(keyB))
.map(([key, value]) => [key, sortObject(value)]);
return sortedEntries;
};
const sorted = sortObject(obj);
return JSON.stringify(sorted, replacer);
}
export function sha256(params) {
const str = normalizeAndStringify(params);
const bytes = new TextEncoder().encode(str);
const hash = _sha256(bytes);
return [...hash].map((b) => Number(b).toString(16).padStart(2, '0')).join('');
}
//# sourceMappingURL=hashing.js.map