API Surface Issue
Category
Unused export — internal interface exposed unnecessarily
Summary
- File:
src/rules.ts
- Symbol:
Rule (line 14)
- Issue: The
Rule interface is exported but never imported from outside rules.ts. Callers only ever import RuleSet, loadRuleSet, mergeRuleSets, expandRule, and loadAndMergeDomains — never Rule itself.
Evidence
# Exported from:
src/rules.ts:14: export interface Rule {
# All imports of rules.ts:
src/cli.ts:28: import { loadAndMergeDomains } from './rules';
src/rules.test.ts:4: import { loadRuleSet, mergeRuleSets, expandRule, loadAndMergeDomains, RuleSet } from './rules';
# Note: 'Rule' is absent from both import lists
Recommended Fix
- Remove the
export keyword from the Rule interface, making it module-private:
// before
export interface Rule {
// after
interface Rule {
- Alternatively, if
Rule is intended for consumers building RuleSet objects manually, keep the export but add a JSDoc comment documenting that intent.
Impact
- Dead code risk: Low (interface only, no runtime cost)
- Maintenance burden: Low (but leaks an internal detail into the public API surface)
Detected by Export Audit workflow. Triggered by push to main on 2026-05-04
Generated by API Surface & Export Audit · ● 489.6K · ◷
API Surface Issue
Category
Unused export — internal interface exposed unnecessarily
Summary
src/rules.tsRule(line 14)Ruleinterface is exported but never imported from outsiderules.ts. Callers only ever importRuleSet,loadRuleSet,mergeRuleSets,expandRule, andloadAndMergeDomains— neverRuleitself.Evidence
Recommended Fix
exportkeyword from theRuleinterface, making it module-private:Ruleis intended for consumers buildingRuleSetobjects manually, keep the export but add a JSDoc comment documenting that intent.Impact
Detected by Export Audit workflow. Triggered by push to main on 2026-05-04