Skip to content

Commit 9eef820

Browse files
committed
fix types
1 parent b10ee28 commit 9eef820

File tree

4 files changed

+44
-29
lines changed

4 files changed

+44
-29
lines changed

src/create-zero-composables.test.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import {
33
createCRUDBuilder,
44
createSchema,
55
defineMutator,
6-
defineMutators,
7-
defineQueries,
6+
defineMutatorsWithType,
7+
defineQueriesWithType,
88
defineQuery,
99
number,
1010
string,
@@ -85,6 +85,7 @@ describe('createZeroComposables', () => {
8585

8686
it('useQuery works whithout explicitly calling useZero', async () => {
8787
const crud = createCRUDBuilder(testSchema)
88+
const defineMutators = defineMutatorsWithType<typeof testSchema>()
8889
const mutators = defineMutators({
8990
test: {
9091
insert: defineMutator(
@@ -108,6 +109,7 @@ describe('createZeroComposables', () => {
108109
await zero.mutate(mutators.test.insert({ id: 2, name: 'test2' })).client
109110

110111
const zql = createBuilder(testSchema)
112+
const defineQueries = defineQueriesWithType<typeof testSchema>()
111113
const queries = defineQueries({
112114
byId: defineQuery(
113115
z.number(),

src/query.test.ts

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
11
import type { TTL } from '@rocicorp/zero'
2-
import { createBuilder, createCRUDBuilder, createSchema, defineMutator, defineMutators, defineQueries, defineQuery, number, string, table, Zero } from '@rocicorp/zero'
2+
import {
3+
createBuilder,
4+
createCRUDBuilder,
5+
createSchema,
6+
defineMutator,
7+
defineMutatorsWithType,
8+
defineQueriesWithType,
9+
defineQuery,
10+
number,
11+
string,
12+
table,
13+
Zero,
14+
} from '@rocicorp/zero'
315
import { describe, expect, it, onTestFinished, vi } from 'vitest'
416
import { nextTick, ref, watchEffect } from 'vue'
517
import z from 'zod'
@@ -22,6 +34,7 @@ async function setupTestEnvironment() {
2234
const userID = ref('asdf')
2335

2436
const crud = createCRUDBuilder(schema)
37+
const defineMutators = defineMutatorsWithType<typeof schema>()
2538
const mutators = defineMutators({
2639
table: {
2740
insert: defineMutator(
@@ -52,6 +65,7 @@ async function setupTestEnvironment() {
5265
await zero.value.mutate(mutators.table.insert({ a: 2, b: 'b' })).client
5366

5467
const zql = createBuilder(schema)
68+
const defineQueries = defineQueriesWithType<typeof schema>()
5569
const queries = defineQueries({
5670
byId: defineQuery(
5771
z.number(),
@@ -274,6 +288,7 @@ describe('useQuery', () => {
274288

275289
it('can still be used without createZero', async () => {
276290
const crud = createCRUDBuilder(schema)
291+
const defineMutators = defineMutatorsWithType<typeof schema>()
277292
const mutators = defineMutators({
278293
table: {
279294
insert: defineMutator(
@@ -295,6 +310,7 @@ describe('useQuery', () => {
295310
await zero.mutate(mutators.table.insert({ a: 2, b: 'b' })).client
296311

297312
const zql = createBuilder(schema)
313+
const defineQueries = defineQueriesWithType<typeof schema>()
298314
const queries = defineQueries({
299315
table: defineQuery(
300316
() => zql.table,

src/view.test.ts

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import {
66
createCRUDBuilder,
77
createSchema,
88
defineMutator,
9-
defineMutators,
10-
defineQueries,
9+
defineMutatorsWithType,
10+
defineQueriesWithType,
1111
defineQuery,
1212
number,
1313
relationships,
@@ -21,13 +21,6 @@ import z from 'zod'
2121
import { addContextToQuery } from './query'
2222
import { VueView, vueViewFactory } from './view'
2323

24-
type AllSchemas = typeof simpleSchema & typeof collapseSchema & typeof treeSchema
25-
declare module '@rocicorp/zero' {
26-
interface DefaultTypes {
27-
schema: AllSchemas
28-
}
29-
}
30-
3124
const simpleSchema = createSchema({
3225
tables: [
3326
table('table')
@@ -40,7 +33,8 @@ const simpleSchema = createSchema({
4033
})
4134

4235
function setupSimple() {
43-
const crud = createCRUDBuilder<AllSchemas>(simpleSchema)
36+
const crud = createCRUDBuilder(simpleSchema)
37+
const defineMutators = defineMutatorsWithType<typeof simpleSchema>()
4438
const mutators = defineMutators({
4539
insert: defineMutator(
4640
z.object({ a: z.number(), b: z.string() }),
@@ -73,6 +67,7 @@ function setupSimple() {
7367
})
7468

7569
const zql = createBuilder(simpleSchema)
70+
const defineQueries = defineQueriesWithType<typeof simpleSchema>()
7671
const queries = defineQueries({
7772
table: defineQuery(() => zql.table),
7873
})
@@ -105,7 +100,8 @@ const treeSchema = createSchema({
105100
})
106101

107102
function setupTree() {
108-
const crud = createCRUDBuilder<AllSchemas>(treeSchema)
103+
const crud = createCRUDBuilder(treeSchema)
104+
const defineMutators = defineMutatorsWithType<typeof treeSchema>()
109105
const mutators = defineMutators({
110106
insert: defineMutator(
111107
z.object({ id: z.number(), name: z.string(), data: z.string().optional().nullable(), childID: z.number().nullable() }),
@@ -146,6 +142,7 @@ function setupTree() {
146142
})
147143

148144
const zql = createBuilder(treeSchema)
145+
const defineQueries = defineQueriesWithType<typeof treeSchema>()
149146
const queries = defineQueries({
150147
table: defineQuery(() => zql.tree.related('children')),
151148
one: defineQuery(() => zql.tree.related('children').one()),
@@ -211,6 +208,7 @@ function setupCollapse() {
211208
})
212209

213210
const zql = createBuilder(collapseSchema)
211+
const defineQueries = defineQueriesWithType<typeof collapseSchema>()
214212
const queries = defineQueries({
215213
issuesWithLabelsQuery: defineQuery(() => zql.issue.related('labels')),
216214
})
@@ -224,9 +222,7 @@ describe('vueView', () => {
224222
it('basics', async () => {
225223
const { zero, mutators, tableQuery } = setupSimple()
226224

227-
// @ts-expect-error - We can't augment the zero instance with the schema, because we're using multiple schemas
228225
await zero.mutate(mutators.insert({ a: 1, b: 'a' })).client
229-
// @ts-expect-error - We can't augment the zero instance with the schema, because we're using multiple schemas
230226
await zero.mutate(mutators.insert({ a: 2, b: 'b' })).client
231227

232228
const view = zero.materialize(
@@ -252,7 +248,6 @@ describe('vueView', () => {
252248
// TODO: Test with a real resolver
253249
// expect(view.status).toEqual("complete");
254250

255-
// @ts-expect-error - We can't augment the zero instance with the schema, because we're using multiple schemas
256251
await zero.mutate(mutators.insert({ a: 3, b: 'c' })).client
257252

258253
expect(view.data).toMatchInlineSnapshot(`
@@ -275,9 +270,7 @@ describe('vueView', () => {
275270
]
276271
`)
277272

278-
// @ts-expect-error - We can't augment the zero instance with the schema, because we're using multiple schemas
279273
await zero.mutate(mutators.delete({ a: 1 })).client
280-
// @ts-expect-error - We can't augment the zero instance with the schema, because we're using multiple schemas
281274
await zero.mutate(mutators.delete({ a: 2 })).client
282275

283276
expect(view.data).toMatchInlineSnapshot(`
@@ -290,7 +283,6 @@ describe('vueView', () => {
290283
]
291284
`)
292285

293-
// @ts-expect-error - We can't augment the zero instance with the schema, because we're using multiple schemas
294286
await zero.mutate(mutators.delete({ a: 3 })).client
295287

296288
expect(view.data).toEqual([])
@@ -305,7 +297,6 @@ describe('vueView', () => {
305297
expect(view.data?.length).toBe(0)
306298

307299
for (const i in [...Array.from({ length: iterations }).keys()]) {
308-
// @ts-expect-error - We can't augment the zero instance with the schema, because we're using multiple schemas
309300
await zero.mutate(mutators.insert({ a: Number(i), b: 'a' })).client
310301
}
311302

test/index.test.ts

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,14 @@
1-
import { createBuilder, createCRUDBuilder, createSchema, defineMutator, defineMutators, defineQueries, defineQuery, string, table } from '@rocicorp/zero'
1+
import {
2+
createBuilder,
3+
createCRUDBuilder,
4+
createSchema,
5+
defineMutator,
6+
defineMutatorsWithType,
7+
defineQueriesWithType,
8+
defineQuery,
9+
string,
10+
table,
11+
} from '@rocicorp/zero'
212
import { describe, expect, it } from 'vitest'
313
import z from 'zod'
414
import { createZeroComposables } from '../src'
@@ -14,15 +24,10 @@ const schema = createSchema({
1424
tables: [user],
1525
})
1626

17-
declare module '@rocicorp/zero' {
18-
interface DefaultTypes {
19-
schema: typeof schema
20-
}
21-
}
22-
2327
describe('zero-vue', () => {
2428
it('works', async () => {
2529
const crud = createCRUDBuilder(schema)
30+
const defineMutators = defineMutatorsWithType<typeof schema>()
2631
const mutators = defineMutators({
2732
insert: defineMutator(
2833
z.object({ id: z.string(), name: z.string() }),
@@ -44,11 +49,12 @@ describe('zero-vue', () => {
4449
const zero = useZero()
4550

4651
const zql = createBuilder(schema)
52+
const defineQueries = defineQueriesWithType<typeof schema>()
4753
const queries = defineQueries({
4854
user: defineQuery(() => zql.user),
4955
})
5056

51-
const { data: users } = useQuery(queries.user)
57+
const { data: users } = useQuery(queries.user())
5258

5359
expect(users.value).toEqual([])
5460

0 commit comments

Comments
 (0)