fix(lint): resolve all ESLint errors to pass CI lint step

- Replace catch (error: any) with catch (error) + (error as Error).message cast
  in EditorLayout, NodeManager, HomeDashboard, AppStoreView
- Define TemplateVolume interface in AppStoreView; replace volumes any[] with typed array
- Define MetricPoint interface in HomeDashboard; replace metrics any[] with MetricPoint[]
- Define TerminalContainer type in BashExecModal; replace as any DOM property casts
- Define NodeTestInfo interface in NodeManager; replace info: any with typed shape
- Fix DockerNetworkStats cast in EditorLayout container stats WebSocket handler
- Remove unused catch variable (e) in api.ts and other components
- Cast streamFilter onValueChange val to union type in GlobalObservabilityView
- Add eslint-disable-next-line react-refresh/only-export-components to badge.tsx,
  button.tsx, AuthContext, NodeContext, use-data-state, use-is-in-view
- Add eslint-disable-next-line react-hooks/set-state-in-effect in LogViewer
- Add /* eslint-disable */ to animate-ui third-party primitive files
This commit is contained in:
SaelixCode
2026-03-22 00:27:43 -04:00
parent 0dd72b3eb4
commit c8a54a988b
27 changed files with 94 additions and 61 deletions
+11 -11
View File
@@ -42,7 +42,7 @@ export function NodeManager() {
const [editingNodeId, setEditingNodeId] = useState<number | null>(null);
const [deletingNode, setDeletingNode] = useState<Node | null>(null);
const [testing, setTesting] = useState<number | null>(null);
const [testResult, setTestResult] = useState<{ nodeId: number; info: any } | null>(null);
const [testResult, setTestResult] = useState<{ nodeId: number; info: { serverVersion?: string; os?: string; architecture?: string; containers?: number; images?: number; cpus?: number } } | null>(null);
// Node token generation state
const [generatedToken, setGeneratedToken] = useState<string | null>(null);
@@ -84,8 +84,8 @@ export function NodeManager() {
}
await refreshNodes();
} catch (error: any) {
toast.error(error.message || 'Failed to create node');
} catch (error) {
toast.error((error as Error).message || 'Failed to create node');
}
};
@@ -105,8 +105,8 @@ export function NodeManager() {
setEditingNodeId(null);
setFormData(defaultFormData);
await refreshNodes();
} catch (error: any) {
toast.error(error.message || 'Failed to update node');
} catch (error) {
toast.error((error as Error).message || 'Failed to update node');
}
};
@@ -135,8 +135,8 @@ export function NodeManager() {
setDeleteOpen(false);
setDeletingNode(null);
await refreshNodes();
} catch (error: any) {
toast.error(error.message || 'Failed to delete node');
} catch (error) {
toast.error((error as Error).message || 'Failed to delete node');
}
};
@@ -153,8 +153,8 @@ export function NodeManager() {
toast.error(`Failed to connect: ${result.error}`);
}
await refreshNodes();
} catch (error: any) {
toast.error(error.message || 'Connection test failed');
} catch (error) {
toast.error((error as Error).message || 'Connection test failed');
} finally {
setTesting(null);
}
@@ -169,8 +169,8 @@ export function NodeManager() {
const { token } = await res.json();
setGeneratedToken(token);
toast.success('Node token generated');
} catch (error: any) {
toast.error(error.message || 'Failed to generate token');
} catch (error) {
toast.error((error as Error).message || 'Failed to generate token');
} finally {
setGeneratingToken(false);
}