Files
actual/tsconfig.json
Matiss Janis Aboltins 4bc8ec876a [AI] Add publishConfig.imports sync validator with pre-commit integration (#7469)
* [AI] Add publishConfig.imports sync validator with pre-commit integration

Add a TypeScript script that validates publishConfig.imports stays in sync
with imports in all packages/*/package.json files. Runs automatically in
the pre-commit hook via lint-staged with --fix mode.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* [AI] Add release notes for #7469

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* [AI] Guard main() with require.main and respect lint-staged file args

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* [AI] Handle non-string imports targets in derivePublishImports

- Add type guard to check for non-string values in imports
- Throw descriptive error when conditional imports are encountered
- Update type signature to accept Record<string, string | object>
- Add test case for non-string imports error handling

This prevents TypeError when packages have conditional imports (e.g., #browser-preload in desktop-client)

Co-authored-by: Matiss Janis Aboltins <MatissJanis@users.noreply.github.com>

* [AI] Limit resolvePackageJsonPaths scope to packages directory

- Add packagesRoot constant to restrict path resolution
- Update while loop condition to only traverse within packages directory
- Add additional check to ensure candidate paths are under packages/
- Prevents resolution to repo root package.json for missing/deleted files

This ensures the validator only processes package.json files under packages/* and avoids accidentally targeting the monorepo root manifest.

Co-authored-by: Matiss Janis Aboltins <MatissJanis@users.noreply.github.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Matiss Janis Aboltins <MatissJanis@users.noreply.github.com>
2026-04-14 07:40:36 +00:00

61 lines
1.5 KiB
JSON

{
"references": [
{ "path": "./packages/crdt" },
{ "path": "./packages/component-library" },
{ "path": "./packages/plugins-service" },
{ "path": "./packages/loot-core" },
{ "path": "./packages/api" },
{ "path": "./packages/desktop-client" },
{ "path": "./packages/sync-server" },
{ "path": "./packages/desktop-electron" },
{ "path": "./packages/cli" }
],
"compilerOptions": {
"target": "ES2022",
"lib": ["ES2022", "DOM", "DOM.Iterable"],
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"experimentalDecorators": true,
"resolveJsonModule": true,
"downlevelIteration": true,
// TODO: enable once every file is ts
// "strict": true,
"strictFunctionTypes": true,
"noFallthroughCasesInSwitch": true,
"skipLibCheck": true,
"jsx": "preserve",
"types": ["vite/client", "vitest/globals"],
// Check JS files too
"allowJs": true,
"checkJs": false,
// Used for temp builds
"outDir": "build",
"moduleResolution": "bundler",
"module": "es2022",
// Until/if we build using tsc
"noEmit": true
},
"include": ["bin/*.ts"],
"exclude": [
"**/.*/",
"node_modules",
"**/node_modules/*",
"**/build/*",
"**/build-electron/*",
"**/client-build/*",
"**/dist/*",
"**/lib-dist/*",
"packages/*/@types",
"**/test-results/*",
"**/playwright-report/*",
"**/service-worker/*",
"packages/docs/**/*"
],
"ts-node": {
"compilerOptions": {
"module": "CommonJS",
"types": ["node"]
}
}
}