From c6dabafd93d6e7b80cd7049bf330f9af0cd2398e Mon Sep 17 00:00:00 2001 From: Ilia Mashkov Date: Sun, 5 Apr 2026 08:24:11 +0300 Subject: [PATCH] chore(appliedFontsStore): move FontBufferCache, FontEvicionPolicy and FontLoadQueue to appliedFontsStore/utils --- .../store/appliedFontsStore/appliedFontStore.test.ts | 2 +- .../store/appliedFontsStore/appliedFontsStore.svelte.ts | 6 +++--- .../{ => utils}/fontBufferCache/FontBufferCache.test.ts | 2 +- .../{ => utils}/fontBufferCache/FontBufferCache.ts | 6 ++++-- .../fontEvictionPolicy/FontEvictionPolicy.test.ts | 0 .../{ => utils}/fontEvictionPolicy/FontEvictionPolicy.ts | 8 ++++++-- .../{ => utils}/fontLoadQueue/FontLoadQueue.test.ts | 2 +- .../{ => utils}/fontLoadQueue/FontLoadQueue.ts | 6 ++++-- 8 files changed, 20 insertions(+), 12 deletions(-) rename src/entities/Font/model/store/appliedFontsStore/{ => utils}/fontBufferCache/FontBufferCache.test.ts (98%) rename src/entities/Font/model/store/appliedFontsStore/{ => utils}/fontBufferCache/FontBufferCache.ts (96%) rename src/entities/Font/model/store/appliedFontsStore/{ => utils}/fontEvictionPolicy/FontEvictionPolicy.test.ts (100%) rename src/entities/Font/model/store/appliedFontsStore/{ => utils}/fontEvictionPolicy/FontEvictionPolicy.ts (93%) rename src/entities/Font/model/store/appliedFontsStore/{ => utils}/fontLoadQueue/FontLoadQueue.test.ts (97%) rename src/entities/Font/model/store/appliedFontsStore/{ => utils}/fontLoadQueue/FontLoadQueue.ts (92%) diff --git a/src/entities/Font/model/store/appliedFontsStore/appliedFontStore.test.ts b/src/entities/Font/model/store/appliedFontsStore/appliedFontStore.test.ts index bba32a5..bac5059 100644 --- a/src/entities/Font/model/store/appliedFontsStore/appliedFontStore.test.ts +++ b/src/entities/Font/model/store/appliedFontsStore/appliedFontStore.test.ts @@ -1,7 +1,7 @@ /** @vitest-environment jsdom */ import { AppliedFontsManager } from './appliedFontsStore.svelte'; import { FontFetchError } from './errors'; -import { FontEvictionPolicy } from './fontEvictionPolicy/FontEvictionPolicy'; +import { FontEvictionPolicy } from './utils/fontEvictionPolicy/FontEvictionPolicy'; // ── Fake collaborators ──────────────────────────────────────────────────────── diff --git a/src/entities/Font/model/store/appliedFontsStore/appliedFontsStore.svelte.ts b/src/entities/Font/model/store/appliedFontsStore/appliedFontsStore.svelte.ts index 789f4a1..f0ff3cd 100644 --- a/src/entities/Font/model/store/appliedFontsStore/appliedFontsStore.svelte.ts +++ b/src/entities/Font/model/store/appliedFontsStore/appliedFontsStore.svelte.ts @@ -7,15 +7,15 @@ import { FontFetchError, FontParseError, } from './errors'; -import { FontBufferCache } from './fontBufferCache/FontBufferCache'; -import { FontEvictionPolicy } from './fontEvictionPolicy/FontEvictionPolicy'; -import { FontLoadQueue } from './fontLoadQueue/FontLoadQueue'; import { generateFontKey, getEffectiveConcurrency, loadFont, yieldToMainThread, } from './utils'; +import { FontBufferCache } from './utils/fontBufferCache/FontBufferCache'; +import { FontEvictionPolicy } from './utils/fontEvictionPolicy/FontEvictionPolicy'; +import { FontLoadQueue } from './utils/fontLoadQueue/FontLoadQueue'; interface AppliedFontsManagerDeps { cache?: FontBufferCache; diff --git a/src/entities/Font/model/store/appliedFontsStore/fontBufferCache/FontBufferCache.test.ts b/src/entities/Font/model/store/appliedFontsStore/utils/fontBufferCache/FontBufferCache.test.ts similarity index 98% rename from src/entities/Font/model/store/appliedFontsStore/fontBufferCache/FontBufferCache.test.ts rename to src/entities/Font/model/store/appliedFontsStore/utils/fontBufferCache/FontBufferCache.test.ts index 8008971..3ae0884 100644 --- a/src/entities/Font/model/store/appliedFontsStore/fontBufferCache/FontBufferCache.test.ts +++ b/src/entities/Font/model/store/appliedFontsStore/utils/fontBufferCache/FontBufferCache.test.ts @@ -1,5 +1,5 @@ /** @vitest-environment jsdom */ -import { FontFetchError } from '../errors'; +import { FontFetchError } from '../../errors'; import { FontBufferCache } from './FontBufferCache'; const makeBuffer = () => new ArrayBuffer(8); diff --git a/src/entities/Font/model/store/appliedFontsStore/fontBufferCache/FontBufferCache.ts b/src/entities/Font/model/store/appliedFontsStore/utils/fontBufferCache/FontBufferCache.ts similarity index 96% rename from src/entities/Font/model/store/appliedFontsStore/fontBufferCache/FontBufferCache.ts rename to src/entities/Font/model/store/appliedFontsStore/utils/fontBufferCache/FontBufferCache.ts index 1e49873..a2e6ace 100644 --- a/src/entities/Font/model/store/appliedFontsStore/fontBufferCache/FontBufferCache.ts +++ b/src/entities/Font/model/store/appliedFontsStore/utils/fontBufferCache/FontBufferCache.ts @@ -1,4 +1,4 @@ -import { FontFetchError } from '../errors'; +import { FontFetchError } from '../../errors'; type Fetcher = (url: string, init?: RequestInit) => Promise; @@ -40,7 +40,9 @@ export class FontBufferCache { async get(url: string, signal?: AbortSignal): Promise { // Tier 1: in-memory (fastest, no I/O) const inMemory = this.#buffersByUrl.get(url); - if (inMemory) return inMemory; + if (inMemory) { + return inMemory; + } // Tier 2: Cache API try { diff --git a/src/entities/Font/model/store/appliedFontsStore/fontEvictionPolicy/FontEvictionPolicy.test.ts b/src/entities/Font/model/store/appliedFontsStore/utils/fontEvictionPolicy/FontEvictionPolicy.test.ts similarity index 100% rename from src/entities/Font/model/store/appliedFontsStore/fontEvictionPolicy/FontEvictionPolicy.test.ts rename to src/entities/Font/model/store/appliedFontsStore/utils/fontEvictionPolicy/FontEvictionPolicy.test.ts diff --git a/src/entities/Font/model/store/appliedFontsStore/fontEvictionPolicy/FontEvictionPolicy.ts b/src/entities/Font/model/store/appliedFontsStore/utils/fontEvictionPolicy/FontEvictionPolicy.ts similarity index 93% rename from src/entities/Font/model/store/appliedFontsStore/fontEvictionPolicy/FontEvictionPolicy.ts rename to src/entities/Font/model/store/appliedFontsStore/utils/fontEvictionPolicy/FontEvictionPolicy.ts index 1a3a1b5..e99abde 100644 --- a/src/entities/Font/model/store/appliedFontsStore/fontEvictionPolicy/FontEvictionPolicy.ts +++ b/src/entities/Font/model/store/appliedFontsStore/utils/fontEvictionPolicy/FontEvictionPolicy.ts @@ -48,8 +48,12 @@ export class FontEvictionPolicy { */ shouldEvict(key: string, now: number): boolean { const lastUsed = this.#usageTracker.get(key); - if (lastUsed === undefined) return false; - if (this.#pinnedFonts.has(key)) return false; + if (lastUsed === undefined) { + return false; + } + if (this.#pinnedFonts.has(key)) { + return false; + } return now - lastUsed >= this.#TTL; } diff --git a/src/entities/Font/model/store/appliedFontsStore/fontLoadQueue/FontLoadQueue.test.ts b/src/entities/Font/model/store/appliedFontsStore/utils/fontLoadQueue/FontLoadQueue.test.ts similarity index 97% rename from src/entities/Font/model/store/appliedFontsStore/fontLoadQueue/FontLoadQueue.test.ts rename to src/entities/Font/model/store/appliedFontsStore/utils/fontLoadQueue/FontLoadQueue.test.ts index f833fcf..ab61f5a 100644 --- a/src/entities/Font/model/store/appliedFontsStore/fontLoadQueue/FontLoadQueue.test.ts +++ b/src/entities/Font/model/store/appliedFontsStore/utils/fontLoadQueue/FontLoadQueue.test.ts @@ -1,4 +1,4 @@ -import type { FontLoadRequestConfig } from '../../../types'; +import type { FontLoadRequestConfig } from '../../../../types'; import { FontLoadQueue } from './FontLoadQueue'; const config = (id: string): FontLoadRequestConfig => ({ diff --git a/src/entities/Font/model/store/appliedFontsStore/fontLoadQueue/FontLoadQueue.ts b/src/entities/Font/model/store/appliedFontsStore/utils/fontLoadQueue/FontLoadQueue.ts similarity index 92% rename from src/entities/Font/model/store/appliedFontsStore/fontLoadQueue/FontLoadQueue.ts rename to src/entities/Font/model/store/appliedFontsStore/utils/fontLoadQueue/FontLoadQueue.ts index 1cc6685..5e6de9f 100644 --- a/src/entities/Font/model/store/appliedFontsStore/fontLoadQueue/FontLoadQueue.ts +++ b/src/entities/Font/model/store/appliedFontsStore/utils/fontLoadQueue/FontLoadQueue.ts @@ -1,4 +1,4 @@ -import type { FontLoadRequestConfig } from '../../../types'; +import type { FontLoadRequestConfig } from '../../../../types'; /** * Manages the font load queue and per-font retry counts. @@ -17,7 +17,9 @@ export class FontLoadQueue { * @returns `true` if the key was newly enqueued, `false` if it was already present. */ enqueue(key: string, config: FontLoadRequestConfig): boolean { - if (this.#queue.has(key)) return false; + if (this.#queue.has(key)) { + return false; + } this.#queue.set(key, config); return true; }