@waku/rln
Version:
RLN (Rate Limiting Nullifier) implementation for Waku
45 lines (42 loc) • 1.72 kB
JavaScript
import { fromString } from '../../../../node_modules/uint8arrays/dist/src/from-string.js';
import '../../../../node_modules/multiformats/dist/src/bases/base10.js';
import '../../../../node_modules/multiformats/dist/src/bases/base16.js';
import '../../../../node_modules/multiformats/dist/src/bases/base2.js';
import '../../../../node_modules/multiformats/dist/src/bases/base256emoji.js';
import '../../../../node_modules/multiformats/dist/src/bases/base32.js';
import '../../../../node_modules/multiformats/dist/src/bases/base36.js';
import '../../../../node_modules/multiformats/dist/src/bases/base58.js';
import '../../../../node_modules/multiformats/dist/src/bases/base64.js';
import '../../../../node_modules/multiformats/dist/src/bases/base8.js';
import '../../../../node_modules/multiformats/dist/src/bases/identity.js';
import '../../../../node_modules/multiformats/dist/src/codecs/json.js';
/**
* Convert input to a byte array.
*
* Handles both `0x` prefixed and non-prefixed strings.
*/
function hexToBytes(hex) {
if (typeof hex === "string") {
const _hex = hex.replace(/^0x/i, "");
return fromString(_hex.toLowerCase(), "base16");
}
return hex;
}
/**
* Encode utf-8 string to byte array.
*/
const utf8ToBytes = (s) => fromString(s, "utf8");
/**
* Concatenate using Uint8Arrays as `Buffer` has a different behavior with `DataView`
*/
function concat(byteArrays, totalLength) {
const len = byteArrays.reduce((acc, curr) => acc + curr.length, 0);
const res = new Uint8Array(len);
let offset = 0;
for (const bytes of byteArrays) {
res.set(bytes, offset);
offset += bytes.length;
}
return res;
}
export { concat, hexToBytes, utf8ToBytes };