From 9788f07dec9f9954ed1896e78b8a0600efe7dc35 Mon Sep 17 00:00:00 2001 From: Ilia Mashkov Date: Tue, 2 Jun 2026 23:01:48 +0300 Subject: [PATCH] refactor: remove unused vars and dead code Cleanup surfaced once the oxlint config actually loads (no-unused-vars). - drop dead locals/imports/params (cachedOffsetTop, elasticOut, key, unused type imports, unused test imports; _-prefix unused mock params) - createVirtualizer: keep the _version read (reactive subscription inside $derived.by) but bind it to _v so it is not flagged - scrollBreadcrumbsStore.test: keep the removeEventListener mock side effect, drop the unread spy binding --- .../fontLifecycleManager/utils/loadFont/loadFont.test.ts | 2 +- src/entities/Font/testing/stores.mock.ts | 6 +----- .../typographySettingsStore.svelte.ts | 3 --- .../Breadcrumb/model/store/scrollBreadcrumbsStore.test.ts | 5 ++--- .../store/appliedFilterStore/appliedFilterStore.test.ts | 6 ------ .../helpers/createVirtualizer/createVirtualizer.svelte.ts | 7 ++----- .../lib/transitions/springySlideFade/springySlideFade.ts | 4 ---- src/widgets/ComparisonView/lib/utils/dotTransition.ts | 1 - src/widgets/Footer/ui/Footer/Footer.svelte.test.ts | 6 +----- .../model/stores/layoutStore/layoutStore.test.ts | 2 -- 10 files changed, 7 insertions(+), 35 deletions(-) diff --git a/src/entities/Font/model/store/fontLifecycleManager/utils/loadFont/loadFont.test.ts b/src/entities/Font/model/store/fontLifecycleManager/utils/loadFont/loadFont.test.ts index f44b289..3cc7bc1 100644 --- a/src/entities/Font/model/store/fontLifecycleManager/utils/loadFont/loadFont.test.ts +++ b/src/entities/Font/model/store/fontLifecycleManager/utils/loadFont/loadFont.test.ts @@ -71,7 +71,7 @@ describe('loadFont', () => { it('throws FontParseError when font.load() rejects', async () => { const loadError = new Error('parse failed'); const MockFontFace = vi.fn( - function(this: any, name: string, buffer: BufferSource, options: FontFaceDescriptors) { + function(this: any, _name: string, _buffer: BufferSource, _options: FontFaceDescriptors) { this.load = vi.fn().mockRejectedValue(loadError); }, ); diff --git a/src/entities/Font/testing/stores.mock.ts b/src/entities/Font/testing/stores.mock.ts index cb10931..02d29bc 100644 --- a/src/entities/Font/testing/stores.mock.ts +++ b/src/entities/Font/testing/stores.mock.ts @@ -21,11 +21,7 @@ */ import type { UnifiedFont } from '$entities/Font/model/types'; -import type { - QueryKey, - QueryObserverResult, - QueryStatus, -} from '@tanstack/svelte-query'; +import type { QueryStatus } from '@tanstack/svelte-query'; import { UNIFIED_FONTS, generateMockFonts, diff --git a/src/features/AdjustTypography/model/store/typographySettingsStore/typographySettingsStore.svelte.ts b/src/features/AdjustTypography/model/store/typographySettingsStore/typographySettingsStore.svelte.ts index d7b2512..e0c4224 100644 --- a/src/features/AdjustTypography/model/store/typographySettingsStore/typographySettingsStore.svelte.ts +++ b/src/features/AdjustTypography/model/store/typographySettingsStore/typographySettingsStore.svelte.ts @@ -302,9 +302,6 @@ export class TypographySettingsStore { if (c.id === 'font_size') { c.instance.value = defaults.fontSize * this.#multiplier; } else { - // Map storage key to control id - const key = c.id.replace('_', '') as keyof TypographySettings; - // Simplified for brevity, you'd map these properly: if (c.id === 'font_weight') { c.instance.value = defaults.fontWeight; } diff --git a/src/features/Breadcrumb/model/store/scrollBreadcrumbsStore.test.ts b/src/features/Breadcrumb/model/store/scrollBreadcrumbsStore.test.ts index dd3929b..8ab9d0c 100644 --- a/src/features/Breadcrumb/model/store/scrollBreadcrumbsStore.test.ts +++ b/src/features/Breadcrumb/model/store/scrollBreadcrumbsStore.test.ts @@ -70,7 +70,6 @@ class MockIntersectionObserver implements IntersectionObserver { describe('ScrollBreadcrumbsStore', () => { let scrollListeners: Array<() => void> = []; let addEventListenerSpy: ReturnType; - let removeEventListenerSpy: ReturnType; let scrollToSpy: ReturnType; // Helper to create mock elements @@ -111,7 +110,7 @@ describe('ScrollBreadcrumbsStore', () => { // Track scroll event listeners addEventListenerSpy = vi.spyOn(window, 'addEventListener').mockImplementation( - (event: string, listener: EventListenerOrEventListenerObject, options?: any) => { + (event: string, listener: EventListenerOrEventListenerObject, _options?: any) => { if (event === 'scroll') { scrollListeners.push(listener as () => void); } @@ -119,7 +118,7 @@ describe('ScrollBreadcrumbsStore', () => { }, ); - removeEventListenerSpy = vi.spyOn(window, 'removeEventListener').mockImplementation( + vi.spyOn(window, 'removeEventListener').mockImplementation( (event: string, listener: EventListenerOrEventListenerObject) => { if (event === 'scroll') { const index = scrollListeners.indexOf(listener as () => void); diff --git a/src/features/FilterAndSortFonts/model/store/appliedFilterStore/appliedFilterStore.test.ts b/src/features/FilterAndSortFonts/model/store/appliedFilterStore/appliedFilterStore.test.ts index c546ac1..02c2333 100644 --- a/src/features/FilterAndSortFonts/model/store/appliedFilterStore/appliedFilterStore.test.ts +++ b/src/features/FilterAndSortFonts/model/store/appliedFilterStore/appliedFilterStore.test.ts @@ -29,12 +29,6 @@ import { createAppliedFilterStore } from './appliedFilterStore.svelte'; * testing Svelte 5 reactive code in Node.js. */ -// Helper to flush Svelte effects (they run in microtasks) -async function flushEffects() { - await Promise.resolve(); - await Promise.resolve(); -} - // Helper to create test properties function createTestProperties(count: number, selectedIndices: number[] = []): Property[] { return Array.from({ length: count }, (_, i) => ({ diff --git a/src/shared/lib/helpers/createVirtualizer/createVirtualizer.svelte.ts b/src/shared/lib/helpers/createVirtualizer/createVirtualizer.svelte.ts index 949d991..7c6d3e1 100644 --- a/src/shared/lib/helpers/createVirtualizer/createVirtualizer.svelte.ts +++ b/src/shared/lib/helpers/createVirtualizer/createVirtualizer.svelte.ts @@ -156,7 +156,7 @@ export function createVirtualizer( const offsets = $derived.by(() => { const count = options.count; // Implicit dependency on version signal - const v = _version; + const _v = _version; const result = new Float64Array(count); let accumulated = 0; for (let i = 0; i < count; i++) { @@ -180,7 +180,7 @@ export function createVirtualizer( // this derivation when the items array is replaced! const { count, data } = options; // Implicit dependency - const v = _version; + const _v = _version; if (count === 0 || containerHeight === 0 || !data) { return []; } @@ -268,7 +268,6 @@ export function createVirtualizer( return rect.top + scrollY; }; - let cachedOffsetTop = 0; let rafId: number | null = null; containerHeight = typeof window !== 'undefined' ? window.innerHeight : 0; @@ -292,14 +291,12 @@ export function createVirtualizer( const handleResize = () => { containerHeight = window.innerHeight; elementOffsetTop = getElementOffset(); - cachedOffsetTop = elementOffsetTop; handleScroll(); }; // Initial setup requestAnimationFrame(() => { elementOffsetTop = getElementOffset(); - cachedOffsetTop = elementOffsetTop; handleScroll(); }); diff --git a/src/shared/lib/transitions/springySlideFade/springySlideFade.ts b/src/shared/lib/transitions/springySlideFade/springySlideFade.ts index a32d8a0..a82b7e5 100644 --- a/src/shared/lib/transitions/springySlideFade/springySlideFade.ts +++ b/src/shared/lib/transitions/springySlideFade/springySlideFade.ts @@ -3,10 +3,6 @@ import type { TransitionConfig, } from 'svelte/transition'; -function elasticOut(t: number) { - return Math.pow(2, -10 * t) * Math.sin((t - 0.075) * (2 * Math.PI) / 0.3) + 1; -} - function gentleSpring(t: number) { return 1 - Math.pow(1 - t, 3) * Math.cos(t * Math.PI * 2); } diff --git a/src/widgets/ComparisonView/lib/utils/dotTransition.ts b/src/widgets/ComparisonView/lib/utils/dotTransition.ts index 78fb4c3..28ac585 100644 --- a/src/widgets/ComparisonView/lib/utils/dotTransition.ts +++ b/src/widgets/ComparisonView/lib/utils/dotTransition.ts @@ -1,4 +1,3 @@ -import { VIRTUAL_INDEX_NOT_LOADED } from '$entities/Font'; import { cubicOut } from 'svelte/easing'; import { type CrossfadeParams, diff --git a/src/widgets/Footer/ui/Footer/Footer.svelte.test.ts b/src/widgets/Footer/ui/Footer/Footer.svelte.test.ts index 420c95b..3f516c8 100644 --- a/src/widgets/Footer/ui/Footer/Footer.svelte.test.ts +++ b/src/widgets/Footer/ui/Footer/Footer.svelte.test.ts @@ -2,12 +2,8 @@ import { render, screen, } from '@testing-library/svelte'; -import { setContext } from 'svelte'; import Footer from './Footer.svelte'; -// Mock component to provide context -import ContextWrapper from '$shared/lib/providers/ResponsiveProvider/ResponsiveProvider.svelte'; - describe('Footer', () => { const currentYear = new Date().getFullYear(); @@ -18,7 +14,7 @@ describe('Footer', () => { isDesktopLarge: false, }; - const { container } = render(Footer, { + render(Footer, { context: new Map([['responsive', mockResponsive]]), }); diff --git a/src/widgets/SampleList/model/stores/layoutStore/layoutStore.test.ts b/src/widgets/SampleList/model/stores/layoutStore/layoutStore.test.ts index 6dc2d19..8b7bcc0 100644 --- a/src/widgets/SampleList/model/stores/layoutStore/layoutStore.test.ts +++ b/src/widgets/SampleList/model/stores/layoutStore/layoutStore.test.ts @@ -3,12 +3,10 @@ */ import { - afterEach, beforeEach, describe, expect, it, - vi, } from 'vitest'; // Helper to flush Svelte effects (they run in microtasks)