From 9c49f136b53755714cf8b678f235fdd4bfbb550d Mon Sep 17 00:00:00 2001 From: "claude[bot]" <209825114+claude[bot]@users.noreply.github.com> Date: Sat, 28 Jun 2025 06:32:25 +0000 Subject: [PATCH 1/2] fix: resolve TypeScript compilation errors in instance manager - Convert Buffer outputs to strings in execAsyncWithLogging method - Add proper optional chaining for status property accesses - Improve error handling with fallback for undefined error messages Fixes #39 Co-authored-by: Samuel --- src/instance/manager.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/instance/manager.ts b/src/instance/manager.ts index 852853d..c0ddcf1 100644 --- a/src/instance/manager.ts +++ b/src/instance/manager.ts @@ -124,7 +124,7 @@ export class InstanceManager { throw new Error(`Instance '${name}' is not running`); } - if (config.status.pid) { + if (config.status?.pid) { // Stop PostgreSQL process gracefully await this.stopPostgreSQLProcess(config.status.pid); } @@ -164,9 +164,9 @@ export class InstanceManager { // Check if process is actually running if (config.status?.pid) { const isRunning = await this.isProcessRunning(config.status.pid); - if (!isRunning && config.status.state === 'running') { + if (!isRunning && config.status?.state === 'running') { // Process died, update status - config.status.state = 'stopped'; + config.status!.state = 'stopped'; await this.configManager.saveInstanceConfig(config); } } @@ -324,9 +324,12 @@ export class InstanceManager { try { console.log(`Executing: ${command.replace(/PASSWORD '[^']*'/g, "PASSWORD '[REDACTED]'")}`); const result = await execAsync(command, options); - return result; + return { + stdout: result.stdout.toString(), + stderr: result.stderr.toString() + }; } catch (error) { - const errorMsg = error instanceof Error ? error.message : String(error); + const errorMsg = error instanceof Error ? (error.message || 'Unknown error') : String(error); console.error(`Command failed: ${command.replace(/PASSWORD '[^']*'/g, "PASSWORD '[REDACTED]'")}`); console.error(`Error: ${errorMsg}`); throw error; From ea792ccbef08b2f5213e2590a86e593e79d00329 Mon Sep 17 00:00:00 2001 From: "claude[bot]" <209825114+claude[bot]@users.noreply.github.com> Date: Sat, 28 Jun 2025 06:35:01 +0000 Subject: [PATCH 2/2] fix: add null check for bytes array access in password generation - Add explicit undefined check for bytes[i] access - Throw error if random byte generation fails (should never happen) - Resolves TypeScript error: Object is possibly 'undefined' Co-authored-by: Samuel --- src/instance/manager.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/instance/manager.ts b/src/instance/manager.ts index c0ddcf1..61ef3fe 100644 --- a/src/instance/manager.ts +++ b/src/instance/manager.ts @@ -344,7 +344,11 @@ export class InstanceManager { const bytes = randomBytes(length); for (let i = 0; i < length; i++) { - password += characters[bytes[i] % characters.length]; + const byte = bytes[i]; + if (byte === undefined) { + throw new Error('Failed to generate secure random bytes'); + } + password += characters[byte % characters.length]; } return password;