@atproto/repo
Version:
atproto repo and MST implementation
100 lines • 2.4 kB
JavaScript
import { z } from 'zod';
import { ifCid } from '@atproto/lex-data';
// Repo nodes
// ---------------
const cidSchema = z.unknown().transform((input, ctx) => {
const cid = ifCid(input);
if (cid)
return cid;
ctx.addIssue({
code: z.ZodIssueCode.custom,
message: 'Not a valid CID',
});
return z.NEVER;
});
const _unsignedCommit = z.object({
did: z.string(),
version: z.literal(3),
data: cidSchema,
rev: z.string(),
// `prev` added for backwards compatibility with v2, no requirement of keeping around history
prev: cidSchema.nullable(),
});
const commit = z.object({
did: z.string(),
version: z.literal(3),
data: cidSchema,
rev: z.string(),
prev: cidSchema.nullable(),
sig: z.instanceof((Uint8Array)),
});
const legacyV2Commit = z.object({
did: z.string(),
version: z.literal(2),
data: cidSchema,
rev: z.string().optional(),
prev: cidSchema.nullable(),
sig: z.instanceof((Uint8Array)),
});
const versionedCommit = z.discriminatedUnion('version', [
commit,
legacyV2Commit,
]);
export const schema = {
cid: cidSchema,
carHeader: z.object({
version: z.literal(1),
roots: z.array(cidSchema),
}),
bytes: z.instanceof((Uint8Array)),
string: z.string(),
array: z.array(z.unknown()),
map: z.record(z.string(), z.unknown()),
unknown: z.unknown(),
commit,
legacyV2Commit,
versionedCommit,
};
export const def = {
cid: {
name: 'cid',
schema: schema.cid,
},
carHeader: {
name: 'CAR header',
schema: schema.carHeader,
},
bytes: {
name: 'bytes',
schema: schema.bytes,
},
string: {
name: 'string',
schema: schema.string,
},
map: {
name: 'map',
schema: schema.map,
},
unknown: {
name: 'unknown',
schema: schema.unknown,
},
commit: {
name: 'commit',
schema: schema.commit,
},
versionedCommit: {
name: 'versioned_commit',
schema: schema.versionedCommit,
},
};
// Repo Operations
// ---------------
export var WriteOpAction;
(function (WriteOpAction) {
WriteOpAction["Create"] = "create";
WriteOpAction["Update"] = "update";
WriteOpAction["Delete"] = "delete";
})(WriteOpAction || (WriteOpAction = {}));
//# sourceMappingURL=types.js.map