$ TIMING=1 nr lint
Rule | Time (ms) | Relative
:-----------------------------------------------|----------:|--------:
import/no-restricted-paths | 71530.176 | 56.0%
@typescript-eslint/promise-function-async | 10734.587 | 8.4%
@typescript-eslint/no-unsafe-argument | 5984.000 | 4.7%
@typescript-eslint/no-floating-promises | 3182.511 | 2.5%
import/no-self-import | 2680.865 | 2.1%
@typescript-eslint/no-confusing-void-expression | 1603.084 | 1.3%
@typescript-eslint/no-redeclare | 1254.564 | 1.0%
unicorn/no-thenable | 898.581 | 0.7%
react/no-direct-mutation-state | 799.667 | 0.6%
unicorn/prevent-abbreviations | 799.234 | 0.6%
I believe that's an excessive amount of time to what's essentially string matching. Given it doubles the lint time (locally and on CI), we could probably think about fixing it, also because it's an important rule for the extension.