'use strict' /** HyperDB uint fields must be positive integers. */ function coerceSyncUint (v, fallback = 0) { const n = Number(v) const fb = Math.max(1, Math.floor(Number(fallback) || 1)) if (!Number.isFinite(n) || n <= 0) return fb return Math.floor(n) } function sanitizeMessageForHyperDb (msg) { if (!msg || typeof msg !== 'object') return msg const row = { ...msg } row.createdAt = coerceSyncUint(row.createdAt, Date.now()) if (row.editedAt != null && row.editedAt !== '') { const ed = Number(row.editedAt) row.editedAt = Number.isFinite(ed) && ed > 0 ? Math.floor(ed) : null } return row } function sanitizeMemberForHyperDb (mem) { if (!mem || typeof mem !== 'object') return mem const row = { ...mem } row.joinedAt = coerceSyncUint(row.joinedAt, Date.now()) if (row.updatedAt != null) row.updatedAt = coerceSyncUint(row.updatedAt, row.joinedAt) if (row.createdAt != null) row.createdAt = coerceSyncUint(row.createdAt, row.joinedAt) return row } module.exports = { coerceSyncUint, sanitizeMessageForHyperDb, sanitizeMemberForHyperDb }