From a03e81ed0612bfebbf3627ce124e0f01162bb72c Mon Sep 17 00:00:00 2001 From: "@gapmiss" Date: Sat, 6 Jun 2026 14:31:46 -0500 Subject: [PATCH] fix: enable strict mode and fix TypeScript errors Update tsconfig.json for TypeScript 5.9+ compatibility: - Remove deprecated baseUrl, use moduleResolution "bundler" - Enable strict mode to match IDE settings - Scope include to src/**/*.ts Fix strict mode violations across codebase. Co-Authored-By: Claude Opus 4.5 --- src/main.ts | 29 ++++++++++++++++------------- src/modal/modify.ts | 4 ++-- src/modal/new.ts | 2 +- src/modal/search.ts | 2 +- src/settings/index.ts | 2 +- src/suggest/inputIcon.ts | 1 + tsconfig.json | 9 ++++----- 7 files changed, 26 insertions(+), 23 deletions(-) diff --git a/src/main.ts b/src/main.ts index 6baef92..11a35a2 100644 --- a/src/main.ts +++ b/src/main.ts @@ -4,8 +4,7 @@ import { MarkdownPostProcessorContext, Editor, MarkdownView, - Notice, - Menu + Notice } from 'obsidian'; import { InlineCalloutsSettings, @@ -33,7 +32,7 @@ interface ContextData { export default class InlineCalloutsPlugin extends Plugin { - settings: InlineCalloutsSettings; + settings!: InlineCalloutsSettings; public postprocessor: MarkdownPostProcessor = (el: HTMLElement, _ctx: MarkdownPostProcessorContext) => { const blockToReplace = el.querySelectorAll('code') @@ -82,14 +81,17 @@ export default class InlineCalloutsPlugin extends Plugin { id: "modify", name: "Modify inline callout", icon: "form-input", - editorCheckCallback: (checking, editor, view: MarkdownView) => { + editorCheckCallback: (checking, editor, ctx) => { if (!this.settings.enableEditing) { return false; } - const res = this.checkContextType(editor, view); + if (!(ctx instanceof MarkdownView)) { + return false; + } + const res = this.checkContextType(editor, ctx); if (res) { if (!checking) { - this.modifyInlineCallout(editor, view); + this.modifyInlineCallout(editor, ctx); } return true; } @@ -108,21 +110,22 @@ export default class InlineCalloutsPlugin extends Plugin { }); this.registerEvent( - this.app.workspace.on("editor-menu", (menu: Menu, editor: Editor, view: MarkdownView) => { + this.app.workspace.on("editor-menu", (menu, editor, info) => { if (this.settings.enableEditing) { - const res = this.checkContextType(editor, view); + if (!(info instanceof MarkdownView)) { + return; + } + const res = this.checkContextType(editor, info); if (res) { menu.addItem(item => { item .setTitle('Modify inline callout') .setIcon('form-input') - .onClick(async () => { - this.modifyInlineCallout(editor, view); + .onClick(() => { + this.modifyInlineCallout(editor, info); }); - }) - return true; + }); } - return false; } }) ); diff --git a/src/modal/modify.ts b/src/modal/modify.ts index 9d7c8a5..01f4c92 100644 --- a/src/modal/modify.ts +++ b/src/modal/modify.ts @@ -17,10 +17,10 @@ interface ContextData { export class ModifyInlineCalloutModal extends Modal { - public calloutIcon: string; + public calloutIcon: string = 'info'; public calloutColor: string | undefined; public calloutLabel: string | undefined; - previewEl: HTMLDivElement; + previewEl!: HTMLDivElement; activeDoc: Document = window.activeDocument ?? window.document; constructor( diff --git a/src/modal/new.ts b/src/modal/new.ts index 4839366..c98d556 100644 --- a/src/modal/new.ts +++ b/src/modal/new.ts @@ -13,7 +13,7 @@ export class NewInlineCalloutModal extends Modal { public calloutIcon: string = 'lucide-info'; public calloutColor: string | undefined; public calloutLabel: string | undefined; - previewEl: HTMLDivElement; + previewEl!: HTMLDivElement; activeDoc: Document = window.activeDocument ?? window.document; constructor( diff --git a/src/modal/search.ts b/src/modal/search.ts index 57c93cc..f4818ea 100644 --- a/src/modal/search.ts +++ b/src/modal/search.ts @@ -9,7 +9,7 @@ import type InlineCalloutsPlugin from "../main"; export class SearchInlineCalloutsModal extends Modal { - public calloutIcon: string; + public calloutIcon: string = ''; constructor( private plugin: InlineCalloutsPlugin, diff --git a/src/settings/index.ts b/src/settings/index.ts index bda83cd..f6fa5f4 100644 --- a/src/settings/index.ts +++ b/src/settings/index.ts @@ -3,7 +3,7 @@ import { PluginSettingTab, Setting } from 'obsidian'; -import InlineCalloutsPlugin from 'src/main'; +import InlineCalloutsPlugin from '../main'; export interface InlineCalloutsSettings { enableSuggester: boolean; diff --git a/src/suggest/inputIcon.ts b/src/suggest/inputIcon.ts index a162b3d..1b86777 100644 --- a/src/suggest/inputIcon.ts +++ b/src/suggest/inputIcon.ts @@ -14,6 +14,7 @@ export class InputIconSuggest extends AbstractInputSuggest { ) { super(app, inputEl); + this.textInputEl = inputEl; } getSuggestions(inputStr: string): string[] { diff --git a/tsconfig.json b/tsconfig.json index 580b8e2..84208f2 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,17 +1,16 @@ { "compilerOptions": { - "baseUrl": ".", "inlineSourceMap": true, "inlineSources": true, "module": "ESNext", "target": "ES6", "allowJs": true, - "noImplicitAny": true, - "moduleResolution": "node", + "strict": true, + "moduleResolution": "bundler", "importHelpers": true, "isolatedModules": true, "allowSyntheticDefaultImports": true, - "strictNullChecks": true, + "strictNullChecks": true, "lib": [ "DOM", "ES5", @@ -20,6 +19,6 @@ ] }, "include": [ - "**/*.ts" + "src/**/*.ts" ] }