### Required

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/commands.ts#L16-L16)[\[2\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/commands.ts#L42-L42)[\[3\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/main.ts#L96-L96)[\[4\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/settings.ts#L76-L76)[\[5\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/settings.ts#L212-L212)[\[6\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/settings.ts#L239-L239)[\[7\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/settings.ts#L284-L284)[\[8\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/captureScreenshot.ts#L132-L132)[\[9\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/views/YouTubeView.ts#L39-L39)[\[10\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/views/YouTubeView.ts#L59-L59)[\[11\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/views/YouTubeView.ts#L91-L91)
Use sentence case for UI text.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/commands.ts#L91-L91)
The two values in this comparison do not have a shared enum type.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/main.ts#L44-L44)[\[2\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/main.ts#L97-L97)[\[3\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/main.ts#L127-L127)[\[4\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/main.ts#L151-L151)[\[5\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/openYouTubeLink.ts#L60-L60)[\[6\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/timestamphandlers.ts#L74-L74)[\[7\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/timestamphandlers.ts#L138-L142)[\[8\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/youtubeLinkHandlers.ts#L86-L86)[\[9\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/views/YouTubeView.ts#L256-L256)
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/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/main.ts#L54-L54)[\[2\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/main.ts#L119-L119)[\[3\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/captureScreenshot.ts#L49-L49)[\[4\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/captureScreenshot.ts#L70-L70)[\[5\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/captureScreenshot.ts#L81-L81)[\[6\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/captureScreenshot.ts#L85-L85)[\[7\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/captureScreenshot.ts#L130-L130)[\[8\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/captureScreenshot.ts#L157-L157)[\[9\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/initializeDefaultStructure.ts#L4-L4)[\[10\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/timestamphandlers.ts#L41-L41)[\[11\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/timestamphandlers.ts#L62-L62)[\[12\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/timestamphandlers.ts#L131-L131)[\[13\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/timestamphandlers.ts#L152-L152)[\[14\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/typingPauseResume.ts#L37-L37)[\[15\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/typingPauseResume.ts#L37-L37)[\[16\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/typingPauseResume.ts#L38-L38)[\[17\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/typingPauseResume.ts#L38-L38)[\[18\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/typingPauseResume.ts#L42-L42)[\[19\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/typingPauseResume.ts#L42-L42)[\[20\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/typingPauseResume.ts#L43-L43)[\[21\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/typingPauseResume.ts#L43-L43)[\[22\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/typingPauseResume.ts#L46-L46)[\[23\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/typingPauseResume.ts#L46-L46)[\[24\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/typingPauseResume.ts#L47-L47)[\[25\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/typingPauseResume.ts#L47-L47)[\[26\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/youtubeLinkHandlers.ts#L60-L60)[\[27\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/youtubeLinkHandlers.ts#L83-L83)[\[28\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/views/YouTubeView.ts#L63-L63)[\[29\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/youtube/playerWrapper.ts#L87-L87)[\[30\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/youtube/playerWrapper.ts#L88-L88)
Unexpected any. Specify a different type.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/main.ts#L183-L183)
Async method 'openModal' has no 'await' expression.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/main.ts#L186-L217)[\[2\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/modal/YoutubePromptModal.ts#L40-L68)[\[3\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/settings.ts#L169-L171)[\[4\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/settings.ts#L174-L179)[\[5\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/settings.ts#L180-L182)[\[6\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/settings.ts#L183-L189)[\[7\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/timestamphandlers.ts#L170-L170)[\[8\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/timestamphandlers.ts#L171-L171)[\[9\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/youtubeLinkHandlers.ts#L94-L94)[\[10\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/youtubeLinkHandlers.ts#L95-L95)
Promise returned in function argument where a void return was expected.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/main.ts#L213-L213)
Unexpected `await` of a non-Promise (non-"Thenable") value.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/modal/YoutubePromptModal.ts#L20-L69)
Promise-returning method provided where a void return was expected by extended/implemented type 'Modal'.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/modal/YoutubePromptModal.ts#L20-L20)
Async method 'onOpen' has no 'await' expression.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/settings.ts#L29-L29)
Prefer using the primitive `boolean` as a type name, rather than the upper-cased `Boolean`.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/settings.ts#L76-L76)
Use `new Setting(containerEl).setName(...).setHeading()` instead of creating HTML heading elements directly.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/captureScreenshot.ts#L7-L7)[\[2\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/captureScreenshot.ts#L8-L8)[\[3\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/captureScreenshot.ts#L9-L9)[\[4\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/captureScreenshot.ts#L10-L10)
A `require()` style import is forbidden.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/captureScreenshot.ts#L85-L85)
'any' overrides all other types in this union type.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/captureScreenshot.ts#L157-L157)
Expected the Promise rejection reason to be an Error.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/captureScreenshot.ts#L176-L176)[\[2\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/captureScreenshot.ts#L180-L180)[\[3\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/captureScreenshot.ts#L181-L181)[\[4\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/captureScreenshot.ts#L182-L182)[\[5\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/captureScreenshot.ts#L183-L183)[\[6\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/captureScreenshot.ts#L184-L184)[\[7\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/captureScreenshot.ts#L204-L204)
Empty block statement.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/captureScreenshot.ts#L200-L200)[\[2\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/timestamphandlers.ts#L31-L31)[\[3\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/timestamphandlers.ts#L93-L93)[\[4\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/timestamphandlers.ts#L142-L142)[\[5\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/youtubeLinkHandlers.ts#L20-L20)[\[6\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/youtubeLinkHandlers.ts#L52-L52)
This assertion is unnecessary since it does not change the type of the expression.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/initializeDefaultStructure.ts#L32-L32)
Async function 'fetchDefaultTemplate' has no 'await' expression.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/views/YouTubeView.ts#L236-L236)
Unexpected console statement. Only these console methods are allowed: warn, error, debug.



