You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

37 lines
729 B
TypeScript

import { z } from "./deps/zod.ts";
import { ReplacerFn, ReviverFn, sig } from "./deps/yaypi.ts";
import { MaybePersistedSchema, Schema } from "./schema.ts";
export const Api = {
v1: {
listSchemas: sig(z.number().nullable(), z.array(Schema)),
saveSchema: sig(MaybePersistedSchema, Schema),
},
};
export const reviver: ReviverFn = (key, value) => {
if (typeof value !== "object") {
return value;
}
if ("__map" in value) {
delete value["__map"];
return new Map(Object.entries(value));
}
return value;
};
export const replacer: ReplacerFn = (key: string, value: any) => {
if (value instanceof Map) {
const res = Object.fromEntries(value.entries());
res["__map"] = 0;
return res;
}
return value;
};