From 269d4a7783ec10636821dea4b82b26709aa98e66 Mon Sep 17 00:00:00 2001 From: ymc9 <104139426+ymc9@users.noreply.github.com> Date: Mon, 15 Apr 2024 19:45:22 +0800 Subject: [PATCH] fix: enhancer generation issue with auth model with ignored fields --- 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 +- packages/runtime/package.json | 2 +- packages/schema/package.json | 2 +- .../enhancer/enhance/auth-type-generator.ts | 24 +++++++++++++------ packages/sdk/package.json | 2 +- packages/server/package.json | 2 +- packages/testtools/package.json | 2 +- 15 files changed, 31 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index 25ba4199f..2acde1c7f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "zenstack-monorepo", - "version": "2.0.0-beta.13", + "version": "2.0.0-beta.14", "description": "", "scripts": { "build": "pnpm -r build", diff --git a/packages/ide/jetbrains/build.gradle.kts b/packages/ide/jetbrains/build.gradle.kts index 62d0c5ee6..fada6b95b 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.0.0-beta.13" +version = "2.0.0-beta.14" repositories { mavenCentral() diff --git a/packages/ide/jetbrains/package.json b/packages/ide/jetbrains/package.json index 45ebae557..49e135d5c 100644 --- a/packages/ide/jetbrains/package.json +++ b/packages/ide/jetbrains/package.json @@ -1,6 +1,6 @@ { "name": "jetbrains", - "version": "2.0.0-beta.13", + "version": "2.0.0-beta.14", "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 82cd505b1..a81765ff6 100644 --- a/packages/language/package.json +++ b/packages/language/package.json @@ -1,6 +1,6 @@ { "name": "@zenstackhq/language", - "version": "2.0.0-beta.13", + "version": "2.0.0-beta.14", "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 05154c801..c9ae82bbf 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.0.0-beta.13", + "version": "2.0.0-beta.14", "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 1ca6f4ccf..6ea7a6e87 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.0.0-beta.13", + "version": "2.0.0-beta.14", "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 f270a6d55..35c24cab3 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.0.0-beta.13", + "version": "2.0.0-beta.14", "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 3ab710144..cac90ead7 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.0.0-beta.13", + "version": "2.0.0-beta.14", "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 270ee6b45..c3273bbd1 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.0.0-beta.13", + "version": "2.0.0-beta.14", "description": "ZenStack plugin for tRPC", "main": "index.js", "repository": { diff --git a/packages/runtime/package.json b/packages/runtime/package.json index 0742eb25f..bb8f987fe 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -1,7 +1,7 @@ { "name": "@zenstackhq/runtime", "displayName": "ZenStack Runtime Library", - "version": "2.0.0-beta.13", + "version": "2.0.0-beta.14", "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 00c5b259f..b135e8040 100644 --- a/packages/schema/package.json +++ b/packages/schema/package.json @@ -3,7 +3,7 @@ "publisher": "zenstack", "displayName": "ZenStack Language Tools", "description": "Build scalable web apps with minimum code by defining authorization and validation rules inside the data schema that closer to the database", - "version": "2.0.0-beta.13", + "version": "2.0.0-beta.14", "author": { "name": "ZenStack Team" }, diff --git a/packages/schema/src/plugins/enhancer/enhance/auth-type-generator.ts b/packages/schema/src/plugins/enhancer/enhance/auth-type-generator.ts index d8e53c173..18bbd8c72 100644 --- a/packages/schema/src/plugins/enhancer/enhance/auth-type-generator.ts +++ b/packages/schema/src/plugins/enhancer/enhance/auth-type-generator.ts @@ -1,4 +1,4 @@ -import { getIdFields, isAuthInvocation, isDataModelFieldReference } from '@zenstackhq/sdk'; +import { getIdFields, hasAttribute, isAuthInvocation, isDataModelFieldReference } from '@zenstackhq/sdk'; import { DataModel, DataModelField, @@ -73,7 +73,9 @@ export function generateAuthType(model: Model, authModel: DataModel) { addAddField(exprType.name, memberDecl.name, fieldType, memberDecl.type.array); } else { // member is a scalar - addPickField(exprType.name, node.member.$refText); + if (!isIgnoredField(node.member.ref)) { + addPickField(exprType.name, node.member.$refText); + } } } } @@ -87,8 +89,10 @@ export function generateAuthType(model: Model, authModel: DataModel) { ensureType(fieldType.name); addAddField(fieldDecl.$container.name, node.target.$refText, fieldType.name, fieldDecl.type.array); } else { - // field is a scalar - addPickField(fieldDecl.$container.name, node.target.$refText); + if (!isIgnoredField(fieldDecl)) { + // field is a scalar + addPickField(fieldDecl.$container.name, node.target.$refText); + } } } }); @@ -97,8 +101,8 @@ export function generateAuthType(model: Model, authModel: DataModel) { // generate: // ` // namespace auth { - // export type User = WithRequired, 'id'> & { profile: Profile; }; - // export type Profile = WithRequired, 'age'>; + // export type User = WithRequired, 'id'> & { profile: Profile; } & Record; + // export type Profile = WithRequired, 'age'> & Record; // } // ` @@ -109,7 +113,9 @@ ${Array.from(types.entries()) let result = `Partial<_P.${model}>`; if (fields.pickFields.length > 0) { - result = `WithRequired<${result}, ${fields.pickFields.map((f) => `'${f}'`).join('|')}>`; + result = `WithRequired<${result}, ${fields.pickFields + .map((f) => `'${f}'`) + .join('|')}> & Record`; } if (fields.addFields.length > 0) { @@ -139,3 +145,7 @@ function isAuthAccess(node: AstNode): node is Expression { return false; } + +function isIgnoredField(field: DataModelField | undefined) { + return !!(field && hasAttribute(field, '@ignore')); +} diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 1c0999ca9..19004370d 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@zenstackhq/sdk", - "version": "2.0.0-beta.13", + "version": "2.0.0-beta.14", "description": "ZenStack plugin development SDK", "main": "index.js", "scripts": { diff --git a/packages/server/package.json b/packages/server/package.json index f35717c87..a98c2de53 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,6 +1,6 @@ { "name": "@zenstackhq/server", - "version": "2.0.0-beta.13", + "version": "2.0.0-beta.14", "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 18fa3e486..686740f63 100644 --- a/packages/testtools/package.json +++ b/packages/testtools/package.json @@ -1,6 +1,6 @@ { "name": "@zenstackhq/testtools", - "version": "2.0.0-beta.13", + "version": "2.0.0-beta.14", "description": "ZenStack Test Tools", "main": "index.js", "private": true,