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
This commit is contained in:
@@ -71,7 +71,7 @@ describe('loadFont', () => {
|
|||||||
it('throws FontParseError when font.load() rejects', async () => {
|
it('throws FontParseError when font.load() rejects', async () => {
|
||||||
const loadError = new Error('parse failed');
|
const loadError = new Error('parse failed');
|
||||||
const MockFontFace = vi.fn(
|
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);
|
this.load = vi.fn().mockRejectedValue(loadError);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -21,11 +21,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import type { UnifiedFont } from '$entities/Font/model/types';
|
import type { UnifiedFont } from '$entities/Font/model/types';
|
||||||
import type {
|
import type { QueryStatus } from '@tanstack/svelte-query';
|
||||||
QueryKey,
|
|
||||||
QueryObserverResult,
|
|
||||||
QueryStatus,
|
|
||||||
} from '@tanstack/svelte-query';
|
|
||||||
import {
|
import {
|
||||||
UNIFIED_FONTS,
|
UNIFIED_FONTS,
|
||||||
generateMockFonts,
|
generateMockFonts,
|
||||||
|
|||||||
-3
@@ -302,9 +302,6 @@ export class TypographySettingsStore {
|
|||||||
if (c.id === 'font_size') {
|
if (c.id === 'font_size') {
|
||||||
c.instance.value = defaults.fontSize * this.#multiplier;
|
c.instance.value = defaults.fontSize * this.#multiplier;
|
||||||
} else {
|
} 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') {
|
if (c.id === 'font_weight') {
|
||||||
c.instance.value = defaults.fontWeight;
|
c.instance.value = defaults.fontWeight;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -70,7 +70,6 @@ class MockIntersectionObserver implements IntersectionObserver {
|
|||||||
describe('ScrollBreadcrumbsStore', () => {
|
describe('ScrollBreadcrumbsStore', () => {
|
||||||
let scrollListeners: Array<() => void> = [];
|
let scrollListeners: Array<() => void> = [];
|
||||||
let addEventListenerSpy: ReturnType<typeof vi.spyOn>;
|
let addEventListenerSpy: ReturnType<typeof vi.spyOn>;
|
||||||
let removeEventListenerSpy: ReturnType<typeof vi.spyOn>;
|
|
||||||
let scrollToSpy: ReturnType<typeof vi.spyOn>;
|
let scrollToSpy: ReturnType<typeof vi.spyOn>;
|
||||||
|
|
||||||
// Helper to create mock elements
|
// Helper to create mock elements
|
||||||
@@ -111,7 +110,7 @@ describe('ScrollBreadcrumbsStore', () => {
|
|||||||
|
|
||||||
// Track scroll event listeners
|
// Track scroll event listeners
|
||||||
addEventListenerSpy = vi.spyOn(window, 'addEventListener').mockImplementation(
|
addEventListenerSpy = vi.spyOn(window, 'addEventListener').mockImplementation(
|
||||||
(event: string, listener: EventListenerOrEventListenerObject, options?: any) => {
|
(event: string, listener: EventListenerOrEventListenerObject, _options?: any) => {
|
||||||
if (event === 'scroll') {
|
if (event === 'scroll') {
|
||||||
scrollListeners.push(listener as () => void);
|
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) => {
|
(event: string, listener: EventListenerOrEventListenerObject) => {
|
||||||
if (event === 'scroll') {
|
if (event === 'scroll') {
|
||||||
const index = scrollListeners.indexOf(listener as () => void);
|
const index = scrollListeners.indexOf(listener as () => void);
|
||||||
|
|||||||
-6
@@ -29,12 +29,6 @@ import { createAppliedFilterStore } from './appliedFilterStore.svelte';
|
|||||||
* testing Svelte 5 reactive code in Node.js.
|
* 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
|
// Helper to create test properties
|
||||||
function createTestProperties(count: number, selectedIndices: number[] = []): Property<string>[] {
|
function createTestProperties(count: number, selectedIndices: number[] = []): Property<string>[] {
|
||||||
return Array.from({ length: count }, (_, i) => ({
|
return Array.from({ length: count }, (_, i) => ({
|
||||||
|
|||||||
@@ -156,7 +156,7 @@ export function createVirtualizer<T>(
|
|||||||
const offsets = $derived.by(() => {
|
const offsets = $derived.by(() => {
|
||||||
const count = options.count;
|
const count = options.count;
|
||||||
// Implicit dependency on version signal
|
// Implicit dependency on version signal
|
||||||
const v = _version;
|
const _v = _version;
|
||||||
const result = new Float64Array(count);
|
const result = new Float64Array(count);
|
||||||
let accumulated = 0;
|
let accumulated = 0;
|
||||||
for (let i = 0; i < count; i++) {
|
for (let i = 0; i < count; i++) {
|
||||||
@@ -180,7 +180,7 @@ export function createVirtualizer<T>(
|
|||||||
// this derivation when the items array is replaced!
|
// this derivation when the items array is replaced!
|
||||||
const { count, data } = options;
|
const { count, data } = options;
|
||||||
// Implicit dependency
|
// Implicit dependency
|
||||||
const v = _version;
|
const _v = _version;
|
||||||
if (count === 0 || containerHeight === 0 || !data) {
|
if (count === 0 || containerHeight === 0 || !data) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
@@ -268,7 +268,6 @@ export function createVirtualizer<T>(
|
|||||||
return rect.top + scrollY;
|
return rect.top + scrollY;
|
||||||
};
|
};
|
||||||
|
|
||||||
let cachedOffsetTop = 0;
|
|
||||||
let rafId: number | null = null;
|
let rafId: number | null = null;
|
||||||
containerHeight = typeof window !== 'undefined' ? window.innerHeight : 0;
|
containerHeight = typeof window !== 'undefined' ? window.innerHeight : 0;
|
||||||
|
|
||||||
@@ -292,14 +291,12 @@ export function createVirtualizer<T>(
|
|||||||
const handleResize = () => {
|
const handleResize = () => {
|
||||||
containerHeight = window.innerHeight;
|
containerHeight = window.innerHeight;
|
||||||
elementOffsetTop = getElementOffset();
|
elementOffsetTop = getElementOffset();
|
||||||
cachedOffsetTop = elementOffsetTop;
|
|
||||||
handleScroll();
|
handleScroll();
|
||||||
};
|
};
|
||||||
|
|
||||||
// Initial setup
|
// Initial setup
|
||||||
requestAnimationFrame(() => {
|
requestAnimationFrame(() => {
|
||||||
elementOffsetTop = getElementOffset();
|
elementOffsetTop = getElementOffset();
|
||||||
cachedOffsetTop = elementOffsetTop;
|
|
||||||
handleScroll();
|
handleScroll();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -3,10 +3,6 @@ import type {
|
|||||||
TransitionConfig,
|
TransitionConfig,
|
||||||
} from 'svelte/transition';
|
} 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) {
|
function gentleSpring(t: number) {
|
||||||
return 1 - Math.pow(1 - t, 3) * Math.cos(t * Math.PI * 2);
|
return 1 - Math.pow(1 - t, 3) * Math.cos(t * Math.PI * 2);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import { VIRTUAL_INDEX_NOT_LOADED } from '$entities/Font';
|
|
||||||
import { cubicOut } from 'svelte/easing';
|
import { cubicOut } from 'svelte/easing';
|
||||||
import {
|
import {
|
||||||
type CrossfadeParams,
|
type CrossfadeParams,
|
||||||
|
|||||||
@@ -2,12 +2,8 @@ import {
|
|||||||
render,
|
render,
|
||||||
screen,
|
screen,
|
||||||
} from '@testing-library/svelte';
|
} from '@testing-library/svelte';
|
||||||
import { setContext } from 'svelte';
|
|
||||||
import Footer from './Footer.svelte';
|
import Footer from './Footer.svelte';
|
||||||
|
|
||||||
// Mock component to provide context
|
|
||||||
import ContextWrapper from '$shared/lib/providers/ResponsiveProvider/ResponsiveProvider.svelte';
|
|
||||||
|
|
||||||
describe('Footer', () => {
|
describe('Footer', () => {
|
||||||
const currentYear = new Date().getFullYear();
|
const currentYear = new Date().getFullYear();
|
||||||
|
|
||||||
@@ -18,7 +14,7 @@ describe('Footer', () => {
|
|||||||
isDesktopLarge: false,
|
isDesktopLarge: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
const { container } = render(Footer, {
|
render(Footer, {
|
||||||
context: new Map([['responsive', mockResponsive]]),
|
context: new Map([['responsive', mockResponsive]]),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -3,12 +3,10 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import {
|
import {
|
||||||
afterEach,
|
|
||||||
beforeEach,
|
beforeEach,
|
||||||
describe,
|
describe,
|
||||||
expect,
|
expect,
|
||||||
it,
|
it,
|
||||||
vi,
|
|
||||||
} from 'vitest';
|
} from 'vitest';
|
||||||
|
|
||||||
// Helper to flush Svelte effects (they run in microtasks)
|
// Helper to flush Svelte effects (they run in microtasks)
|
||||||
|
|||||||
Reference in New Issue
Block a user