config.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. /**
  2. * @fileoverview Application configuration constants
  3. * @author GrabZilla Development Team
  4. * @version 2.1.0
  5. * @since 2024-01-01
  6. */
  7. /**
  8. * Application Configuration Constants
  9. *
  10. * Centralized configuration values for the GrabZilla application
  11. * All magic numbers and default values should be defined here
  12. */
  13. // Application defaults
  14. export const APP_CONFIG = {
  15. DEFAULT_QUALITY: '1080p',
  16. DEFAULT_FORMAT: 'None',
  17. DEFAULT_FILENAME_PATTERN: '%(title)s.%(ext)s',
  18. STATUS_AUTO_CLEAR_DELAY: 5000,
  19. INPUT_DEBOUNCE_DELAY: 300,
  20. SUPPORTED_QUALITIES: ['Best', '720p', '1080p', '4K'],
  21. SUPPORTED_FORMATS: ['None', 'H264', 'ProRes', 'DNxHR', 'Audio only']
  22. };
  23. // Network and performance constants
  24. export const NETWORK_CONFIG = {
  25. METADATA_FETCH_TIMEOUT: 10000,
  26. THUMBNAIL_FETCH_TIMEOUT: 5000,
  27. VERSION_CHECK_TIMEOUT: 5000,
  28. MAX_CONCURRENT_DOWNLOADS: 3,
  29. PROGRESS_UPDATE_INTERVAL: 500
  30. };
  31. // UI timing constants
  32. export const UI_CONFIG = {
  33. ANIMATION_DURATION_FAST: 150,
  34. ANIMATION_DURATION_NORMAL: 300,
  35. DEBOUNCE_DELAY: 300,
  36. TOAST_DISPLAY_DURATION: 5000,
  37. LOADING_SPINNER_DELAY: 200
  38. };
  39. // File system constants
  40. export const FILE_CONFIG = {
  41. MAX_FILENAME_LENGTH: 255,
  42. INVALID_FILENAME_CHARS: /[<>:"|?*]/g,
  43. DEFAULT_DOWNLOAD_FOLDER: 'GrabZilla_Videos',
  44. SUPPORTED_COOKIE_EXTENSIONS: ['.txt', '.json']
  45. };
  46. // Platform-specific paths
  47. export const PLATFORM_PATHS = {
  48. darwin: '~/Downloads/GrabZilla_Videos',
  49. win32: 'C:\\Users\\Admin\\Desktop\\GrabZilla_Videos',
  50. linux: '~/Downloads/GrabZilla_Videos'
  51. };
  52. // Video status constants
  53. export const VIDEO_STATUS = {
  54. READY: 'ready',
  55. DOWNLOADING: 'downloading',
  56. CONVERTING: 'converting',
  57. COMPLETED: 'completed',
  58. ERROR: 'error',
  59. PAUSED: 'paused'
  60. };
  61. // Error types
  62. export const ERROR_TYPES = {
  63. INVALID_URL: 'INVALID_URL',
  64. NETWORK_ERROR: 'NETWORK_ERROR',
  65. BINARY_NOT_FOUND: 'BINARY_NOT_FOUND',
  66. PERMISSION_ERROR: 'PERMISSION_ERROR',
  67. DISK_SPACE_ERROR: 'DISK_SPACE_ERROR'
  68. };
  69. // Event names for state management
  70. export const EVENTS = {
  71. VIDEO_ADDED: 'videoAdded',
  72. VIDEO_REMOVED: 'videoRemoved',
  73. VIDEO_UPDATED: 'videoUpdated',
  74. VIDEOS_CLEARED: 'videosCleared',
  75. CONFIG_UPDATED: 'configUpdated',
  76. UI_UPDATED: 'uiUpdated',
  77. STATE_IMPORTED: 'stateImported',
  78. DOWNLOAD_PROGRESS: 'downloadProgress',
  79. DOWNLOAD_COMPLETE: 'downloadComplete',
  80. DOWNLOAD_ERROR: 'downloadError'
  81. };