@rigo-m/clickup-mcp-server
Version:
ClickUp MCP Server - Integrate ClickUp tasks with AI through Model Context Protocol
45 lines (44 loc) • 1.76 kB
JavaScript
/**
* SPDX-FileCopyrightText: © 2025 Talib Kareem <taazkareem@icloud.com>
* SPDX-License-Identifier: MIT
*
* Shared Services Module
*
* This module maintains singleton instances of services that should be shared
* across the application to ensure consistent state.
*/
import { createClickUpServices } from './clickup/index.js';
import { getConfig } from '../config.js';
import { Logger } from '../logger.js';
// Logger for service initialization events
const logger = new Logger('SharedServices');
/**
* Proxy for lazy initialization of ClickUp services
*/
const _servicesProxyTarget = {};
export const clickUpServices = new Proxy(_servicesProxyTarget, {
get(target, prop, receiver) {
if (!target._instance) {
try {
const cfg = getConfig();
logger.info('Creating shared ClickUp services singleton', { teamId: cfg.clickupTeamId });
target._instance = createClickUpServices({
apiKey: cfg.clickupApiKey,
teamId: cfg.clickupTeamId
});
logger.info('Services initialization complete', {
services: Object.keys(target._instance).join(', '),
teamId: cfg.clickupTeamId
});
}
catch (err) {
// Configuration not initialized yet; defer initialization
throw err;
}
}
const instance = target._instance;
return instance[prop];
}
});
// Export individual services for convenience
export const { list: listService, task: taskService, folder: folderService, workspace: workspaceService, timeTracking: timeTrackingService, document: documentService } = clickUpServices;