multiformats
Version:
Interface for multihash, multicodec, multibase and CID
35 lines • 926 B
JavaScript
export const codec = ({name, code, decode, encode}) => new Codec(name, code, encode, decode);
export class Encoder {
constructor(name, code, encode) {
this.name = name;
this.code = code;
this.encode = encode;
}
}
export class Decoder {
constructor(name, code, decode) {
this.name = name;
this.code = code;
this.decode = decode;
}
}
export class Codec {
constructor(name, code, encode, decode) {
this.name = name;
this.code = code;
this.encode = encode;
this.decode = decode;
}
get decoder() {
const {name, code, decode} = this;
const decoder = new Decoder(name, code, decode);
Object.defineProperty(this, 'decoder', { value: decoder });
return decoder;
}
get encoder() {
const {name, code, encode} = this;
const encoder = new Encoder(name, code, encode);
Object.defineProperty(this, 'encoder', { value: encoder });
return encoder;
}
}