Files
bitvid/js/trackerConfig.js
2025-09-25 18:50:12 -04:00

40 lines
943 B
JavaScript

import { WSS_TRACKERS as DEFAULT_WSS_TRACKERS } from "./constants.js";
export const TRACKER_TIMEOUT_MS = 3000;
export const TRACKER_PER_MAGNET = 3;
export const HEALTH_TTL_MS = 2 * 60 * 1000;
export const CONCURRENCY = 3;
export const TRACKER_ERROR_COOLDOWN_MS = 60 * 1000;
export function resolveTrackerList({ magnetTrackers } = {}) {
const combined = [];
const seen = new Set();
const pushUnique = (url) => {
if (typeof url !== "string") {
return;
}
const trimmed = url.trim();
if (!trimmed) {
return;
}
if (!/^wss:\/\//i.test(trimmed)) {
return;
}
const normalized = trimmed.toLowerCase();
if (seen.has(normalized)) {
return;
}
seen.add(normalized);
combined.push(trimmed);
};
if (Array.isArray(magnetTrackers)) {
magnetTrackers.forEach(pushUnique);
}
DEFAULT_WSS_TRACKERS.forEach(pushUnique);
return combined.slice(0, TRACKER_PER_MAGNET);
}