### Required

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/main.ts#L71-L71)[[2]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-cache.ts#L26-L26)[[3]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-cache.ts#L96-L96)[[4]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-cache.ts#L310-L310)[[5]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-manager.ts#L44-L44)[[6]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-manager.ts#L74-L74)[[7]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-manager.ts#L115-L115)
Expected non-Promise value in a boolean conditional.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/main.ts#L111-L127)[[2]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-cache.ts#L171-L177)[[3]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-cache.ts#L205-L211)[[4]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-cache.ts#L229-L235)[[5]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-cache.ts#L288-L294)[[6]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-cache.ts#L318-L326)[[7]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-manager.ts#L61-L67)[[8]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-manager.ts#L89-L95)[[9]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-manager.ts#L101-L107)[[10]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-picker-modal.ts#L49-L49)[[11]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-picker-modal.ts#L649-L649)[[12]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-picker-modal.ts#L909-L915)[[13]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/settings-tab.ts#L29-L33)
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/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/main.ts#L141-L141)[[2]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/main.ts#L202-L202)[[3]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/main.ts#L226-L226)[[4]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/main.ts#L280-L280)[[5]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/main.ts#L283-L283)[[6]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/main.ts#L288-L290)[[7]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-cache.ts#L43-L43)[[8]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-cache.ts#L68-L68)[[9]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-cache.ts#L70-L70)[[10]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/owo-parser.ts#L78-L78)[[11]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/owo-parser.ts#L100-L100)
Unsafe assignment of an `any` value.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/main.ts#L207-L207)[[2]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/main.ts#L208-L208)[[3]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/main.ts#L293-L293)[[4]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/main.ts#L294-L294)[[5]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-cache.ts#L69-L69)[[6]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-cache.ts#L69-L69)[[7]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-cache.ts#L70-L70)[[8]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-cache.ts#L74-L74)
Unsafe member access .emojiJsonCache on an `any` value.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/main.ts#L210-L210)[[2]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/main.ts#L211-L211)
Unsafe member access .recentEmojis on an `any` value.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/main.ts#L283-L283)
Unsafe member access .owoJsonUrls on an `any` value.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/main.ts#L299-L299)
Unsafe member access [key] on an `any` value.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/main.ts#L477-L477)[[2]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/virtual-emoji-renderer.ts#L349-L349)
'createEl' is not defined.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-cache.ts#L137-L137)
'unknown' overrides all other types in this union type.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-cache.ts#L156-L156)
Async method 'setCachedData' has no 'await' expression.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-cache.ts#L196-L196)
Async method 'clearUrl' has no 'await' expression.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-cache.ts#L220-L220)
Async method 'clearAll' has no 'await' expression.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-cache.ts#L271-L271)
Async method 'cleanupUnusedCache' has no 'await' expression.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-cache.ts#L304-L304)
Async method 'startBackgroundWarming' has no 'await' expression.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-cache.ts#L365-L365)[[2]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-picker-modal.ts#L412-L412)
'sleep' is not defined.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-manager.ts#L114-L114)
Async method 'ensureInitialized' has no 'await' expression.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-manager.ts#L384-L397)[[2]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-picker-modal.ts#L128-L128)[[3]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-picker-modal.ts#L154-L168)[[4]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-picker-modal.ts#L188-L211)[[5]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-picker-modal.ts#L208-L210)[[6]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-picker-modal.ts#L216-L218)
Promise returned in function argument where a void return was expected.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-picker-modal.ts#L370-L370)[[2]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-picker-modal.ts#L401-L401)
Unsafe argument of type `any` assigned to a parameter of type `string`.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-picker-modal.ts#L370-L370)[[2]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-picker-modal.ts#L401-L401)[[3]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/owo-parser.ts#L104-L104)[[4]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/owo-parser.ts#L125-L125)[[5]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/owo-parser.ts#L153-L153)
Unsafe member access .message on an `any` value.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-picker-modal.ts#L907-L907)
Async method 'handleEmojiClick' has no 'await' expression.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-picker-modal.ts#L950-L950)
Avoid using the navigator API to detect the operating system. Use the Platform API instead.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-storage.ts#L406-L406)
Unsafe return of a value of type `any[]`.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-storage.ts#L420-L420)[[2]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-storage.ts#L421-L421)[[3]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-storage.ts#L422-L422)
Unsafe argument of type `any` assigned to a parameter of type `number`.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-storage.ts#L427-L427)
Unsafe return of a value of type `any`.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-storage.ts#L569-L569)[[2]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-storage.ts#L583-L583)[[3]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-storage.ts#L596-L596)[[4]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-storage.ts#L620-L620)[[5]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/owo-parser.ts#L118-L118)[[6]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/performance-monitor.ts#L79-L79)[[7]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/recent-emoji-manager.ts#L89-L89)[[8]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/recent-emoji-manager.ts#L165-L165)[[9]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/settings-tab.ts#L386-L386)[[10]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/settings-tab.ts#L387-L387)[[11]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/virtual-emoji-renderer.ts#L60-L60)[[12]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/virtual-emoji-renderer.ts#L87-L87)
This assertion is unnecessary since it does not change the type of the expression.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-suggest.ts#L144-L169)
Promise-returning method provided where a void return was expected by extended/implemented type 'EditorSuggest<EmojiItem>'.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/performance-monitor.ts#L103-L103)
'process' is not defined.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/virtual-emoji-renderer.ts#L118-L118)
Unexpected lexical declaration in case block.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/virtual-emoji-renderer.ts#L299-L299)
'createFragment' is not defined.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/virtual-emoji-renderer.ts#L318-L318)
'createDiv' is not defined.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/virtual-emoji-renderer.ts#L344-L344)
'createSpan' is not defined.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/virtual-emoji-renderer.ts#L451-L451)
Unsafe argument of type `any` assigned to a parameter of type `(this: HTMLElement, ev: Event) => any`.



---

### Optional

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/main.ts#L390-L390)[[2]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-storage.ts#L203-L203)[[3]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-storage.ts#L346-L346)[[4]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-suggest.ts#L242-L242)[[5]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/owo-parser.ts#L62-L62)
'error' is defined but never used.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-picker-modal.ts#L34-L34)
'startTime' is assigned a value but never used.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-suggest.ts#L106-L106)
'img' is assigned a value but never used.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/emoji-suggest.ts#L116-L116)
'span' is assigned a value but never used.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/logger.ts#L54-L54)[[2]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/logger.ts#L63-L63)[[3]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/logger.ts#L90-L90)[[4]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/logger.ts#L92-L92)[[5]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/logger.ts#L101-L101)
Unexpected console statement. Only these console methods are allowed: warn, error, debug.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/settings-tab.ts#L201-L201)[[2]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/settings-tab.ts#L345-L345)[[3]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/settings-tab.ts#L346-L346)[[4]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/settings-tab.ts#L347-L347)[[5]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/settings-tab.ts#L348-L348)[[6]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/settings-tab.ts#L349-L349)
Use sentence case for UI text.

[[1]](https://github.com/infinitesum/obsidian-emoji-selector/blob/3b2d348aa1e986d5916d3f39547abbc242b6e09a/src/virtual-emoji-renderer.ts#L300-L300)
'gap' is assigned a value but never used.

