UNPKG

@didtools/codecs

Version:
36 lines (35 loc) 923 B
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());