refactor: remove all @typescript-eslint/no-explicit-any disables
Why
The Obsidian plugin reviewer flags // eslint-disable ... no-explicit-any comments as a quality/risk signal — a suppressed lint rule reads as "hiding a problem," which was marking the plugin as low quality. This removes every such disable in src/ by giving the values real types instead of suppressing the rule.
What
- New
src/types/obsidian-internals.ts— typed interfaces for the undocumentedapp.pluginsregistry (deliberately omitted from Obsidian's publicApptype) and the slice of the Dataview API we read. Access now goes throughapp as AppWithPluginsinstead ofapp as any. src/lib/utils.ts— retyped function params toApp/TFile/CachedMetadata/FrontMatterCache/TAbstractFile/unknown;.find()now infersTFilefromgetMarkdownFiles().src/views/TaskMapGraphView.tsx— the ReactFlow handlers use their exported types (EdgeMouseHandler,OnConnect,OnConnectStartviauseCallback<T>); the customdataview:index-readyevent is registered by upcastingapp.metadataCacheto theEventsbase class (whoseon(name: string, …)accepts custom event names — no cast needed).src/components/tag-input.tsx— the react-select ref uses the exportedSelectInstance<TagOption>type.
Verification
tsc -noEmit(build typecheck): passesnpm run lint: 0 errorsjest: 304 tests passgrep -rn no-explicit-any src/: none remaining
🤖 Generated with Claude Code