Phase 1: Add ESLint/Prettier config + baseline auto-fixes

This commit is contained in:
Krystie
2026-03-22 11:00:25 +01:00
parent 41a0cdee7e
commit e2c67a8fe8
90 changed files with 4008 additions and 3066 deletions

View File

@@ -83,7 +83,7 @@ class UpdateManager extends EventEmitter {
currentDigest: currentDigest.substring(0, 12),
latestDigest: latestDigest.substring(0, 12),
currentTag: this.extractTag(imageName),
detectedAt: new Date().toISOString()
detectedAt: new Date().toISOString(),
});
this.emit('update-available', this.availableUpdates.get(containerInfo.Id));
@@ -137,8 +137,8 @@ class UpdateManager extends EventEmitter {
path: `/v2/${repo}/manifests/${tag}`,
method: 'GET',
headers: {
'Accept': 'application/vnd.docker.distribution.manifest.v2+json'
}
'Accept': 'application/vnd.docker.distribution.manifest.v2+json',
},
};
const req = https.request(options, (res) => {
@@ -206,8 +206,8 @@ class UpdateManager extends EventEmitter {
...originalOptions,
headers: {
...originalOptions.headers,
'Authorization': `Bearer ${token}`
}
'Authorization': `Bearer ${token}`,
},
};
const req = https.request(options, (res) => {
@@ -271,7 +271,7 @@ class UpdateManager extends EventEmitter {
config: inspect.Config,
hostConfig: inspect.HostConfig,
networkSettings: inspect.NetworkSettings,
timestamp: new Date().toISOString()
timestamp: new Date().toISOString(),
};
// Pull latest image
@@ -292,7 +292,7 @@ class UpdateManager extends EventEmitter {
name: containerName,
Image: imageName,
...backup.config,
HostConfig: backup.hostConfig
HostConfig: backup.hostConfig,
});
// Start new container
@@ -300,7 +300,7 @@ class UpdateManager extends EventEmitter {
await newContainer.start();
// Extended verification with health checks and port accessibility
console.log(`[UpdateManager] Performing extended verification...`);
console.log('[UpdateManager] Performing extended verification...');
await this.verifyContainerExtended(newContainer, inspect, options.verifyTimeout || 60000);
// Get new image ID
@@ -313,7 +313,7 @@ class UpdateManager extends EventEmitter {
console.log(`[UpdateManager] Removing old image: ${oldImageId.substring(0, 12)}`);
const oldImage = docker.getImage(oldImageId);
await oldImage.remove({ force: false });
console.log(`[UpdateManager] Old image removed successfully`);
console.log('[UpdateManager] Old image removed successfully');
} catch (error) {
console.warn(`[UpdateManager] Could not remove old image (may be in use): ${error.message}`);
}
@@ -330,7 +330,7 @@ class UpdateManager extends EventEmitter {
timestamp: new Date().toISOString(),
duration,
status: 'success',
backup
backup,
};
this.addToHistory(historyEntry);
@@ -348,7 +348,7 @@ class UpdateManager extends EventEmitter {
timestamp: new Date().toISOString(),
duration,
status: 'failed',
error: error.message
error: error.message,
};
this.addToHistory(historyEntry);
@@ -360,7 +360,7 @@ class UpdateManager extends EventEmitter {
try {
await this.rollbackUpdate(containerId);
} catch (rollbackError) {
console.error(`[UpdateManager] Rollback failed:`, rollbackError.message);
console.error('[UpdateManager] Rollback failed:', rollbackError.message);
}
}
@@ -448,7 +448,7 @@ class UpdateManager extends EventEmitter {
// Step 2: Check Docker health check if available
if (inspect.State.Health) {
if (inspect.State.Health.Status === 'healthy') {
console.log(`[UpdateManager] Container health check: healthy`);
console.log('[UpdateManager] Container health check: healthy');
return true;
} else if (inspect.State.Health.Status === 'unhealthy') {
lastError = 'Container health check failed (unhealthy)';
@@ -468,7 +468,7 @@ class UpdateManager extends EventEmitter {
try {
const response = await fetch(testUrl, {
signal: AbortSignal.timeout(3000),
redirect: 'manual'
redirect: 'manual',
});
// Accept 2xx, 3xx, 4xx as "accessible" (server is responding)
@@ -477,7 +477,7 @@ class UpdateManager extends EventEmitter {
// Wait a bit more to ensure stability
if (attempt >= 2) {
console.log(`[UpdateManager] Container verified successfully`);
console.log('[UpdateManager] Container verified successfully');
return true;
}
}
@@ -488,7 +488,7 @@ class UpdateManager extends EventEmitter {
} else {
// No ports exposed - just verify it's running for a few cycles
if (attempt >= 5) {
console.log(`[UpdateManager] Container running without exposed ports (verified)`);
console.log('[UpdateManager] Container running without exposed ports (verified)');
return true;
}
}
@@ -529,7 +529,7 @@ class UpdateManager extends EventEmitter {
ports.push({
containerPort: containerPort.split('/')[0],
hostPort: binding.HostPort,
protocol: containerPort.split('/')[1] || 'tcp'
protocol: containerPort.split('/')[1] || 'tcp',
});
}
}
@@ -572,7 +572,7 @@ class UpdateManager extends EventEmitter {
name: backup.containerName,
Image: backup.imageName,
...backup.config,
HostConfig: backup.hostConfig
HostConfig: backup.hostConfig,
});
await newContainer.start();
@@ -582,7 +582,7 @@ class UpdateManager extends EventEmitter {
return true;
} catch (error) {
console.error(`[UpdateManager] Rollback failed:`, error.message);
console.error('[UpdateManager] Rollback failed:', error.message);
throw error;
}
}
@@ -599,7 +599,7 @@ class UpdateManager extends EventEmitter {
setTimeout(() => {
this.updateContainer(containerId).catch(error => {
console.error(`[UpdateManager] Scheduled update failed:`, error.message);
console.error('[UpdateManager] Scheduled update failed:', error.message);
});
}, delay);
@@ -663,20 +663,20 @@ class UpdateManager extends EventEmitter {
shortDescription: repoInfo?.description?.substring(0, 200) || '',
starCount: repoInfo?.star_count || 0,
pullCount: repoInfo?.pull_count || 0,
lastUpdated: repoInfo?.last_updated || null
lastUpdated: repoInfo?.last_updated || null,
},
tags: tags.slice(0, 10).map(t => ({
name: t.name,
lastPushed: t.last_pushed || t.tag_last_pushed,
digest: t.digest?.substring(0, 12) || 'unknown',
size: t.full_size || t.size || 0
size: t.full_size || t.size || 0,
})),
urls: {
dockerHub: hubUrl,
tags: `${hubUrl}/tags`,
dockerfile: repoInfo?.dockerfile_url || null
dockerfile: repoInfo?.dockerfile_url || null,
},
changelog: this.formatChangelog(repoInfo, tags, imageTag)
changelog: this.formatChangelog(repoInfo, tags, imageTag),
};
} catch (error) {
console.error(`[UpdateManager] Error fetching changelog for ${imageName}:`, error.message);
@@ -691,7 +691,7 @@ class UpdateManager extends EventEmitter {
urls: {
dockerHub: `https://hub.docker.com/r/${repoPath.replace('library/', '_/')}`,
},
changelog: 'Unable to fetch changelog. Visit Docker Hub for details.'
changelog: 'Unable to fetch changelog. Visit Docker Hub for details.',
};
}
}
@@ -711,8 +711,8 @@ class UpdateManager extends EventEmitter {
method: 'GET',
headers: {
'Accept': 'application/json',
'User-Agent': 'DashCaddy/1.0'
}
'User-Agent': 'DashCaddy/1.0',
},
};
const req = https.request(options, (res) => {
@@ -755,8 +755,8 @@ class UpdateManager extends EventEmitter {
method: 'GET',
headers: {
'Accept': 'application/json',
'User-Agent': 'DashCaddy/1.0'
}
'User-Agent': 'DashCaddy/1.0',
},
};
const req = https.request(options, (res) => {
@@ -836,7 +836,7 @@ class UpdateManager extends EventEmitter {
schedule: config.schedule || 'weekly',
maintenanceWindow: config.maintenanceWindow,
autoRollback: config.autoRollback !== false,
securityOnly: config.securityOnly || false
securityOnly: config.securityOnly || false,
};
this.saveConfig();