Skip to main content
Glama

MCP Time Server Node

by pshempel
analyze-calculateDuration-phase3.js4.03 kB
#!/usr/bin/env node /** * Research script for Phase 3 of calculateDuration refactoring * Current: 79 lines, complexity 14 * Target: <50 lines, complexity ~10-12 */ console.log('=== Phase 3: Calculate & Format Helpers Analysis ===\n'); console.log('Current Structure in main function:'); console.log('1. Calculate all duration units (lines 121-128)'); console.log('2. Format based on unit parameter (lines 131-140)'); console.log('3. Build result object (lines 142-150)\n'); console.log('Proposed Extraction:\n'); console.log('1. calculateDurationValues(startDate, endDate):'); console.log(' - Input: Two Date objects'); console.log(' - Output: Object with all calculated values'); console.log(' - Reduces complexity by ~2-3 (removes calculations)'); console.log(' - Removes ~8 lines from main\n'); console.log('2. formatDurationResult(values, unit):'); console.log(' - Input: Calculated values + unit string'); console.log(' - Output: Formatted string'); console.log(' - Reduces complexity by ~3-4 (removes ternary chain)'); console.log(' - Removes ~10 lines from main\n'); console.log('Expected Benefits:'); console.log('- Main function: ~60 lines (79 - 8 - 10 - 1)'); console.log('- Complexity: ~10 (14 - 2 - 2)'); console.log('- Better separation of concerns'); console.log('- Reusable calculation logic\n'); // Test the interface design console.log('=== Testing Interface Design ===\n'); function calculateDurationValues(startDate, endDate) { const milliseconds = endDate - startDate; const seconds = milliseconds / 1000; const minutes = seconds / 60; const hours = minutes / 60; const days = hours / 24; const is_negative = milliseconds < 0; return { milliseconds, seconds, minutes, hours, days, is_negative }; } function formatDurationResult(values, unit) { const { milliseconds, seconds, minutes, hours, days } = values; if (unit !== 'auto' && unit !== 'milliseconds') { const value = unit === 'seconds' ? seconds : unit === 'minutes' ? minutes : unit === 'hours' ? hours : days; return `${value} ${unit}`; } // For auto, we'd call existing formatDuration // For now, simplified version if (unit === 'milliseconds') { return `${milliseconds} milliseconds`; } // Auto formatting would use existing formatDuration function return `${Math.abs(days)} days (simplified)`; } // Test with sample data const start = new Date('2025-01-01T00:00:00Z'); const end = new Date('2025-01-02T12:30:45Z'); const values = calculateDurationValues(start, end); console.log('Calculated values:', values); console.log('\nFormatted outputs:'); console.log('auto:', formatDurationResult(values, 'auto')); console.log('seconds:', formatDurationResult(values, 'seconds')); console.log('minutes:', formatDurationResult(values, 'minutes')); console.log('hours:', formatDurationResult(values, 'hours')); console.log('days:', formatDurationResult(values, 'days')); console.log('milliseconds:', formatDurationResult(values, 'milliseconds')); console.log('\n=== Complexity Breakdown ==='); console.log('calculateDurationValues: ~1 (just math, no branches)'); console.log('formatDurationResult: ~4 (one if, nested ternary)'); console.log('Main function after extraction: ~10'); console.log(' - Entry: 1'); console.log(' - String validation x2: 2'); console.log(' - Cache check: 1'); console.log(' - Timezone validation: 1'); console.log(' - Parse x2 with try/catch: 2'); console.log(' - Call helpers: 0'); console.log(' - Build result: 1'); console.log(' - Cache set: 1'); console.log(' - Total: ~9-10'); console.log('\n=== Implementation Notes ==='); console.log('1. calculateDurationValues should include debug logging'); console.log('2. formatDurationResult needs to handle negative values'); console.log('3. For auto format, call existing formatDuration helper'); console.log('4. Consider type for values object (DurationValues interface)'); console.log('5. Main function becomes mostly orchestration');

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/pshempel/mcp-time-server-node'

If you have feedback or need assistance with the MCP directory API, please join our Discord server