From 8ee892bf2a82a47c4971d8744302468cc8b0c133 Mon Sep 17 00:00:00 2001 From: Nate Kelley Date: Mon, 21 Jul 2025 16:07:14 -0600 Subject: [PATCH] Use tsx and .ts files for validation --- apps/trigger/package.json | 2 +- .../{validate-env.js => validate-env.ts} | 0 package.json | 1 + packages/access-controls/package.json | 2 +- .../{validate-env.js => validate-env.ts} | 0 packages/ai/package.json | 2 +- .../{validate-env.js => validate-env.ts} | 0 packages/data-source/package.json | 2 +- .../{validate-env.js => validate-env.ts} | 0 packages/database/package.json | 2 +- .../{validate-env.js => validate-env.ts} | 0 packages/rerank/package.json | 2 +- .../{validate-env.js => validate-env.ts} | 0 packages/sandbox/package.json | 2 +- .../{validate-env.js => validate-env.ts} | 0 packages/slack/package.json | 2 +- .../{validate-env.js => validate-env.ts} | 0 packages/stored-values/package.json | 2 +- .../{validate-env.js => validate-env.ts} | 0 packages/test-utils/package.json | 2 +- .../{validate-env.js => validate-env.ts} | 0 pnpm-lock.yaml | 21 +++++++++++-------- scripts/new-package.ts | 10 ++++----- 23 files changed, 28 insertions(+), 24 deletions(-) rename apps/trigger/scripts/{validate-env.js => validate-env.ts} (100%) rename packages/access-controls/scripts/{validate-env.js => validate-env.ts} (100%) rename packages/ai/scripts/{validate-env.js => validate-env.ts} (100%) rename packages/data-source/scripts/{validate-env.js => validate-env.ts} (100%) rename packages/database/scripts/{validate-env.js => validate-env.ts} (100%) rename packages/rerank/scripts/{validate-env.js => validate-env.ts} (100%) rename packages/sandbox/scripts/{validate-env.js => validate-env.ts} (100%) rename packages/slack/scripts/{validate-env.js => validate-env.ts} (100%) rename packages/stored-values/scripts/{validate-env.js => validate-env.ts} (100%) rename packages/test-utils/scripts/{validate-env.js => validate-env.ts} (100%) diff --git a/apps/trigger/package.json b/apps/trigger/package.json index 6bc57d51a..040f3a0e6 100644 --- a/apps/trigger/package.json +++ b/apps/trigger/package.json @@ -6,7 +6,7 @@ "scripts": { "dev": "npx trigger.dev@v4-beta dev", "deploy": "npx trigger.dev@v4-beta deploy", - "prebuild": "node scripts/validate-env.js", + "prebuild": "tsx scripts/validate-env.ts", "build": "echo 'No build step required but we run it to make sure env is loaded' && tsc --noEmit", "lint": "biome check --write", "test": "vitest run", diff --git a/apps/trigger/scripts/validate-env.js b/apps/trigger/scripts/validate-env.ts similarity index 100% rename from apps/trigger/scripts/validate-env.js rename to apps/trigger/scripts/validate-env.ts diff --git a/package.json b/package.json index e1ff809bf..ba1428398 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,7 @@ "@biomejs/biome": "^1.9.4", "@types/node": "^20.19.4", "turbo": "^2.5.5", + "tsx": "catalog:", "vitest": "catalog:" }, "peerDependencies": { diff --git a/packages/access-controls/package.json b/packages/access-controls/package.json index c924f6b6b..35ba227fd 100644 --- a/packages/access-controls/package.json +++ b/packages/access-controls/package.json @@ -13,7 +13,7 @@ "main": "dist/index.js", "types": "dist/index.d.ts", "scripts": { - "prebuild": "node scripts/validate-env.js", + "prebuild": "tsx scripts/validate-env.ts", "build": "tsc", "build:commonjs": "tsc --module commonjs --moduleResolution node", "build:commonjs:watch": "npm run build:commonjs && tsc --module commonjs --moduleResolution node --watch", diff --git a/packages/access-controls/scripts/validate-env.js b/packages/access-controls/scripts/validate-env.ts similarity index 100% rename from packages/access-controls/scripts/validate-env.js rename to packages/access-controls/scripts/validate-env.ts diff --git a/packages/ai/package.json b/packages/ai/package.json index 2b2793584..7d6924bdf 100644 --- a/packages/ai/package.json +++ b/packages/ai/package.json @@ -14,7 +14,7 @@ } }, "scripts": { - "prebuild": "node scripts/validate-env.js", + "prebuild": "tsx scripts/validate-env.ts", "build": "tsc", "typecheck": "tsc --noEmit", "dev": "tsc --watch", diff --git a/packages/ai/scripts/validate-env.js b/packages/ai/scripts/validate-env.ts similarity index 100% rename from packages/ai/scripts/validate-env.js rename to packages/ai/scripts/validate-env.ts diff --git a/packages/data-source/package.json b/packages/data-source/package.json index c6811773d..8f04f4c7b 100644 --- a/packages/data-source/package.json +++ b/packages/data-source/package.json @@ -13,7 +13,7 @@ "main": "dist/index.js", "types": "dist/index.d.ts", "scripts": { - "prebuild": "node scripts/validate-env.js", + "prebuild": "tsx scripts/validate-env.ts", "build": "tsc", "build:commonjs": "tsc --module commonjs --moduleResolution node", "build:commonjs:watch": "npm run build:commonjs && tsc --module commonjs --moduleResolution node --watch", diff --git a/packages/data-source/scripts/validate-env.js b/packages/data-source/scripts/validate-env.ts similarity index 100% rename from packages/data-source/scripts/validate-env.js rename to packages/data-source/scripts/validate-env.ts diff --git a/packages/database/package.json b/packages/database/package.json index 0d7b1157a..14d030ddf 100644 --- a/packages/database/package.json +++ b/packages/database/package.json @@ -19,7 +19,7 @@ "main": "dist/index.js", "types": "dist/index.d.ts", "scripts": { - "prebuild": "node scripts/validate-env.js", + "prebuild": "tsx scripts/validate-env.ts", "build": "tsc", "build:commonjs": "tsc --module commonjs --moduleResolution node", "build:commonjs:watch": "npm run build:commonjs && tsc --module commonjs --moduleResolution node --watch", diff --git a/packages/database/scripts/validate-env.js b/packages/database/scripts/validate-env.ts similarity index 100% rename from packages/database/scripts/validate-env.js rename to packages/database/scripts/validate-env.ts diff --git a/packages/rerank/package.json b/packages/rerank/package.json index 31093fb89..f172efa26 100644 --- a/packages/rerank/package.json +++ b/packages/rerank/package.json @@ -11,7 +11,7 @@ } }, "scripts": { - "prebuild": "node scripts/validate-env.js", + "prebuild": "tsx scripts/validate-env.ts", "build": "tsc", "typecheck": "tsc --noEmit", "test": "vitest run", diff --git a/packages/rerank/scripts/validate-env.js b/packages/rerank/scripts/validate-env.ts similarity index 100% rename from packages/rerank/scripts/validate-env.js rename to packages/rerank/scripts/validate-env.ts diff --git a/packages/sandbox/package.json b/packages/sandbox/package.json index 6d0197b0f..9e3d5c0d9 100644 --- a/packages/sandbox/package.json +++ b/packages/sandbox/package.json @@ -15,7 +15,7 @@ } }, "scripts": { - "prebuild": "node scripts/validate-env.js", + "prebuild": "tsx scripts/validate-env.ts", "build": "tsc", "typecheck": "tsc --noEmit", "dev": "tsc --watch", diff --git a/packages/sandbox/scripts/validate-env.js b/packages/sandbox/scripts/validate-env.ts similarity index 100% rename from packages/sandbox/scripts/validate-env.js rename to packages/sandbox/scripts/validate-env.ts diff --git a/packages/slack/package.json b/packages/slack/package.json index d4ab15831..eb8ffa49b 100644 --- a/packages/slack/package.json +++ b/packages/slack/package.json @@ -15,7 +15,7 @@ } }, "scripts": { - "prebuild": "node scripts/validate-env.js", + "prebuild": "tsx scripts/validate-env.ts", "build": "tsc", "typecheck": "tsc --noEmit", "dev": "tsc --watch", diff --git a/packages/slack/scripts/validate-env.js b/packages/slack/scripts/validate-env.ts similarity index 100% rename from packages/slack/scripts/validate-env.js rename to packages/slack/scripts/validate-env.ts diff --git a/packages/stored-values/package.json b/packages/stored-values/package.json index 834b3d6db..9cc692b68 100644 --- a/packages/stored-values/package.json +++ b/packages/stored-values/package.json @@ -19,7 +19,7 @@ "main": "dist/index.js", "types": "dist/index.d.ts", "scripts": { - "prebuild": "node scripts/validate-env.js", + "prebuild": "tsx scripts/validate-env.ts", "build": "tsc", "build:commonjs": "tsc --module commonjs --moduleResolution node", "build:commonjs:watch": "npm run build:commonjs && tsc --module commonjs --moduleResolution node --watch", diff --git a/packages/stored-values/scripts/validate-env.js b/packages/stored-values/scripts/validate-env.ts similarity index 100% rename from packages/stored-values/scripts/validate-env.js rename to packages/stored-values/scripts/validate-env.ts diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index 07b0c59e2..a24ffaeb6 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -14,7 +14,7 @@ } }, "scripts": { - "prebuild": "node scripts/validate-env.js", + "prebuild": "tsx scripts/validate-env.ts", "build": "tsc", "typecheck": "tsc --noEmit", "lint": "biome check --write", diff --git a/packages/test-utils/scripts/validate-env.js b/packages/test-utils/scripts/validate-env.ts similarity index 100% rename from packages/test-utils/scripts/validate-env.js rename to packages/test-utils/scripts/validate-env.ts diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ea084a959..2092af0b5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -87,6 +87,9 @@ importers: '@types/node': specifier: ^20.19.4 version: 20.19.4 + tsx: + specifier: 'catalog:' + version: 4.20.3 turbo: specifier: ^2.5.5 version: 2.5.5 @@ -143,8 +146,8 @@ importers: specifier: workspace:* version: link:../../packages/vitest-config '@hono/zod-validator': - specifier: ^0.7.0 - version: 0.7.0(hono@4.8.4)(zod@3.25.1) + specifier: ^0.7.2 + version: 0.7.2(hono@4.8.4)(zod@3.25.1) '@supabase/supabase-js': specifier: 'catalog:' version: 2.50.2 @@ -2521,11 +2524,11 @@ packages: engines: {node: '>=6'} hasBin: true - '@hono/zod-validator@0.7.0': - resolution: {integrity: sha512-qe2ZE6sHFE98dcUrbYMtS3bAV8hqcCOflykvZga2S7XhmNSZzT+dIz4OuMILsjLHkJw9JMn912/dB7dQOmuPvg==} + '@hono/zod-validator@0.7.2': + resolution: {integrity: sha512-ub5eL/NeZ4eLZawu78JpW/J+dugDAYhwqUIdp9KYScI6PZECij4Hx4UsrthlEUutqDDhPwRI0MscUfNkvn/mqQ==} peerDependencies: hono: '>=3.9.0' - zod: ^3.25.0 + zod: ^3.25.0 || ^4.0.0 '@humanwhocodes/config-array@0.13.0': resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} @@ -13786,7 +13789,7 @@ snapshots: protobufjs: 7.5.3 yargs: 17.7.2 - '@hono/zod-validator@0.7.0(hono@4.8.4)(zod@3.25.1)': + '@hono/zod-validator@0.7.2(hono@4.8.4)(zod@3.25.1)': dependencies: hono: 4.8.4 zod: 3.25.1 @@ -17442,14 +17445,14 @@ snapshots: msw: 2.10.4(@types/node@20.19.4)(typescript@5.8.3) vite: 6.3.5(@types/node@20.19.4)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0) - '@vitest/mocker@3.2.4(msw@2.10.4(@types/node@24.0.10)(typescript@5.8.3))(vite@6.3.5(@types/node@20.19.4)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0))': + '@vitest/mocker@3.2.4(msw@2.10.4(@types/node@24.0.10)(typescript@5.8.3))(vite@6.3.5(@types/node@24.0.10)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: msw: 2.10.4(@types/node@24.0.10)(typescript@5.8.3) - vite: 6.3.5(@types/node@20.19.4)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0) + vite: 6.3.5(@types/node@24.0.10)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0) '@vitest/pretty-format@2.0.5': dependencies: @@ -24162,7 +24165,7 @@ snapshots: dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(msw@2.10.4(@types/node@24.0.10)(typescript@5.8.3))(vite@6.3.5(@types/node@20.19.4)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)) + '@vitest/mocker': 3.2.4(msw@2.10.4(@types/node@24.0.10)(typescript@5.8.3))(vite@6.3.5(@types/node@24.0.10)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 diff --git a/scripts/new-package.ts b/scripts/new-package.ts index e98672c43..41c621255 100755 --- a/scripts/new-package.ts +++ b/scripts/new-package.ts @@ -241,7 +241,7 @@ async function main() { console.log(`\nšŸ“‹ Next steps:`); console.log(` 1. cd ${config.type === 'package' ? 'packages' : 'apps'}/${config.name}`); console.log(` 2. Update the env.d.ts file with your environment variable types`); - console.log(` 3. Add any required env vars to scripts/validate-env.js`); + console.log(` 3. Add any required env vars to scripts/validate-env.ts`); console.log(` 4. Make sure required env vars are defined in the root .env file`); console.log(` 5. Add your source code in the src/ directory`); console.log(` 6. Run 'npm run build' to build the ${config.type}`); @@ -272,7 +272,7 @@ async function createPackageFiles(config: PackageConfig) { }, }, scripts: { - prebuild: "node scripts/validate-env.js", + prebuild: "tsx scripts/validate-env.ts", build: "tsc", typecheck: "tsc --noEmit", dev: "tsc --watch", @@ -363,7 +363,7 @@ export const howdy = () => { await writeFile(join(directory, "src", "lib", "index.ts"), libIndex); - // Create a proper validate-env.js script + // Create a proper validate-env.ts script const validateEnv = `#!/usr/bin/env node // This script uses the shared env-utils to validate environment variables @@ -388,7 +388,7 @@ if (hasErrors) { } `; - await writeFile(join(directory, "scripts", "validate-env.js"), validateEnv); + await writeFile(join(directory, "scripts", "validate-env.ts"), validateEnv); // Create .gitignore for TypeScript build artifacts const gitignore = `# TypeScript build artifacts @@ -440,7 +440,7 @@ test-results/ console.log("šŸ“„ Created vitest.config.ts"); console.log("šŸ“„ Created src/index.ts"); console.log("šŸ“„ Created src/lib/index.ts"); - console.log("šŸ“„ Created scripts/validate-env.js"); + console.log("šŸ“„ Created scripts/validate-env.ts"); console.log("šŸ“„ Created .gitignore"); }