ghp / packages /shared /src /constants.ts
QSLY's picture
deploy: build Hugging Face Space from source
00a912e
Raw
History Blame Contribute Delete
1.82 kB
import type { AudioQuality } from './types.js'
export const LIMITS = {
ROOM_PASSWORD_MAX_LENGTH: 32,
ROOM_NAME_MAX_LENGTH: 30,
NICKNAME_MAX_LENGTH: 20,
CHAT_CONTENT_MAX_LENGTH: 500,
CHAT_HISTORY_MAX: 200,
CHAT_RATE_LIMIT_PER_SECOND: 5,
QUEUE_MAX_SIZE: 1000,
QUEUE_BATCH_MAX_SIZE: 200,
PLAYLIST_PAGE_SIZE: 100,
SEARCH_KEYWORD_MAX_LENGTH: 100,
BILIBILI_SEARCH_INPUT_MAX_LENGTH: 2000,
SEARCH_PAGE_SIZE_MAX: 50,
SEARCH_PAGE_MAX: 100,
PLAYLIST_ID_MAX_LENGTH: 200,
} as const
/** 房间可选择的跨平台最高音质策略。 */
export const HIGHEST_AUDIO_QUALITY: AudioQuality = 'highest'
export const TIMING = {
ROOM_GRACE_PERIOD_MS: 60_000,
STREAM_URL_REFRESH_INTERVAL_MS: 30 * 60_000,
STREAM_URL_REFRESH_RETRY_INTERVAL_MS: 60_000,
WEBSOCKET_HEARTBEAT_INTERVAL_MS: 25_000,
PLAYER_NEXT_DEBOUNCE_MS: 500,
VOTE_TIMEOUT_MS: 30_000,
} as const
/** QR code login status codes (shared between client polling and server responses) */
export const QR_STATUS = {
EXPIRED: 800,
WAITING_SCAN: 801,
SCANNED: 802,
SUCCESS: 803,
} as const
/** QR code polling timing */
export const QR_TIMING = {
POLL_INTERVAL_MS: 2_000,
SUCCESS_CLOSE_DELAY_MS: 1_000,
} as const
/** NTP clock synchronisation constants */
export const NTP = {
/** Fast sampling interval during initial calibration (ms) */
INITIAL_INTERVAL_MS: 50,
/** Steady-state heartbeat interval after initial calibration (ms) */
STEADY_STATE_INTERVAL_MS: 3_000,
/** Number of rapid samples to collect during initial calibration */
MAX_INITIAL_SAMPLES: 20,
/** Maximum stored measurements (sliding window) */
MAX_MEASUREMENTS: 60,
/** Minimum scheduling delay for scheduled execution (ms) */
MIN_SCHEDULE_DELAY_MS: 300,
/** Maximum scheduling delay cap (ms) */
MAX_SCHEDULE_DELAY_MS: 3_000,
} as const