X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Futils%2FCircularArray.ts;h=fb73ced97d3ccca0610158d049b2acc828693a67;hb=0282b7c0ea2651c7367cd21bc96e8ef3637076c7;hp=0eccfa47e37a525ecb9b8b234dc0270f9110990c;hpb=e7aeea18e189dd087c8f951cf77a253e2818ae90;p=e-mobility-charging-stations-simulator.git diff --git a/src/utils/CircularArray.ts b/src/utils/CircularArray.ts index 0eccfa47..fb73ced9 100644 --- a/src/utils/CircularArray.ts +++ b/src/utils/CircularArray.ts @@ -1,8 +1,10 @@ -// Copyright Jerome Benoit. 2021. All Rights Reserved. +// Copyright Jerome Benoit. 2021-2023. All Rights Reserved. -export const DEFAULT_CIRCULAR_ARRAY_SIZE = Number.MAX_SAFE_INTEGER; +const DEFAULT_CIRCULAR_ARRAY_SIZE = 1024; -/** Array with a maximum length shifting items when full. */ +/** + * Array with a maximum length and shifting items when full. + */ export class CircularArray extends Array { public size: number; @@ -45,7 +47,7 @@ export class CircularArray extends Array { public splice(start: number, deleteCount?: number, ...items: T[]): T[] { let itemsRemoved: T[]; - if (arguments.length >= 3 && typeof deleteCount !== 'undefined') { + if (arguments.length >= 3 && deleteCount !== undefined) { itemsRemoved = super.splice(start, deleteCount); // FIXME: that makes the items insert not in place this.push(...items); @@ -77,9 +79,12 @@ export class CircularArray extends Array { return this.length === this.size; } - private checkSize(size: number) { + private checkSize(size: number): void { + if (!Number.isSafeInteger(size)) { + throw new TypeError(`Invalid circular array size: ${size} is not a safe integer`); + } if (size < 0) { - throw new RangeError('Invalid circular array size'); + throw new RangeError(`Invalid circular array size: ${size} < 0`); } } }