Spaces:
Runtime error
Runtime error
| import {random} from 'lodash'; | |
| // const USABLE_CHARACTERS = 'BCDFGHJKMPQRTVWXY2346789'; | |
| const USABLE_CHARACTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; | |
| const ID_LENGTH = 4; | |
| export function isValidRoomID(id: string | null | undefined): boolean { | |
| if (id == null) { | |
| return false; | |
| } | |
| if (id.length !== ID_LENGTH) { | |
| return false; | |
| } | |
| return isValidPartialRoomID(id); | |
| } | |
| export function isValidPartialRoomID(roomID: string): boolean { | |
| return ( | |
| roomID.length <= ID_LENGTH && | |
| roomID.split('').every((char) => USABLE_CHARACTERS.includes(char)) | |
| ); | |
| } | |
| export default function generateNewRoomID(): string { | |
| return Array.from( | |
| {length: ID_LENGTH}, | |
| () => USABLE_CHARACTERS[random(USABLE_CHARACTERS.length - 1)], | |
| ).join(''); | |
| } | |
| export function getSequentialRoomIDForTestingGenerator(): () => string { | |
| let counter = 0; | |
| return function generateNextRoomID(): string { | |
| const counterInBase: string = Number(counter) | |
| .toString(USABLE_CHARACTERS.length) | |
| .padStart(ID_LENGTH, '0'); | |
| if (counterInBase.length > ID_LENGTH) { | |
| throw new Error( | |
| 'Ran out of unique room IDs from the sequential generator', | |
| ); | |
| } | |
| const result = counterInBase | |
| .split('') | |
| .map( | |
| (digit) => USABLE_CHARACTERS[parseInt(digit, USABLE_CHARACTERS.length)], | |
| ) | |
| .join(''); | |
| counter++; | |
| return result; | |
| }; | |
| } | |