Skip to content

Commit d35b939

Browse files
authored
Merge pull request #486 from zenstackhq/dev
merge dev to main (v3.0.0-beta.29)
2 parents fb96362 + ac4a68c commit d35b939

File tree

78 files changed

+625
-580
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+625
-580
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "zenstack-v3",
3-
"version": "3.0.0-beta.28",
3+
"version": "3.0.0-beta.29",
44
"description": "ZenStack",
55
"packageManager": "[email protected]",
66
"type": "module",

packages/auth-adapters/better-auth/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@zenstackhq/better-auth",
3-
"version": "3.0.0-beta.28",
3+
"version": "3.0.0-beta.29",
44
"description": "ZenStack Better Auth Adapter. This adapter is modified from better-auth's Prisma adapter.",
55
"type": "module",
66
"scripts": {

packages/cli/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"publisher": "zenstack",
44
"displayName": "ZenStack CLI",
55
"description": "FullStack database toolkit with built-in access control and automatic API generation.",
6-
"version": "3.0.0-beta.28",
6+
"version": "3.0.0-beta.29",
77
"type": "module",
88
"author": {
99
"name": "ZenStack Team"

packages/clients/tanstack-query/package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@zenstackhq/tanstack-query",
3-
"version": "3.0.0-beta.28",
3+
"version": "3.0.0-beta.29",
44
"description": "TanStack Query Client for consuming ZenStack v3's CRUD service",
55
"main": "index.js",
66
"type": "module",
@@ -10,7 +10,7 @@
1010
"lint": "eslint src --ext ts",
1111
"test": "vitest run",
1212
"pack": "pnpm pack",
13-
"test:generate": "tsx ../../../scripts/test-generate.ts tests",
13+
"test:generate": "tsx ../../../scripts/test-generate.ts test --lite-only",
1414
"test:typecheck": "tsc --noEmit --project tsconfig.test.json"
1515
},
1616
"keywords": [
@@ -75,6 +75,7 @@
7575
"@zenstackhq/eslint-config": "workspace:*",
7676
"@zenstackhq/language": "workspace:*",
7777
"@zenstackhq/sdk": "workspace:*",
78+
"@zenstackhq/cli": "workspace:*",
7879
"@zenstackhq/typescript-config": "workspace:*",
7980
"@zenstackhq/vitest-config": "workspace:*",
8081
"happy-dom": "^20.0.10",

packages/clients/tanstack-query/src/react.ts

Lines changed: 61 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import type {
2424
AggregateArgs,
2525
AggregateResult,
2626
BatchResult,
27-
ClientOptions,
2827
CountArgs,
2928
CountResult,
3029
CreateArgs,
@@ -37,8 +36,10 @@ import type {
3736
FindUniqueArgs,
3837
GroupByArgs,
3938
GroupByResult,
39+
QueryOptions,
4040
SelectSubset,
41-
SimplifiedModelResult,
41+
SimplifiedPlainResult,
42+
SimplifiedResult,
4243
Subset,
4344
UpdateArgs,
4445
UpdateManyAndReturnArgs,
@@ -129,101 +130,99 @@ export type ModelMutationModelResult<
129130
Model extends GetModels<Schema>,
130131
TArgs,
131132
Array extends boolean = false,
132-
> = Omit<
133-
ModelMutationResult<SimplifiedModelResult<Schema, Model, ClientOptions<Schema>, TArgs, false, Array>, TArgs>,
134-
'mutateAsync'
135-
> & {
133+
Options extends QueryOptions<Schema> = QueryOptions<Schema>,
134+
> = Omit<ModelMutationResult<SimplifiedResult<Schema, Model, TArgs, Options, false, Array>, TArgs>, 'mutateAsync'> & {
136135
mutateAsync<T extends TArgs>(
137136
args: T,
138-
options?: ModelMutationOptions<SimplifiedModelResult<Schema, Model, ClientOptions<Schema>, T, false, Array>, T>,
139-
): Promise<SimplifiedModelResult<Schema, Model, ClientOptions<Schema>, T, false, Array>>;
137+
options?: ModelMutationOptions<SimplifiedResult<Schema, Model, T, Options, false, Array>, T>,
138+
): Promise<SimplifiedResult<Schema, Model, T, Options, false, Array>>;
140139
};
141140

142-
export type ClientHooks<Schema extends SchemaDef> = {
143-
[Model in GetModels<Schema> as `${Uncapitalize<Model>}`]: ModelQueryHooks<Schema, Model>;
141+
export type ClientHooks<Schema extends SchemaDef, Options extends QueryOptions<Schema> = QueryOptions<Schema>> = {
142+
[Model in GetModels<Schema> as `${Uncapitalize<Model>}`]: ModelQueryHooks<Schema, Model, Options>;
144143
};
145144

146145
// Note that we can potentially use TypeScript's mapped type to directly map from ORM contract, but that seems
147146
// to significantly slow down tsc performance ...
148-
export type ModelQueryHooks<Schema extends SchemaDef, Model extends GetModels<Schema>> = TrimDelegateModelOperations<
147+
export type ModelQueryHooks<
148+
Schema extends SchemaDef,
149+
Model extends GetModels<Schema>,
150+
Options extends QueryOptions<Schema> = QueryOptions<Schema>,
151+
> = TrimDelegateModelOperations<
149152
Schema,
150153
Model,
151154
{
152155
useFindUnique<T extends FindUniqueArgs<Schema, Model>>(
153156
args: SelectSubset<T, FindUniqueArgs<Schema, Model>>,
154-
options?: ModelQueryOptions<SimplifiedModelResult<Schema, Model, ClientOptions<Schema>, T> | null>,
155-
): ModelQueryResult<SimplifiedModelResult<Schema, Model, ClientOptions<Schema>, T> | null>;
157+
options?: ModelQueryOptions<SimplifiedPlainResult<Schema, Model, T, Options> | null>,
158+
): ModelQueryResult<SimplifiedPlainResult<Schema, Model, T, Options> | null>;
156159

157160
useSuspenseFindUnique<T extends FindUniqueArgs<Schema, Model>>(
158161
args: SelectSubset<T, FindUniqueArgs<Schema, Model>>,
159-
options?: ModelSuspenseQueryOptions<SimplifiedModelResult<Schema, Model, ClientOptions<Schema>, T> | null>,
160-
): ModelSuspenseQueryResult<SimplifiedModelResult<Schema, Model, ClientOptions<Schema>, T> | null>;
162+
options?: ModelSuspenseQueryOptions<SimplifiedPlainResult<Schema, Model, T, Options> | null>,
163+
): ModelSuspenseQueryResult<SimplifiedPlainResult<Schema, Model, T, Options> | null>;
161164

162165
useFindFirst<T extends FindFirstArgs<Schema, Model>>(
163166
args?: SelectSubset<T, FindFirstArgs<Schema, Model>>,
164-
options?: ModelQueryOptions<SimplifiedModelResult<Schema, Model, ClientOptions<Schema>, T> | null>,
165-
): ModelQueryResult<SimplifiedModelResult<Schema, Model, ClientOptions<Schema>, T> | null>;
167+
options?: ModelQueryOptions<SimplifiedPlainResult<Schema, Model, T, Options> | null>,
168+
): ModelQueryResult<SimplifiedPlainResult<Schema, Model, T, Options> | null>;
166169

167170
useSuspenseFindFirst<T extends FindFirstArgs<Schema, Model>>(
168171
args?: SelectSubset<T, FindFirstArgs<Schema, Model>>,
169-
options?: ModelSuspenseQueryOptions<SimplifiedModelResult<Schema, Model, ClientOptions<Schema>, T> | null>,
170-
): ModelSuspenseQueryResult<SimplifiedModelResult<Schema, Model, ClientOptions<Schema>, T> | null>;
172+
options?: ModelSuspenseQueryOptions<SimplifiedPlainResult<Schema, Model, T, Options> | null>,
173+
): ModelSuspenseQueryResult<SimplifiedPlainResult<Schema, Model, T, Options> | null>;
171174

172175
useFindMany<T extends FindManyArgs<Schema, Model>>(
173176
args?: SelectSubset<T, FindManyArgs<Schema, Model>>,
174-
options?: ModelQueryOptions<SimplifiedModelResult<Schema, Model, ClientOptions<Schema>, T>[]>,
175-
): ModelQueryResult<SimplifiedModelResult<Schema, Model, ClientOptions<Schema>, T>[]>;
177+
options?: ModelQueryOptions<SimplifiedPlainResult<Schema, Model, T, Options>[]>,
178+
): ModelQueryResult<SimplifiedPlainResult<Schema, Model, T, Options>[]>;
176179

177180
useSuspenseFindMany<T extends FindManyArgs<Schema, Model>>(
178181
args?: SelectSubset<T, FindManyArgs<Schema, Model>>,
179-
options?: ModelSuspenseQueryOptions<SimplifiedModelResult<Schema, Model, ClientOptions<Schema>, T>[]>,
180-
): ModelSuspenseQueryResult<SimplifiedModelResult<Schema, Model, ClientOptions<Schema>, T>[]>;
182+
options?: ModelSuspenseQueryOptions<SimplifiedPlainResult<Schema, Model, T, Options>[]>,
183+
): ModelSuspenseQueryResult<SimplifiedPlainResult<Schema, Model, T, Options>[]>;
181184

