From b55dbd5c4bf343e118f14427f5d432cd77f03e55 Mon Sep 17 00:00:00 2001 From: Amit Singh Date: Sat, 17 Jan 2026 10:00:53 +0000 Subject: [PATCH] feat: set up Turborepo typecheck across all packages - Configure turbo.json to run typecheck efficiently via Turborepo - Add typecheck script to root package that checks both root files and all workspace packages - Fix TypeScript configuration issues (dom/webworker lib conflicts) - Add skipLibCheck to base TypeScript config - Add typecheck script to configs package with its own tsconfig.json - Add CSS module declarations for trpc package - Fix type imports in trpc to use type-only imports - Update build task to depend on typecheck Co-Authored-By: Claude --- apps/extension/package.json | 3 ++- apps/extension/tsconfig.json | 1 + apps/web/package.json | 3 ++- package.json | 2 ++ packages/configs/package.json | 3 +++ packages/configs/tsconfig.base.json | 5 +++-- packages/configs/tsconfig.json | 5 +++++ packages/shared/package.json | 3 +++ packages/trpc/package.json | 3 ++- packages/trpc/src/@types/css-modules.d.ts | 4 ++++ packages/trpc/src/@types/global.d.ts | 5 ----- packages/trpc/src/services/storageCleanupService.ts | 2 +- tsconfig.json | 11 +++++++++-- turbo.json | 8 ++++++-- 14 files changed, 43 insertions(+), 15 deletions(-) create mode 100644 packages/configs/tsconfig.json create mode 100644 packages/trpc/src/@types/css-modules.d.ts delete mode 100644 packages/trpc/src/@types/global.d.ts diff --git a/apps/extension/package.json b/apps/extension/package.json index e138c5e54..661e56ece 100644 --- a/apps/extension/package.json +++ b/apps/extension/package.json @@ -9,7 +9,8 @@ "build": "pnpm run build:chrome", "dev:chrome": "EXT_BROWSER=chrome webpack serve", "dev:firefox": "EXT_BROWSER=firefox webpack serve", - "dev": "pnpm run dev:chrome" + "dev": "pnpm run dev:chrome", + "typecheck": "tsc --noEmit" }, "dependencies": { "@bypass/configs": "workspace:*", diff --git a/apps/extension/tsconfig.json b/apps/extension/tsconfig.json index 703483dfa..9b3c21597 100644 --- a/apps/extension/tsconfig.json +++ b/apps/extension/tsconfig.json @@ -2,6 +2,7 @@ "extends": "./node_modules/@bypass/configs/tsconfig.base.json", "compilerOptions": { "sourceMap": true, // Required for webpack source maps to work + "lib": ["esnext", "dom", "dom.iterable", "webworker"], "baseUrl": ".", "paths": { "@/*": ["./src/*"], diff --git a/apps/web/package.json b/apps/web/package.json index 77c2965be..97393db9a 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -5,7 +5,8 @@ "type": "module", "scripts": { "build": "next build", - "dev": "next dev" + "dev": "next dev", + "typecheck": "tsc --noEmit" }, "dependencies": { "@bypass/configs": "workspace:*", diff --git a/package.json b/package.json index 48b9054fb..cb0925b95 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,8 @@ "dev:env": "vercel env pull .env", "e2e": "playwright test", "lint": "xo", + "typecheck": "tsc --noEmit", + "typecheck:all": "turbo run typecheck", "precommit": "lint-staged --quiet", "prepare": "husky", "test": "turbo run test" diff --git a/packages/configs/package.json b/packages/configs/package.json index 5c1c018fb..998bc7695 100644 --- a/packages/configs/package.json +++ b/packages/configs/package.json @@ -12,5 +12,8 @@ ], "peerDependencies": { "typescript": "5.9.3" + }, + "scripts": { + "typecheck": "tsc --noEmit" } } diff --git a/packages/configs/tsconfig.base.json b/packages/configs/tsconfig.base.json index 72f8a6036..f6a959096 100644 --- a/packages/configs/tsconfig.base.json +++ b/packages/configs/tsconfig.base.json @@ -5,7 +5,7 @@ "target": "esnext", "moduleResolution": "bundler", "jsx": "react-jsxdev", - "lib": ["esnext", "dom", "dom.iterable", "webworker"], + "lib": ["esnext", "dom", "dom.iterable"], "allowJs": true, "checkJs": true, "strict": true, @@ -19,6 +19,7 @@ "resolveJsonModule": true, "isolatedModules": true, "incremental": true, - "noEmit": true + "noEmit": true, + "skipLibCheck": true } } diff --git a/packages/configs/tsconfig.json b/packages/configs/tsconfig.json new file mode 100644 index 000000000..d472449ae --- /dev/null +++ b/packages/configs/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "./tsconfig.base.json", + "include": ["*.ts"], + "exclude": ["node_modules", ".turbo"] +} diff --git a/packages/shared/package.json b/packages/shared/package.json index 8e77e26b7..3d831f875 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -9,6 +9,9 @@ "./schema": "./src/schemaIndex.ts", "./types/*": "./src/@types/*" }, + "scripts": { + "typecheck": "tsc --noEmit" + }, "sideEffects": false, "peerDependencies": { "@bypass/configs": "workspace:*", diff --git a/packages/trpc/package.json b/packages/trpc/package.json index abf1bb893..20f5aab1e 100644 --- a/packages/trpc/package.json +++ b/packages/trpc/package.json @@ -10,7 +10,8 @@ }, "sideEffects": false, "scripts": { - "test": "vitest run" + "test": "vitest run", + "typecheck": "tsc --noEmit" }, "dependencies": { "@bypass/configs": "workspace:*", diff --git a/packages/trpc/src/@types/css-modules.d.ts b/packages/trpc/src/@types/css-modules.d.ts new file mode 100644 index 000000000..ab57c3452 --- /dev/null +++ b/packages/trpc/src/@types/css-modules.d.ts @@ -0,0 +1,4 @@ +declare module '*.module.css' { + const classes: Record; + export default classes; +} diff --git a/packages/trpc/src/@types/global.d.ts b/packages/trpc/src/@types/global.d.ts deleted file mode 100644 index adb6ecb59..000000000 --- a/packages/trpc/src/@types/global.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -declare namespace NodeJS { - interface ProcessEnv { - NEXT_PUBLIC_PROD_ENV: string; - } -} diff --git a/packages/trpc/src/services/storageCleanupService.ts b/packages/trpc/src/services/storageCleanupService.ts index 3fa6c77b5..854b82760 100644 --- a/packages/trpc/src/services/storageCleanupService.ts +++ b/packages/trpc/src/services/storageCleanupService.ts @@ -1,4 +1,4 @@ -import { type IPersons } from '@bypass/shared'; +import type { IPersons } from '@bypass/shared'; import { EFirebaseDBRef } from '../constants/firebase'; import { deletePersonImageFromFirebase, diff --git a/tsconfig.json b/tsconfig.json index fd3e552f1..967306ec3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,12 @@ { "extends": "@bypass/configs/tsconfig.base.json", - "include": ["**/*.ts", "**/*.tsx"], - "exclude": ["node_modules", "playwright-report", "test-results", ".turbo"] + "include": ["*.ts"], + "exclude": [ + "node_modules", + "playwright-report", + "test-results", + ".turbo", + "apps", + "packages" + ] } diff --git a/turbo.json b/turbo.json index 4d9890313..073ce9c71 100644 --- a/turbo.json +++ b/turbo.json @@ -15,13 +15,17 @@ ], "tasks": { "build": { - "dependsOn": ["//#lint"], - "outputs": ["chrome-build/**", ".next/**"] + "dependsOn": ["//#lint", "//#typecheck"], + "outputs": ["chrome-build/**", "firefox-build/**", ".next/**"] }, "dev": { "cache": false }, "//#lint": {}, + "//#typecheck": {}, + "typecheck": { + "outputs": [] + }, "test": { "outputs": [] }