Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,7 @@ Thumbs.db
.vscode/*
!.vscode/extensions.json
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/debug-converter.js
*.swp
*.swo

Expand Down
13 changes: 13 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,19 @@
"NODE_ENV": "test"
}
},
{
"type": "node",
"request": "launch",
"name": "Debug Current Test File (AVA)",
"skipFiles": ["<node_internals>/**"],
"program": "${workspaceFolder}/node_modules/ava/entrypoints/cli.js",
"args": ["${file}", "--serial", "--concurrency=1"],
"console": "integratedTerminal",
"cwd": "${workspaceFolder}",
"env": {
"NODE_ENV": "test"
}
},
{
"type": "node",
"request": "launch",
Expand Down
15 changes: 8 additions & 7 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"files.insertFinalNewline": true,
"files.eol": "\n", // LF line endings (matches .editorconfig)

// ESLint (flat config, neostandard style) is the project linter
// ESLint flat config (ESLint 10) is the project linter
"eslint.useFlatConfig": true,
"javascript.preferences.quoteStyle": "single",

Expand All @@ -16,21 +16,22 @@
"source.fixAll.eslint": "explicit"
},

// Markdown Linting (Project Standard - matches .markdownlint.mjs)
"markdownlint.config": {
"line-length": false, // MD013: Allow long lines (links, tables, code examples)
"MD013": false // Deprecated alias for backward compatibility
},
// Markdown linting follows the project's .markdownlint.mjs / .markdownlint-cli2.mjs,
// which the extension auto-discovers — no inline mirror to drift out of sync.

// TypeScript - Use JSDoc for type checking
// TypeScript - JSDoc type checking; pin the editor to the workspace TypeScript
// (node_modules) so in-editor checks use the same tsc version as CI.
"javascript.validate.enable": true,
"typescript.validate.enable": true,
"typescript.tsdk": "node_modules/typescript/lib",
"typescript.enablePromptUseWorkspaceTsdk": true,

// Project Build Artifacts & Performance
"search.exclude": {
"**/node_modules": true,
"**/coverage": true,
"**/dist": true,
"**/*.d.ts": true,
"**/.nyc_output": true,
"**/package-lock.json": true,
"**/.claude": true,
Expand Down
14 changes: 14 additions & 0 deletions src/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
// Editor-only: type-checks all of src/ with checkJs in VS Code, matching what
// CI enforces (tsconfig.build.json checks src/**/*.js with checkJs). The
// include below is recursive (**/*.js) on purpose — all of src/ is meant to be
// checkJs-clean, so any new file or subdir is checked here AND gated by CI.
// The root tsconfig.json keeps checkJs off and covers test/scripts/bench,
// which CI does not type-check — so without this file the editor would either
// miss src/ errors or flood those dirs with phantom ones. CI does not use this.
"extends": "../tsconfig.json",
"compilerOptions": {
"checkJs": true
},
"include": ["**/*.js"]

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch on the scope mismatch — but we resolved it in the opposite direction (the intent is that all of src/ stays checkJs-clean, not just CI's current subset).

Rather than narrowing this editor config down to CI's set, I broadened CI up to match the editor: tsconfig.build.json now includes src/**/*.js (423803c). Both are recursive now, so any new file or subdirectory under src/ is type-checked in the editor and gated by CI — enforced, not phantom drift. Behavior-neutral today: src/*.js + src/utils/*.js and src/**/*.js resolve to the same 80 files (72 top-level + 8 in utils/).

}
2 changes: 1 addition & 1 deletion tsconfig.build.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@
"outDir": ".",
"rootDir": "."
},
"include": ["src/*.js", "src/utils/*.js"],
"include": ["src/**/*.js"],
"exclude": ["node_modules", "dist", "test", "bench", "scripts"]
}
4 changes: 3 additions & 1 deletion tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,10 @@

"types": ["node"]
},
// src/ is type-checked by src/tsconfig.json (checkJs) to match CI; this root
// config covers the rest for editor IntelliSense without checkJs (CI does not
// type-check test/scripts/bench, so flagging them in-editor would be phantom).
"include": [
"src/**/*.js",
"test/**/*.js",
"scripts/**/*.js",
"bench/**/*.js"
Expand Down