From b6bce410929f77274105c37612a9d69b0ef87c07 Mon Sep 17 00:00:00 2001 From: RevIQ Date: Fri, 9 Jan 2026 12:14:19 +0800 Subject: [PATCH] Fix zod imports with ast-grep namespace import rule Applied ast-grep rule to convert named zod imports to namespace imports across the api-contract package for consistency. Co-Authored-By: Claude Opus 4.5 --- .ast-grep/rule-tests/.gitkeep | 0 .../zod-namespace-import-snapshot.yml | 20 +++++++++++++++++++ .../rule-tests/zod-namespace-import-test.yml | 13 ++++++++++++ .ast-grep/rules/.gitkeep | 0 .ast-grep/rules/zod-namespace-import.yml | 11 ++++++++++ packages/api-contract/src/contract.ts | 2 +- packages/api-contract/src/schemas/admin.ts | 2 +- packages/api-contract/src/schemas/auth.ts | 2 +- packages/api-contract/src/schemas/common.ts | 2 +- packages/api-contract/src/schemas/org.ts | 2 +- packages/api-contract/src/schemas/user.ts | 2 +- packages/api-contract/tsconfig.json | 8 +------- 12 files changed, 51 insertions(+), 13 deletions(-) delete mode 100644 .ast-grep/rule-tests/.gitkeep create mode 100644 .ast-grep/rule-tests/__snapshots__/zod-namespace-import-snapshot.yml create mode 100644 .ast-grep/rule-tests/zod-namespace-import-test.yml delete mode 100644 .ast-grep/rules/.gitkeep create mode 100644 .ast-grep/rules/zod-namespace-import.yml diff --git a/.ast-grep/rule-tests/.gitkeep b/.ast-grep/rule-tests/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/.ast-grep/rule-tests/__snapshots__/zod-namespace-import-snapshot.yml b/.ast-grep/rule-tests/__snapshots__/zod-namespace-import-snapshot.yml new file mode 100644 index 0000000..07904da --- /dev/null +++ b/.ast-grep/rule-tests/__snapshots__/zod-namespace-import-snapshot.yml @@ -0,0 +1,20 @@ +id: zod-namespace-import +snapshots: + ? | + import { z } from "zod"; + : fixed: | + import * as z from "zod" + labels: + - source: import { z } from "zod"; + style: primary + start: 0 + end: 24 + ? | + import { z, ZodError } from "zod"; + : fixed: | + import * as z from "zod" + labels: + - source: import { z, ZodError } from "zod"; + style: primary + start: 0 + end: 34 diff --git a/.ast-grep/rule-tests/zod-namespace-import-test.yml b/.ast-grep/rule-tests/zod-namespace-import-test.yml new file mode 100644 index 0000000..7c6439c --- /dev/null +++ b/.ast-grep/rule-tests/zod-namespace-import-test.yml @@ -0,0 +1,13 @@ +id: zod-namespace-import +valid: + - | + import * as z from "zod"; + - | + import * as z from "zod"; + const schema = z.object({ name: z.string() }); + +invalid: + - | + import { z } from "zod"; + - | + import { z, ZodError } from "zod"; diff --git a/.ast-grep/rules/.gitkeep b/.ast-grep/rules/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/.ast-grep/rules/zod-namespace-import.yml b/.ast-grep/rules/zod-namespace-import.yml new file mode 100644 index 0000000..43fb71b --- /dev/null +++ b/.ast-grep/rules/zod-namespace-import.yml @@ -0,0 +1,11 @@ +id: zod-namespace-import +language: typescript +severity: error +message: Use namespace import for zod - `import * as z from "zod"` instead of named import +note: | + Named imports from zod (e.g., `import { z } from "zod"`) should be replaced + with namespace imports (`import * as z from "zod"`) for consistency and to + ensure all zod utilities are available under the `z` namespace. +rule: + pattern: import { $$$IMPORTS } from "zod" +fix: import * as z from "zod"; diff --git a/packages/api-contract/src/contract.ts b/packages/api-contract/src/contract.ts index ebaf79b..28e32ea 100644 --- a/packages/api-contract/src/contract.ts +++ b/packages/api-contract/src/contract.ts @@ -1,5 +1,5 @@ import { oc } from "@orpc/contract"; -import { z } from "zod"; +import * as z from "zod"; import { adminAddSiteInputSchema, adminCreateOrgInputSchema, diff --git a/packages/api-contract/src/schemas/admin.ts b/packages/api-contract/src/schemas/admin.ts index b3e05db..d960f4c 100644 --- a/packages/api-contract/src/schemas/admin.ts +++ b/packages/api-contract/src/schemas/admin.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { emailSchema, slugSchema } from "./common.js"; import { orgRoleSchema } from "./org.js"; diff --git a/packages/api-contract/src/schemas/auth.ts b/packages/api-contract/src/schemas/auth.ts index 1031fad..ba45015 100644 --- a/packages/api-contract/src/schemas/auth.ts +++ b/packages/api-contract/src/schemas/auth.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { emailSchema } from "./common.js"; /** diff --git a/packages/api-contract/src/schemas/common.ts b/packages/api-contract/src/schemas/common.ts index b98f688..cd2c172 100644 --- a/packages/api-contract/src/schemas/common.ts +++ b/packages/api-contract/src/schemas/common.ts @@ -2,7 +2,7 @@ import { isValidPhoneNumber, parsePhoneNumberWithError, } from "libphonenumber-js"; -import { z } from "zod"; +import * as z from "zod"; /** * Email schema - validates email format and transforms to lowercase diff --git a/packages/api-contract/src/schemas/org.ts b/packages/api-contract/src/schemas/org.ts index c503933..aa1aba6 100644 --- a/packages/api-contract/src/schemas/org.ts +++ b/packages/api-contract/src/schemas/org.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { emailSchema, slugSchema } from "./common.js"; /** diff --git a/packages/api-contract/src/schemas/user.ts b/packages/api-contract/src/schemas/user.ts index f7af74a..a7db2d2 100644 --- a/packages/api-contract/src/schemas/user.ts +++ b/packages/api-contract/src/schemas/user.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { phoneSchema } from "./common.js"; /** diff --git a/packages/api-contract/tsconfig.json b/packages/api-contract/tsconfig.json index 0ba618a..c9d5403 100644 --- a/packages/api-contract/tsconfig.json +++ b/packages/api-contract/tsconfig.json @@ -1,12 +1,6 @@ { "extends": "@macalinao/tsconfig/tsconfig.base.json", "compilerOptions": { - "outDir": "./dist", - "rootDir": "./src", - "declaration": true, - "declarationMap": true, "isolatedDeclarations": false - }, - "include": ["src/**/*"], - "exclude": ["node_modules", "dist"] + } }