@ceramicnetwork/codecs
Version:
Ceramic Codecs
51 lines • 1.34 kB
JavaScript
import { CID } from 'multiformats/cid';
import { Type } from 'codeco';
import { CAR, CARFactory } from 'cartonne';
import * as DAG_JOSE from 'dag-jose';
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 ${cid} can not be accepted as CID`);
return context.success(cid);
}
catch {
return context.failure();
}
}, (cid) => cid);
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());
const carFactory = new CARFactory();
carFactory.codecs.add(DAG_JOSE);
export const carAsUint8Array = new Type('CAR-as-uint8array', (input) => {
return input != null && input instanceof CAR;
}, (input, context) => {
try {
return context.success(carFactory.fromBytes(input));
}
catch {
return context.failure();
}
}, (car) => car.bytes);
//# sourceMappingURL=ipld.js.map