If you’re looking for the equivalent of hash_hmac('sha1', 'string', 'secret'); in JavaScript, then here you go:
async function hmac_sha1 (str, secret) {
// see https://stackoverflow.com/a/47332317/1134119
let enc = new TextEncoder("utf-8");
let key = await window.crypto.subtle.importKey(
"raw", // raw format of the key - should be Uint8Array
enc.encode(secret),
{ // algorithm details
name: "HMAC",
hash: {name: "SHA-1"}
},
false, // export = false
["sign", "verify"] // what this key can do
);
let signature = await window.crypto.subtle.sign(
"HMAC",
key,
enc.encode(str)
);
let b = new Uint8Array(signature);
return Array.prototype.map.call(b, x => x.toString(16).padStart(2, '0')).join("");
}