---

### Optional

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/commands.ts#L1-L1)[\[2\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/main.ts#L2-L2)
'App' is defined but never used.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/commands.ts#L1-L1)
'Editor' is defined but never used.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/commands.ts#L30-L30)
'timestamp' is assigned a value but never used.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/main.ts#L2-L2)[\[2\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/views/YouTubeView.ts#L2-L2)
'parseYaml' is defined but never used.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/main.ts#L2-L2)[\[2\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/settings.ts#L1-L1)
'TFolder' is defined but never used.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/main.ts#L2-L2)
'normalizePath' is defined but never used.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/main.ts#L7-L7)
'PLUGIN_ID' is defined but never used.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/main.ts#L8-L8)
'SAVED_TIME_ANCHOR_PREFIX' is defined but never used.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/main.ts#L19-L19)
'generateDateTimestamp' is defined but never used.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/main.ts#L20-L20)
'formatHMS' is defined but never used.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/main.ts#L21-L21)
'EditorView' is defined but never used.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/main.ts#L22-L22)
'Prec' is defined but never used.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/main.ts#L205-L205)[\[2\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/createNoteFromTemplate.ts#L29-L29)[\[3\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/createNoteFromTemplate.ts#L56-L56)
'err' is defined but never used.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/settings.ts#L1-L1)
'TAbstractFile' is defined but never used.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/settings.ts#L7-L7)
'registerTypingPauseResume' is defined but never used.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/settings.ts#L8-L8)
'ScreenshotOptions' is defined but never used.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/captureScreenshot.ts#L102-L102)
'isMac' is assigned a value but never used.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/captureScreenshot.ts#L103-L103)
'isWin' is assigned a value but never used.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/createNoteFromTemplate.ts#L2-L2)
'moment' is defined but never used.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/utils/initializeDefaultStructure.ts#L2-L2)
'TFile' is defined but never used.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/views/YouTubeView.ts#L11-L11)
'ICON_IDS' is defined but never used.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/views/YouTubeView.ts#L116-L116)
'playerContainer' is assigned a value but never used.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/youtube/createYouTubePlayer.ts#L35-L35)
'player' is assigned a value but never used.

[\[1\]](https://github.com/sasiperi/youtube-annotator/blob/5a3e1bc11210629eb819c307a1348dbcc0a5c8b5/src/youtube/playerWrapper.ts#L23-L23)
'oldOnReady' is assigned a value but never used.

