+ * @param bucketSize - Prioritized bucket size. @defaultValue defaultBucketSize
+ * @param enablePriority - Whether to enable priority. @defaultValue false
+ * @returns PriorityQueue.
+ */
+ public constructor (
+ bucketSize: number = defaultBucketSize,
+ enablePriority = false
+ ) {
+ if (!Number.isSafeInteger(bucketSize)) {
+ throw new TypeError(
+ `Invalid bucket size: '${bucketSize}' is not an integer`
+ )
+ }
+ if (bucketSize < 0) {
+ throw new RangeError(`Invalid bucket size: ${bucketSize} < 0`)
+ }
+ this.bucketSize = bucketSize
+ this.head = this.tail = new FixedPriorityQueue(
+ this.bucketSize,
+ enablePriority
+ )
+ this.maxSize = 0
+ }
+
+ /**
+ * The priority queue size.