feat: No Explicit Any (#8601)

## Summary
- Add `typescript/no-explicit-any` rule to `.oxlintrc.json` to enforce
no explicit `any` types
- Fix all 40 instances of explicit `any` throughout the codebase
- Improve type safety with proper TypeScript types

## Changes Made

### Configuration
- Added `typescript/no-explicit-any` rule to `.oxlintrc.json`

### Type Fixes
- Replaced `any` with `unknown` for truly unknown types
- Updated generic type parameters to use `unknown` defaults instead of
`any`
- Fixed method `this` parameters to avoid variance issues
- Updated component props to match new generic types
- Fixed test mocks to use proper type assertions

### Key Files Modified
- `src/types/treeExplorerTypes.ts`: Updated TreeExplorerNode interface
generics
- `src/platform/settings/types.ts`: Fixed SettingParams generic default
- `src/lib/litegraph/src/LGraph.ts`: Fixed ParamsArray type constraint
- `src/extensions/core/electronAdapter.ts`: Fixed onChange callbacks
- `src/views/GraphView.vue`: Added proper type imports
- Multiple test files: Fixed type assertions and mocks

## Test Plan
- [x] All lint checks pass (`pnpm lint`)
- [x] TypeScript compilation succeeds (`pnpm typecheck`)
- [x] Pre-commit hooks pass
- [x] No regression in functionality

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8601-feat-add-typescript-no-explicit-any-rule-and-fix-all-instances-2fd6d73d365081fd9beef75d5a6daf5b)
by [Unito](https://www.unito.io)

---------

Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Alexander Brown <drjkl@comfy.org>
This commit is contained in:
Johnpaul Chiwetelu
2026-02-12 00:13:48 +01:00
committed by GitHub
parent 92b7437d86
commit 4fc1d2ef5b
28 changed files with 242 additions and 151 deletions

View File

@@ -2,7 +2,7 @@ import { createTestingPinia } from '@pinia/testing'
import { setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it } from 'vitest'
import type { ServerConfig } from '@/constants/serverConfig'
import type { ServerConfig, ServerConfigValue } from '@/constants/serverConfig'
import type { FormItem } from '@/platform/settings/types'
import { useServerConfigStore } from '@/stores/serverConfigStore'
@@ -28,7 +28,7 @@ describe('useServerConfigStore', () => {
})
it('should load server configs with default values', () => {
const configs: ServerConfig<any>[] = [
const configs: ServerConfig<ServerConfigValue>[] = [
{
...dummyFormItem,
id: 'test.config1',
@@ -50,7 +50,7 @@ describe('useServerConfigStore', () => {
})
it('should load server configs with provided values', () => {
const configs: ServerConfig<any>[] = [
const configs: ServerConfig<ServerConfigValue>[] = [
{
...dummyFormItem,
id: 'test.config1',
@@ -68,7 +68,7 @@ describe('useServerConfigStore', () => {
})
it('should organize configs by category', () => {
const configs: ServerConfig<any>[] = [
const configs: ServerConfig<ServerConfigValue>[] = [
{
...dummyFormItem,
id: 'test.config1',
@@ -97,7 +97,7 @@ describe('useServerConfigStore', () => {
})
it('should generate server config values excluding defaults', () => {
const configs: ServerConfig<any>[] = [
const configs: ServerConfig<ServerConfigValue>[] = [
{
...dummyFormItem,
id: 'test.config1',
@@ -121,12 +121,12 @@ describe('useServerConfigStore', () => {
})
it('should generate launch arguments with custom getValue function', () => {
const configs: ServerConfig<any>[] = [
const configs: ServerConfig<ServerConfigValue>[] = [
{
...dummyFormItem,
id: 'test.config1',
defaultValue: 'default1',
getValue: (value: string) => ({ customArg: value })
getValue: (value: ServerConfigValue) => ({ customArg: value })
},
{
...dummyFormItem,
@@ -146,7 +146,7 @@ describe('useServerConfigStore', () => {
})
it('should not include default values in launch arguments', () => {
const configs: ServerConfig<any>[] = [
const configs: ServerConfig<ServerConfigValue>[] = [
{
...dummyFormItem,
id: 'test.config1',
@@ -170,7 +170,7 @@ describe('useServerConfigStore', () => {
})
it('should not include nullish values in launch arguments', () => {
const configs: ServerConfig<any>[] = [
const configs: ServerConfig<ServerConfigValue>[] = [
{ ...dummyFormItem, id: 'test.config1', defaultValue: 'default1' },
{ ...dummyFormItem, id: 'test.config2', defaultValue: 'default2' },
{ ...dummyFormItem, id: 'test.config3', defaultValue: 'default3' },