Skip to main content
Glama

MCP Time Server Node

by pshempel
analyze-convertTimezone-complexity.js3.33 kB
#!/usr/bin/env node /** * Research script to analyze convertTimezone.ts complexity * Current: 126 lines, complexity 29 */ console.log('=== convertTimezone.ts Complexity Analysis ===\n'); console.log('Current Structure Analysis:'); console.log('1. Early parameter validation (lines 19-27)'); console.log(' - String length validations'); console.log(' - Format parameter default'); console.log(' - Cache key generation\n'); console.log('2. Cache check (lines 33-37)\n'); console.log('3. Timezone validation (lines 39-58) - 2 complexity'); console.log(' - from_timezone validation'); console.log(' - to_timezone validation\n'); console.log('4. Date parsing logic (lines 60-99) - MAJOR COMPLEXITY ~10'); console.log(' - Unix timestamp handling'); console.log(' - ISO string with Z suffix'); console.log(' - String with explicit offset (+05:00)'); console.log(' - Local time string'); console.log(' - Error handling\n'); console.log('5. Timezone conversion logic (lines 101-155) - MAJOR COMPLEXITY ~15'); console.log(' - Offset calculations'); console.log(' - Original time formatting (complex!)'); console.log(' - Converted time formatting'); console.log(' - Offset string extraction\n'); console.log('6. Result building & caching (lines 156-167) - SIMPLE\n'); console.log('7. Error handling (lines 168-183) - 2 complexity\n'); console.log('=== Complexity Sources ==='); console.log('1. Date parsing: ~10 complexity (nested if/else)'); console.log('2. Result formatting: ~15 complexity (nested conditions)'); console.log('3. Timezone validations: ~2 complexity'); console.log('4. Error handling: ~2 complexity\n'); console.log('=== Proposed Refactoring Phases ===\n'); console.log('Phase 1: Extract timezone validation helper'); console.log('- validateTimezones(from_timezone, to_timezone)'); console.log('- Expected reduction: ~2 complexity, ~20 lines\n'); console.log('Phase 2: Extract date parsing helper'); console.log('- parseDateForConversion(time, from_timezone)'); console.log('- Returns: { date: Date, actualFromTimezone: string }'); console.log('- Expected reduction: ~10 complexity, ~40 lines\n'); console.log('Phase 3: Extract offset formatting helpers'); console.log('- formatOriginalTime(utcDate, time, actualFromTimezone)'); console.log('- extractOffsetString(time, utcDate, timezone)'); console.log('- Expected reduction: ~15 complexity, ~45 lines\n'); console.log('Expected Final State:'); console.log('- Main function: ~50 lines (from 126)'); console.log('- Complexity: ~10 (from 29)'); console.log('- Much clearer separation of concerns\n'); console.log('=== Key Testing Areas ==='); console.log('1. Unix timestamps (always UTC)'); console.log('2. ISO strings with Z suffix'); console.log('3. Strings with explicit offset (+05:00)'); console.log('4. Local time strings'); console.log('5. Custom format parameter'); console.log('6. Offset preservation for explicit offsets'); console.log('7. Error handling for invalid inputs\n'); console.log('=== Specific Complexity Points ==='); console.log('1. Preserving original offset format is complex (lines 111-127)'); console.log('2. Different formatting based on input type'); console.log('3. Special handling for Z suffix vs explicit offset'); console.log('4. Unix timestamps treated as UTC regardless of from_timezone');

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