@reservoir0x/relay-kit-ui
Version:
Relay is the Fastest and Cheapest Way to Bridge and Transact Across Chains.
41 lines • 1.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.sha256 = void 0;
const sha2_js_1 = require("@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);
}
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);
}
function sha256(params) {
const str = normalizeAndStringify(params);
const bytes = new TextEncoder().encode(str);
const hash = (0, sha2_js_1.sha256)(bytes);
return [...hash].map((b) => Number(b).toString(16).padStart(2, '0')).join('');
}
exports.sha256 = sha256;
//# sourceMappingURL=hashing.js.map