import { SoundboardClipReader } from './SoundboardClipReader'; import { SoundboardClips } from './types'; /** Parallels custom-emoji/PackImagesReader. */ export class SoundboardClipsReader { private readonly rawClips: SoundboardClips; private shortcodeToClips: Map | undefined; constructor(clips: SoundboardClips) { this.rawClips = clips; } get collection(): Map { if (this.shortcodeToClips) return this.shortcodeToClips; const shortcodeToClips: Map = new Map(); Object.entries(this.rawClips).forEach(([shortcode, clip]) => { const reader = SoundboardClipReader.fromClip(shortcode, clip); if (reader) shortcodeToClips.set(shortcode, reader); }); this.shortcodeToClips = shortcodeToClips; return this.shortcodeToClips; } }