@firmachain/firma-js
Version:
The Official FirmaChain Javascript SDK written in Typescript
43 lines (42 loc) • 1.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.serializeSignDoc = exports.makeSignDoc = exports.sortedJsonStringify = void 0;
/* eslint-disable @typescript-eslint/naming-convention */
var encoding_1 = require("@cosmjs/encoding");
var math_1 = require("@cosmjs/math");
function sortedObject(obj) {
if (typeof obj !== "object" || obj === null) {
return obj;
}
if (Array.isArray(obj)) {
return obj.map(sortedObject);
}
var sortedKeys = Object.keys(obj).sort();
var result = {};
// NOTE: Use forEach instead of reduce for performance with large objects eg Wasm code
sortedKeys.forEach(function (key) {
result[key] = sortedObject(obj[key]);
});
return result;
}
/** Returns a JSON string with objects sorted by key */
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
function sortedJsonStringify(obj) {
return JSON.stringify(sortedObject(obj));
}
exports.sortedJsonStringify = sortedJsonStringify;
function makeSignDoc(msgs, fee, chainId, memo, accountNumber, sequence) {
return {
chain_id: chainId,
account_number: math_1.Uint53.fromString(accountNumber.toString()).toString(),
sequence: math_1.Uint53.fromString(sequence.toString()).toString(),
fee: fee,
msgs: msgs,
memo: memo || "",
};
}
exports.makeSignDoc = makeSignDoc;
function serializeSignDoc(signDoc) {
return encoding_1.toUtf8(sortedJsonStringify(signDoc));
}
exports.serializeSignDoc = serializeSignDoc;