From a4741b68209c4739370262e1d3910368cdefb62e Mon Sep 17 00:00:00 2001 From: albnnc Date: Sat, 11 Jul 2026 11:52:15 +0300 Subject: [PATCH] w --- client/ews_client.ts | 15 ++------------- main.ts | 2 +- tools/auth.ts | 12 +++--------- tools/availability.ts | 3 ++- tools/calendar.ts | 3 ++- tools/email.ts | 3 ++- tools/folders.ts | 3 ++- tools/people.ts | 3 ++- utils/data.ts | 13 +++++++++++++ utils/{config.ts => login.ts} | 20 ++++++-------------- 10 files changed, 35 insertions(+), 42 deletions(-) create mode 100644 utils/data.ts rename utils/{config.ts => login.ts} (79%) diff --git a/client/ews_client.ts b/client/ews_client.ts index d3f96ae..e55b33f 100644 --- a/client/ews_client.ts +++ b/client/ews_client.ts @@ -4,6 +4,7 @@ import { createRequire } from "node:module"; import { promisify } from "node:util"; import { extractEmail, type Email } from "../utils/extract_email.ts"; import { extractFolders, type Folder } from "../utils/extract_folder.ts"; +import { initDataDir } from "../utils/data.ts"; import { loadConfig, saveConfig, @@ -11,9 +12,8 @@ import { setPassword, getPassword, hasPassword, - initDataDir, type LoginConfig, -} from "../utils/config.ts"; +} from "../utils/login.ts"; const ntlm: any = createRequire(import.meta.url)("httpntlm"); const postAsync = promisify(ntlm.post.bind(ntlm)); @@ -482,14 +482,3 @@ ${mailboxDataXml} return []; } } - -// Re-export for backward compatibility -export { - initDataDir, - loadConfig, - saveConfig, - clearConfig, - setPassword, - getPassword, - hasPassword, -} from "../utils/config.ts"; diff --git a/main.ts b/main.ts index 7f54e75..1779f91 100644 --- a/main.ts +++ b/main.ts @@ -4,7 +4,7 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js" import { Command } from "commander"; import crypto from "node:crypto"; import http from "node:http"; -import { initDataDir } from "./client/ews_client.ts"; +import { initDataDir } from "./utils/data.ts"; import { registerAuthTools } from "./tools/auth.ts"; import { registerAvailabilityTools } from "./tools/availability.ts"; import { registerCalendarTools } from "./tools/calendar.ts"; diff --git a/tools/auth.ts b/tools/auth.ts index b92abd8..39d3cd4 100644 --- a/tools/auth.ts +++ b/tools/auth.ts @@ -1,14 +1,8 @@ import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { z } from "zod/v4"; -import { - clearConfig, - EwsClient, - hasPassword, - loadConfig, - saveConfig, - setPassword, -} from "../client/ews_client.ts"; -import { type LoginConfig } from "../utils/config.ts"; +import { clearConfig, hasPassword, loadConfig, saveConfig, setPassword } from "../utils/login.ts"; +import { EwsClient } from "../client/ews_client.ts"; +import { type LoginConfig } from "../utils/login.ts"; export function registerAuthTools(server: McpServer): void { server.registerTool( diff --git a/tools/availability.ts b/tools/availability.ts index a164a16..ce8570a 100644 --- a/tools/availability.ts +++ b/tools/availability.ts @@ -1,6 +1,7 @@ import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { z } from "zod/v4"; -import { EwsClient, loadConfig } from "../client/ews_client.ts"; +import { loadConfig } from "../utils/login.ts"; +import { EwsClient } from "../client/ews_client.ts"; export function registerAvailabilityTools(server: McpServer): void { server.registerTool( diff --git a/tools/calendar.ts b/tools/calendar.ts index b881534..1c4023d 100644 --- a/tools/calendar.ts +++ b/tools/calendar.ts @@ -2,7 +2,8 @@ import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import fs from "node:fs"; import path from "node:path"; import { z } from "zod/v4"; -import { EwsClient, loadConfig } from "../client/ews_client.ts"; +import { loadConfig } from "../utils/login.ts"; +import { EwsClient } from "../client/ews_client.ts"; export function registerCalendarTools(server: McpServer): void { server.registerTool( diff --git a/tools/email.ts b/tools/email.ts index 7926d60..657833d 100644 --- a/tools/email.ts +++ b/tools/email.ts @@ -2,7 +2,8 @@ import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import fs from "node:fs"; import path from "node:path"; import { z } from "zod/v4"; -import { EwsClient, loadConfig } from "../client/ews_client.ts"; +import { loadConfig } from "../utils/login.ts"; +import { EwsClient } from "../client/ews_client.ts"; function getClient(): EwsClient { return new EwsClient(loadConfig()); diff --git a/tools/folders.ts b/tools/folders.ts index 103c425..7acdc64 100644 --- a/tools/folders.ts +++ b/tools/folders.ts @@ -1,6 +1,7 @@ import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { z } from "zod/v4"; -import { EwsClient, loadConfig } from "../client/ews_client.ts"; +import { loadConfig } from "../utils/login.ts"; +import { EwsClient } from "../client/ews_client.ts"; export function registerFolderTools(server: McpServer): void { server.registerTool( diff --git a/tools/people.ts b/tools/people.ts index 946d632..db9635b 100644 --- a/tools/people.ts +++ b/tools/people.ts @@ -1,6 +1,7 @@ import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { z } from "zod/v4"; -import { EwsClient, loadConfig } from "../client/ews_client.ts"; +import { loadConfig } from "../utils/login.ts"; +import { EwsClient } from "../client/ews_client.ts"; export function registerPeopleTools(server: McpServer): void { server.registerTool( diff --git a/utils/data.ts b/utils/data.ts new file mode 100644 index 0000000..98bc022 --- /dev/null +++ b/utils/data.ts @@ -0,0 +1,13 @@ +import fs from "node:fs"; +import path from "node:path"; + +let dataDir: string = "./data"; + +export function initDataDir(dir: string): void { + dataDir = path.resolve(dir); + fs.mkdirSync(dataDir, { recursive: true }); +} + +export function configFilePath(): string { + return path.join(dataDir, "config.json"); +} diff --git a/utils/config.ts b/utils/login.ts similarity index 79% rename from utils/config.ts rename to utils/login.ts index 62dd440..2a9ea45 100644 --- a/utils/config.ts +++ b/utils/login.ts @@ -1,3 +1,9 @@ +import fs from "node:fs"; +import { configFilePath, initDataDir } from "./data.ts"; + +// Re-export for backward compatibility +export { initDataDir }; + export interface LoginConfig { serverUrl: string; email: string; @@ -5,16 +11,6 @@ export interface LoginConfig { domain?: string; } -import fs from "node:fs"; -import path from "node:path"; - -let dataDir: string = "./data"; - -export function initDataDir(dir: string): void { - dataDir = path.resolve(dir); - fs.mkdirSync(dataDir, { recursive: true }); -} - let inMemoryPassword: string | null = null; export function setPassword(password: string): void { @@ -33,10 +29,6 @@ export function clearPassword(): void { inMemoryPassword = null; } -function configFilePath(): string { - return path.join(dataDir, "config.json"); -} - export function loadConfig(): LoginConfig { const filePath = configFilePath(); if (!fs.existsSync(filePath)) {