diff --git a/packages/extension/package.json b/packages/extension/package.json index a7db671..32e9304 100644 --- a/packages/extension/package.json +++ b/packages/extension/package.json @@ -4,7 +4,7 @@ "private": true, "type": "module", "scripts": { - "build": "tsup src/service-worker.ts src/content-script.ts src/popup.ts src/options.ts --format iife --out-dir dist --clean && node scripts/generate-icons.mjs && cp src/popup.html src/popup.css src/options.html src/options.css manifest.json dist/", + "build": "tsup src/service-worker.ts src/content-script.ts src/popup.ts src/options.ts --format iife --out-dir dist --clean && node scripts/generate-icons.mjs && node scripts/copy-assets.mjs", "dev": "pnpm build --watch", "typecheck": "tsc --noEmit", "pack": "node scripts/pack-crx.mjs", diff --git a/packages/extension/scripts/copy-assets.mjs b/packages/extension/scripts/copy-assets.mjs new file mode 100644 index 0000000..e2b5652 --- /dev/null +++ b/packages/extension/scripts/copy-assets.mjs @@ -0,0 +1,27 @@ +import { copyFileSync, mkdirSync } from "fs"; +import { dirname, join } from "path"; +import { fileURLToPath } from "url"; + +const __dirname = dirname(fileURLToPath(import.meta.url)); +const root = join(__dirname, ".."); +const dist = join(root, "dist"); + +// Ensure dist exists +mkdirSync(dist, { recursive: true }); + +// Files to copy +const files = [ + "src/popup.html", + "src/popup.css", + "src/options.html", + "src/options.css", + "manifest.json", +]; + +for (const file of files) { + const src = join(root, file); + const destName = file.includes("/") ? file.split("/").pop() : file; + const dest = join(dist, destName); + copyFileSync(src, dest); + console.log(`Copied ${file} → dist/${destName}`); +} diff --git a/packages/server/package.json b/packages/server/package.json index b93e9f4..2f07591 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -21,7 +21,7 @@ "dist" ], "scripts": { - "build": "tsup src/bin.ts src/server.ts --format esm --dts --clean", + "build": "tsup", "dev": "tsx src/bin.ts", "typecheck": "tsc --noEmit" }, diff --git a/packages/server/tsconfig.json b/packages/server/tsconfig.json index dc6f10e..6fa9d4d 100644 --- a/packages/server/tsconfig.json +++ b/packages/server/tsconfig.json @@ -2,8 +2,10 @@ "extends": "../../tsconfig.json", "compilerOptions": { "outDir": "./dist", - "rootDir": "./src", - "noEmit": false + "baseUrl": ".", + "paths": { + "@claude-blocker/shared": ["../shared/src/index.ts"] + } }, - "include": ["src/**/*"] + "include": ["src/**/*", "../shared/src/**/*"] } diff --git a/packages/server/tsup.config.ts b/packages/server/tsup.config.ts new file mode 100644 index 0000000..75a2093 --- /dev/null +++ b/packages/server/tsup.config.ts @@ -0,0 +1,18 @@ +import { defineConfig } from "tsup"; +import { resolve, dirname } from "path"; +import { fileURLToPath } from "url"; + +const __dirname = dirname(fileURLToPath(import.meta.url)); + +export default defineConfig({ + entry: ["src/bin.ts", "src/server.ts"], + format: ["esm"], + dts: true, + clean: true, + noExternal: ["@claude-blocker/shared"], + esbuildOptions(options) { + options.alias = { + "@claude-blocker/shared": resolve(__dirname, "../shared/src/index.ts"), + }; + }, +}); diff --git a/packages/shared/package.json b/packages/shared/package.json index 4b71c17..9b533b5 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -3,9 +3,9 @@ "version": "0.0.1", "private": true, "type": "module", - "main": "./src/types.ts", - "types": "./src/types.ts", + "main": "./src/index.ts", + "types": "./src/index.ts", "exports": { - ".": "./src/types.ts" + ".": "./src/index.ts" } } diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts new file mode 100644 index 0000000..a0c4ebf --- /dev/null +++ b/packages/shared/src/index.ts @@ -0,0 +1 @@ +export * from "./types.js";