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
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;
|
|
};
|