{"version":3,"file":"timing.constants.mjs","sources":["../../../../../src/lib/core/config/constants/timing.constants.ts"],"sourcesContent":["/**\n * @fileoverview Centralized timing constants for the library module.\n *\n * This module consolidates ALL timing-related values that were previously\n * scattered across multiple files. By centralizing these values:\n *\n * 1. Single source of truth for all timing defaults\n * 2. Easy to adjust timing behavior globally\n * 3. Consistent timing across all library modules\n * 4. Full type safety with dedicated types\n *\n * @module core/config/constants/timing\n */\n\nimport { ms, px, sec } from '../../../shared/type-utils';\n\nimport type {\n  Milliseconds,\n  // Seconds,\n  NetworkConfig,\n  CacheConfig,\n  FeatureFlagsConfig,\n  AuthConfig,\n  LayoutsConfig,\n  VDOMConfig,\n  UIConfig,\n  MonitoringConfig,\n} from '../types';\n\n// =============================================================================\n// Time Unit Helpers\n// =============================================================================\n\n/** One second in milliseconds */\nexport const SECOND: Milliseconds = ms(1000);\n\n/** One minute in milliseconds */\nexport const MINUTE: Milliseconds = ms(60 * SECOND);\n\n/** One hour in milliseconds */\nexport const HOUR: Milliseconds = ms(60 * MINUTE);\n\n// =============================================================================\n// Network Timing Defaults\n// =============================================================================\n\n/**\n * Default network configuration values.\n *\n * These values are optimized for typical web applications with:\n * - Reasonable timeout for standard API calls\n * - Extended timeout for file uploads and long-running operations\n * - Exponential backoff for retries\n */\nexport const DEFAULT_NETWORK_CONFIG: NetworkConfig = {\n  // Request timeouts\n  defaultTimeout: ms(30 * SECOND), // Standard API requests\n  longTimeout: ms(2 * MINUTE), // File uploads, report generation\n  shortTimeout: ms(10 * SECOND), // Quick endpoints\n  healthCheckTimeout: ms(5 * SECOND), // Health checks\n\n  // Retry configuration\n  retryBaseDelay: ms(1 * SECOND),\n  retryMaxDelay: ms(30 * SECOND),\n  maxRetryAttempts: 3,\n  retryJitter: 0.25, // 25% jitter\n\n  // WebSocket configuration\n  websocketPingInterval: ms(30 * SECOND),\n  websocketReconnectDelay: ms(3 * SECOND),\n  websocketMaxReconnectAttempts: 10,\n\n  // SSE configuration\n  sseReconnectDelay: ms(5 * SECOND),\n  sseMaxReconnectAttempts: 10,\n} as const;\n\n// =============================================================================\n// Cache Timing Defaults\n// =============================================================================\n\n/**\n * Default cache configuration values.\n *\n * Cache TTLs are tiered based on data volatility:\n * - Short: Real-time data that changes frequently\n * - Default: Standard application data\n * - Long: Slowly changing configuration\n * - Extended: Reference data, rarely changes\n */\nexport const DEFAULT_CACHE_CONFIG: CacheConfig = {\n  // TTL tiers\n  shortTTL: ms(1 * MINUTE),\n  defaultTTL: ms(5 * MINUTE),\n  longTTL: ms(30 * MINUTE),\n  extendedTTL: ms(1 * HOUR),\n\n  // Cache management\n  maxSize: 1000, // Max LRU cache entries\n  staleWhileRevalidate: ms(1 * HOUR), // Background revalidation window\n  gcInterval: ms(5 * MINUTE), // Garbage collection interval\n  memoryPressureThreshold: 50 * 1024 * 1024, // 50MB\n} as const;\n\n// =============================================================================\n// Feature Flags Timing Defaults\n// =============================================================================\n\n/**\n * Default feature flags configuration values.\n */\nexport const DEFAULT_FLAGS_CONFIG: FeatureFlagsConfig = {\n  pollingInterval: ms(1 * MINUTE),\n  websocketPingInterval: ms(30 * SECOND),\n  cacheTTL: ms(5 * MINUTE),\n  maxFailures: 5,\n  jitter: 0.1, // 10% jitter\n  fetchTimeout: ms(10 * SECOND),\n  evaluationTimeout: ms(50), // 50ms max for rule evaluation\n  maxCachedFlags: 1000,\n  storageKey: 'feature-flags',\n} as const;\n\n// =============================================================================\n// Authentication Timing Defaults\n// =============================================================================\n\n/**\n * Default authentication timing configuration.\n */\nexport const DEFAULT_AUTH_CONFIG: AuthConfig = {\n  tokenRefreshBuffer: ms(5 * MINUTE), // Refresh 5 min before expiry\n  sessionTimeout: ms(30 * MINUTE), // 30 min inactivity timeout\n  sessionCheckInterval: ms(1 * MINUTE), // Check session every minute\n  defaultTokenLifetime: sec(3600), // 1 hour in seconds\n  logoutRedirectDelay: ms(1500), // 1.5 seconds\n  lockoutDuration: ms(15 * MINUTE), // 15 min lockout after failed attempts\n  maxLoginAttempts: 5,\n  tokenCheckInterval: ms(1 * MINUTE),\n} as const;\n\n// =============================================================================\n// Layout Timing Defaults\n// =============================================================================\n\n/**\n * Default layout configuration values.\n */\nexport const DEFAULT_LAYOUTS_CONFIG: LayoutsConfig = {\n  // Responsive defaults\n  defaultBreakpoint: px(768), // Mobile/desktop breakpoint (px)\n  defaultGap: px(16), // Default spacing (px)\n  defaultPadding: px(16), // Default padding (px)\n  minColumnWidth: px(200), // Grid minimum column width (px)\n\n  // CLS (Cumulative Layout Shift) timing\n  clsEntryMaxAge: ms(5 * SECOND),\n  clsSessionWindowGap: ms(1 * SECOND),\n  clsMaxSessionWindow: ms(5 * SECOND),\n\n  // Animation/transitions\n  morphTransitionDuration: ms(300), // ms\n\n  // Event handling\n  resizeDebounce: ms(150), // ms\n  scrollThrottle: ms(16), // ~60fps\n  scrollEdgeThreshold: px(5), // px\n\n  // Viewport intersection\n  viewportThresholds: [0, 0.1, 0.25, 0.5, 0.75, 0.9, 1],\n} as const;\n\n// =============================================================================\n// VDOM Configuration Defaults\n// =============================================================================\n\n/**\n * Default VDOM and streaming configuration.\n */\nexport const DEFAULT_VDOM_CONFIG: VDOMConfig = {\n  // Pool management\n  poolSize: 100,\n  gcInterval: ms(5 * MINUTE),\n  memoryLimit: 100 * 1024 * 1024, // 100MB\n\n  // Batching\n  maxBatchSize: 50,\n\n  // Streaming\n  streamBufferSize: 64 * 1024, // 64KB\n  streamHighWaterMark: 16 * 1024, // 16KB\n  streamTimeout: ms(1 * MINUTE),\n  streamRetryDelay: ms(1 * SECOND),\n} as const;\n\n// =============================================================================\n// UI Timing Defaults\n// =============================================================================\n\n/**\n * Default UI timing configuration.\n */\nexport const DEFAULT_UI_CONFIG: UIConfig = {\n  // Debounce values\n  inputDebounce: ms(300),\n  formDebounce: ms(500),\n  searchDebounce: ms(300),\n  resizeDebounce: ms(150),\n\n  // Throttle values\n  scrollThrottle: ms(16), // ~60fps\n\n  // Animation durations\n  animationFast: ms(100),\n  animationStandard: ms(200),\n  animationSlow: ms(300),\n\n  // Feedback timing\n  toastDuration: ms(5 * SECOND),\n  spinnerDelay: ms(200), // Prevent flash of spinner\n  skeletonMinDisplay: ms(500), // Prevent flash of content\n\n  // Focus management\n  focusTrapDelay: ms(50),\n} as const;\n\n// =============================================================================\n// Monitoring Configuration Defaults\n// =============================================================================\n\n/**\n * Default monitoring configuration.\n */\nexport const DEFAULT_MONITORING_CONFIG: MonitoringConfig = {\n  metricsFlushInterval: ms(30 * SECOND),\n  samplingRate: 1.0, // 100% sampling in dev, adjust in prod\n  slowRequestThreshold: ms(1 * SECOND),\n  latencyBuckets: [10, 25, 50, 100, 250, 500, 1000, 2500, 5000, 10000],\n  memoryCheckInterval: ms(30 * SECOND),\n  fpsSamplingInterval: ms(100),\n  longTaskThreshold: ms(50), // 50ms (Web Performance standard)\n  maxStoredMetrics: 1000,\n} as const;\n\n// =============================================================================\n// Individual Timing Constants (for direct import)\n// =============================================================================\n\n// Network timeouts\nexport const DEFAULT_TIMEOUT = DEFAULT_NETWORK_CONFIG.defaultTimeout;\nexport const DEFAULT_LONG_TIMEOUT = DEFAULT_NETWORK_CONFIG.longTimeout;\nexport const DEFAULT_SHORT_TIMEOUT = DEFAULT_NETWORK_CONFIG.shortTimeout;\nexport const DEFAULT_HEALTH_CHECK_TIMEOUT = DEFAULT_NETWORK_CONFIG.healthCheckTimeout;\nexport const DEFAULT_REMOTE_TIMEOUT = 10 * SECOND;\n\n// Retry configuration\nexport const DEFAULT_RETRY_BASE_DELAY = DEFAULT_NETWORK_CONFIG.retryBaseDelay;\nexport const DEFAULT_RETRY_MAX_DELAY = DEFAULT_NETWORK_CONFIG.retryMaxDelay;\nexport const DEFAULT_MAX_RETRY_ATTEMPTS = DEFAULT_NETWORK_CONFIG.maxRetryAttempts;\n\n// Cache TTLs\nexport const DEFAULT_CACHE_TTL = DEFAULT_CACHE_CONFIG.defaultTTL;\nexport const DEFAULT_SHORT_CACHE_TTL = DEFAULT_CACHE_CONFIG.shortTTL;\nexport const DEFAULT_LONG_CACHE_TTL = DEFAULT_CACHE_CONFIG.longTTL;\n\n// Feature flags\nexport const DEFAULT_POLLING_INTERVAL = DEFAULT_FLAGS_CONFIG.pollingInterval;\nexport const DEFAULT_PING_INTERVAL = DEFAULT_FLAGS_CONFIG.websocketPingInterval;\nexport const DEFAULT_FLAG_CACHE_TTL = DEFAULT_FLAGS_CONFIG.cacheTTL;\nexport const DEFAULT_MAX_FAILURES = DEFAULT_FLAGS_CONFIG.maxFailures;\nexport const DEFAULT_JITTER = DEFAULT_FLAGS_CONFIG.jitter;\nexport const EVALUATION_TIMEOUT = DEFAULT_FLAGS_CONFIG.evaluationTimeout;\n\n// Authentication\nexport const TOKEN_REFRESH_BUFFER = DEFAULT_AUTH_CONFIG.tokenRefreshBuffer;\nexport const SESSION_TIMEOUT = DEFAULT_AUTH_CONFIG.sessionTimeout;\nexport const SESSION_CHECK_INTERVAL = DEFAULT_AUTH_CONFIG.sessionCheckInterval;\nexport const DEFAULT_TOKEN_LIFETIME = DEFAULT_AUTH_CONFIG.defaultTokenLifetime;\nexport const REFRESH_BUFFER_MS = DEFAULT_AUTH_CONFIG.tokenRefreshBuffer;\n\n// Layouts\nexport const DEFAULT_BREAKPOINT = DEFAULT_LAYOUTS_CONFIG.defaultBreakpoint;\nexport const DEFAULT_GAP = DEFAULT_LAYOUTS_CONFIG.defaultGap;\nexport const DEFAULT_PADDING = DEFAULT_LAYOUTS_CONFIG.defaultPadding;\nexport const DEFAULT_MIN_COLUMN_WIDTH = DEFAULT_LAYOUTS_CONFIG.minColumnWidth;\nexport const MAX_ENTRY_AGE_MS = DEFAULT_LAYOUTS_CONFIG.clsEntryMaxAge;\nexport const SESSION_WINDOW_GAP_MS = DEFAULT_LAYOUTS_CONFIG.clsSessionWindowGap;\nexport const MAX_SESSION_WINDOW_MS = DEFAULT_LAYOUTS_CONFIG.clsMaxSessionWindow;\n\n// UI\nexport const DEFAULT_DEBOUNCE = DEFAULT_UI_CONFIG.inputDebounce;\nexport const DEFAULT_SCROLL_THROTTLE = DEFAULT_UI_CONFIG.scrollThrottle;\nexport const DEFAULT_THROTTLE_MS = DEFAULT_UI_CONFIG.scrollThrottle;\n\n// VDOM\nexport const DEFAULT_POOL_SIZE = DEFAULT_VDOM_CONFIG.poolSize;\nexport const DEFAULT_GC_INTERVAL = DEFAULT_VDOM_CONFIG.gcInterval;\nexport const DEFAULT_MEMORY_LIMIT = DEFAULT_VDOM_CONFIG.memoryLimit;\nexport const DEFAULT_BATCH_SIZE = DEFAULT_VDOM_CONFIG.maxBatchSize;\n\n// Monitoring\nexport const DEFAULT_METRICS_FLUSH_INTERVAL = DEFAULT_MONITORING_CONFIG.metricsFlushInterval;\nexport const DEFAULT_SLOW_REQUEST_THRESHOLD = DEFAULT_MONITORING_CONFIG.slowRequestThreshold;\nexport const DEFAULT_BUCKETS = DEFAULT_MONITORING_CONFIG.latencyBuckets;\n"],"names":["SECOND","ms","MINUTE","HOUR","DEFAULT_NETWORK_CONFIG","DEFAULT_CACHE_CONFIG","DEFAULT_FLAGS_CONFIG","DEFAULT_AUTH_CONFIG","sec","DEFAULT_LAYOUTS_CONFIG","px","DEFAULT_VDOM_CONFIG","DEFAULT_UI_CONFIG","DEFAULT_MONITORING_CONFIG","DEFAULT_TIMEOUT","DEFAULT_LONG_TIMEOUT","DEFAULT_SHORT_TIMEOUT","DEFAULT_HEALTH_CHECK_TIMEOUT","DEFAULT_REMOTE_TIMEOUT","DEFAULT_RETRY_BASE_DELAY","DEFAULT_RETRY_MAX_DELAY","DEFAULT_MAX_RETRY_ATTEMPTS","DEFAULT_CACHE_TTL","DEFAULT_SHORT_CACHE_TTL","DEFAULT_LONG_CACHE_TTL","DEFAULT_POLLING_INTERVAL","DEFAULT_PING_INTERVAL","DEFAULT_FLAG_CACHE_TTL","DEFAULT_MAX_FAILURES","DEFAULT_JITTER","EVALUATION_TIMEOUT","TOKEN_REFRESH_BUFFER","SESSION_TIMEOUT","SESSION_CHECK_INTERVAL","DEFAULT_TOKEN_LIFETIME","REFRESH_BUFFER_MS","DEFAULT_BREAKPOINT","DEFAULT_GAP","DEFAULT_PADDING","DEFAULT_MIN_COLUMN_WIDTH","MAX_ENTRY_AGE_MS","SESSION_WINDOW_GAP_MS","MAX_SESSION_WINDOW_MS","DEFAULT_DEBOUNCE","DEFAULT_SCROLL_THROTTLE","DEFAULT_THROTTLE_MS","DEFAULT_POOL_SIZE","DEFAULT_GC_INTERVAL","DEFAULT_MEMORY_LIMIT","DEFAULT_BATCH_SIZE","DEFAULT_METRICS_FLUSH_INTERVAL","DEFAULT_SLOW_REQUEST_THRESHOLD","DEFAULT_BUCKETS"],"mappings":"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"}