182185
useInfiniteFindMany<T extends FindManyArgs<Schema, Model>>(
183186
args?: SelectSubset<T, FindManyArgs<Schema, Model>>,
184-
options?: ModelInfiniteQueryOptions<SimplifiedModelResult<Schema, Model, ClientOptions<Schema>, T>[]>,
185-
): ModelInfiniteQueryResult<InfiniteData<SimplifiedModelResult<Schema, Model, ClientOptions<Schema>, T>[]>>;
187+
options?: ModelInfiniteQueryOptions<SimplifiedPlainResult<Schema, Model, T, Options>[]>,
188+
): ModelInfiniteQueryResult<InfiniteData<SimplifiedPlainResult<Schema, Model, T, Options>[]>>;
186189

187190
useSuspenseInfiniteFindMany<T extends FindManyArgs<Schema, Model>>(
188191
args?: SelectSubset<T, FindManyArgs<Schema, Model>>,
189-
options?: ModelSuspenseInfiniteQueryOptions<
190-
SimplifiedModelResult<Schema, Model, ClientOptions<Schema>, T>[]
191-
>,
192-
): ModelSuspenseInfiniteQueryResult<
193-
InfiniteData<SimplifiedModelResult<Schema, Model, ClientOptions<Schema>, T>[]>
194-
>;
192+
options?: ModelSuspenseInfiniteQueryOptions<SimplifiedPlainResult<Schema, Model, T, Options>[]>,
193+
): ModelSuspenseInfiniteQueryResult<InfiniteData<SimplifiedPlainResult<Schema, Model, T, Options>[]>>;
195194

