@atproto/repo
Version:
atproto repo and MST implementation
29 lines • 929 B
JavaScript
import { decode } from '@atproto/lex-cbor';
import { MissingBlockError, UnexpectedObjectError } from './error.js';
import { cborToLexRecord } from './util.js';
export const getAndParseRecord = async (blocks, cid) => {
const bytes = blocks.get(cid);
if (!bytes) {
throw new MissingBlockError(cid, 'record');
}
const record = cborToLexRecord(bytes);
return { record, bytes };
};
export const getAndParseByDef = async (blocks, cid, def) => {
const bytes = blocks.get(cid);
if (!bytes) {
throw new MissingBlockError(cid, def.name);
}
return parseObjByDef(bytes, cid, def);
};
export const parseObjByDef = (bytes, cid, def) => {
const obj = decode(bytes);
const res = def.schema.safeParse(obj);
if (res.success) {
return { obj: res.data, bytes };
}
else {
throw new UnexpectedObjectError(cid, def.name);
}
};
//# sourceMappingURL=parse.js.map