astro-loader-pocketbase
Version:
A content loader for Astro that uses the PocketBase API
35 lines (31 loc) • 714 B
text/typescript
import { z } from "astro/zod";
/**
* Schema for realtime data received from PocketBase.
*/
const realtimeDataSchema = z.object({
action: z.union([
z.literal("create"),
z.literal("update"),
z.literal("delete")
]),
record: z.object({
id: z.string(),
collectionName: z.string(),
collectionId: z.string()
})
});
/**
* Type for realtime data received from PocketBase.
*/
export type RealtimeData = z.infer<typeof realtimeDataSchema>;
/**
* Checks if the given data is realtime data received from PocketBase.
*/
export function isRealtimeData(data: unknown): data is RealtimeData {
try {
realtimeDataSchema.parse(data);
return true;
} catch {
return false;
}
}