@waku/rln
Version:
RLN (Rate Limiting Nullifier) implementation for Waku
31 lines (28 loc) • 834 B
JavaScript
import { hexlify, arrayify } from '../../../bytes/lib.esm/index.js';
import { Coder } from './abstract-coder.js';
class DynamicBytesCoder extends Coder {
constructor(type, localName) {
super(type, type, localName, true);
}
defaultValue() {
return "0x";
}
encode(writer, value) {
value = arrayify(value);
let length = writer.writeValue(value.length);
length += writer.writeBytes(value);
return length;
}
decode(reader) {
return reader.readBytes(reader.readValue().toNumber(), true);
}
}
class BytesCoder extends DynamicBytesCoder {
constructor(localName) {
super("bytes", localName);
}
decode(reader) {
return reader.coerce(this.name, hexlify(super.decode(reader)));
}
}
export { BytesCoder, DynamicBytesCoder };