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