196195
useCreate<T extends CreateArgs<Schema, Model>>(
197-
options?: ModelMutationOptions<SimplifiedModelResult<Schema, Model, ClientOptions<Schema>, T>, T>,
198-
): ModelMutationModelResult<Schema, Model, T>;
196+
options?: ModelMutationOptions<SimplifiedPlainResult<Schema, Model, T, Options>, T>,
197+
): ModelMutationModelResult<Schema, Model, T, false, Options>;
199198

200199
useCreateMany<T extends CreateManyArgs<Schema, Model>>(
201200
options?: ModelMutationOptions<BatchResult, T>,
202201
): ModelMutationResult<BatchResult, T>;
203202

204203
useCreateManyAndReturn<T extends CreateManyAndReturnArgs<Schema, Model>>(
205-
options?: ModelMutationOptions<SimplifiedModelResult<Schema, Model, ClientOptions<Schema>, T>[], T>,
206-
): ModelMutationModelResult<Schema, Model, T, true>;
204+
options?: ModelMutationOptions<SimplifiedPlainResult<Schema, Model, T, Options>[], T>,
205+
): ModelMutationModelResult<Schema, Model, T, true, Options>;
207206

208207
useUpdate<T extends UpdateArgs<Schema, Model>>(
209-
options?: ModelMutationOptions<SimplifiedModelResult<Schema, Model, ClientOptions<Schema>, T>, T>,
210-
): ModelMutationModelResult<Schema, Model, T>;
208+
options?: ModelMutationOptions<SimplifiedPlainResult<Schema, Model, T, Options>, T>,
209+
): ModelMutationModelResult<Schema, Model, T, false, Options>;
211210

