From 050e291f73931ab9e3dacb7f1fba364f296403c1 Mon Sep 17 00:00:00 2001 From: Forge Date: Fri, 6 Mar 2026 13:47:24 +0800 Subject: [PATCH] fix: add tsconfig.json, @types/chrome, fix TS errors - CI typecheck now passes --- entrypoints/options/Options.tsx | 2 +- entrypoints/popup/Popup.tsx | 2 +- package-lock.json | 12 ++++++++++++ package.json | 1 + tsconfig.json | 27 +++++++++++++++++++++++++++ tsconfig.test.json | 9 +++++++++ 6 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 tsconfig.json create mode 100644 tsconfig.test.json diff --git a/entrypoints/options/Options.tsx b/entrypoints/options/Options.tsx index 07536f4..11ad017 100644 --- a/entrypoints/options/Options.tsx +++ b/entrypoints/options/Options.tsx @@ -162,7 +162,7 @@ function OptionsPage() { const apiKeyRef = useRef(null); useEffect(() => { - chrome.storage.local.get(['provider', 'apiKey', 'model'], (result) => { + chrome.storage.local.get(["provider", "apiKey", "model"], (result: Record) => { if (result.provider) setProvider(result.provider); if (result.apiKey) setApiKey(result.apiKey); if (result.model) setModel(result.model); diff --git a/entrypoints/popup/Popup.tsx b/entrypoints/popup/Popup.tsx index b4470c1..95b44cb 100644 --- a/entrypoints/popup/Popup.tsx +++ b/entrypoints/popup/Popup.tsx @@ -7,7 +7,7 @@ function Popup() { const [model, setModel] = useState(''); useEffect(() => { - chrome.storage.local.get(['provider', 'apiKey', 'model'], (result) => { + chrome.storage.local.get(["provider", "apiKey", "model"], (result: Record) => { if (result.apiKey) { setConfigured(true); setProvider(result.provider || 'openai'); diff --git a/package-lock.json b/package-lock.json index bbee3a8..f71a6e2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,6 +18,7 @@ }, "devDependencies": { "@playwright/test": "^1.50.1", + "@types/chrome": "^0.1.37", "@types/react": "^18.3.1", "@types/react-dom": "^18.3.1", "autoprefixer": "^10.4.20", @@ -1399,6 +1400,17 @@ "assertion-error": "^2.0.1" } }, + "node_modules/@types/chrome": { + "version": "0.1.37", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.1.37.tgz", + "integrity": "sha512-IJE4ceuDO7lrEuua7Pow47zwNcI8E6qqkowRP7aFPaZ0lrjxh6y836OPqqkIZeTX64FTogbw+4RNH0+QrweCTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/filesystem": "*", + "@types/har-format": "*" + } + }, "node_modules/@types/deep-eql": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", diff --git a/package.json b/package.json index a7fc52c..f7d3c51 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ }, "devDependencies": { "@playwright/test": "^1.50.1", + "@types/chrome": "^0.1.37", "@types/react": "^18.3.1", "@types/react-dom": "^18.3.1", "autoprefixer": "^10.4.20", diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..599147f --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "Bundler", + "lib": ["ESNext", "DOM"], + "jsx": "react-jsx", + "strict": true, + "noEmit": true, + "skipLibCheck": true, + "types": ["chrome"], + "esModuleInterop": true, + "allowImportingTsExtensions": true, + "paths": { + "~/*": ["./src/*"] + } + }, + "include": [ + "entrypoints/**/*", + "src/**/*", + ".wxt/types/**/*" + ], + "exclude": [ + "node_modules", + ".output" + ] +} diff --git a/tsconfig.test.json b/tsconfig.test.json new file mode 100644 index 0000000..408a1a6 --- /dev/null +++ b/tsconfig.test.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "types": ["vitest/globals"] + }, + "include": [ + "tests/**/*" + ] +}