-import Constants from './Constants';
export default class CircularArray<T> extends Array<T> {
- public size: number;
+ size: number;
+ private readonly maximumCircularArraySize = 2000;
- constructor(size: number = Constants.MAXIMUM_MEASUREMENTS_NUMBER) {
+ constructor(size?: number) {
super();
- this.size = size;
+ this.size = size && size <= this.maximumCircularArraySize ? size : this.maximumCircularArraySize;
}
push(...items: T[]): number {
}
return super.unshift(...items);
}
+
+ concat(...items: (T | ConcatArray<T>)[]): T[] {
+ if (this.length + items.length > this.size) {
+ super.splice(0, (this.length + items.length) - this.size);
+ }
+ return super.concat(items as T[]);
+ }
+
+ splice(start: number, deleteCount?: number, ...items: T[]): T[] {
+ this.push(...items);
+ return super.splice(start, deleteCount);
+ }
}