import { createHash } from 'node:crypto' export { ANALYTICS_ACTIVE_SESSION_TTL_SECONDS, ANALYTICS_CHART_MAX_DAYS, ANALYTICS_ENGAGED_MIN_SECONDS, ANALYTICS_MAX_DURATION_SECONDS, ANALYTICS_RETENTION_PURGE_INTERVAL_MS, ANALYTICS_SCROLL_THRESHOLDS, ANALYTICS_VISITOR_HASH_RETENTION_DAYS, clampAnalyticsDurationSeconds, clampAnalyticsScrollRatio, getAnalyticsDayBefore, getAnalyticsDayKey, getNewScrollBucketColumns, isBotUserAgent, isTrackableAnalyticsPath, normalizePageSlugForAnalytics, normalizePostSlugForAnalytics } from './analytics-shared.js' /** * 일 단위 익명 방문자 해시를 생성한다. 원문 IP·UA는 저장하지 않는다. * @param {{ day: string, ip: string, userAgent: string, secret: string }} input - 해시 입력 * @returns {string} visitor hash */ export const createDailyVisitorHash = ({ day, ip, userAgent, secret }) => { const payload = `${day}|${ip}|${userAgent}|${secret}` return createHash('sha256').update(payload).digest('hex') } /** * 실시간 세션 해시를 생성한다. * @param {{ clientSessionId: string, visitorHash: string, secret: string }} input - 해시 입력 * @returns {string} session hash */ export const createRealtimeSessionHash = ({ clientSessionId, visitorHash, secret }) => { const payload = `${clientSessionId}|${visitorHash}|${secret}` return createHash('sha256').update(payload).digest('hex') }