From eebf69a9994104ea7586c0247d6883d2fde88fa2 Mon Sep 17 00:00:00 2001 From: Yiming Cao Date: Thu, 17 Jul 2025 10:33:52 +0800 Subject: [PATCH 1/2] perf: improve tsc performance for runtime project (#97) --- packages/runtime/src/client/client-impl.ts | 90 +++++++++++++++---- packages/runtime/src/utils/type-utils.ts | 30 +++---- .../test/client-api/computed-fields.test.ts | 4 +- 3 files changed, 88 insertions(+), 36 deletions(-) diff --git a/packages/runtime/src/client/client-impl.ts b/packages/runtime/src/client/client-impl.ts index 6fa40a21..d646dd30 100644 --- a/packages/runtime/src/client/client-impl.ts +++ b/packages/runtime/src/client/client-impl.ts @@ -411,100 +411,156 @@ function createModelCrudHandler { - return createPromise('findUnique', args, new FindOperationHandler(client, model, inputValidator), true); + return createPromise( + 'findUnique', + args, + new FindOperationHandler(client, model, inputValidator), + true, + ); }, findUniqueOrThrow: (args: unknown) => { return createPromise( 'findUnique', args, - new FindOperationHandler(client, model, inputValidator), + new FindOperationHandler(client, model, inputValidator), true, true, ); }, findFirst: (args: unknown) => { - return createPromise('findFirst', args, new FindOperationHandler(client, model, inputValidator), true); + return createPromise( + 'findFirst', + args, + new FindOperationHandler(client, model, inputValidator), + true, + ); }, findFirstOrThrow: (args: unknown) => { return createPromise( 'findFirst', args, - new FindOperationHandler(client, model, inputValidator), + new FindOperationHandler(client, model, inputValidator), true, true, ); }, findMany: (args: unknown) => { - return createPromise('findMany', args, new FindOperationHandler(client, model, inputValidator), true); + return createPromise( + 'findMany', + args, + new FindOperationHandler(client, model, inputValidator), + true, + ); }, create: (args: unknown) => { - return createPromise('create', args, new CreateOperationHandler(client, model, inputValidator), true); + return createPromise( + 'create', + args, + new CreateOperationHandler(client, model, inputValidator), + true, + ); }, createMany: (args: unknown) => { - return createPromise('createMany', args, new CreateOperationHandler(client, model, inputValidator), false); + return createPromise( + 'createMany', + args, + new CreateOperationHandler(client, model, inputValidator), + false, + ); }, createManyAndReturn: (args: unknown) => { return createPromise( 'createManyAndReturn', args, - new CreateOperationHandler(client, model, inputValidator), + new CreateOperationHandler(client, model, inputValidator), true, ); }, update: (args: unknown) => { - return createPromise('update', args, new UpdateOperationHandler(client, model, inputValidator), true); + return createPromise( + 'update', + args, + new UpdateOperationHandler(client, model, inputValidator), + true, + ); }, updateMany: (args: unknown) => { - return createPromise('updateMany', args, new UpdateOperationHandler(client, model, inputValidator), false); + return createPromise( + 'updateMany', + args, + new UpdateOperationHandler(client, model, inputValidator), + false, + ); }, updateManyAndReturn: (args: unknown) => { return createPromise( 'updateManyAndReturn', args, - new UpdateOperationHandler(client, model, inputValidator), + new UpdateOperationHandler(client, model, inputValidator), true, ); }, upsert: (args: unknown) => { - return createPromise('upsert', args, new UpdateOperationHandler(client, model, inputValidator), true); + return createPromise( + 'upsert', + args, + new UpdateOperationHandler(client, model, inputValidator), + true, + ); }, delete: (args: unknown) => { - return createPromise('delete', args, new DeleteOperationHandler(client, model, inputValidator), true); + return createPromise( + 'delete', + args, + new DeleteOperationHandler(client, model, inputValidator), + true, + ); }, deleteMany: (args: unknown) => { - return createPromise('deleteMany', args, new DeleteOperationHandler(client, model, inputValidator), false); + return createPromise( + 'deleteMany', + args, + new DeleteOperationHandler(client, model, inputValidator), + false, + ); }, count: (args: unknown) => { - return createPromise('count', args, new CountOperationHandler(client, model, inputValidator), false); + return createPromise( + 'count', + args, + new CountOperationHandler(client, model, inputValidator), + false, + ); }, aggregate: (args: unknown) => { return createPromise( 'aggregate', args, - new AggregateOperationHandler(client, model, inputValidator), + new AggregateOperationHandler(client, model, inputValidator), false, ); }, groupBy: (args: unknown) => { - return createPromise('groupBy', args, new GroupByOperationHandler(client, model, inputValidator)); + return createPromise('groupBy', args, new GroupByOperationHandler(client, model, inputValidator)); }, } as ModelOperations; } diff --git a/packages/runtime/src/utils/type-utils.ts b/packages/runtime/src/utils/type-utils.ts index b28119a3..f6d784f0 100644 --- a/packages/runtime/src/utils/type-utils.ts +++ b/packages/runtime/src/utils/type-utils.ts @@ -22,23 +22,19 @@ export type WrapType = Optional extends true ? T[] : T; -export type MapBaseType = T extends 'String' - ? string - : T extends 'Boolean' - ? boolean - : T extends 'Int' | 'Float' - ? number - : T extends 'BigInt' - ? bigint - : T extends 'Decimal' - ? Decimal - : T extends 'DateTime' - ? Date - : T extends 'Bytes' - ? Uint8Array - : T extends 'Json' - ? JsonValue - : unknown; +type TypeMap = { + String: string; + Boolean: boolean; + Int: number; + Float: number; + BigInt: bigint; + Decimal: Decimal; + DateTime: Date; + Bytes: Uint8Array; + Json: JsonValue; +}; + +export type MapBaseType = T extends keyof TypeMap ? TypeMap[T] : unknown; export type JsonValue = string | number | boolean | null | JsonObject | JsonArray; diff --git a/packages/runtime/test/client-api/computed-fields.test.ts b/packages/runtime/test/client-api/computed-fields.test.ts index d81d2784..ca7a16e5 100644 --- a/packages/runtime/test/client-api/computed-fields.test.ts +++ b/packages/runtime/test/client-api/computed-fields.test.ts @@ -14,7 +14,7 @@ model User { { computedFields: { User: { - upperName: (eb) => eb.fn('upper', ['name']), + upperName: (eb: any) => eb.fn('upper', ['name']), }, }, } as any, @@ -90,7 +90,7 @@ model User { { computedFields: { User: { - upperName: (eb) => eb.lit(null), + upperName: (eb: any) => eb.lit(null), }, }, } as any, From 32936db7a72966bdb70cb18765351abac15ffca2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 17 Jul 2025 16:54:24 +0800 Subject: [PATCH 2/2] chore: bump version 3.0.0-alpha.12 (#98) Co-authored-by: ymc9 <104139426+ymc9@users.noreply.github.com> --- package.json | 2 +- packages/cli/package.json | 2 +- packages/common-helpers/package.json | 2 +- packages/create-zenstack/package.json | 2 +- packages/eslint-config/package.json | 2 +- packages/ide/vscode/package.json | 2 +- packages/language/package.json | 2 +- packages/runtime/package.json | 2 +- packages/sdk/package.json | 2 +- packages/tanstack-query/package.json | 2 +- packages/testtools/package.json | 2 +- packages/typescript-config/package.json | 2 +- packages/zod/package.json | 2 +- samples/blog/package.json | 2 +- tests/e2e/package.json | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 4e713d73..45f00b07 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "zenstack-v3", - "version": "3.0.0-alpha.11", + "version": "3.0.0-alpha.12", "description": "ZenStack", "packageManager": "pnpm@10.12.1", "scripts": { diff --git a/packages/cli/package.json b/packages/cli/package.json index 3db5ea94..3eca5dff 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -3,7 +3,7 @@ "publisher": "zenstack", "displayName": "ZenStack CLI", "description": "FullStack database toolkit with built-in access control and automatic API generation.", - "version": "3.0.0-alpha.11", + "version": "3.0.0-alpha.12", "type": "module", "author": { "name": "ZenStack Team" diff --git a/packages/common-helpers/package.json b/packages/common-helpers/package.json index abf46539..48a19c0d 100644 --- a/packages/common-helpers/package.json +++ b/packages/common-helpers/package.json @@ -1,6 +1,6 @@ { "name": "@zenstackhq/common-helpers", - "version": "3.0.0-alpha.11", + "version": "3.0.0-alpha.12", "description": "ZenStack Common Helpers", "type": "module", "scripts": { diff --git a/packages/create-zenstack/package.json b/packages/create-zenstack/package.json index db3c4242..6fe18eeb 100644 --- a/packages/create-zenstack/package.json +++ b/packages/create-zenstack/package.json @@ -1,6 +1,6 @@ { "name": "create-zenstack", - "version": "3.0.0-alpha.11", + "version": "3.0.0-alpha.12", "description": "Create a new ZenStack project", "type": "module", "scripts": { diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 312f2f1e..fc9465ad 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -1,6 +1,6 @@ { "name": "@zenstackhq/eslint-config", - "version": "3.0.0-alpha.11", + "version": "3.0.0-alpha.12", "type": "module", "private": true, "license": "MIT" diff --git a/packages/ide/vscode/package.json b/packages/ide/vscode/package.json index e5f85293..b28ee350 100644 --- a/packages/ide/vscode/package.json +++ b/packages/ide/vscode/package.json @@ -1,7 +1,7 @@ { "name": "zenstack", "publisher": "zenstack", - "version": "3.0.0-alpha.11", + "version": "3.0.0-alpha.12", "displayName": "ZenStack Language Tools", "description": "VSCode extension for ZenStack ZModel language", "private": true, diff --git a/packages/language/package.json b/packages/language/package.json index ec6cd744..bb7da03f 100644 --- a/packages/language/package.json +++ b/packages/language/package.json @@ -1,7 +1,7 @@ { "name": "@zenstackhq/language", "description": "ZenStack ZModel language specification", - "version": "3.0.0-alpha.11", + "version": "3.0.0-alpha.12", "license": "MIT", "author": "ZenStack Team", "files": [ diff --git a/packages/runtime/package.json b/packages/runtime/package.json index 5b3cc6cd..b46b800f 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -1,6 +1,6 @@ { "name": "@zenstackhq/runtime", - "version": "3.0.0-alpha.11", + "version": "3.0.0-alpha.12", "description": "ZenStack Runtime", "type": "module", "scripts": { diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 47d6ca7c..6f00f213 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@zenstackhq/sdk", - "version": "3.0.0-alpha.11", + "version": "3.0.0-alpha.12", "description": "ZenStack SDK", "type": "module", "scripts": { diff --git a/packages/tanstack-query/package.json b/packages/tanstack-query/package.json index 395b39a5..2e9dd4ad 100644 --- a/packages/tanstack-query/package.json +++ b/packages/tanstack-query/package.json @@ -1,6 +1,6 @@ { "name": "@zenstackhq/tanstack-query", - "version": "3.0.0-alpha.11", + "version": "3.0.0-alpha.12", "description": "", "main": "index.js", "type": "module", diff --git a/packages/testtools/package.json b/packages/testtools/package.json index 4c9c95a8..93c7fd54 100644 --- a/packages/testtools/package.json +++ b/packages/testtools/package.json @@ -1,6 +1,6 @@ { "name": "@zenstackhq/testtools", - "version": "3.0.0-alpha.11", + "version": "3.0.0-alpha.12", "description": "ZenStack Test Tools", "type": "module", "scripts": { diff --git a/packages/typescript-config/package.json b/packages/typescript-config/package.json index 293a7af0..836d1b55 100644 --- a/packages/typescript-config/package.json +++ b/packages/typescript-config/package.json @@ -1,6 +1,6 @@ { "name": "@zenstackhq/typescript-config", - "version": "3.0.0-alpha.11", + "version": "3.0.0-alpha.12", "private": true, "license": "MIT" } diff --git a/packages/zod/package.json b/packages/zod/package.json index a46ae4bc..a370f728 100644 --- a/packages/zod/package.json +++ b/packages/zod/package.json @@ -1,6 +1,6 @@ { "name": "@zenstackhq/zod", - "version": "3.0.0-alpha.11", + "version": "3.0.0-alpha.12", "description": "", "type": "module", "main": "index.js", diff --git a/samples/blog/package.json b/samples/blog/package.json index 3b462ced..d1486aac 100644 --- a/samples/blog/package.json +++ b/samples/blog/package.json @@ -1,6 +1,6 @@ { "name": "sample-blog", - "version": "3.0.0-alpha.11", + "version": "3.0.0-alpha.12", "description": "", "main": "index.js", "scripts": { diff --git a/tests/e2e/package.json b/tests/e2e/package.json index 6798c745..1ecc87b9 100644 --- a/tests/e2e/package.json +++ b/tests/e2e/package.json @@ -1,6 +1,6 @@ { "name": "e2e", - "version": "3.0.0-alpha.11", + "version": "3.0.0-alpha.12", "private": true, "scripts": { "test": "vitest run"