@znode/sign
Version:
signature algorithm
34 lines (33 loc) • 956 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.sign = void 0;
const hmac_1 = require("@zodash/hmac");
const qs = require("@zcorky/query-string");
function sign(data, secret) {
const query = omitUndefined(data.query);
const queryText = stringify(query, qs.stringify);
const body = omitUndefined(data.body);
const bodyText = stringify(body, qs.stringify);
const text = [queryText, bodyText].join('');
// hmac sha512
return hmac_1.hmacSHA256(text, secret);
}
exports.sign = sign;
function omitUndefined(data) {
if (!data)
return {};
return Object.keys(data).reduce((all, key) => {
if (typeof data[key] !== 'undefined') {
all[key] = data[key];
}
return all;
}, {});
}
function stringify(v, stringifyFn) {
if (!v)
return '';
if (typeof v === 'string')
return v;
return stringifyFn(v);
}
exports.default = sign;