From 5da470efe62c9a7ba11e97e0f7bf513f6fdd8980 Mon Sep 17 00:00:00 2001 From: ymc9 <104139426+ymc9@users.noreply.github.com> Date: Sun, 6 Apr 2025 21:31:19 -0700 Subject: [PATCH 1/3] fix: make ".zenstack/models" reexport the entire original PrismaClient module fixes #2065 --- .../src/plugins/enhancer/enhance/index.ts | 15 +++++---- tests/regression/tests/issue-2065.test.ts | 31 +++++++++++++++++++ 2 files changed, 40 insertions(+), 6 deletions(-) create mode 100644 tests/regression/tests/issue-2065.test.ts diff --git a/packages/schema/src/plugins/enhancer/enhance/index.ts b/packages/schema/src/plugins/enhancer/enhance/index.ts index 8bc1c393d..eaaa198aa 100644 --- a/packages/schema/src/plugins/enhancer/enhance/index.ts +++ b/packages/schema/src/plugins/enhancer/enhance/index.ts @@ -110,22 +110,25 @@ export class EnhancerGenerator { const prismaImport = getPrismaClientImportSpec(this.outDir, this.options); let prismaTypesFixed = false; - let resultPrismaImport = prismaImport; + let resultPrismaTypeImport = prismaImport; if (this.needsLogicalClient) { prismaTypesFixed = true; - resultPrismaImport = `${LOGICAL_CLIENT_GENERATION_PATH}/index-fixed`; + resultPrismaTypeImport = `${LOGICAL_CLIENT_GENERATION_PATH}/index-fixed`; const result = await this.generateLogicalPrisma(); dmmf = result.dmmf; } // reexport PrismaClient types (original or fixed) - const prismaDts = this.project.createSourceFile( + const modelsDts = this.project.createSourceFile( path.join(this.outDir, 'models.d.ts'), - `export type * from '${resultPrismaImport}';`, + `export type * from '${resultPrismaTypeImport}';`, { overwrite: true } ); - await prismaDts.save(); + await modelsDts.save(); + + // reexport values from the original PrismaClient (enums, etc.) + fs.writeFileSync(path.join(this.outDir, 'models.js'), `module.exports = require('${prismaImport}');`); const authDecl = getAuthDecl(getDataModelAndTypeDefs(this.model)); const authTypes = authDecl ? generateAuthType(this.model, authDecl) : ''; @@ -151,7 +154,7 @@ ${ ${ prismaTypesFixed - ? this.createLogicalPrismaImports(prismaImport, resultPrismaImport, target) + ? this.createLogicalPrismaImports(prismaImport, resultPrismaTypeImport, target) : this.createSimplePrismaImports(prismaImport, target) } diff --git a/tests/regression/tests/issue-2065.test.ts b/tests/regression/tests/issue-2065.test.ts new file mode 100644 index 000000000..cf186b4fe --- /dev/null +++ b/tests/regression/tests/issue-2065.test.ts @@ -0,0 +1,31 @@ +import { loadSchema } from '@zenstackhq/testtools'; + +describe('issue [...]', () => { + it('regression', async () => { + const { zodSchemas } = await loadSchema( + ` + enum FooType { + Bar + Baz + } + + type Meta { + test String? + } + + model Foo { + id String @id @db.Uuid @default(uuid()) + type FooType + meta Meta @json + + @@validate(type == Bar, "FooType must be Bar") + } + `, + { + provider: 'postgresql', + pushDb: false, + } + ); + expect(zodSchemas.models.FooSchema).toBeTruthy(); + }); +}); From 4c69a7c38ede2e291be092db9cc9ae9ac3364c23 Mon Sep 17 00:00:00 2001 From: ymc9 <104139426+ymc9@users.noreply.github.com> Date: Sun, 6 Apr 2025 21:39:43 -0700 Subject: [PATCH 2/3] update test --- tests/regression/tests/issue-foo.test.ts | 36 ++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 tests/regression/tests/issue-foo.test.ts diff --git a/tests/regression/tests/issue-foo.test.ts b/tests/regression/tests/issue-foo.test.ts new file mode 100644 index 000000000..19cf246ef --- /dev/null +++ b/tests/regression/tests/issue-foo.test.ts @@ -0,0 +1,36 @@ +import { loadSchema } from '@zenstackhq/testtools'; + +describe('issue [...]', () => { + it('regression', async () => { + const { zodSchemas } = await loadSchema( + ` + enum FooType { + Bar + Baz + } + type Meta { + test String? + } + model Foo { + id String @id @db.Uuid @default(uuid()) + type FooType + meta Meta @json + @@validate(type == Bar, "FooType must be Bar") + } + `, + { + provider: 'postgresql', + pushDb: false, + } + ); + expect( + zodSchemas.models.FooSchema.safeParse({ + id: '123e4567-e89b-12d3-a456-426614174000', + type: 'Bar', + meta: { test: 'test' }, + }) + ).toMatchObject({ + success: true, + }); + }); +}); From b7f04ef8dc90e005701bc37eac4aefb616b3e8d3 Mon Sep 17 00:00:00 2001 From: Yiming Cao Date: Mon, 7 Apr 2025 09:47:25 -0700 Subject: [PATCH 3/3] chore: bump version (#2071) --- package.json | 2 +- packages/ide/jetbrains/build.gradle.kts | 2 +- packages/ide/jetbrains/package.json | 2 +- packages/language/package.json | 2 +- packages/misc/redwood/package.json | 2 +- packages/plugins/openapi/package.json | 2 +- packages/plugins/swr/package.json | 2 +- packages/plugins/tanstack-query/package.json | 2 +- packages/plugins/trpc/package.json | 2 +- .../plugins/trpc/tests/projects/t3-trpc-v11/package-lock.json | 2 +- packages/runtime/package.json | 2 +- packages/schema/package.json | 2 +- packages/sdk/package.json | 2 +- packages/server/package.json | 2 +- packages/testtools/package.json | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 8d38ad648..40348d428 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "zenstack-monorepo", - "version": "2.13.1", + "version": "2.13.2", "description": "", "scripts": { "build": "pnpm -r --filter=\"!./packages/ide/*\" build", diff --git a/packages/ide/jetbrains/build.gradle.kts b/packages/ide/jetbrains/build.gradle.kts index 6ab980b4c..036194c12 100644 --- a/packages/ide/jetbrains/build.gradle.kts +++ b/packages/ide/jetbrains/build.gradle.kts @@ -9,7 +9,7 @@ plugins { } group = "dev.zenstack" -version = "2.13.1" +version = "2.13.2" repositories { mavenCentral() diff --git a/packages/ide/jetbrains/package.json b/packages/ide/jetbrains/package.json index 32e36bc9f..9b9d427d1 100644 --- a/packages/ide/jetbrains/package.json +++ b/packages/ide/jetbrains/package.json @@ -1,6 +1,6 @@ { "name": "jetbrains", - "version": "2.13.1", + "version": "2.13.2", "displayName": "ZenStack JetBrains IDE Plugin", "description": "ZenStack JetBrains IDE plugin", "homepage": "https://zenstack.dev", diff --git a/packages/language/package.json b/packages/language/package.json index bd4786008..8d6c9a776 100644 --- a/packages/language/package.json +++ b/packages/language/package.json @@ -1,6 +1,6 @@ { "name": "@zenstackhq/language", - "version": "2.13.1", + "version": "2.13.2", "displayName": "ZenStack modeling language compiler", "description": "ZenStack modeling language compiler", "homepage": "https://zenstack.dev", diff --git a/packages/misc/redwood/package.json b/packages/misc/redwood/package.json index 893067229..9ce12f8b0 100644 --- a/packages/misc/redwood/package.json +++ b/packages/misc/redwood/package.json @@ -1,7 +1,7 @@ { "name": "@zenstackhq/redwood", "displayName": "ZenStack RedwoodJS Integration", - "version": "2.13.1", + "version": "2.13.2", "description": "CLI and runtime for integrating ZenStack with RedwoodJS projects.", "repository": { "type": "git", diff --git a/packages/plugins/openapi/package.json b/packages/plugins/openapi/package.json index 9cabb92fb..98e07222d 100644 --- a/packages/plugins/openapi/package.json +++ b/packages/plugins/openapi/package.json @@ -1,7 +1,7 @@ { "name": "@zenstackhq/openapi", "displayName": "ZenStack Plugin and Runtime for OpenAPI", - "version": "2.13.1", + "version": "2.13.2", "description": "ZenStack plugin and runtime supporting OpenAPI", "main": "index.js", "repository": { diff --git a/packages/plugins/swr/package.json b/packages/plugins/swr/package.json index faa529bef..8fbdd7f2d 100644 --- a/packages/plugins/swr/package.json +++ b/packages/plugins/swr/package.json @@ -1,7 +1,7 @@ { "name": "@zenstackhq/swr", "displayName": "ZenStack plugin for generating SWR hooks", - "version": "2.13.1", + "version": "2.13.2", "description": "ZenStack plugin for generating SWR hooks", "main": "index.js", "repository": { diff --git a/packages/plugins/tanstack-query/package.json b/packages/plugins/tanstack-query/package.json index b6b0ec3c6..5cadd9463 100644 --- a/packages/plugins/tanstack-query/package.json +++ b/packages/plugins/tanstack-query/package.json @@ -1,7 +1,7 @@ { "name": "@zenstackhq/tanstack-query", "displayName": "ZenStack plugin for generating tanstack-query hooks", - "version": "2.13.1", + "version": "2.13.2", "description": "ZenStack plugin for generating tanstack-query hooks", "main": "index.js", "exports": { diff --git a/packages/plugins/trpc/package.json b/packages/plugins/trpc/package.json index 79ffae8c1..b6e67e409 100644 --- a/packages/plugins/trpc/package.json +++ b/packages/plugins/trpc/package.json @@ -1,7 +1,7 @@ { "name": "@zenstackhq/trpc", "displayName": "ZenStack plugin for tRPC", - "version": "2.13.1", + "version": "2.13.2", "description": "ZenStack plugin for tRPC", "main": "index.js", "repository": { diff --git a/packages/plugins/trpc/tests/projects/t3-trpc-v11/package-lock.json b/packages/plugins/trpc/tests/projects/t3-trpc-v11/package-lock.json index 62772141c..4b5f352fc 100644 --- a/packages/plugins/trpc/tests/projects/t3-trpc-v11/package-lock.json +++ b/packages/plugins/trpc/tests/projects/t3-trpc-v11/package-lock.json @@ -1964,7 +1964,7 @@ "eslint-import-resolver-node": "^0.3.9", "eslint-module-utils": "^2.8.0", "hasown": "^2.0.0", - "is-core-module": "^2.13.1", + "is-core-module": "^2.13.2", "is-glob": "^4.0.3", "minimatch": "^3.1.2", "object.fromentries": "^2.0.7", diff --git a/packages/runtime/package.json b/packages/runtime/package.json index bd67f8a40..d12f7e43f 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -1,7 +1,7 @@ { "name": "@zenstackhq/runtime", "displayName": "ZenStack Runtime Library", - "version": "2.13.1", + "version": "2.13.2", "description": "Runtime of ZenStack for both client-side and server-side environments.", "repository": { "type": "git", diff --git a/packages/schema/package.json b/packages/schema/package.json index 58b0dfe58..53ba1d5f5 100644 --- a/packages/schema/package.json +++ b/packages/schema/package.json @@ -3,7 +3,7 @@ "publisher": "zenstack", "displayName": "ZenStack Language Tools", "description": "FullStack enhancement for Prisma ORM: seamless integration from database to UI", - "version": "2.13.1", + "version": "2.13.2", "author": { "name": "ZenStack Team" }, diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 1f4f88f94..257b7603c 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@zenstackhq/sdk", - "version": "2.13.1", + "version": "2.13.2", "description": "ZenStack plugin development SDK", "main": "index.js", "scripts": { diff --git a/packages/server/package.json b/packages/server/package.json index 0f1614df6..510f76109 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,6 +1,6 @@ { "name": "@zenstackhq/server", - "version": "2.13.1", + "version": "2.13.2", "displayName": "ZenStack Server-side Adapters", "description": "ZenStack server-side adapters", "homepage": "https://zenstack.dev", diff --git a/packages/testtools/package.json b/packages/testtools/package.json index fab829fe2..d10345c0c 100644 --- a/packages/testtools/package.json +++ b/packages/testtools/package.json @@ -1,6 +1,6 @@ { "name": "@zenstackhq/testtools", - "version": "2.13.1", + "version": "2.13.2", "description": "ZenStack Test Tools", "main": "index.js", "private": true,