Skip to content

Commit 602af9c

Browse files
chatman-mediaclaude
andcommitted
refactor(architecture): migrate video-compiler types to domains and fix useResources imports
Фаза 3: Consolidated video-compiler types into domains/video-editing/types and fixed architectural violations where features were importing from incorrect layers. **Video-Compiler Types Migration:** - Consolidated render.ts and cache.ts types into domains/video-editing/types/video-compiler.ts - Converted features/video-compiler/types/render.ts to re-export (61→14 lines) - Converted features/video-compiler/types/cache.ts to re-export (56→13 lines) - Updated 3 domain service files to import from canonical source: * cache-service.ts * metadata-cache-service.ts * video-compiler-service.ts **Architecture Fixes:** - Fixed useResources imports in 13 feature files (moved from features/resources to domains/video-editing/providers) - Fixed ResourcesPanel import in timeline.tsx (moved from domains to features/resources) **Types Migrated:** - RenderJob, VideoRenderJob, RenderProgress, RenderStatus, OutputFormat - VideoCompilerCacheStats, CacheMemoryUsage, CacheSettings - MetadataCacheEntry, PreviewCacheEntry, RenderSettings, RenderStatistics **Result:** - 0 TypeScript errors - Clean architectural layering (domains ← features) - Single source of truth for video-compiler types 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent 111481e commit 602af9c

File tree

21 files changed

+161
-145
lines changed

21 files changed

+161
-145
lines changed

src/domains/video-editing/services/compiler/cache-service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* Сервис для работы с кэшем компилятора
33
*/
44