212211
useUpdateMany<T extends UpdateManyArgs<Schema, Model>>(
213212
options?: ModelMutationOptions<BatchResult, T>,
214213
): ModelMutationResult<BatchResult, T>;
215214

216215
useUpdateManyAndReturn<T extends UpdateManyAndReturnArgs<Schema, Model>>(
217-
options?: ModelMutationOptions<SimplifiedModelResult<Schema, Model, ClientOptions<Schema>, T>[], T>,
218-
): ModelMutationModelResult<Schema, Model, T, true>;
216+
options?: ModelMutationOptions<SimplifiedPlainResult<Schema, Model, T, Options>[], T>,
217+
): ModelMutationModelResult<Schema, Model, T, true, Options>;
219218

220219
useUpsert<T extends UpsertArgs<Schema, Model>>(
221-
options?: ModelMutationOptions<SimplifiedModelResult<Schema, Model, ClientOptions<Schema>, T>, T>,
222-
): ModelMutationModelResult<Schema, Model, T>;
220+
options?: ModelMutationOptions<SimplifiedPlainResult<Schema, Model, T, Options>, T>,
221+
): ModelMutationModelResult<Schema, Model, T, false, Options>;
223222

224223
useDelete<T extends DeleteArgs<Schema, Model>>(
225-
options?: ModelMutationOptions<SimplifiedModelResult<Schema, Model, ClientOptions<Schema>, T>, T>,
226-
): ModelMutationModelResult<Schema, Model, T>;
224+
options?: ModelMutationOptions<SimplifiedPlainResult<Schema, Model, T, Options>, T>,
225+
): ModelMutationModelResult<Schema, Model, T, false, Options>;
227226

228227
useDeleteMany<T extends DeleteManyArgs<Schema, Model>>(
229228
options?: ModelMutationOptions<BatchResult, T>,
@@ -264,20 +263,29 @@ export type ModelQueryHooks<Schema extends SchemaDef, Model extends GetModels<Sc
264263
/**
265264
* Gets data query hooks for all models in the schema.
266265
*/
267-
export function useClientQueries<Schema extends SchemaDef>(schema: Schema): ClientHooks<Schema> {
268-
return Object.keys(schema.models).reduce((acc, model) => {
269-
(acc as any)[lowerCaseFirst(model)] = useModelQueries(schema, model as GetModels<Schema>);
270-
return acc;
271-
}, {} as ClientHooks<Schema>);
266+
export function useClientQueries<Schema extends SchemaDef, Options extends QueryOptions<Schema> = QueryOptions<Schema>>(
267+
schema: Schema,
268+
): ClientHooks<Schema, Options> {
269+
return Object.keys(schema.models).reduce(
270+
(acc, model) => {
271+
(acc as any)[lowerCaseFirst(model)] = useModelQueries<Schema, GetModels<Schema>, Options>(
272+
schema,
273+
model as GetModels<Schema>,
274+
);
275+
return acc;
276+
},
277+
{} as ClientHooks<Schema, Options>,
278+
);
272279
}
273280

274281
/**
275282
* Gets data query hooks for a specific model in the schema.
276283
*/
277-
export function useModelQueries<Schema extends SchemaDef, Model extends GetModels<Schema>>(
278-
schema: Schema,
279-
model: Model,
280-
): ModelQueryHooks<Schema, Model> {
284+
export function useModelQueries<
285+
Schema extends SchemaDef,
286+
Model extends GetModels<Schema>,
287+
Options extends QueryOptions<Schema>,
288+
>(schema: Schema, model: Model): ModelQueryHooks<Schema, Model, Options> {
281289
const modelDef = Object.values(schema.models).find((m) => m.name.toLowerCase() === model.toLowerCase());
282290
if (!modelDef) {
283291
throw new Error(`Model "${model}" not found in schema`);
@@ -377,7 +385,7 @@ export function useModelQueries<Schema extends SchemaDef, Model extends GetModel
377385
useSuspenseGroupBy: (args: any, options?: any) => {
378386
return useInternalSuspenseQuery(schema, modelName, 'groupBy', args, options);
379387
},
380-
} as ModelQueryHooks<Schema, Model>;
388+
} as ModelQueryHooks<Schema, Model, Options>;
381389
}
382390

383391
export function useInternalQuery<TQueryFnData, TData>(

0 commit comments

Comments
 (0)