I've experienced a lot of pain with this so I built an eslint plugin ontop of eslint-plugin-import.
The purpose is to help developers clean up their imports and ensure their circular dependencies are real and not just from index <-> index shenanigans.
It still allows you to use index.ts structure for clean imports from external modules.
Perhaps it is useful for you