fix: replace any types with proper TypeScript types
Replace all `any` types with properly defined TypeScript interfaces and types throughout the codebase to improve type safety and eliminate type-related code quality issues. Changes: - Define ElectronSafeStorage interface for Electron's safeStorage API - Create LegacySettings interface for settings migration in main.ts - Define JSONValue, JSONRPCParams types for JSON-RPC protocol - Define JSONSchemaProperty for tool input schemas - Create YAMLValue type for frontmatter values - Define FrontmatterValue type for adapter interfaces - Update middleware to use proper Express NextFunction and JSONRPCResponse types - Fix tool registry to handle args with proper typing (with eslint-disable for dynamic dispatch) - Fix notifications to use proper types with eslint-disable where dynamic access is needed - Add proper null safety assertions where appropriate - Fix TFolder stat access with proper type extension All type errors resolved. TypeScript compilation passes with --skipLibCheck.
This commit is contained in:
@@ -474,6 +474,7 @@ export class ToolRegistry {
|
||||
];
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
async callTool(name: string, args: any): Promise<CallToolResult> {
|
||||
const startTime = Date.now();
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ import {
|
||||
} from '../types/mcp-types';
|
||||
import { PathUtils } from '../utils/path-utils';
|
||||
import { ErrorMessages } from '../utils/error-messages';
|
||||
import { FrontmatterUtils } from '../utils/frontmatter-utils';
|
||||
import { FrontmatterUtils, YAMLValue } from '../utils/frontmatter-utils';
|
||||
import { WaypointUtils } from '../utils/waypoint-utils';
|
||||
import { VersionUtils } from '../utils/version-utils';
|
||||
import { ContentUtils } from '../utils/content-utils';
|
||||
@@ -364,16 +364,28 @@ export class NoteTools {
|
||||
await this.vault.modify(file, content);
|
||||
|
||||
// Build response with word count and link validation
|
||||
const result: any = {
|
||||
interface UpdateNoteResult {
|
||||
success: boolean;
|
||||
path: string;
|
||||
versionId: string;
|
||||
modified: number;
|
||||
wordCount?: number;
|
||||
linkValidation?: {
|
||||
valid: string[];
|
||||
brokenNotes: Array<{ link: string; line: number; context: string }>;
|
||||
brokenHeadings: Array<{ link: string; line: number; context: string; note: string }>;
|
||||
summary: string;
|
||||
};
|
||||
}
|
||||
|
||||
const result: UpdateNoteResult = {
|
||||
success: true,
|
||||
path: file.path,
|
||||
versionId: VersionUtils.generateVersionId(file),
|
||||
modified: file.stat.mtime
|
||||
modified: file.stat.mtime,
|
||||
wordCount: ContentUtils.countWords(content)
|
||||
};
|
||||
|
||||
// Add word count
|
||||
result.wordCount = ContentUtils.countWords(content);
|
||||
|
||||
// Add link validation if requested
|
||||
if (validateLinks) {
|
||||
result.linkValidation = await LinkUtils.validateLinks(
|
||||
@@ -731,7 +743,7 @@ export class NoteTools {
|
||||
*/
|
||||
async updateFrontmatter(
|
||||
path: string,
|
||||
patch?: Record<string, any>,
|
||||
patch?: Record<string, YAMLValue>,
|
||||
remove: string[] = [],
|
||||
ifMatch?: string
|
||||
): Promise<CallToolResult> {
|
||||
|
||||
@@ -385,8 +385,10 @@ export class VaultTools {
|
||||
// In most cases, this will be 0 for directories
|
||||
let modified = 0;
|
||||
try {
|
||||
if ((folder as any).stat && typeof (folder as any).stat.mtime === 'number') {
|
||||
modified = (folder as any).stat.mtime;
|
||||
// TFolder doesn't officially have stat, but it may exist in practice
|
||||
const folderWithStat = folder as TFolder & { stat?: { mtime?: number } };
|
||||
if (folderWithStat.stat && typeof folderWithStat.stat.mtime === 'number') {
|
||||
modified = folderWithStat.stat.mtime;
|
||||
}
|
||||
} catch (error) {
|
||||
// Silently fail - modified will remain 0
|
||||
|
||||
Reference in New Issue
Block a user