1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
import { z } from "zod";
import { zCursorV2 } from "./pagination";
export const DEFAULT_NUM_HIGHLIGHTS_PER_PAGE = 20;
const zHighlightColorSchema = z.enum(["yellow", "red", "green", "blue"]);
export type ZHighlightColor = z.infer<typeof zHighlightColorSchema>;
export const SUPPORTED_HIGHLIGHT_COLORS = zHighlightColorSchema.options;
const zHighlightBaseSchema = z.object({
bookmarkId: z.string(),
startOffset: z.number(),
endOffset: z.number(),
color: zHighlightColorSchema.default("yellow"),
text: z.string().nullable(),
note: z.string().nullable(),
});
export const zHighlightSchema = zHighlightBaseSchema.merge(
z.object({
id: z.string(),
userId: z.string(),
createdAt: z.date(),
}),
);
export type ZHighlight = z.infer<typeof zHighlightSchema>;
export const zNewHighlightSchema = zHighlightBaseSchema;
export const zUpdateHighlightSchema = z.object({
highlightId: z.string(),
color: zHighlightColorSchema.optional(),
note: z.string().nullable().optional(),
});
export const zGetAllHighlightsResponseSchema = z.object({
highlights: z.array(zHighlightSchema),
nextCursor: zCursorV2.nullable(),
});
export type ZGetAllHighlightsResponse = z.infer<
typeof zGetAllHighlightsResponseSchema
>;
|