@didtools/codecs
Version:
Common codecs for DID packages.
36 lines (35 loc) • 923 B
JavaScript
import { CID } from 'multiformats/cid';
import { Type } from 'codeco';
/**
* Passthrough codeco codec for CID.
*/ export const cid = new Type('CID', (input)=>{
try {
return !!CID.asCID(input);
} catch (e) {
return false;
}
}, (input, context)=>{
try {
const cid = CID.asCID(input);
if (!cid) return context.failure(`Value ${String(input)} can not be accepted as CID`);
return context.success(cid);
} catch {
return context.failure();
}
}, (cid)=>cid);
/**
* codeco codec for CID encoded as string.
*/ export const cidAsString = new Type('CID-as-string', (input)=>{
try {
return !!CID.asCID(input);
} catch (e) {
return false;
}
}, (input, context)=>{
try {
const cid = CID.parse(input);
return context.success(cid);
} catch {
return context.failure();
}
}, (cid)=>cid.toString());