export default class FixedQueue { private queue: T[] private maxSize: number constructor(maxSize: number) { this.queue = [] this.maxSize = maxSize } public get size(): number { return this.queue.length } public asArray(): T[] { return this.queue } public enqueue(value: T): void { if (this.queue.length >= this.maxSize) { this.queue.shift() } this.queue.push(value) } public dequeue(): T | undefined { return this.queue.shift() } public get(index: number): T { return this.queue[index] } public forEach(callback: (value: T, index: number) => void): void { this.queue.forEach(callback) } }