From 9267a95b478365561947cf72fb67a9ba60b04a75 Mon Sep 17 00:00:00 2001 From: ERoydev Date: Thu, 30 Apr 2026 15:32:31 +0300 Subject: [PATCH] refactor(session): collapse duplicate debuggerSession state to single source --- src/extension.js | 25 ++++++++++--------------- src/managers/sessionManager.js | 1 - 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/src/extension.js b/src/extension.js index 08b3ab9..5077d64 100644 --- a/src/extension.js +++ b/src/extension.js @@ -12,7 +12,7 @@ const { TreeView } = require('./managers/treeView'); const { StateMonitor } = require('./managers/stateMonitor'); -const { setDebuggerSession, clearDebuggerSession } = require('./managers/sessionManager'); +const { getDebuggerSession, setDebuggerSession, clearDebuggerSession } = require('./managers/sessionManager'); const { isSessionRunning } = require('./debug'); const { safeReadDir } = require('./projectStructure'); @@ -21,8 +21,6 @@ const crypto = require('crypto'); const fs = require('fs'); const { log, error } = require('./logger'); -// TODO(lime): duplicate debuggerSession state — also tracked in sessionManager.js. Collapse to one source of truth -let debuggerSession = null; let debuggerDisposables = []; let stateMonitor = null; let engaged = false; @@ -180,21 +178,19 @@ async function activate(context) { return; } - const sessionStateInstance = createSessionState(); - setDebuggerSession(sessionStateInstance); - debuggerSession = sessionStateInstance; - - debuggerSession.tcpPort = globalState.tcpPort; + const session = createSessionState(); + session.tcpPort = globalState.tcpPort; + setDebuggerSession(session); try { log('Starting debug session...'); - const scanned = await scanDeployDirectory(debuggerSession); + const scanned = await scanDeployDirectory(session); if (!scanned) return; - log('Scanned deploy directory:', JSON.stringify(debuggerSession.executablesPaths)); - log('Program ID map:', JSON.stringify(debuggerSession.programIdToHash)); - log('Hash to name map:', JSON.stringify(debuggerSession.programHashToProgramName)); + log('Scanned deploy directory:', JSON.stringify(session.executablesPaths)); + log('Program ID map:', JSON.stringify(session.programIdToHash)); + log('Hash to name map:', JSON.stringify(session.programHashToProgramName)); - log('Starting port listener on port:', debuggerSession.tcpPort); + log('Starting port listener on port:', session.tcpPort); await startPortDebugListener(); } catch (err) { error('Error:', err); @@ -233,11 +229,10 @@ async function deactivate() { } async function startPortDebugListener() { - await portManager.listenAndStartDebugForPort(debuggerSession.tcpPort); + await portManager.listenAndStartDebugForPort(getDebuggerSession().tcpPort); } function cleanupDebuggerSession() { - debuggerSession = null; clearDebuggerSession(); stateMonitor?.tick(); } diff --git a/src/managers/sessionManager.js b/src/managers/sessionManager.js index 6836e80..b90a68f 100644 --- a/src/managers/sessionManager.js +++ b/src/managers/sessionManager.js @@ -1,7 +1,6 @@ // Manages the state of the current debugging session // Allows setting, getting, and clearing the session state -// TODO(lime): duplicate debuggerSession state — also tracked as a module-level let in extension.js. Collapse to one source of truth let debuggerSession = null; function getDebuggerSession() { return debuggerSession; }