### Required

[[1]](https://github.com/theamritanair/obsidian-external-links/blob/ad455eff4cf334ad272dd485c19bccc53e9d05ed/main.ts#L44-L44)
Async method 'onOpen' has no 'await' expression.

[[1]](https://github.com/theamritanair/obsidian-external-links/blob/ad455eff4cf334ad272dd485c19bccc53e9d05ed/main.ts#L213-L213)
Use `new Setting(containerEl).setName(...).setHeading()` instead of creating HTML heading elements directly.

[[1]](https://github.com/theamritanair/obsidian-external-links/blob/ad455eff4cf334ad272dd485c19bccc53e9d05ed/main.ts#L225-L225)[[2]](https://github.com/theamritanair/obsidian-external-links/blob/ad455eff4cf334ad272dd485c19bccc53e9d05ed/main.ts#L243-L243)[[3]](https://github.com/theamritanair/obsidian-external-links/blob/ad455eff4cf334ad272dd485c19bccc53e9d05ed/main.ts#L262-L262)[[4]](https://github.com/theamritanair/obsidian-external-links/blob/ad455eff4cf334ad272dd485c19bccc53e9d05ed/main.ts#L268-L268)[[5]](https://github.com/theamritanair/obsidian-external-links/blob/ad455eff4cf334ad272dd485c19bccc53e9d05ed/main.ts#L274-L274)[[6]](https://github.com/theamritanair/obsidian-external-links/blob/ad455eff4cf334ad272dd485c19bccc53e9d05ed/main.ts#L280-L280)[[7]](https://github.com/theamritanair/obsidian-external-links/blob/ad455eff4cf334ad272dd485c19bccc53e9d05ed/main.ts#L300-L300)[[8]](https://github.com/theamritanair/obsidian-external-links/blob/ad455eff4cf334ad272dd485c19bccc53e9d05ed/main.ts#L321-L321)
Promises must be awaited, end with a call to .catch, end with a call to .then with a rejection handler or be explicitly marked as ignored with the `void` operator.

[[1]](https://github.com/theamritanair/obsidian-external-links/blob/ad455eff4cf334ad272dd485c19bccc53e9d05ed/main.ts#L258-L258)
Do not assign a view instance to a plugin property within `registerView`. This can cause memory leaks. Create and return the view directly.

[[1]](https://github.com/theamritanair/obsidian-external-links/blob/ad455eff4cf334ad272dd485c19bccc53e9d05ed/main.ts#L326-L330)
Unsafe assignment of an `any` value.

[[1]](https://github.com/theamritanair/obsidian-external-links/blob/ad455eff4cf334ad272dd485c19bccc53e9d05ed/main.ts#L378-L378)
Async method 'removeFileFromCache' has no 'await' expression.

[[1]](https://github.com/theamritanair/obsidian-external-links/blob/ad455eff4cf334ad272dd485c19bccc53e9d05ed/main.ts#L385-L385)
Async method 'renameFileInCache' has no 'await' expression.



---

### Optional

[[1]](https://github.com/theamritanair/obsidian-external-links/blob/ad455eff4cf334ad272dd485c19bccc53e9d05ed/main.ts#L41-L41)[[2]](https://github.com/theamritanair/obsidian-external-links/blob/ad455eff4cf334ad272dd485c19bccc53e9d05ed/main.ts#L47-L47)[[3]](https://github.com/theamritanair/obsidian-external-links/blob/ad455eff4cf334ad272dd485c19bccc53e9d05ed/main.ts#L54-L54)[[4]](https://github.com/theamritanair/obsidian-external-links/blob/ad455eff4cf334ad272dd485c19bccc53e9d05ed/main.ts#L59-L59)[[5]](https://github.com/theamritanair/obsidian-external-links/blob/ad455eff4cf334ad272dd485c19bccc53e9d05ed/main.ts#L213-L213)[[6]](https://github.com/theamritanair/obsidian-external-links/blob/ad455eff4cf334ad272dd485c19bccc53e9d05ed/main.ts#L284-L284)[[7]](https://github.com/theamritanair/obsidian-external-links/blob/ad455eff4cf334ad272dd485c19bccc53e9d05ed/main.ts#L290-L290)
Use sentence case for UI text.

