import badWords from 'badwords-list';
const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';

// There is a similar function in urlShortener.ts

// 62 ^ 8 = 218,340,105,584,896 possible track IDs.
// Problem: rude words are technically possible.
const generateTrackId = () => {
  let result = '';
  for (let i = 0; i < 8; i++) {
    result += chars[Math.floor(Math.random() * chars.length)];
  }
  return result;
};

const generateSafeTrackId = () => {
  let attempts = 0;
  while (attempts++ < 1000) {
    const id = generateTrackId();
    if (!badWords.array.some((word) => id.includes(word))) {
      return id;
    }
  }
};

export default generateSafeTrackId;
