#!/usr/bin/env node import { spawnSync } from "node:child_process"; import fs from "node:fs"; import path from "node:path"; import { fileURLToPath } from "node:url"; const scriptDir = path.dirname(fileURLToPath(import.meta.url)); const rootDir = path.resolve(scriptDir, ".."); const tscCliPath = path.join(rootDir, "node_modules", "typescript", "bin", "tsc"); const buildTargets = [ { name: "@paperclipai/shared", output: path.join(rootDir, "packages/shared/dist/index.js"), tsconfig: path.join(rootDir, "packages/shared/tsconfig.json"), }, { name: "@paperclipai/plugin-sdk", output: path.join(rootDir, "packages/plugins/sdk/dist/index.js"), tsconfig: path.join(rootDir, "packages/plugins/sdk/tsconfig.json"), }, ]; if (!fs.existsSync(tscCliPath)) { throw new Error(`TypeScript CLI not found at ${tscCliPath}`); } for (const target of buildTargets) { if (fs.existsSync(target.output)) { continue; } const result = spawnSync(process.execPath, [tscCliPath, "-p", target.tsconfig], { cwd: rootDir, stdio: "inherit", }); if (result.error) { throw result.error; } if (result.status !== 0) { process.exit(result.status ?? 1); } }