Merge pull request #422 from alibaba/refactor/typescript-6

refactor: upgrade to TypeScript 6 with source-first monorepo resolution
This commit is contained in:
Simon
2026-04-12 03:28:46 +08:00
committed by GitHub
37 changed files with 289 additions and 236 deletions

3
.gitignore vendored
View File

@@ -25,6 +25,9 @@ dist-ssr
*.sw?
.qoder
# publish backup
package.json.bak
# env files
.env
.env.*

View File

@@ -21,7 +21,7 @@ Internal packages:
npm start # Start website dev server
npm run build # Build all packages
npm run build:libs # Build all libraries
npm run lint # ESLint with TypeScript strict rules
npm run lint # ESLint
npm run zip -w @page-agent/ext # Zip the extension package
```

8
package-lock.json generated
View File

@@ -36,7 +36,7 @@
"husky": "^9.1.7",
"lint-staged": "^16.4.0",
"prettier": "^3.8.1",
"typescript": "^5.9.3",
"typescript": "^6.0.2",
"typescript-eslint": "^8.58.1",
"unplugin-dts": "^1.0.0-beta.6",
"vite": "^7.3.2",
@@ -11349,9 +11349,9 @@
"license": "MIT"
},
"node_modules/typescript": {
"version": "5.9.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.2.tgz",
"integrity": "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==",
"dev": true,
"license": "Apache-2.0",
"bin": {

View File

@@ -33,8 +33,10 @@
"build:website": "npm run build:website --workspace=@page-agent/website",
"build:ext": "npm run build:libs && npm run zip -w @page-agent/ext",
"version": "node scripts/sync-version.js",
"postpublish": "npm run postpublish --workspaces --if-present",
"typecheck": "tsc --noEmit -p tsconfig.typecheck.json && tsc --noEmit -p packages/extension/tsconfig.json",
"lint": "eslint .",
"cleanup": "rm -rf packages/*/dist",
"cleanup": "rm -rf packages/*/dist && rm -rf packages/*/.output",
"prepare": "husky || true"
},
"devDependencies": {
@@ -55,7 +57,7 @@
"husky": "^9.1.7",
"lint-staged": "^16.4.0",
"prettier": "^3.8.1",
"typescript": "^5.9.3",
"typescript": "^6.0.2",
"typescript-eslint": "^8.58.1",
"unplugin-dts": "^1.0.0-beta.6",
"vite": "^7.3.2",
@@ -63,7 +65,7 @@
"vite-plugin-css-injected-by-js": "^4.0.1"
},
"overrides": {
"typescript": "^5.9.3",
"typescript": "^6.0.2",
"@vitejs/plugin-react": "^5.2.0"
},
"lint-staged": {

View File

@@ -3,6 +3,15 @@
"private": false,
"version": "1.7.1",
"type": "module",
"main": "./src/PageAgentCore.ts",
"types": "./src/PageAgentCore.ts",
"exports": {
".": {
"types": "./src/PageAgentCore.ts",
"default": "./src/PageAgentCore.ts"
}
},
"publishConfig": {
"main": "./dist/esm/page-agent-core.js",
"module": "./dist/esm/page-agent-core.js",
"types": "./dist/esm/PageAgentCore.d.ts",
@@ -12,6 +21,7 @@
"import": "./dist/esm/page-agent-core.js",
"default": "./dist/esm/page-agent-core.js"
}
}
},
"files": [
"dist/"
@@ -39,8 +49,8 @@
"scripts": {
"build": "vite build",
"dev:iife": "concurrently \"vite build --config vite.iife.config.js --watch\" \"npx serve dist/iife -p 5174\"",
"prepublishOnly": "node -e \"const fs=require('fs');['README.md','LICENSE'].forEach(f=>fs.copyFileSync('../../'+f,f))\"",
"postpublish": "node -e \"['README.md','LICENSE'].forEach(f=>{try{require('fs').unlinkSync(f)}catch{}})\""
"prepublishOnly": "node ../../scripts/pre-publish.js",
"postpublish": "node ../../scripts/post-publish.js"
},
"dependencies": {
"chalk": "^5.6.2",

View File

@@ -1,9 +0,0 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
// @workaround DTS bug
// dts do not work with monorepo path mapping
// disable path mapping for it
"paths": {}
}
}

View File

@@ -1,22 +1,8 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.tsbuildinfo",
"noEmit": false,
"allowImportingTsExtensions": false,
"baseUrl": ".",
"outDir": "dist",
"paths": {
//
"@page-agent/llms": ["../llms/src/index.ts"],
"@page-agent/page-controller": ["../page-controller/src/PageController.ts"]
}
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.tsbuildinfo"
},
"include": ["**/*.ts"],
"exclude": ["dist", "node_modules"],
"references": [
//
{ "path": "../llms" },
{ "path": "../page-controller" }
]
"include": ["src/**/*.ts"],
"exclude": ["dist", "node_modules"]
}

View File

@@ -11,7 +11,15 @@ const __dirname = dirname(fileURLToPath(import.meta.url))
export default defineConfig({
clearScreen: false,
plugins: [
dts({ tsconfigPath: './tsconfig.dts.json', bundleTypes: true }),
dts({
bundleTypes: true,
compilerOptions: {
composite: true,
noEmit: false,
emitDeclarationOnly: true,
declaration: true,
},
}),
cssInjectedByJsPlugin({ relativeCSSInjection: true }),
],
publicDir: false,

View File

@@ -24,7 +24,7 @@ export class TabsController {
currentTabId: number | null = null
private disposed = false
private port: chrome.runtime.Port | null = null
private port?: chrome.runtime.Port
private portRetries = 0
private windowId: number | null = null
@@ -44,7 +44,7 @@ export class TabsController {
this.currentTabId = null
this.disposed = false
this.port = null
this.port = undefined
this.portRetries = 0
this.windowId = null
@@ -338,7 +338,7 @@ export class TabsController {
})
this.port.onDisconnect.addListener(() => {
this.port = null
this.port = undefined
if (this.disposed) return
if (this.portRetries >= 7) {
console.error(PREFIX, 'tab events port failed after 7 retries, giving up')
@@ -354,7 +354,7 @@ export class TabsController {
debug('dispose')
this.disposed = true
this.port?.disconnect()
this.port = null
this.port = undefined
}
}

View File

@@ -3,26 +3,11 @@
"compilerOptions": {
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.tsbuildinfo",
"useDefineForClassFields": true,
"noEmit": false,
"allowImportingTsExtensions": false,
"strictNullChecks": true,
"jsx": "react-jsx",
"baseUrl": ".",
"types": ["node", "chrome"],
"paths": {
// Self root
"@/*": ["src/*"],
"@page-agent/llms": ["../llms/src/index.ts"],
"@page-agent/page-controller": ["../page-controller/src/PageController.ts"],
"@page-agent/core": ["../core/src/PageAgentCore.ts"],
"@page-agent/ui": ["../ui/src/index.ts"]
"@/*": ["./src/*"]
}
}
},
"references": [
//
{ "path": "../llms" },
{ "path": "../page-controller" },
{ "path": "../core" },
{ "path": "../ui" }
]
}

View File

@@ -2,6 +2,15 @@
"name": "@page-agent/llms",
"version": "1.7.1",
"type": "module",
"main": "./src/index.ts",
"types": "./src/index.ts",
"exports": {
".": {
"types": "./src/index.ts",
"default": "./src/index.ts"
}
},
"publishConfig": {
"main": "./dist/lib/page-agent-llms.js",
"module": "./dist/lib/page-agent-llms.js",
"types": "./dist/lib/index.d.ts",
@@ -11,6 +20,7 @@
"import": "./dist/lib/page-agent-llms.js",
"default": "./dist/lib/page-agent-llms.js"
}
}
},
"files": [
"dist/"
@@ -33,8 +43,8 @@
"homepage": "https://alibaba.github.io/page-agent/",
"scripts": {
"build": "vite build",
"prepublishOnly": "node -e \"const fs=require('fs');['LICENSE'].forEach(f=>fs.copyFileSync('../../'+f,f))\"",
"postpublish": "node -e \"['LICENSE'].forEach(f=>{try{require('fs').unlinkSync(f)}catch{}})\""
"prepublishOnly": "node ../../scripts/pre-publish.js",
"postpublish": "node ../../scripts/post-publish.js"
},
"dependencies": {
"chalk": "^5.6.2"

View File

@@ -1,9 +0,0 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
// @workaround DTS bug
// dts do not work with monorepo path mapping
// disable path mapping for it
"paths": {}
}
}

View File

@@ -1,11 +1,7 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.tsbuildinfo",
"noEmit": false,
"allowImportingTsExtensions": false,
"baseUrl": ".",
"outDir": "dist"
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.tsbuildinfo"
},
"include": ["**/*.ts"],
"exclude": ["dist", "node_modules"]

View File

@@ -11,7 +11,17 @@ console.log(chalk.cyan(`📦 Building @page-agent/llms`))
export default defineConfig({
clearScreen: false,
plugins: [dts({ tsconfigPath: './tsconfig.dts.json', bundleTypes: true })],
plugins: [
dts({
bundleTypes: true,
compilerOptions: {
composite: true,
noEmit: false,
emitDeclarationOnly: true,
declaration: true,
},
}),
],
publicDir: false,
esbuild: {
keepNames: true,

View File

@@ -3,6 +3,15 @@
"private": false,
"version": "1.7.1",
"type": "module",
"main": "./src/PageAgent.ts",
"types": "./src/PageAgent.ts",
"exports": {
".": {
"types": "./src/PageAgent.ts",
"default": "./src/PageAgent.ts"
}
},
"publishConfig": {
"main": "./dist/esm/page-agent.js",
"module": "./dist/esm/page-agent.js",
"types": "./dist/esm/PageAgent.d.ts",
@@ -12,6 +21,7 @@
"import": "./dist/esm/page-agent.js",
"default": "./dist/esm/page-agent.js"
}
}
},
"files": [
"dist/"
@@ -40,8 +50,8 @@
"build": "vite build && npm run build:demo",
"build:demo": "vite build --config vite.iife.config.js",
"dev:demo": "concurrently \"vite build --config vite.iife.config.js --watch\" \"npx serve dist/iife -p 5174\"",
"prepublishOnly": "node -e \"const fs=require('fs');['README.md','LICENSE'].forEach(f=>fs.copyFileSync('../../'+f,f))\"",
"postpublish": "node -e \"['README.md','LICENSE'].forEach(f=>{try{require('fs').unlinkSync(f)}catch{}})\""
"prepublishOnly": "node ../../scripts/pre-publish.js",
"postpublish": "node ../../scripts/post-publish.js"
},
"dependencies": {
"@page-agent/core": "1.7.1",

View File

@@ -1,9 +0,0 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
// @workaround DTS bug
// dts do not work with monorepo path mapping
// disable path mapping for it
"paths": {}
}
}

View File

@@ -1,26 +1,8 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.tsbuildinfo",
"noEmit": false,
"allowImportingTsExtensions": false,
"baseUrl": ".",
"outDir": "dist",
"paths": {
//
"@page-agent/llms": ["../llms/src/index.ts"],
"@page-agent/page-controller": ["../page-controller/src/PageController.ts"],
"@page-agent/core": ["../core/src/PageAgentCore.ts"],
"@page-agent/ui": ["../ui/src/index.ts"]
}
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.tsbuildinfo"
},
"include": ["**/*.ts"],
"exclude": ["dist", "node_modules"],
"references": [
//
{ "path": "../llms" },
{ "path": "../page-controller" },
{ "path": "../core" },
{ "path": "../ui" }
]
"include": ["src/**/*.ts"],
"exclude": ["dist", "node_modules"]
}

View File

@@ -11,7 +11,15 @@ const __dirname = dirname(fileURLToPath(import.meta.url))
export default defineConfig({
clearScreen: false,
plugins: [
dts({ tsconfigPath: './tsconfig.dts.json', bundleTypes: true }),
dts({
bundleTypes: true,
compilerOptions: {
composite: true,
noEmit: false,
emitDeclarationOnly: true,
declaration: true,
},
}),
cssInjectedByJsPlugin({ relativeCSSInjection: true }),
],
publicDir: false,

View File

@@ -24,14 +24,7 @@ export default defineConfig(() => ({
esbuild: {
keepNames: true,
},
resolve: {
alias: {
'@page-agent/page-controller': resolve(__dirname, '../page-controller/src/PageController.ts'),
'@page-agent/llms': resolve(__dirname, '../llms/src/index.ts'),
'@page-agent/core': resolve(__dirname, '../core/src/PageAgentCore.ts'),
'@page-agent/ui': resolve(__dirname, '../ui/src/index.ts'),
},
},
resolve: {},
build: {
lib: {
entry: resolve(__dirname, 'src/demo.ts'),

View File

@@ -2,6 +2,15 @@
"name": "@page-agent/page-controller",
"version": "1.7.1",
"type": "module",
"main": "./src/PageController.ts",
"types": "./src/PageController.ts",
"exports": {
".": {
"types": "./src/PageController.ts",
"default": "./src/PageController.ts"
}
},
"publishConfig": {
"main": "./dist/lib/page-controller.js",
"module": "./dist/lib/page-controller.js",
"types": "./dist/lib/PageController.d.ts",
@@ -11,6 +20,7 @@
"import": "./dist/lib/page-controller.js",
"default": "./dist/lib/page-controller.js"
}
}
},
"files": [
"dist/"
@@ -32,8 +42,8 @@
"homepage": "https://alibaba.github.io/page-agent/",
"scripts": {
"build": "vite build",
"prepublishOnly": "node -e \"const fs=require('fs');['LICENSE'].forEach(f=>fs.copyFileSync('../../'+f,f))\"",
"postpublish": "node -e \"['LICENSE'].forEach(f=>{try{require('fs').unlinkSync(f)}catch{}})\""
"prepublishOnly": "node ../../scripts/pre-publish.js",
"postpublish": "node ../../scripts/post-publish.js"
},
"dependencies": {
"ai-motion": "^0.4.8"

View File

@@ -185,7 +185,7 @@ export class PageController extends EventTarget {
const blacklist = [
...(this.config.interactiveBlacklist || []),
...document.querySelectorAll('[data-page-agent-not-interactive]').values(),
...Array.from(document.querySelectorAll('[data-page-agent-not-interactive]')),
]
this.flatTree = dom.getFlatTree({

View File

@@ -0,0 +1,16 @@
import type { FlatDomTree } from './type'
interface DomTreeArgs {
doHighlightElements?: boolean
focusHighlightIndex?: number
viewportExpansion?: number
debugMode?: boolean
interactiveBlacklist?: Element[]
interactiveWhitelist?: Element[]
highlightOpacity?: number
highlightLabelOpacity?: number
}
declare const domTree: (args?: DomTreeArgs) => FlatDomTree
export default domTree

View File

@@ -1,9 +0,0 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
// @workaround DTS bug
// dts do not work with monorepo path mapping
// disable path mapping for it
"paths": {}
}
}

View File

@@ -1,11 +1,7 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.tsbuildinfo",
"noEmit": false,
"allowImportingTsExtensions": false,
"baseUrl": ".",
"outDir": "dist"
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.tsbuildinfo"
},
"include": ["**/*.ts", "**/*.js"],
"exclude": ["dist", "node_modules"]

View File

@@ -13,7 +13,15 @@ console.log(chalk.cyan(`📦 Building @page-agent/page-controller`))
export default defineConfig({
clearScreen: false,
plugins: [
dts({ tsconfigPath: './tsconfig.dts.json', bundleTypes: true }),
dts({
bundleTypes: true,
compilerOptions: {
composite: true,
noEmit: false,
emitDeclarationOnly: true,
declaration: true,
},
}),
cssInjectedByJsPlugin({ relativeCSSInjection: true }),
],
publicDir: false,

View File

@@ -2,6 +2,15 @@
"name": "@page-agent/ui",
"version": "1.7.1",
"type": "module",
"main": "./src/index.ts",
"types": "./src/index.ts",
"exports": {
".": {
"types": "./src/index.ts",
"default": "./src/index.ts"
}
},
"publishConfig": {
"main": "./dist/lib/page-agent-ui.js",
"module": "./dist/lib/page-agent-ui.js",
"types": "./dist/lib/index.d.ts",
@@ -11,6 +20,7 @@
"import": "./dist/lib/page-agent-ui.js",
"default": "./dist/lib/page-agent-ui.js"
}
}
},
"files": [
"dist/"
@@ -32,7 +42,7 @@
"homepage": "https://alibaba.github.io/page-agent/",
"scripts": {
"build": "vite build",
"prepublishOnly": "node -e \"const fs=require('fs');['LICENSE'].forEach(f=>fs.copyFileSync('../../'+f,f))\"",
"postpublish": "node -e \"['LICENSE'].forEach(f=>{try{require('fs').unlinkSync(f)}catch{}})\""
"prepublishOnly": "node ../../scripts/pre-publish.js",
"postpublish": "node ../../scripts/post-publish.js"
}
}

View File

@@ -1,9 +0,0 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
// @workaround DTS bug
// dts do not work with monorepo path mapping
// disable path mapping for it
"paths": {}
}
}

View File

@@ -1,11 +1,7 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.tsbuildinfo",
"noEmit": false,
"allowImportingTsExtensions": false,
"baseUrl": ".",
"outDir": "dist"
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.tsbuildinfo"
},
"include": ["**/*.ts", "**/*.js"],
"exclude": ["dist", "node_modules"]

View File

@@ -13,7 +13,15 @@ console.log(chalk.cyan(`📦 Building @page-agent/ui`))
export default defineConfig({
clearScreen: false,
plugins: [
dts({ tsconfigPath: './tsconfig.dts.json', bundleTypes: true }),
dts({
bundleTypes: true,
compilerOptions: {
composite: true,
noEmit: false,
emitDeclarationOnly: true,
declaration: true,
},
}),
cssInjectedByJsPlugin({ relativeCSSInjection: true }),
],
publicDir: false,

View File

@@ -6,8 +6,7 @@
"scripts": {
"dev": "vite --host 0.0.0.0",
"build:website": "vite build",
"preview": "vite preview",
"typecheck": "tsc --noEmit"
"preview": "vite preview"
},
"devDependencies": {
"@radix-ui/react-icons": "^1.3.2",

View File

@@ -2,31 +2,10 @@
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.tsbuildinfo",
"noEmit": false,
"allowImportingTsExtensions": false,
"baseUrl": ".",
"outDir": "dist",
"paths": {
// Self root
"@/*": ["src/*"],
"@page-agent/llms": ["../llms/src/index.ts"],
"@page-agent/page-controller": ["../page-controller/src/PageController.ts"],
"@page-agent/core": ["../core/src/PageAgentCore.ts"],
"@page-agent/ui": ["../ui/src/index.ts"],
"page-agent": ["../page-agent/src/PageAgent.ts"]
"@/*": ["./src/*"]
}
},
"include": ["**/*.ts", "**/*.tsx"],
"exclude": ["dist", "node_modules"],
"references": [
//
{ "path": "../llms" },
{ "path": "../page-controller" },
{ "path": "../core" },
{ "path": "../ui" },
{ "path": "../page-agent" }
]
"include": ["src/**/*.ts", "src/**/*.tsx"],
"exclude": ["dist", "node_modules"]
}

View File

@@ -90,16 +90,7 @@ export default defineConfig(({ mode }) => ({
},
resolve: {
alias: {
// Self root
'@': resolve(__dirname, 'src'),
// Monorepo packages (always bundle local code instead of npm versions)
'@page-agent/page-controller': resolve(__dirname, '../page-controller/src/PageController.ts'),
'@page-agent/llms': resolve(__dirname, '../llms/src/index.ts'),
'@page-agent/core': resolve(__dirname, '../core/src/PageAgentCore.ts'),
'@page-agent/ui': resolve(__dirname, '../ui/src/index.ts'),
'page-agent': resolve(__dirname, '../page-agent/src/PageAgent.ts'),
},
},
define: {

30
scripts/post-publish.js Normal file
View File

@@ -0,0 +1,30 @@
#!/usr/bin/env node
/**
* Restore package.json from the backup created by pre-publish.js,
* then clean up temporary files (backup, LICENSE, README.md).
*
* Usage: node ../../scripts/post-publish.js (from a package dir)
*/
import { existsSync, readFileSync, renameSync, rmSync } from 'fs'
import { join } from 'path'
const pkgPath = join(process.cwd(), 'package.json')
const bakPath = pkgPath + '.bak'
if (!existsSync(bakPath)) {
console.log(' No backup found, nothing to restore.')
process.exit(0)
}
const name = JSON.parse(readFileSync(pkgPath, 'utf-8')).name
renameSync(bakPath, pkgPath)
console.log(' ✓ package.json restored from backup')
rmSync(join(process.cwd(), 'LICENSE'), { force: true })
console.log(' ✓ LICENSE removed')
if (name === 'page-agent') {
rmSync(join(process.cwd(), 'README.md'), { force: true })
console.log(' ✓ README.md removed')
}

42
scripts/pre-publish.js Normal file
View File

@@ -0,0 +1,42 @@
#!/usr/bin/env node
/**
* Backup package.json, then rewrite it for publish:
* - Promote `publishConfig` fields to top level
* - Remove `publishConfig` (npm doesn't need the wrapper)
* - Copy LICENSE (and README.md for the main package)
*
* Usage: node ../../scripts/pre-publish.js (from a package dir)
*/
import { copyFileSync, readFileSync, writeFileSync } from 'fs'
import { join } from 'path'
const pkgPath = join(process.cwd(), 'package.json')
const raw = readFileSync(pkgPath, 'utf-8')
const pkg = JSON.parse(raw)
const publishConfig = pkg.publishConfig
if (!publishConfig) {
console.log(' No publishConfig found, skipping manifest rewrite.')
process.exit(0)
}
// Backup the original file byte-for-byte
copyFileSync(pkgPath, pkgPath + '.bak')
console.log(' ✓ package.json backed up')
for (const [field, value] of Object.entries(publishConfig)) {
pkg[field] = value
}
delete pkg.publishConfig
writeFileSync(pkgPath, JSON.stringify(pkg, null, ' ') + '\n')
console.log(` ✓ Manifest rewritten for publish (${Object.keys(publishConfig).join(', ')})`)
const root = join(process.cwd(), '../..')
copyFileSync(join(root, 'LICENSE'), join(process.cwd(), 'LICENSE'))
console.log(' ✓ LICENSE copied')
if (pkg.name === 'page-agent') {
copyFileSync(join(root, 'README.md'), join(process.cwd(), 'README.md'))
console.log(' ✓ README.md copied')
}

View File

@@ -1,16 +1,13 @@
{
"compilerOptions": {
"composite": true,
"target": "ES2024",
"useDefineForClassFields": true,
"lib": ["ES2024", "DOM", "DOM.Iterable"],
"lib": ["ES2024", "DOM"],
"module": "ESNext",
"skipLibCheck": true,
"allowJs": true,
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.tsbuildinfo",
// "baseUrl": "src",
"baseUrl": ".",
"outDir": "dist",
// "incremental": true,
@@ -27,6 +24,8 @@
"noUnusedParameters": false,
"erasableSyntaxOnly": true,
"noFallthroughCasesInSwitch": true,
"noUncheckedSideEffectImports": true
"noUncheckedSideEffectImports": true,
"types": ["node"]
}
}

View File

@@ -1,14 +0,0 @@
// this is only for IDE ts language server to work.
// do not use this for building or linting.
{
"extends": "./tsconfig.base.json",
"references": [
{ "path": "./packages/page-controller" },
{ "path": "./packages/ui" },
{ "path": "./packages/llms" },
{ "path": "./packages/page-agent" },
{ "path": "./packages/website" }
],
"include": ["packages/*/src/**/*.ts", "packages/*/src/**/*.tsx"],
"exclude": ["node_modules", "dist", "packages/*/dist"]
}

25
tsconfig.typecheck.json Normal file
View File

@@ -0,0 +1,25 @@
// Unified typecheck config for all lib/website packages.
// Run: tsc --noEmit -p tsconfig.typecheck.json
// Extension is checked separately (WXT has its own tsconfig base).
//
// With source-first package.json exports, TS resolves @page-agent/*
// to sibling src/ via workspace symlinks — no paths mapping needed.
{
"extends": "./tsconfig.base.json",
"compilerOptions": {
"composite": false,
"noEmit": true,
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.typecheck.tsbuildinfo",
"paths": {
"@/*": ["./packages/website/src/*"]
}
},
"include": [
"packages/llms/src/**/*",
"packages/page-controller/src/**/*",
"packages/ui/src/**/*",
"packages/core/src/**/*",
"packages/page-agent/src/**/*",
"packages/website/src/**/*"
]
}