@atproto/repo
Version:
atproto repo and MST implementation
35 lines • 1.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseObjByDef = exports.getAndParseByDef = exports.getAndParseRecord = void 0;
const common_1 = require("@atproto/common");
const error_1 = require("./error");
const util_1 = require("./util");
const getAndParseRecord = async (blocks, cid) => {
const bytes = blocks.get(cid);
if (!bytes) {
throw new error_1.MissingBlockError(cid, 'record');
}
const record = await (0, util_1.cborToLexRecord)(bytes);
return { record, bytes };
};
exports.getAndParseRecord = getAndParseRecord;
const getAndParseByDef = async (blocks, cid, def) => {
const bytes = blocks.get(cid);
if (!bytes) {
throw new error_1.MissingBlockError(cid, def.name);
}
return (0, exports.parseObjByDef)(bytes, cid, def);
};
exports.getAndParseByDef = getAndParseByDef;
const parseObjByDef = (bytes, cid, def) => {
const obj = (0, common_1.cborDecode)(bytes);
const res = def.schema.safeParse(obj);
if (res.success) {
return { obj: res.data, bytes };
}
else {
throw new error_1.UnexpectedObjectError(cid, def.name);
}
};
exports.parseObjByDef = parseObjByDef;
//# sourceMappingURL=parse.js.map