{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "stack": "node",
  "description": "Node.js / TypeScript test gap rules. Sources in *.ts/*.tsx/*.js/*.mjs; tests in *.test.* / *.spec.* / __tests__/.",
  "sourceExtensions": [".ts", ".tsx", ".js", ".mjs", ".cjs"],
  "testPathSuffixes": [
    ".test.ts",
    ".test.tsx",
    ".test.js",
    ".test.mjs",
    ".spec.ts",
    ".spec.tsx",
    ".spec.js",
    ".spec.mjs"
  ],
  "testPathContains": ["/__tests__/", "/test/", "/tests/"],
  "excludePathGlobs": ["node_modules/", "dist/", "build/", ".next/", "coverage/", "*.d.ts"],
  "publicApiPatterns": [
    {
      "id": "named_export",
      "regex": "^export\\s+(?:async\\s+)?(?:function|class|const|let|interface|type|enum)\\s+([A-Za-z_$][A-Za-z0-9_$]*)"
    },
    {
      "id": "default_export",
      "regex": "^export\\s+default\\s+(?:async\\s+)?(?:function|class)\\s+([A-Za-z_$][A-Za-z0-9_$]*)"
    }
  ],
  "hint": "Cover named exports with vitest/jest test('<name>', ...). React components: React Testing Library (render + screen + userEvent)."
}
