From 0ec2896c5d470f22a15ec800aa2f7788fbca5047 Mon Sep 17 00:00:00 2001 From: mindesbunister Date: Sat, 22 Nov 2025 15:02:43 +0100 Subject: [PATCH] fix: Resolve variable hoisting error in version comparison API Critical Bug Fix: - archivedVersions was used before declaration (line 147 vs line 165) - Caused 'Cannot access before initialization' error - Moved versionDescriptions and archivedVersions declarations to top - Now defined BEFORE usage in resultsWithArchived.map() Impact: Analytics page was completely broken (stuck on loading) Resolution: API now returns data correctly, UI functional Error: ReferenceError: Cannot access 'g' before initialization Fix: Proper variable ordering in route.ts --- app/api/analytics/version-comparison/route.ts | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/app/api/analytics/version-comparison/route.ts b/app/api/analytics/version-comparison/route.ts index 88bd170..bebe196 100644 --- a/app/api/analytics/version-comparison/route.ts +++ b/app/api/analytics/version-comparison/route.ts @@ -118,6 +118,17 @@ export async function GET() { } }) + // Define version metadata FIRST (before usage) + const versionDescriptions: Record = { + 'v8': 'Money Line Sticky Trend (Nov 18+) - PRODUCTION', + 'v7': 'HalfTrend with toggles (deprecated)', + 'v6': 'HalfTrend + BarColor (Nov 12-18) - ARCHIVED', + 'v5': 'Buy/Sell Signal (pre-Nov 12) - ARCHIVED', + 'unknown': 'No version tracked (pre-Nov 12) - ARCHIVED' + } + + const archivedVersions = ['v5', 'v6', 'v7', 'unknown'] + // Sort versions: v8 first (production), then v7, v6, v5, unknown (archived) const versionOrder: Record = { 'v8': 0, 'v7': 1, 'v6': 2, 'v5': 3, 'unknown': 4 @@ -128,23 +139,12 @@ export async function GET() { return orderA - orderB }) - // Mark archived versions + // Mark archived versions (archivedVersions now defined above) const resultsWithArchived = results.map(r => ({ ...r, archived: archivedVersions.includes(r.version) })) - // Get version descriptions and archived status - const versionDescriptions: Record = { - 'v8': 'Money Line Sticky Trend (Nov 18+) - PRODUCTION', - 'v7': 'HalfTrend with toggles (deprecated)', - 'v6': 'HalfTrend + BarColor (Nov 12-18) - ARCHIVED', - 'v5': 'Buy/Sell Signal (pre-Nov 12) - ARCHIVED', - 'unknown': 'No version tracked (pre-Nov 12) - ARCHIVED' - } - - const archivedVersions = ['v5', 'v6', 'v7', 'unknown'] - return NextResponse.json({ success: true, versions: resultsWithArchived,