5-
import type { VideoCompilerCacheStats } from "@/features/video-compiler/types/cache"
5+
import type { VideoCompilerCacheStats } from "@/domains/video-editing/types/video-compiler"
66
import { createLogger } from "@/lib/tauri-logger"
77
import {
88
clearAllCache as clearAllCacheTauri,

src/domains/video-editing/services/compiler/metadata-cache-service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*/
44

55
import type { MediaMetadata } from "@/domains/shared/types/media"
6-
import type { CacheMemoryUsage } from "@/features/video-compiler/types/cache"
6+
import type { CacheMemoryUsage } from "@/domains/video-editing/types/video-compiler"
77
import { createLogger } from "@/lib/tauri-logger"
88
import {
99
cacheMediaMetadata as cacheMediaMetadataTauri,

src/domains/video-editing/services/compiler/video-compiler-service.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33
*/
44

55
import { ProjectSchema } from "@/domains/video-editing/types/video-compiler"
6-
import type { RenderProgress } from "@/features/video-compiler/types/render"
7-
import { RenderStatus } from "@/features/video-compiler/types/render"
6+
import { RenderStatus, type RenderProgress } from "@/domains/video-editing/types/video-compiler"
87
import { createLogger } from "@/lib/tauri-logger"
98
import {
109
cancelRender as cancelRenderTauri,

src/domains/video-editing/types/video-compiler.ts

Lines changed: 124 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,131 @@
11
/**
22
* TypeScript типы для интеграции с Video Compiler (Rust backend)
3-
* Перенесено из src/shared/types/video-compiler.ts
3+
* Canonical source for all video-compiler types
44
*/
55

6-
import type { BaseEffect } from "@/features/effects/types/unified-effects"
7-
import {
8-
OutputFormat,
9-
type VideoRenderJob as RenderJob,
10-
type RenderProgress,
11-
} from "@/features/video-compiler/types/render"
12-
13-
// Импортируем новые типы эффектов
14-
15-
// Реэкспорт для обратной совместимости
16-
export {
17-
OutputFormat,
18-
type RenderProgress,
19-
RenderStatus,
20-
type VideoRenderJob as RenderJob,
21-
} from "@/features/video-compiler/types/render"
6+
import type { BaseEffect } from "@/domains/video-editing/types/unified-effects"
7+
8+
// ============================================================================
9+
// RENDER TYPES (from features/video-compiler/types/render.ts)
10+
// ============================================================================
11+
12+
export interface VideoRenderJob {
13+
id: string
14+
project_name: string
15+
output_path: string
16+
status: RenderStatus
17+
created_at: string
18+
progress: RenderProgress
19+
error_message?: string
20+
}
21+
22+
// Alias for backward compatibility
23+
export type RenderJob = VideoRenderJob
24+
25+
export interface RenderProgress {
26+
job_id: string
27+
stage: string
28+
percentage: number
29+
current_frame: number
30+
total_frames: number
31+
elapsed_time: number
32+
estimated_remaining?: number
33+
status: RenderStatus
34+
message?: string
35+
// Backward compatibility alias
36+
progress?: number
37+
}
38+
39+
export enum RenderStatus {
40+
Pending = "Pending",
41+
Processing = "Processing",
42+
Completed = "Completed",
43+
Failed = "Failed",
44+
Cancelled = "Cancelled",
45+
}
46+
47+
export interface RenderSettings {
48+
format: OutputFormat
49+
quality: number
50+
video_bitrate: number
51+
audio_bitrate: number
52+
hardware_acceleration: boolean
53+
ffmpeg_args: string[]
54+
}
55+
56+
export enum OutputFormat {
57+
Mp4 = "Mp4",
58+
Avi = "Avi",
59+
Mov = "Mov",
60+
Mkv = "Mkv",
61+
WebM = "WebM",
62+
Gif = "Gif",
63+
}
64+
65+
export interface RenderStatistics {
66+
total_jobs: number
67+
completed_jobs: number
68+
failed_jobs: number
69+
average_render_time: number
70+
total_render_time: number
71+
}
72+
73+
// ============================================================================
74+
// CACHE TYPES (from features/video-compiler/types/cache.ts)
75+
// ============================================================================
76+
77+
export interface VideoCompilerCacheStats {
78+
total_entries: number
79+
preview_hits: number
80+
preview_misses: number
81+
metadata_hits: number
82+
metadata_misses: number
83+
cache_hits: number
84+
cache_misses: number
85+
memory_usage: CacheMemoryUsage
86+
cache_size_mb: number
87+
total_size_mb: number
88+
preview_cache: {
89+
entries: number
90+
size_mb: number
91+
}
92+
cache_efficiency: number
93+
}
94+
95+
export interface CacheMemoryUsage {
96+
preview_bytes: number
97+
metadata_bytes: number
98+
render_bytes: number
99+
total_bytes: number
100+
totalSize: number
101+
fileCount: number
102+
oldestEntry: string
103+
newestEntry: string
104+
}
105+
106+
export interface PreviewCacheEntry {
107+
file_path: string
108+
timestamp: number
109+
quality: number
110+
image_data: Uint8Array
111+
created_at: string
112+
last_accessed: string
113+
access_count: number
114+
}
115+
116+
export interface MetadataCacheEntry {
117+
file_path: string
118+
metadata: any
119+
created_at: string
120+
last_accessed: string
121+
}
122+
123+
export interface CacheSettings {
124+
max_memory_mb: number
125+
max_entries: number
126+
auto_cleanup: boolean
127+
cleanup_threshold_percent: number
128+
}
22129

23130
// ============ Основные типы проекта ============
24131

src/features/browser/adapters/use-music-adapter.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { useMusicFiles } from "@/domains/project-management/hooks"
99
import { useMusicImport } from "@/features/browser/hooks/use-music-import"
1010
import { parseDuration, parseFileSize } from "@/features/browser/utils"
1111
import { useDraggable } from "@/features/drag-drop"
12-
import { useResources } from "@/features/resources"
12+
import { useResources } from "@/domains/video-editing/providers"
1313
import { formatTime } from "@/lib/date"
1414
import { cn } from "@/lib/utils"
1515
import type { ListAdapter, ListItem, PreviewComponentProps } from "../types/list"

src/features/browser/components/layout/add-media-button.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { useTranslation } from "react-i18next"
44

55
import { container } from "@/core/container"
66
import type { ResourceType, TimelineResource } from "@/domains/shared/types/resources"
7-
import { useResources } from "@/features/resources"
7+
import { useResources } from "@/domains/video-editing/providers"
88
import { createLogger } from "@/lib/tauri-logger"
99
import { cn } from "@/lib/utils"
1010

src/features/browser/components/preview/video-placeholder.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { memo, useCallback, useState } from "react"
22
import type { MediaFile } from "@/domains/media-management"
3-
import { useResources } from "@/features/resources"
3+
import { useResources } from "@/domains/video-editing/providers"
44
import { usePlayer } from "@/features/video-player"
55
import { createThumbnailUrl } from "@/lib/media-url-utils"
66
import { createLogger } from "@/lib/tauri-logger"

src/features/browser/components/preview/video-stream.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { memo, useCallback, useRef, useState } from "react"
22
import type { FfprobeStream, MediaFile } from "@/domains/media-management"
33
import type { TimelineResource } from "@/domains/shared/types/resources"
44
import { calculateAdaptiveWidth, calculateWidth, parseRotation } from "@/features/media/utils/video"
5-
import { useResources } from "@/features/resources"
5+
import { useResources } from "@/domains/video-editing/providers"
66
import { usePlayer } from "@/features/video-player"
77
import { createThumbnailUrl } from "@/lib/media-url-utils"
88
import { createLogger } from "@/lib/tauri-logger"

src/features/effects/components/effect-preview.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { AddMediaButton } from "@/features/browser/components/layout/add-media-b
88
import { ApplyButton } from "@/features/browser/components/layout/apply-button"
99
import { FavoriteButton } from "@/features/browser/components/layout/favorite-button"
1010
import type { BaseEffect, VideoEffect } from "@/features/effects/types"
11-
import { useResources } from "@/features/resources"
11+
import { useResources } from "@/domains/video-editing/providers"
1212
import { usePlayer, useVideoSelection } from "@/features/video-player"
1313
import { getEffectsPreviewService } from "@/features/video-player/services/effects-preview"
1414
import { createLogger } from "@/lib/tauri-logger"

src/features/filters/components/filter-preview.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { MediaType } from "@/domains/media-management"
55
import type { FilterResource, TimelineResource } from "@/domains/shared/types/resources"
66
import { ApplyButton } from "@/features/browser"
77
import type { VideoFilter } from "@/features/filters/types/filters"
8-
import { useResources } from "@/features/resources"
8+
import { useResources } from "@/domains/video-editing/providers"
99
import { usePlayer, useVideoSelection } from "@/features/video-player"
1010
import { createLogger } from "@/lib/tauri-logger"
1111

0 commit comments

Comments
 (0)