SYMBOL INDEX (730 symbols across 145 files) FILE: apps/api/src/lib/database-migrate.ts constant MIGRATIONS_FOLDER (line 6) | const MIGRATIONS_FOLDER = path.resolve(import.meta.dirname, '../../../de... FILE: apps/api/src/lib/history-record-mapper.ts constant TERMINAL_STATUSES (line 4) | const TERMINAL_STATUSES = new Set(['completed', ... constant TAG_SEPARATOR (line 5) | const TAG_SEPARATOR = '\n' FILE: apps/api/src/lib/history-store.ts class HistoryStore (line 11) | class HistoryStore { method constructor (line 15) | constructor(databasePath: string) { method save (line 23) | save(task: DownloadTask): void { method list (line 40) | list(): DownloadTask[] { method removeItems (line 57) | removeItems(ids: string[]): number { method removeByPlaylist (line 69) | removeByPlaylist(playlistId: string): number { FILE: apps/api/src/lib/rpc-router.ts constant WEB_SETTINGS_FILES_DIR (line 12) | const WEB_SETTINGS_FILES_DIR = path.resolve(process.cwd(), '.data', 'web... constant MAX_WEB_SETTINGS_FILE_BYTES (line 13) | const MAX_WEB_SETTINGS_FILE_BYTES = 1_000_000 constant MANAGED_SETTINGS_FILE_RETENTION_MS (line 14) | const MANAGED_SETTINGS_FILE_RETENTION_MS = 30 * 24 * 60 * 60 * 1000 constant SAFE_FILE_NAME_REGEX (line 15) | const SAFE_FILE_NAME_REGEX = /[^A-Za-z0-9._-]+/g type ManagedSettingsFileKind (line 16) | type ManagedSettingsFileKind = 'cookies' | 'config' FILE: apps/api/src/lib/sse.ts constant HEARTBEAT_INTERVAL_MS (line 3) | const HEARTBEAT_INTERVAL_MS = 15_000 class SseHub (line 5) | class SseHub { method addClient (line 9) | addClient(client: ServerResponse): void { method removeClient (line 15) | removeClient(client: ServerResponse): void { method publish (line 22) | publish(event: string, payload: unknown): void { method closeAll (line 35) | closeAll(): void { method ensureHeartbeatTimer (line 43) | private ensureHeartbeatTimer(): void { method clearHeartbeatTimer (line 55) | private clearHeartbeatTimer(): void { FILE: apps/api/src/lib/web-settings-store.ts constant STORAGE_DIR (line 5) | const STORAGE_DIR = path.resolve(process.cwd(), '.data') constant STORAGE_FILE (line 6) | const STORAGE_FILE = path.join(STORAGE_DIR, 'web-settings.json') type WebAppSettings (line 32) | type WebAppSettings = typeof defaultWebSettings class WebSettingsStore (line 34) | class WebSettingsStore { method ensureInitialized (line 38) | private async ensureInitialized(): Promise { method get (line 57) | async get(): Promise { method set (line 62) | async set(nextSettings: WebAppSettings): Promise { FILE: apps/api/src/server.ts constant MAX_PROXY_IMAGE_BYTES (line 15) | const MAX_PROXY_IMAGE_BYTES = 10 * 1024 * 1024 constant MAX_PROXY_REDIRECTS (line 16) | const MAX_PROXY_REDIRECTS = 5 FILE: apps/desktop/build/after-pack.cjs constant BINARIES (line 5) | const BINARIES = [ FILE: apps/desktop/resources/drizzle/0000_swift_aaron_stack.sql type `download_history` (line 1) | CREATE TABLE `download_history` ( type `subscription_items` (line 30) | CREATE TABLE `subscription_items` ( type `subscription_items_subscription_idx` (line 44) | CREATE INDEX `subscription_items_subscription_idx` ON `subscription_item... type `subscriptions` (line 45) | CREATE TABLE `subscriptions` ( FILE: apps/desktop/scripts/ensure-native-deps.mjs function canLoadBetterSqlite3WithElectron (line 10) | function canLoadBetterSqlite3WithElectron() { FILE: apps/desktop/scripts/setup-dev-binaries.js constant RESOURCES_DIR (line 19) | const RESOURCES_DIR = path.join(currentDirPath, '..', 'resources') constant FFMPEG_DIR (line 20) | const FFMPEG_DIR = path.join(RESOURCES_DIR, 'ffmpeg') constant YTDLP_BASE_URL (line 21) | const YTDLP_BASE_URL = 'https://github.com/yt-dlp/yt-dlp/releases/latest... constant DENO_BASE_URL (line 22) | const DENO_BASE_URL = 'https://github.com/denoland/deno/releases/latest/... constant MAC_FFMPEG_MODE (line 23) | const MAC_FFMPEG_MODE = (process.env.VIDBEE_MAC_FFMPEG_MODE || 'native')... constant GITHUB_TOKEN (line 24) | const GITHUB_TOKEN = constant PLATFORM_CONFIG (line 28) | const PLATFORM_CONFIG = { function log (line 103) | function log(message, type = 'info') { function ensureDir (line 114) | function ensureDir(dir) { function safeUnlink (line 120) | function safeUnlink(filePath) { function getDownloadHeaders (line 126) | function getDownloadHeaders(url) { function downloadFile (line 137) | function downloadFile(url, dest) { function downloadFileWithRetry (line 224) | async function downloadFileWithRetry(url, dest, retries = 3, delayMs = 2... function fetchJson (line 244) | function fetchJson(url) { function inferFfmpegInnerPath (line 282) | function inferFfmpegInnerPath(assetName, binaryName) { function resolveReleaseAsset (line 293) | async function resolveReleaseAsset(release) { function extractZip (line 323) | function extractZip(zipPath, extractDir) { function extractTarXz (line 349) | function extractTarXz(tarPath, extractDir) { function setExecutable (line 354) | function setExecutable(filePath) { function fileExists (line 360) | function fileExists(filePath) { function findFirstFileByName (line 364) | function findFirstFileByName(dirPath, fileName) { function formatBytes (line 385) | function formatBytes(bytes) { function checkBinary (line 395) | function checkBinary(filePath, args, label, options = {}) { function logBinaryVersion (line 422) | function logBinaryVersion(label, validation) { function getDenoAssetName (line 429) | function getDenoAssetName(platform, arch) { function getDenoOutputName (line 451) | function getDenoOutputName(platform) { function getMacFfmpegMode (line 455) | function getMacFfmpegMode() { function hasRequiredMacArchitectures (line 465) | function hasRequiredMacArchitectures(filePath, expectedArchitectures) { function runCommandOrThrow (line 491) | function runCommandOrThrow(command, args, label) { function resolveMacExtractedBinary (line 506) | function resolveMacExtractedBinary(extractDir, expectedInnerPath, binary... function resolveMacFfmpegDownloadUrl (line 520) | async function resolveMacFfmpegDownloadUrl(ffmpegConfig) { function downloadYtDlp (line 538) | async function downloadYtDlp(config) { function downloadFfmpegWindows (line 576) | async function downloadFfmpegWindows(config) { function downloadFfmpegMac (line 686) | async function downloadFfmpegMac(config) { function downloadFfmpegLinux (line 855) | async function downloadFfmpegLinux(config) { function downloadDenoRuntime (line 962) | async function downloadDenoRuntime() { function setup (line 1025) | async function setup() { FILE: apps/desktop/src/main/config/logger-config.ts function configureLogger (line 7) | function configureLogger() { FILE: apps/desktop/src/main/index.ts constant RENDERER_DIST_PATH (line 45) | const RENDERER_DIST_PATH = join(import.meta.dirname, '../renderer') type DeepLinkData (line 61) | interface DeepLinkData { function createWindow (line 176) | function createWindow(): void { function setupRendererErrorHandling (line 256) | function setupRendererErrorHandling(): void { function setupDownloadEvents (line 293) | function setupDownloadEvents(): void { function sanitizeRequestPath (line 386) | function sanitizeRequestPath(requestUrl: URL): string { function isWithinBase (line 393) | function isWithinBase(targetPath: string, basePath: string): boolean { function resolveVidbeeFilePath (line 398) | function resolveVidbeeFilePath(requestUrl: URL, userDataPath: string): s... function registerVidbeeProtocol (line 426) | function registerVidbeeProtocol(): void { function initAutoUpdater (line 446) | function initAutoUpdater(): void { FILE: apps/desktop/src/main/ipc/index.ts type IpcServices (line 28) | type IpcServices = MergeIpcService FILE: apps/desktop/src/main/ipc/services/app-service.ts class AppService (line 6) | class AppService extends IpcService { method getVersion (line 10) | getVersion(_context: IpcContext): string { method getPlatform (line 15) | getPlatform(_context: IpcContext): string { method getOsVersion (line 20) | getOsVersion(_context: IpcContext): string { method quit (line 51) | quit(_context: IpcContext): void { method showMessageBox (line 56) | async showMessageBox( method getSiteIcon (line 69) | async getSiteIcon(_context: IpcContext, domain: string): Promise { method selectFile (line 30) | async selectFile(_context: IpcContext): Promise { method getDefaultDownloadPath (line 43) | getDefaultDownloadPath(_context: IpcContext): string { method openFileLocation (line 64) | async openFileLocation(_context: IpcContext, filePath: string): Promis... method openFile (line 110) | async openFile(_context: IpcContext, filePath: string): Promise { method copyFileToClipboardWindows (line 191) | private async copyFileToClipboardWindows(resolvedPath: string): Promis... method copyFileToClipboardMac (line 227) | private async copyFileToClipboardMac(resolvedPath: string): Promise(_context: IpcContext, key: K): AppSet... method set (line 17) | set(_context: IpcContext, key: K, value: ... method getAll (line 34) | getAll(_context: IpcContext): AppSettings { method setAll (line 39) | setAll(_context: IpcContext, settings: Partial): void { method reset (line 56) | reset(_context: IpcContext): void { FILE: apps/desktop/src/main/ipc/services/subscription-service.ts type CreateSubscriptionOptions (line 18) | interface CreateSubscriptionOptions { class SubscriptionService (line 100) | class SubscriptionService extends IpcService { method list (line 104) | list(_context: IpcContext): SubscriptionRule[] { method resolve (line 109) | resolve(_context: IpcContext, url: string): SubscriptionResolvedFeed { method create (line 114) | async create( method update (line 146) | update( method remove (line 165) | remove(_context: IpcContext, id: string): boolean { method refresh (line 170) | async refresh(_context: IpcContext, id?: string): Promise { method queueItem (line 175) | async queueItem(_context: IpcContext, id: string, itemId: string): Pro... FILE: apps/desktop/src/main/ipc/services/thumbnail-service.ts class ThumbnailService (line 4) | class ThumbnailService extends IpcService { method getThumbnailPath (line 8) | async getThumbnailPath( FILE: apps/desktop/src/main/ipc/services/update-service.ts class UpdateService (line 33) | class UpdateService extends IpcService { method checkForUpdates (line 37) | async checkForUpdates( method downloadUpdate (line 65) | async downloadUpdate(_context: IpcContext): Promise<{ success: boolean... method quitAndInstall (line 78) | quitAndInstall(_context: IpcContext): void { method getCurrentVersion (line 83) | getCurrentVersion(_context: IpcContext): string { method isAutoUpdateEnabled (line 88) | isAutoUpdateEnabled(_context: IpcContext): boolean { FILE: apps/desktop/src/main/ipc/services/window-service.ts class WindowService (line 4) | class WindowService extends IpcService { method minimize (line 8) | minimize(_context: IpcContext): void { method maximize (line 16) | maximize(_context: IpcContext): void { method close (line 28) | close(_context: IpcContext): void { method isMaximized (line 36) | isMaximized(_context: IpcContext): boolean { FILE: apps/desktop/src/main/lib/database.ts type DatabaseConnection (line 11) | interface DatabaseConnection { FILE: apps/desktop/src/main/lib/database/migrate.ts constant MIGRATIONS_RELATIVE_PATH (line 7) | const MIGRATIONS_RELATIVE_PATH = 'resources/drizzle' constant MIGRATIONS_TABLE (line 8) | const MIGRATIONS_TABLE = '__drizzle_migrations' FILE: apps/desktop/src/main/lib/database/schema.ts type SubscriptionRow (line 54) | type SubscriptionRow = typeof subscriptionsTable.$inferSelect type SubscriptionInsert (line 55) | type SubscriptionInsert = typeof subscriptionsTable.$inferInsert type SubscriptionItemRow (line 56) | type SubscriptionItemRow = typeof subscriptionItemsTable.$inferSelect type SubscriptionItemInsert (line 57) | type SubscriptionItemInsert = typeof subscriptionItemsTable.$inferInsert FILE: apps/desktop/src/main/lib/download-engine.ts type DownloadProcess (line 53) | interface DownloadProcess { class DownloadEngine (line 58) | class DownloadEngine extends EventEmitter { method constructor (line 67) | constructor() { method getVideoInfo (line 81) | async getVideoInfo(url: string): Promise { method getVideoInfoWithCommand (line 150) | async getVideoInfoWithCommand(url: string): Promise { method startPlaylistDownload (line 377) | async startPlaylistDownload(options: PlaylistDownloadOptions): Promise... method normalizeDownloadValue (line 511) | private normalizeDownloadValue(value?: string): string { method buildDownloadSignature (line 515) | private buildDownloadSignature(options: DownloadOptions): string { method hasDuplicateDownload (line 538) | private hasDuplicateDownload(options: DownloadOptions): boolean { method startDownload (line 544) | startDownload(id: string, options: DownloadOptions): boolean { method prefetchVideoInfo (line 600) | private async prefetchVideoInfo(id: string, options: DownloadOptions):... method executeDownload (line 636) | private async executeDownload(id: string, options: DownloadOptions): P... method cancelDownload (line 1241) | cancelDownload(id: string): boolean { method updateMaxConcurrent (line 1267) | updateMaxConcurrent(max: number): void { method getQueueStatus (line 1271) | getQueueStatus() { method getActiveDownloads (line 1275) | getActiveDownloads(): DownloadItem[] { method restoreActiveDownloads (line 1286) | restoreActiveDownloads(): void { method flushDownloadSession (line 1333) | flushDownloadSession(): void { method updateDownloadInfo (line 1341) | updateDownloadInfo(id: string, updates: Partial): void { method scheduleSessionPersist (line 1423) | private scheduleSessionPersist(): void { method persistSession (line 1433) | private persistSession(): void { method addToHistory (line 1452) | private addToHistory( method upsertHistoryEntry (line 1485) | private upsertHistoryEntry( FILE: apps/desktop/src/main/lib/download-queue.ts type QueueItem (line 4) | interface QueueItem { class DownloadQueue (line 10) | class DownloadQueue extends EventEmitter { method constructor (line 16) | constructor(maxConcurrent = 5) { method setMaxConcurrent (line 21) | setMaxConcurrent(max: number): void { method add (line 26) | add(id: string, options: DownloadOptions, item: DownloadItem): void { method remove (line 32) | remove(id: string): boolean { method downloadCompleted (line 52) | downloadCompleted(id: string): void { method processQueue (line 62) | private processQueue(): void { method getQueueStatus (line 73) | getQueueStatus(): { method getActiveItems (line 85) | getActiveItems(): DownloadItem[] { method getQueuedItems (line 89) | getQueuedItems(): DownloadItem[] { method getActiveEntries (line 93) | getActiveEntries(): Array<{ options: DownloadOptions; item: DownloadIt... method getQueuedEntries (line 100) | getQueuedEntries(): Array<{ options: DownloadOptions; item: DownloadIt... method isDownloading (line 107) | isDownloading(id: string): boolean { method getCompletedDownload (line 111) | getCompletedDownload(id: string): QueueItem | undefined { method getItemDetails (line 115) | getItemDetails(id: string): { options: DownloadOptions; item: Download... method updateItemInfo (line 143) | updateItemInfo(id: string, updates: Partial): void { method clear (line 163) | clear(): void { FILE: apps/desktop/src/main/lib/download-session-store.ts type DownloadSessionItem (line 7) | interface DownloadSessionItem { type DownloadSessionPayload (line 13) | interface DownloadSessionPayload { constant SESSION_FILE_NAME (line 19) | const SESSION_FILE_NAME = 'download-session.json' FILE: apps/desktop/src/main/lib/ffmpeg-manager.ts class FfmpegManager (line 7) | class FfmpegManager { method initialize (line 10) | async initialize(): Promise { method getPath (line 15) | getPath(): string { method getResourcesPath (line 22) | private getResourcesPath(): string { method findFfmpegBinary (line 33) | private async findFfmpegBinary(): Promise { FILE: apps/desktop/src/main/lib/history-manager.ts constant TAG_SEPARATOR (line 14) | const TAG_SEPARATOR = '\n' class HistoryManager (line 41) | class HistoryManager { method constructor (line 45) | constructor() { method initialize (line 49) | private initialize(): void { method getDatabase (line 58) | private getDatabase(): BetterSQLite3Database { method loadHistoryFromDatabase (line 67) | private loadHistoryFromDatabase(): void { method normalizeItem (line 78) | private normalizeItem(item: DownloadHistoryItem): DownloadHistoryItem { method mapItemToInsert (line 90) | private mapItemToInsert(item: DownloadHistoryItem): DownloadHistoryIns... method mapItemToUpdate (line 123) | private mapItemToUpdate(payload: DownloadHistoryInsert): Omit { method queueItem (line 157) | async queueItem(subscriptionId: string, itemId: string): Promise { method checkSubscription (line 205) | private async checkSubscription(subscription: SubscriptionRule): Promi... method normalizeFeedItems (line 279) | private normalizeFeedItems(items: ParserItem[]): FeedItem[] { method buildFeedItems (line 298) | private buildFeedItems( method resolveItemId (line 319) | private resolveItemId(item: ParserItem): string | null { method resolvePublishedAt (line 328) | private resolvePublishedAt(item: ParserItem): number { method resolveThumbnail (line 342) | private resolveThumbnail(item: ParserItem): string | undefined { method resolveSubscriptionCover (line 402) | private resolveSubscriptionCover( method extractImageFromHtml (line 432) | private extractImageFromHtml(html?: string): string | undefined { method filterRecentItems (line 455) | private filterRecentItems(subscription: SubscriptionRule, items: FeedI... method getLastKnownPublishedAt (line 463) | private getLastKnownPublishedAt(subscription: SubscriptionRule): number { method filterNewItems (line 468) | private filterNewItems(subscription: SubscriptionRule, items: FeedItem... method queueDownload (line 473) | private async queueDownload( method getTrackedDownloadByUrl (line 542) | private getTrackedDownloadByUrl(url: string): TrackedDownload | undefi... FILE: apps/desktop/src/main/lib/thumbnail-cache.ts constant SUPPORTED_EXTENSIONS (line 9) | const SUPPORTED_EXTENSIONS = new Set(['.jpg', '.jpeg', '.png', '.webp', ... class ThumbnailCache (line 30) | class ThumbnailCache { method ensureCacheDir (line 34) | private ensureCacheDir(): string { method getThumbnailUrl (line 46) | async getThumbnailUrl(originalUrl: string): Promise { method fetchAndCache (line 70) | private async fetchAndCache(originalUrl: string): Promise { method getBasePath (line 128) | private getBasePath( method toAppProtocolUrl (line 151) | private toAppProtocolUrl(filePath: string): string { FILE: apps/desktop/src/main/lib/watermark-utils.ts constant WATERMARK_TITLE_MAX (line 7) | const WATERMARK_TITLE_MAX = 28 constant WATERMARK_AUTHOR_MAX (line 8) | const WATERMARK_AUTHOR_MAX = 60 FILE: apps/desktop/src/main/lib/youtube-extractor-args.ts constant YOUTUBE_HOST_SUFFIXES (line 1) | const YOUTUBE_HOST_SUFFIXES = ['youtube.com', 'youtu.be', 'youtube-nocoo... constant YOUTUBE_SAFE_PLAYER_CLIENTS (line 2) | const YOUTUBE_SAFE_PLAYER_CLIENTS = 'default,-web,-web_safari' FILE: apps/desktop/src/main/lib/ytdlp-manager.ts type YTDlpWrapInstance (line 11) | type YTDlpWrapInstance = InstanceType class YtDlpManager (line 13) | class YtDlpManager { method initialize (line 18) | async initialize(): Promise { method getInstance (line 25) | getInstance(): YTDlpWrapInstance { method getPath (line 32) | getPath(): string { method getJsRuntimeArgs (line 39) | getJsRuntimeArgs(): string[] { method getResourcesPath (line 43) | private getResourcesPath(): string { method resolveBundledYtDlp (line 56) | private resolveBundledYtDlp(): string { method resolveJsRuntimeArgs (line 90) | private resolveJsRuntimeArgs(): string[] { method resolveJsRuntimePath (line 114) | private resolveJsRuntimePath(runtime: string): string | null { FILE: apps/desktop/src/main/local-api.ts constant PORT_RANGE_START (line 7) | const PORT_RANGE_START = 27_100 constant PORT_RANGE_END (line 8) | const PORT_RANGE_END = 27_120 constant TOKEN_TTL_MS (line 9) | const TOKEN_TTL_MS = 60_000 type TokenRecord (line 11) | interface TokenRecord { function startExtensionApiServer (line 161) | async function startExtensionApiServer(): Promise { function stopExtensionApiServer (line 185) | async function stopExtensionApiServer(): Promise { FILE: apps/desktop/src/main/settings.ts constant OLD_DEFAULT_DOWNLOAD_PATH (line 13) | const OLD_DEFAULT_DOWNLOAD_PATH = path.join(os.homedir(), 'Downloads') constant DEFAULT_DOWNLOAD_PATH (line 26) | const DEFAULT_DOWNLOAD_PATH = resolveDefaultDownloadPath() class SettingsManager (line 28) | class SettingsManager { method constructor (line 32) | constructor() { method get (line 42) | get(key: K): AppSettings[K] { method set (line 46) | set(key: K, value: AppSettings[K]): void { method getAll (line 53) | getAll(): AppSettings { method setAll (line 61) | setAll(settings: Partial): void { method reset (line 70) | reset(): void { method ensureDownloadDirectory (line 78) | private ensureDownloadDirectory(): void { FILE: apps/desktop/src/main/tray.ts function t (line 12) | function t(key: 'showHome' | 'quit'): string { function findMainWindow (line 80) | function findMainWindow(): BrowserWindow | null { function createContextMenu (line 88) | function createContextMenu(): Menu { function createTray (line 132) | function createTray(): void { function updateTrayMenu (line 181) | function updateTrayMenu(): void { function destroyTray (line 190) | function destroyTray(): void { FILE: apps/desktop/src/main/utils/auto-launch.ts constant SUPPORTED_PLATFORMS (line 4) | const SUPPORTED_PLATFORMS = new Set(['darwin', 'win32']) function isAutoLaunchSupported (line 6) | function isAutoLaunchSupported(): boolean { function applyAutoLaunchSetting (line 10) | function applyAutoLaunchSetting(enabled: boolean): void { FILE: apps/desktop/src/main/utils/dock.ts function applyDockVisibility (line 6) | function applyDockVisibility(hideDockIcon: boolean): void { FILE: apps/desktop/src/preload/index.d.ts type Window (line 5) | interface Window { FILE: apps/desktop/src/renderer/src/App.tsx type Page (line 22) | type Page = 'home' | 'subscriptions' | 'settings' | 'about' function AppContent (line 50) | function AppContent() { function App (line 290) | function App() { FILE: apps/desktop/src/renderer/src/components/download/DownloadDialog.tsx type DownloadDialogProps (line 66) | interface DownloadDialogProps { function DownloadDialog (line 71) | function DownloadDialog({ FILE: apps/desktop/src/renderer/src/components/download/DownloadItem.tsx type DownloadItemProps (line 137) | interface DownloadItemProps { type MetadataDetail (line 143) | interface MetadataDetail { function DownloadItem (line 190) | function DownloadItem({ download, isSelected = false, onToggleSelect }: ... FILE: apps/desktop/src/renderer/src/components/download/PlaylistDownload.tsx type PlaylistDownloadProps (line 18) | interface PlaylistDownloadProps { function PlaylistDownload (line 36) | function PlaylistDownload({ FILE: apps/desktop/src/renderer/src/components/download/PlaylistDownloadGroup.tsx type PlaylistDownloadGroupProps (line 9) | interface PlaylistDownloadGroupProps { constant STORAGE_KEY_PREFIX (line 19) | const STORAGE_KEY_PREFIX = 'playlist_expanded_' function PlaylistDownloadGroup (line 43) | function PlaylistDownloadGroup({ FILE: apps/desktop/src/renderer/src/components/download/SingleVideoDownload.tsx type SingleVideoState (line 28) | interface SingleVideoState { type SingleVideoDownloadProps (line 39) | interface SingleVideoDownloadProps { type FormatListProps (line 109) | interface FormatListProps { function SingleVideoDownload (line 440) | function SingleVideoDownload({ FILE: apps/desktop/src/renderer/src/components/download/UnifiedDownloadHistory.tsx type StatusFilter (line 41) | type StatusFilter = 'all' | 'active' | 'completed' | 'error' type ConfirmAction (line 42) | type ConfirmAction = type UnifiedDownloadHistoryProps (line 94) | interface UnifiedDownloadHistoryProps { function UnifiedDownloadHistory (line 100) | function UnifiedDownloadHistory({ FILE: apps/desktop/src/renderer/src/components/error/ErrorBoundary.tsx type Props (line 6) | interface Props { type State (line 12) | interface State { class ErrorBoundary (line 17) | class ErrorBoundary extends Component { method constructor (line 18) | constructor(props: Props) { method getDerivedStateFromError (line 26) | static getDerivedStateFromError(error: Error): Partial { method componentDidCatch (line 52) | async componentDidCatch(error: Error, errorInfo: ErrorInfo): Promise) { function generateStaticParams (line 50) | async function generateStaticParams() { function generateMetadata (line 60) | async function generateMetadata( FILE: apps/docs/src/app/(docs)/layout.tsx function Layout (line 20) | async function Layout({ FILE: apps/docs/src/app/[lang]/(docs)/[[...slug]]/page.tsx function Page (line 9) | async function Page(props: PageProps<'/[lang]/[[...slug]]'>) { function generateStaticParams (line 49) | async function generateStaticParams() { function generateMetadata (line 53) | async function generateMetadata( FILE: apps/docs/src/app/[lang]/(docs)/layout.tsx function Layout (line 6) | async function Layout({ FILE: apps/docs/src/app/[lang]/layout.tsx function Layout (line 17) | async function Layout({ FILE: apps/docs/src/app/layout.tsx function Layout (line 24) | async function Layout({ FILE: apps/docs/src/app/sitemap.ts function buildPath (line 9) | function buildPath(segments: string[]): string { function sitemap (line 16) | async function sitemap(): Promise { FILE: apps/docs/src/components/ai/page-actions.tsx function LLMCopyButton (line 11) | function LLMCopyButton({ function ViewOptions (line 60) | function ViewOptions({ function GitHubEditButton (line 232) | function GitHubEditButton({ href }: { href: string }) { FILE: apps/docs/src/lib/i18n.ts type Locale (line 11) | type Locale = (typeof i18n.languages)[number]; function isLocale (line 15) | function isLocale(value?: string): value is Locale { function resolveLocaleFromSlug (line 19) | function resolveLocaleFromSlug(slug?: string[]): Locale { function stripLocaleFromSlug (line 26) | function stripLocaleFromSlug(slug?: string[]): string[] { FILE: apps/docs/src/lib/layout.shared.tsx function baseOptions (line 4) | function baseOptions(_locale: string): BaseLayoutProps { FILE: apps/docs/src/lib/source.ts function getPageImage (line 14) | function getPageImage(page: InferPageType) { function getLLMText (line 25) | async function getLLMText(page: InferPageType) { FILE: apps/docs/src/mdx-components.tsx function getMDXComponents (line 35) | function getMDXComponents(components?: MDXComponents): MDXComponents { FILE: apps/extension/entrypoints/background.ts type VideoFormat (line 1) | interface VideoFormat { type VideoInfo (line 16) | interface VideoInfo { type VideoInfoCacheEntry (line 23) | interface VideoInfoCacheEntry { constant PORT_RANGE_START (line 31) | const PORT_RANGE_START = 27_100 constant PORT_RANGE_END (line 32) | const PORT_RANGE_END = 27_120 constant STATUS_TIMEOUT_MS (line 33) | const STATUS_TIMEOUT_MS = 800 constant INFO_TIMEOUT_MS (line 34) | const INFO_TIMEOUT_MS = 60_000 constant CACHE_TTL_MS (line 35) | const CACHE_TTL_MS = 5 * 60 * 1000 FILE: apps/extension/entrypoints/popup/App.tsx type VideoFormat (line 4) | interface VideoFormat { type VideoInfo (line 19) | interface VideoInfo { constant CACHE_TTL_MS (line 26) | const CACHE_TTL_MS = 60 * 60 * 1000 type VideoInfoCacheEntry (line 73) | interface VideoInfoCacheEntry { type VideoGroup (line 81) | interface VideoGroup { function App (line 117) | function App() { FILE: apps/web/src/components/download/download-dialog.tsx type DownloadDialogProps (line 72) | interface DownloadDialogProps { function DownloadDialog (line 76) | function DownloadDialog({ onDownloadsChanged }: DownloadDialogProps) { FILE: apps/web/src/components/download/download-item.tsx type DownloadItemProps (line 64) | interface DownloadItemProps { type MetadataDetail (line 74) | interface MetadataDetail { function DownloadItem (line 229) | function DownloadItem({ FILE: apps/web/src/components/download/playlist-download-group.tsx type PlaylistDownloadGroupProps (line 9) | interface PlaylistDownloadGroupProps { constant STORAGE_KEY_PREFIX (line 23) | const STORAGE_KEY_PREFIX = "playlist_expanded_"; function PlaylistDownloadGroup (line 47) | function PlaylistDownloadGroup({ FILE: apps/web/src/components/download/playlist-download.tsx type PlaylistDownloadProps (line 18) | interface PlaylistDownloadProps { function PlaylistDownload (line 36) | function PlaylistDownload({ FILE: apps/web/src/components/download/single-video-download.tsx type SingleVideoState (line 29) | interface SingleVideoState { type SingleVideoDownloadProps (line 39) | interface SingleVideoDownloadProps { type FormatListProps (line 110) | interface FormatListProps { function SingleVideoDownload (line 469) | function SingleVideoDownload({ FILE: apps/web/src/components/download/types.ts type DownloadRecord (line 3) | type DownloadRecord = DownloadTask & { type StatusFilter (line 7) | type StatusFilter = "all" | "active" | "completed" | "error"; FILE: apps/web/src/components/layout/app-shell.tsx type AppPage (line 10) | type AppPage = "about" | "download" | "settings"; type AppShellProps (line 12) | interface AppShellProps { FILE: apps/web/src/components/pages/about-page.tsx type AboutResource (line 27) | interface AboutResource { type LatestVersionState (line 35) | type LatestVersionState = constant AUTO_UPDATE_KEY (line 41) | const AUTO_UPDATE_KEY = "vidbee.web.auto-update"; constant PREVIEW_CHANNEL_KEY (line 42) | const PREVIEW_CHANNEL_KEY = "vidbee.web.preview-channel"; constant SHARE_TARGET_URL (line 43) | const SHARE_TARGET_URL = "https://vidbee.org"; constant APP_VERSION (line 44) | const APP_VERSION = __APP_VERSION__; FILE: apps/web/src/components/pages/download-page.tsx type ConfirmAction (line 35) | type ConfirmAction = constant POLL_INTERVAL_MS (line 44) | const POLL_INTERVAL_MS = 2000; FILE: apps/web/src/components/pages/settings-page.tsx type SettingsTab (line 58) | type SettingsTab = "advanced" | "cookies" | "general"; type BrowserProfileValidationReason (line 60) | type BrowserProfileValidationReason = type BrowserProfileValidation (line 66) | interface BrowserProfileValidation { type ServerDirectoryEntry (line 71) | interface ServerDirectoryEntry { constant WINDOWS_PLATFORM (line 76) | const WINDOWS_PLATFORM = "win32"; constant MAC_PLATFORM (line 77) | const MAC_PLATFORM = "darwin"; constant MAX_SETTINGS_UPLOAD_BYTES (line 78) | const MAX_SETTINGS_UPLOAD_BYTES = 500_000; constant ABSOLUTE_WINDOWS_PATH_REGEX (line 94) | const ABSOLUTE_WINDOWS_PATH_REGEX = /^[A-Za-z]:\\/; FILE: apps/web/src/lib/download-format-preferences.ts type WebDownloadSettings (line 10) | interface WebDownloadSettings { constant DEFAULT_WEB_DOWNLOAD_SETTINGS (line 16) | const DEFAULT_WEB_DOWNLOAD_SETTINGS: WebDownloadSettings = { FILE: apps/web/src/lib/remote-image-proxy.ts constant IMAGE_PROXY_PATH (line 3) | const IMAGE_PROXY_PATH = "images/proxy"; FILE: apps/web/src/lib/web-settings.ts type OneClickQualityPreset (line 8) | type OneClickQualityPreset = type ThemeValue (line 15) | type ThemeValue = "light" | "dark" | "system"; type WebAppSettings (line 17) | interface WebAppSettings { constant WEB_SETTINGS_STORAGE_KEY (line 41) | const WEB_SETTINGS_STORAGE_KEY = "vidbee.web.settings"; FILE: apps/web/src/routeTree.gen.ts type FileRoutesByFullPath (line 32) | interface FileRoutesByFullPath { type FileRoutesByTo (line 37) | interface FileRoutesByTo { type FileRoutesById (line 42) | interface FileRoutesById { type FileRouteTypes (line 48) | interface FileRouteTypes { type RootRouteChildren (line 56) | interface RootRouteChildren { type FileRoutesByPath (line 63) | interface FileRoutesByPath { type Register (line 100) | interface Register { FILE: apps/web/src/router.tsx function getRouter (line 4) | function getRouter() { type Register (line 17) | interface Register { FILE: apps/web/src/routes/__root.tsx function RootDocument (line 35) | function RootDocument({ children }: { children: React.ReactNode }) { function RootHydrationEffects (line 62) | function RootHydrationEffects() { FILE: packages/db/src/history.ts type DownloadHistoryRow (line 34) | type DownloadHistoryRow = typeof downloadHistoryTable.$inferSelect type DownloadHistoryInsert (line 35) | type DownloadHistoryInsert = typeof downloadHistoryTable.$inferInsert FILE: packages/downloader-core/src/browser-cookies-setting.ts type BrowserCookiesSetting (line 1) | interface BrowserCookiesSetting { FILE: packages/downloader-core/src/downloader-core.ts type YtDlpExecProcess (line 29) | interface YtDlpExecProcess { type YtDlpWrapInstance (line 41) | interface YtDlpWrapInstance { type YtDlpWrapConstructor (line 45) | type YtDlpWrapConstructor = new (binaryPath: string) => YtDlpWrapInstance type ActiveTask (line 48) | interface ActiveTask { type RawVideoInfo (line 53) | interface RawVideoInfo { type RawPlaylistEntry (line 84) | interface RawPlaylistEntry { type RawPlaylistInfo (line 94) | interface RawPlaylistInfo { type ProgressPayload (line 100) | interface ProgressPayload { type DownloaderCoreOptions (line 108) | interface DownloaderCoreOptions { constant DEFAULT_DOWNLOAD_DIR (line 114) | const DEFAULT_DOWNLOAD_DIR = path.join(os.homedir(), 'Downloads', 'VidBee') constant DEFAULT_MAX_CONCURRENT (line 115) | const DEFAULT_MAX_CONCURRENT = 3 constant MAX_TASK_LOG_LENGTH (line 116) | const MAX_TASK_LOG_LENGTH = 80_000 constant FFMPEG_NOT_FOUND_ERROR (line 117) | const FFMPEG_NOT_FOUND_ERROR = constant MODULE_DIR (line 119) | const MODULE_DIR = path.dirname(fileURLToPath(import.meta.url)) constant REPO_ROOT_FROM_MODULE (line 120) | const REPO_ROOT_FROM_MODULE = path.resolve(MODULE_DIR, '../../..') class DownloaderCore (line 489) | class DownloaderCore extends EventEmitter { method constructor (line 503) | constructor(options: DownloaderCoreOptions = {}) { method initialize (line 511) | async initialize(): Promise { method getYtDlp (line 524) | private getYtDlp(): YtDlpWrapInstance { method publishHistory (line 531) | private publishHistory(): void { method resolveRuntimeSettings (line 535) | private resolveRuntimeSettings( method updateTask (line 553) | private updateTask(id: string, patch: Partial): Download... method runJsonCommand (line 573) | private async runJsonCommand(args: string[]): Promise { method getVideoInfo (line 597) | async getVideoInfo(url: string, runtimeSettings?: DownloadRuntimeSetti... method getPlaylistInfo (line 641) | async getPlaylistInfo( method startPlaylistDownload (line 681) | async startPlaylistDownload(input: PlaylistDownloadInput): Promise { method processQueue (line 798) | private processQueue(): void { method cancelDownload (line 982) | async cancelDownload(id: string): Promise { method removeHistoryItems (line 1003) | removeHistoryItems(ids: string[]): number { method removeHistoryByPlaylist (line 1030) | removeHistoryByPlaylist(playlistId: string): number { method listDownloads (line 1046) | listDownloads(): DownloadTask[] { method listHistory (line 1053) | listHistory(): DownloadTask[] { method getStatus (line 1059) | getStatus(): { active: number; pending: number } { FILE: packages/downloader-core/src/format-preferences.ts type OneClickQualityPreset (line 1) | type OneClickQualityPreset = 'best' | 'good' | 'normal' | 'bad' | 'worst' type OneClickFormatSettings (line 3) | interface OneClickFormatSettings { FILE: packages/downloader-core/src/types.ts type DownloadType (line 1) | type DownloadType = 'video' | 'audio' type DownloadStatus (line 3) | type DownloadStatus = type DownloadProgress (line 11) | interface DownloadProgress { type DownloadTask (line 19) | interface DownloadTask { type DownloadRuntimeSettings (line 50) | interface DownloadRuntimeSettings { type VideoInfoInput (line 62) | interface VideoInfoInput { type PlaylistInfoInput (line 67) | interface PlaylistInfoInput { type CreateDownloadInput (line 72) | interface CreateDownloadInput { type VideoFormat (line 98) | interface VideoFormat { type VideoInfo (line 117) | interface VideoInfo { type PlaylistEntry (line 131) | interface PlaylistEntry { type PlaylistInfo (line 139) | interface PlaylistInfo { type PlaylistDownloadInput (line 146) | interface PlaylistDownloadInput { type PlaylistDownloadEntry (line 160) | interface PlaylistDownloadEntry { type PlaylistDownloadResult (line 168) | interface PlaylistDownloadResult { type FilePathInput (line 179) | interface FilePathInput { type DirectoryListInput (line 183) | interface DirectoryListInput { type UploadSettingsFileKind (line 187) | type UploadSettingsFileKind = 'cookies' | 'config' type UploadSettingsFileInput (line 189) | interface UploadSettingsFileInput { type DirectoryEntry (line 195) | interface DirectoryEntry { type FileExistsOutput (line 200) | interface FileExistsOutput { type FileOperationOutput (line 204) | interface FileOperationOutput { type ListDirectoriesOutput (line 208) | interface ListDirectoriesOutput { type UploadSettingsFileOutput (line 214) | interface UploadSettingsFileOutput { FILE: packages/downloader-core/src/yt-dlp-args.ts type YtDlpDownloadSettings (line 4) | interface YtDlpDownloadSettings { type YtDlpDownloadOptions (line 16) | interface YtDlpDownloadOptions { constant YOUTUBE_HOST_SUFFIXES (line 28) | const YOUTUBE_HOST_SUFFIXES = ['youtube.com', 'youtu.be', 'youtube-nocoo... constant YOUTUBE_SAFE_PLAYER_CLIENTS (line 29) | const YOUTUBE_SAFE_PLAYER_CLIENTS = 'default,-web,-web_safari' constant DEFAULT_FILENAME_TEMPLATE (line 30) | const DEFAULT_FILENAME_TEMPLATE = '%(title)s via VidBee.%(ext)s' FILE: packages/i18n/src/languages.ts type LanguageDefinition (line 1) | interface LanguageDefinition { type LanguageCode (line 80) | type LanguageCode = keyof typeof languages function normalizeLanguageCode (line 91) | function normalizeLanguageCode(code: string | null | undefined): Languag... FILE: packages/i18n/src/resources.ts type TranslationDictionary (line 18) | type TranslationDictionary = typeof en FILE: packages/ui/src/components/ui/accordion.tsx function Accordion (line 6) | function Accordion({ ...props }: React.ComponentProps { type DownloadFilterBarProps (line 11) | interface DownloadFilterBarProps { FILE: packages/ui/src/components/ui/dropdown-menu.tsx function DropdownMenu (line 6) | function DropdownMenu({ ...props }: React.ComponentProps) { function ItemSeparator (line 17) | function ItemSeparator({ className, ...props }: React.ComponentProps) { function ItemDescription (line 131) | function ItemDescription({ className, ...props }: React.ComponentProps<'... function ItemActions (line 145) | function ItemActions({ className, ...props }: React.ComponentProps<'div'... function ItemHeader (line 151) | function ItemHeader({ className, ...props }: React.ComponentProps<'div'>) { function ItemFooter (line 161) | function ItemFooter({ className, ...props }: React.ComponentProps<'div'>) { FILE: packages/ui/src/components/ui/popover.tsx function Popover (line 5) | function Popover({ ...props }: React.ComponentProps FILE: packages/ui/src/components/ui/table.tsx function Table (line 4) | function Table({ className, ...props }: React.ComponentProps<'table'>) { function TableHeader (line 16) | function TableHeader({ className, ...props }: React.ComponentProps<'thea... function TableBody (line 20) | function TableBody({ className, ...props }: React.ComponentProps<'tbody'... function TableFooter (line 30) | function TableFooter({ className, ...props }: React.ComponentProps<'tfoo... function TableRow (line 40) | function TableRow({ className, ...props }: React.ComponentProps<'tr'>) { function TableHead (line 53) | function TableHead({ className, ...props }: React.ComponentProps<'th'>) { function TableCell (line 66) | function TableCell({ className, ...props }: React.ComponentProps<'td'>) { function TableCaption (line 79) | function TableCaption({ className, ...props }: React.ComponentProps<'cap... FILE: packages/ui/src/components/ui/tabs.tsx function Tabs (line 7) | function Tabs({ className, ...props }: React.ComponentProps