diff --git a/app/benchmark/page.tsx b/app/benchmark/page.tsx index 8d49753d..51a4b9d3 100644 --- a/app/benchmark/page.tsx +++ b/app/benchmark/page.tsx @@ -8,7 +8,7 @@ import type { } from "@/types/benchmark"; import { BenchmarkEngine, isWebCryptoSupported } from "@/lib/utils/benchmark"; import { getDeviceInfo } from "@/lib/utils/deviceInfo"; -import { useCipherWorker } from "@/lib/hooks/useCipherWorker"; +import { useCipherWorker } from "@/hooks/useCipherWorker"; import { addBenchmarkSession, loadBenchmarkHistory, @@ -422,4 +422,4 @@ export default function BenchmarkPage() { ); -} \ No newline at end of file +} diff --git a/components/avalanche/AvalancheVisualizer.tsx b/components/avalanche/AvalancheVisualizer.tsx index 5c27a5fa..a55066c5 100644 --- a/components/avalanche/AvalancheVisualizer.tsx +++ b/components/avalanche/AvalancheVisualizer.tsx @@ -12,7 +12,7 @@ import { useEffect, useMemo, useRef, useState } from 'react' import type { CipherResult } from '../../lib/cipher/types' -import { useCipherWorker } from '../../lib/hooks/useCipherWorker' +import { useCipherWorker } from '../../hooks/useCipherWorker' import { computeByteCells, diffStats, diff --git a/components/challenge/ChallengeMode.tsx b/components/challenge/ChallengeMode.tsx index 5c657127..35bf0bdf 100644 --- a/components/challenge/ChallengeMode.tsx +++ b/components/challenge/ChallengeMode.tsx @@ -1,7 +1,7 @@ 'use client' import { useState, useEffect, useCallback, useMemo, useRef } from 'react' -import { useCipherWorker } from '../../lib/hooks/useCipherWorker' +import { useCipherWorker } from '../../hooks/useCipherWorker' import { generateChallengeData, type ChallengeData, type ChallengeDifficulty } from '../../lib/challenge/generator' import { getWrongAnswerExplanation } from '../../lib/challenge/explain' import { CIPHER_REGISTRY } from '../../lib/cipher/registry' diff --git a/components/challenge/DailyQuiz.tsx b/components/challenge/DailyQuiz.tsx index 9e70a8a0..3ccc2a28 100644 --- a/components/challenge/DailyQuiz.tsx +++ b/components/challenge/DailyQuiz.tsx @@ -1,7 +1,7 @@ 'use client' import { useState, useEffect, useRef } from 'react'; -import { useCipherWorker } from '../../lib/hooks/useCipherWorker'; +import { useCipherWorker } from '../../hooks/useCipherWorker'; import { generateDailyQuiz, getDailyQuizState, saveDailyQuizState, calculateNewStreak, type DailyQuizData, type DailyQuizState } from '../../lib/challenge/daily'; import { getWrongAnswerExplanation } from '../../lib/challenge/explain'; import { CIPHER_REGISTRY } from '../../lib/cipher/registry'; diff --git a/components/cipher/CipherLayout.tsx b/components/cipher/CipherLayout.tsx index 7f3084c3..a421263b 100644 --- a/components/cipher/CipherLayout.tsx +++ b/components/cipher/CipherLayout.tsx @@ -4,7 +4,7 @@ import { useRouter } from 'next/navigation' import dynamic from 'next/dynamic' import type { CipherDefinition, CipherOptionValue } from '../../lib/cipher/registry' import type { CipherResult } from '../../lib/cipher/types' -import { useCipherWorker } from '../../lib/hooks/useCipherWorker' +import { useCipherWorker } from '../../hooks/useCipherWorker' import type { AnimationSpeed } from './StepAnimator' import WorkspacePresetManager from './WorkspacePresetManager' import ConversionHistory from './ConversionHistory' diff --git a/components/compare/CipherComparisonPanel.tsx b/components/compare/CipherComparisonPanel.tsx index df93a767..80adcdb7 100644 --- a/components/compare/CipherComparisonPanel.tsx +++ b/components/compare/CipherComparisonPanel.tsx @@ -6,7 +6,7 @@ import type { CipherDirection, CipherResult, } from '../../lib/cipher/types' -import { useCipherWorker } from '../../lib/hooks/useCipherWorker' +import { useCipherWorker } from '../../hooks/useCipherWorker' import CipherLifecycleBadge from '../cipher/CipherLifecycleBadge' import { type CipherWorkerOptions, diff --git a/components/tests/CipherIntegrationDashboard.tsx b/components/tests/CipherIntegrationDashboard.tsx index 36f17cb6..1eeab155 100644 --- a/components/tests/CipherIntegrationDashboard.tsx +++ b/components/tests/CipherIntegrationDashboard.tsx @@ -2,7 +2,7 @@ import React, { useState } from "react"; import { runCipherIntegrationTests, TestSuiteSummary } from "@/lib/utils/cipherTestRunner"; -import { useCipherWorker } from "@/lib/hooks/useCipherWorker"; +import { useCipherWorker } from "@/hooks/useCipherWorker"; export const CipherIntegrationDashboard: React.FC = () => { const [isRunning, setIsRunning] = useState(false); diff --git a/components/workers/WorkerCommunicationDashboard.tsx b/components/workers/WorkerCommunicationDashboard.tsx index 5d65d7cb..442bcf1d 100644 --- a/components/workers/WorkerCommunicationDashboard.tsx +++ b/components/workers/WorkerCommunicationDashboard.tsx @@ -1,7 +1,7 @@ "use client"; import React, { useState } from "react"; -import { useCipherWorker } from "@/lib/hooks/useCipherWorker"; +import { useCipherWorker } from "@/hooks/useCipherWorker"; interface LogEntry { id: string; @@ -119,4 +119,4 @@ export const WorkerCommunicationDashboard: React.FC = () => { ); -}; \ No newline at end of file +}; diff --git a/lib/hooks/useCipherWorker.ts b/hooks/useCipherWorker.ts similarity index 97% rename from lib/hooks/useCipherWorker.ts rename to hooks/useCipherWorker.ts index 6317bd3e..e6f4c02a 100644 --- a/lib/hooks/useCipherWorker.ts +++ b/hooks/useCipherWorker.ts @@ -7,9 +7,9 @@ 'use client' import { useEffect, useRef, useState, useCallback } from 'react' -import type { CipherResult } from '../cipher/types' -import type { WorkerRequest, WorkerResponse } from '../../types/worker' -import type { CipherErrorCode } from '../utils/errors' +import type { CipherResult } from '../lib/cipher/types' +import type { WorkerRequest, WorkerResponse } from '../types/worker' +import type { CipherErrorCode } from '../lib/utils/errors' const MAX_CACHE_SIZE = 200 @@ -144,7 +144,7 @@ export function useCipherWorker() { const worker = new Worker( - new URL('../workers/cipher.worker.ts', import.meta.url) + new URL('../lib/workers/cipher.worker.ts', import.meta.url) ) @@ -232,7 +232,7 @@ export function useCipherWorker() { return new Promise((resolve, reject) => { const id = Math.random().toString(36).substring(2, 11) - + // Mark this as the latest request. Any older in-flight requests will be considered stale // and their eventual worker responses will be ignored. latestRequestIdRef.current = id diff --git a/tests/unit/hooks/useCipherWorker.test.ts b/tests/unit/hooks/useCipherWorker.test.ts index 034273f8..8ef443a0 100644 --- a/tests/unit/hooks/useCipherWorker.test.ts +++ b/tests/unit/hooks/useCipherWorker.test.ts @@ -1,5 +1,5 @@ import { renderHook, act } from '@testing-library/react' -import { useCipherWorker, clearCipherWorkerCache } from '@/lib/hooks/useCipherWorker' +import { useCipherWorker, clearCipherWorkerCache } from '@/hooks/useCipherWorker' import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest' // Mock Worker class