1import { schema as s } from "jazz-tools";2import type { WriteHandle } from "../runtime/write-handle.ts";3import { useLiveQuery, useTableMutations } from "./live-data.ts";45const app = s.defineApp({6 records: s.table({ title: s.string(), archived: s.boolean() }),7});89function TypedLiveDataContract() {10 const query = useLiveQuery(() => app.records.select("title"), []);11 const mutations = useTableMutations(app.records);12 const title: string | undefined = query.rows[0]?.title;13 const inserted: WriteHandle<s.RowOf<typeof app.records>> = mutations.insert({14 title: "typed",15 archived: false,16 });17 // @ts-expect-error exact select projections must omit unselected columns.18 query.rows[0]?.archived;19 return { inserted, title };20}2122Deno.test("Preact live-data hooks retain exact query and table types", () => {23 if (typeof TypedLiveDataContract !== "function") throw new Error("hook contract was not defined");24});