https://github.com/idimetrix/tail-queue
TypeScript/JavaScript promise queue client library with concurrency control
https://github.com/idimetrix/tail-queue
Last synced: 4 months ago
JSON representation
TypeScript/JavaScript promise queue client library with concurrency control
- Host: GitHub
- URL: https://github.com/idimetrix/tail-queue
- Owner: idimetrix
- License: mit
- Created: 2020-10-13T10:33:04.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2020-10-26T08:39:18.000Z (over 4 years ago)
- Last Synced: 2024-12-05T04:15:58.946Z (6 months ago)
- Language: TypeScript
- Size: 212 KB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
- [tail-queue](#tail-queue)
- [Installation](#installation)
- [Demo](#demo)
- [Documentation](#documentation)
- [Classes](#classes)
- [Class: default\](#class-default%5Cqueuetype-enqueueoptionstype)
- [Type parameters](#type-parameters)
- [Hierarchy](#hierarchy)
- [Index](#index)
- [Constructors](#constructors)
- [Properties](#properties)
- [Accessors](#accessors)
- [Methods](#methods)
- [Class: PriorityQueue](#class-priorityqueue)
- [Hierarchy](#hierarchy-1)
- [Implements](#implements)
- [Index](#index-1)
- [Accessors](#accessors-1)
- [Methods](#methods-1)
- [tail-queue](#tail-queue-1)
- [Index](#index-2)
- [Classes](#classes-1)
- [Interfaces](#interfaces)
- [Type aliases](#type-aliases)
- [Functions](#functions)
- [Type aliases](#type-aliases-1)
- [ResolveFunction](#resolvefunction)
- [RunFunction](#runfunction)
- [Task](#task)
- [Functions](#functions-1)
- [PromiseFinally](#promisefinally)
- [PromiseTimeout](#promisetimeout)
- [empty](#empty)
- [lowerBound](#lowerbound)
- [Interfaces](#interfaces-1)
- [Interface: DefaultAddOptions](#interface-defaultaddoptions)
- [Hierarchy](#hierarchy-2)
- [Indexable](#indexable)
- [Index](#index-3)
- [Properties](#properties-1)
- [Interface: Options\](#interface-options%5Cqueuetype-queueoptions)
- [Type parameters](#type-parameters-1)
- [Hierarchy](#hierarchy-3)
- [Index](#index-4)
- [Properties](#properties-2)
- [Interface: PriorityQueueOptions](#interface-priorityqueueoptions)
- [Hierarchy](#hierarchy-4)
- [Indexable](#indexable-1)
- [Index](#index-5)
- [Properties](#properties-3)
- [Interface: PriorityQueueRunOptions](#interface-priorityqueuerunoptions)
- [Hierarchy](#hierarchy-5)
- [Indexable](#indexable-2)
- [Index](#index-6)
- [Properties](#properties-4)
- [Interface: Queue\](#interface-queue%5Celement-options)
- [Type parameters](#type-parameters-2)
- [Hierarchy](#hierarchy-6)
- [Implemented by](#implemented-by)
- [Index](#index-7)
- [Properties](#properties-5)
- [Interface: QueueAddOptions](#interface-queueaddoptions)
- [Hierarchy](#hierarchy-7)
- [Indexable](#indexable-3)**[tail-queue](#readmemd)**
> [Globals](#globalsmd)
## tail-queue
#### TypeScript/JavaScript promise queue client library with concurrency control
## Installation
Install with [npm](https://www.npmjs.com):
```sh
$ npm install --save tail-queue
```Install with [yarn](https://yarnpkg.com):
```sh
$ yarn add tail-queue
```## [Demo](https://www.npmjs.com/package/tail-queue)
#### [Try online demo](https://www.npmjs.com/package/tail-queue)
## [Documentation](https://www.npmjs.com/package/tail-queue)
#### [Try online documentation](https://www.npmjs.com/package/tail-queue)
# Classes
**[tail-queue](#readmemd)**
> [Globals](#globalsmd) / default
## Class: default\
Promise queue with concurrency control.
### Type parameters
Name | Type | Default |
------ | ------ | ------ |
`QueueType` | [Queue](#interfacesqueuemd)\<[RunFunction](#runfunction), EnqueueOptionsType> | PriorityQueue |
`EnqueueOptionsType` | [QueueAddOptions](#interfacesqueueaddoptionsmd) | DefaultAddOptions |### Hierarchy
* EventEmitter
↳ **default**
### Index
#### Constructors
* [constructor](#constructor)
#### Properties
* [defaultMaxListeners](#defaultmaxlisteners)
#### Accessors
* [concurrency](#concurrency)
* [isPaused](#ispaused)
* [pending](#pending)
* [size](#size)
* [timeout](#timeout)#### Methods
* [add](#add)
* [addAll](#addall)
* [addListener](#addlistener)
* [clear](#clear)
* [emit](#emit)
* [eventNames](#eventnames)
* [getMaxListeners](#getmaxlisteners)
* [listenerCount](#listenercount)
* [listeners](#listeners)
* [off](#off)
* [on](#on)
* [onEmpty](#onempty)
* [onIdle](#onidle)
* [once](#once)
* [pause](#pause)
* [prependListener](#prependlistener)
* [prependOnceListener](#prependoncelistener)
* [rawListeners](#rawlisteners)
* [removeAllListeners](#removealllisteners)
* [removeListener](#removelistener)
* [setMaxListeners](#setmaxlisteners)
* [sizeBy](#sizeby)
* [start](#start)
* [listenerCount](#listenercount)### Constructors
#### constructor
\+ **new default**(`options?`: Options\): [default](#classesdefaultmd)
*Defined in [src/index.ts:37](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/index.ts#L37)*
##### Parameters:
Name | Type |
------ | ------ |
`options?` | Options\ |**Returns:** [default](#classesdefaultmd)
### Properties
#### defaultMaxListeners
▪ `Static` **defaultMaxListeners**: number
*Inherited from [default](#classesdefaultmd).[defaultMaxListeners](#defaultmaxlisteners)*
*Defined in node_modules/@types/events/index.d.ts:11*
### Accessors
#### concurrency
• get **concurrency**(): number
*Defined in [src/index.ts:215](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/index.ts#L215)*
**Returns:** number
• set **concurrency**(`newConcurrency`: number): void
*Defined in [src/index.ts:219](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/index.ts#L219)*
##### Parameters:
Name | Type |
------ | ------ |
`newConcurrency` | number |**Returns:** void
___
#### isPaused
• get **isPaused**(): boolean
*Defined in [src/index.ts:395](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/index.ts#L395)*
Whether the queue is currently paused.
**Returns:** boolean
___
#### pending
• get **pending**(): number
*Defined in [src/index.ts:388](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/index.ts#L388)*
Number of pending promises.
**Returns:** number
___
#### size
• get **size**(): number
*Defined in [src/index.ts:372](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/index.ts#L372)*
Size of the queue.
**Returns:** number
___
#### timeout
• get **timeout**(): number \| undefined
*Defined in [src/index.ts:399](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/index.ts#L399)*
Set the timeout for future operations.
**Returns:** number \| undefined
• set **timeout**(`milliseconds`: number \| undefined): void
*Defined in [src/index.ts:406](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/index.ts#L406)*
Set the timeout for future operations.
##### Parameters:
Name | Type |
------ | ------ |
`milliseconds` | number \| undefined |**Returns:** void
### Methods
#### add
▸ **add**\(`fn`: [Task](#task)\, `options`: Partial\): Promise\
*Defined in [src/index.ts:234](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/index.ts#L234)*
Adds a sync or async task to the queue. Always returns a promise.
##### Type parameters:
Name |
------ |
`TaskResultType` |##### Parameters:
Name | Type | Default value |
------ | ------ | ------ |
`fn` | [Task](#task)\ | - |
`options` | Partial\ | {} |**Returns:** Promise\
___
#### addAll
▸ **addAll**\(`functions`: ReadonlyArray\<[Task](#task)\>, `options?`: EnqueueOptionsType): Promise\
*Defined in [src/index.ts:285](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/index.ts#L285)*
Same as `.add()`, but accepts an array of sync or async functions.
##### Type parameters:
Name |
------ |
`TaskResultsType` |##### Parameters:
Name | Type |
------ | ------ |
`functions` | ReadonlyArray\<[Task](#task)\> |
`options?` | EnqueueOptionsType |**Returns:** Promise\
A promise that resolves when all functions are resolved.
___
#### addListener
▸ **addListener**(`type`: string \| number, `listener`: Listener): this
*Inherited from [default](#classesdefaultmd).[addListener](#addlistener)*
*Defined in node_modules/@types/events/index.d.ts:17*
##### Parameters:
Name | Type |
------ | ------ |
`type` | string \| number |
`listener` | Listener |**Returns:** this
___
#### clear
▸ **clear**(): void
*Defined in [src/index.ts:323](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/index.ts#L323)*
Clear the queue.
**Returns:** void
___
#### emit
▸ **emit**(`type`: string \| number, ...`args`: any[]): boolean
*Inherited from [default](#classesdefaultmd).[emit](#emit)*
*Defined in node_modules/@types/events/index.d.ts:16*
##### Parameters:
Name | Type |
------ | ------ |
`type` | string \| number |
`...args` | any[] |**Returns:** boolean
___
#### eventNames
▸ **eventNames**(): Array\
*Inherited from [default](#classesdefaultmd).[eventNames](#eventnames)*
*Defined in node_modules/@types/events/index.d.ts:13*
**Returns:** Array\
___
#### getMaxListeners
▸ **getMaxListeners**(): number
*Inherited from [default](#classesdefaultmd).[getMaxListeners](#getmaxlisteners)*
*Defined in node_modules/@types/events/index.d.ts:15*
**Returns:** number
___
#### listenerCount
▸ **listenerCount**(`type`: string \| number): number
*Inherited from [default](#classesdefaultmd).[listenerCount](#listenercount)*
*Defined in node_modules/@types/events/index.d.ts:26*
##### Parameters:
Name | Type |
------ | ------ |
`type` | string \| number |**Returns:** number
___
#### listeners
▸ **listeners**(`type`: string \| number): Listener[]
*Inherited from [default](#classesdefaultmd).[listeners](#listeners)*
*Defined in node_modules/@types/events/index.d.ts:25*
##### Parameters:
Name | Type |
------ | ------ |
`type` | string \| number |**Returns:** Listener[]
___
#### off
▸ **off**(`type`: string \| number, `listener`: Listener): this
*Inherited from [default](#classesdefaultmd).[off](#off)*
*Defined in node_modules/@types/events/index.d.ts:23*
##### Parameters:
Name | Type |
------ | ------ |
`type` | string \| number |
`listener` | Listener |**Returns:** this
___
#### on
▸ **on**(`type`: string \| number, `listener`: Listener): this
*Inherited from [default](#classesdefaultmd).[on](#on)*
*Defined in node_modules/@types/events/index.d.ts:18*
##### Parameters:
Name | Type |
------ | ------ |
`type` | string \| number |
`listener` | Listener |**Returns:** this
___
#### onEmpty
▸ **onEmpty**(): Promise\
*Defined in [src/index.ts:332](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/index.ts#L332)*
Can be called multiple times. Useful if you for example add additional items at a later time.
**Returns:** Promise\
A promise that settles when the queue becomes empty.
___
#### onIdle
▸ **onIdle**(): Promise\
*Defined in [src/index.ts:353](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/index.ts#L353)*
The difference with `.onEmpty` is that `.onIdle` guarantees that all work from the queue has finished. `.onEmpty` merely signals that the queue is empty, but it could mean that some promises haven't completed yet.
**Returns:** Promise\
A promise that settles when the queue becomes empty, and all promises have completed; `queue.size === 0 && queue.pending === 0`.
___
#### once
▸ **once**(`type`: string \| number, `listener`: Listener): this
*Inherited from [default](#classesdefaultmd).[once](#once)*
*Defined in node_modules/@types/events/index.d.ts:19*
##### Parameters:
Name | Type |
------ | ------ |
`type` | string \| number |
`listener` | Listener |**Returns:** this
___
#### pause
▸ **pause**(): void
*Defined in [src/index.ts:316](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/index.ts#L316)*
Put queue execution on hold.
**Returns:** void
___
#### prependListener
▸ **prependListener**(`type`: string \| number, `listener`: Listener): this
*Inherited from [default](#classesdefaultmd).[prependListener](#prependlistener)*
*Defined in node_modules/@types/events/index.d.ts:20*
##### Parameters:
Name | Type |
------ | ------ |
`type` | string \| number |
`listener` | Listener |**Returns:** this
___
#### prependOnceListener
▸ **prependOnceListener**(`type`: string \| number, `listener`: Listener): this
*Inherited from [default](#classesdefaultmd).[prependOnceListener](#prependoncelistener)*
*Defined in node_modules/@types/events/index.d.ts:21*
##### Parameters:
Name | Type |
------ | ------ |
`type` | string \| number |
`listener` | Listener |**Returns:** this
___
#### rawListeners
▸ **rawListeners**(`type`: string \| number): Listener[]
*Inherited from [default](#classesdefaultmd).[rawListeners](#rawlisteners)*
*Defined in node_modules/@types/events/index.d.ts:27*
##### Parameters:
Name | Type |
------ | ------ |
`type` | string \| number |**Returns:** Listener[]
___
#### removeAllListeners
▸ **removeAllListeners**(`type?`: string \| number): this
*Inherited from [default](#classesdefaultmd).[removeAllListeners](#removealllisteners)*
*Defined in node_modules/@types/events/index.d.ts:24*
##### Parameters:
Name | Type |
------ | ------ |
`type?` | string \| number |**Returns:** this
___
#### removeListener
▸ **removeListener**(`type`: string \| number, `listener`: Listener): this
*Inherited from [default](#classesdefaultmd).[removeListener](#removelistener)*
*Defined in node_modules/@types/events/index.d.ts:22*
##### Parameters:
Name | Type |
------ | ------ |
`type` | string \| number |
`listener` | Listener |**Returns:** this
___
#### setMaxListeners
▸ **setMaxListeners**(`n`: number): this
*Inherited from [default](#classesdefaultmd).[setMaxListeners](#setmaxlisteners)*
*Defined in node_modules/@types/events/index.d.ts:14*
##### Parameters:
Name | Type |
------ | ------ |
`n` | number |**Returns:** this
___
#### sizeBy
▸ **sizeBy**(`options`: Readonly\>): number
*Defined in [src/index.ts:381](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/index.ts#L381)*
Size of the queue, filtered by the given options.
For example, this can be used to find the number of items remaining in the queue with a specific priority level.
##### Parameters:
Name | Type |
------ | ------ |
`options` | Readonly\> |**Returns:** number
___
#### start
▸ **start**(): this
*Defined in [src/index.ts:301](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/index.ts#L301)*
Start (or resume) executing enqueued tasks within concurrency limit. No need to call this if queue is not paused (via `options.autoStart = false` or by `.pause()` method.)
**Returns:** this
___
#### listenerCount
▸ `Static`**listenerCount**(`emitter`: EventEmitter, `type`: string \| number): number
*Inherited from [default](#classesdefaultmd).[listenerCount](#listenercount)*
*Defined in node_modules/@types/events/index.d.ts:10*
##### Parameters:
Name | Type |
------ | ------ |
`emitter` | EventEmitter |
`type` | string \| number |**Returns:** number
**[tail-queue](#readmemd)**
> [Globals](#globalsmd) / PriorityQueue
## Class: PriorityQueue
### Hierarchy
* **PriorityQueue**
### Implements
* [Queue](#interfacesqueuemd)\<[RunFunction](#runfunction), [PriorityQueueOptions](#interfacespriorityqueueoptionsmd)>
### Index
#### Accessors
* [size](#size)
#### Methods
* [dequeue](#dequeue)
* [enqueue](#enqueue)
* [filter](#filter)### Accessors
#### size
• get **size**(): number
*Defined in [src/priority-queue.ts:60](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/priority-queue.ts#L60)*
**Returns:** number
### Methods
#### dequeue
▸ **dequeue**(): [RunFunction](#runfunction) \| undefined
*Defined in [src/priority-queue.ts:45](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/priority-queue.ts#L45)*
**Returns:** [RunFunction](#runfunction) \| undefined
___
#### enqueue
▸ **enqueue**(`run`: [RunFunction](#runfunction), `options?`: Partial\<[PriorityQueueOptions](#interfacespriorityqueueoptionsmd)>): void
*Defined in [src/priority-queue.ts:13](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/priority-queue.ts#L13)*
##### Parameters:
Name | Type |
------ | ------ |
`run` | [RunFunction](#runfunction) |
`options?` | Partial\<[PriorityQueueOptions](#interfacespriorityqueueoptionsmd)> |**Returns:** void
___
#### filter
▸ **filter**(`options`: Readonly\>): [RunFunction](#runfunction)[]
*Defined in [src/priority-queue.ts:49](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/priority-queue.ts#L49)*
##### Parameters:
Name | Type |
------ | ------ |
`options` | Readonly\> |**Returns:** [RunFunction](#runfunction)[]
**[tail-queue](#readmemd)**
> Globals
# tail-queue
## Index
### Classes
* [PriorityQueue](#classespriorityqueuemd)
* [default](#classesdefaultmd)### Interfaces
* [DefaultAddOptions](#interfacesdefaultaddoptionsmd)
* [Options](#interfacesoptionsmd)
* [PriorityQueueOptions](#interfacespriorityqueueoptionsmd)
* [PriorityQueueRunOptions](#interfacespriorityqueuerunoptionsmd)
* [Queue](#interfacesqueuemd)
* [QueueAddOptions](#interfacesqueueaddoptionsmd)### Type aliases
* [ResolveFunction](#resolvefunction)
* [RunFunction](#runfunction)
* [Task](#task)### Functions
* [PromiseFinally](#promisefinally)
* [PromiseTimeout](#promisetimeout)
* [empty](#empty)
* [lowerBound](#lowerbound)## Type aliases
### ResolveFunction
Ƭ **ResolveFunction**\: (value?: T \| PromiseLike\) => void
*Defined in [src/types.ts:9](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/types.ts#L9)*
#### Type parameters:
Name | Default |
------ | ------ |
`T` | void |___
### RunFunction
Ƭ **RunFunction**: () => Promise\
*Defined in [src/types.ts:8](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/types.ts#L8)*
___
### Task
Ƭ **Task**\: () => PromiseLike\ \| () => TaskResultType
*Defined in [src/types.ts:10](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/types.ts#L10)*
#### Type parameters:
Name |
------ |
`TaskResultType` |## Functions
### PromiseFinally
▸ **PromiseFinally**\(`promise`: T, `fallback`: any): Promise\
*Defined in [src/utils.ts:1](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/utils.ts#L1)*
#### Type parameters:
Name | Default |
------ | ------ |
`T` | any |#### Parameters:
Name | Type |
------ | ------ |
`promise` | T |
`fallback` | any |**Returns:** Promise\
___
### PromiseTimeout
▸ **PromiseTimeout**(`promise`: any, `milliseconds`: number, `fallback`: any): Promise\
*Defined in [src/utils.ts:18](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/utils.ts#L18)*
#### Parameters:
Name | Type |
------ | ------ |
`promise` | any |
`milliseconds` | number |
`fallback` | any |**Returns:** Promise\
___
### empty
▸ `Const`**empty**(): void
*Defined in [src/utils.ts:83](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/utils.ts#L83)*
**Returns:** void
___
### lowerBound
▸ **lowerBound**\(`array`: readonly T[], `value`: T, `comparator`: (a: T,b: T) => number): number
*Defined in [src/utils.ts:60](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/utils.ts#L60)*
#### Type parameters:
Name |
------ |
`T` |#### Parameters:
Name | Type |
------ | ------ |
`array` | readonly T[] |
`value` | T |
`comparator` | (a: T,b: T) => number |**Returns:** number
# Interfaces
**[tail-queue](#readmemd)**
> [Globals](#globalsmd) / DefaultAddOptions
## Interface: DefaultAddOptions
### Hierarchy
* [QueueAddOptions](#interfacesqueueaddoptionsmd)
↳ **DefaultAddOptions**
### Indexable
▪ [key: string]: unknown
### Index
#### Properties
* [priority](#priority)
### Properties
#### priority
• `Optional` `Readonly` **priority**: undefined \| number
*Defined in [src/options.ts:72](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/options.ts#L72)*
Priority of operation. Operations with greater priority will be scheduled first.
**`default`** 0
**[tail-queue](#readmemd)**
> [Globals](#globalsmd) / Options
## Interface: Options\
### Type parameters
Name | Type |
------ | ------ |
`QueueType` | [Queue](#interfacesqueuemd)\<[RunFunction](#runfunction), QueueOptions> |
`QueueOptions` | [QueueAddOptions](#interfacesqueueaddoptionsmd) |### Hierarchy
* **Options**
### Index
#### Properties
* [autoStart](#autostart)
* [carryoverConcurrencyCount](#carryoverconcurrencycount)
* [concurrency](#concurrency)
* [interval](#interval)
* [intervalCap](#intervalcap)
* [queueClass](#queueclass)
* [throwOnTimeout](#throwontimeout)
* [timeout](#timeout)### Properties
#### autoStart
• `Optional` `Readonly` **autoStart**: undefined \| false \| true
*Defined in [src/options.ts:21](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/options.ts#L21)*
Whether queue tasks within concurrency limit, are auto-executed as soon as they're added.
**`default`** true
___
#### carryoverConcurrencyCount
• `Optional` `Readonly` **carryoverConcurrencyCount**: undefined \| false \| true
*Defined in [src/options.ts:51](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/options.ts#L51)*
Whether the task must finish in the given interval or will be carried over into the next interval count.
**`default`** false
___
#### concurrency
• `Optional` `Readonly` **concurrency**: undefined \| number
*Defined in [src/options.ts:14](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/options.ts#L14)*
Concurrency limit.
Minimum: `1`.
**`default`** Infinity
___
#### interval
• `Optional` `Readonly` **interval**: undefined \| number
*Defined in [src/options.ts:44](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/options.ts#L44)*
The length of time in milliseconds before the interval count resets. Must be finite.
Minimum: `0`.
**`default`** 0
___
#### intervalCap
• `Optional` `Readonly` **intervalCap**: undefined \| number
*Defined in [src/options.ts:35](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/options.ts#L35)*
The max number of runs in the given interval of time.
Minimum: `1`.
**`default`** Infinity
___
#### queueClass
• `Optional` `Readonly` **queueClass**: undefined \| {}
*Defined in [src/options.ts:26](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/options.ts#L26)*
Class with a `enqueue` and `dequeue` method, and a `size` getter. See the [Custom QueueClass](https://github.com/sindresorhus/p-queue#custom-queueclass) section.
___
#### throwOnTimeout
• `Optional` **throwOnTimeout**: undefined \| false \| true
*Defined in [src/options.ts:63](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/options.ts#L63)*
Whether or not a timeout is considered an exception.
**`default`** false
___
#### timeout
• `Optional` **timeout**: undefined \| number
*Defined in [src/options.ts:56](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/options.ts#L56)*
Per-operation timeout in milliseconds. Operations fulfill once `timeout` elapses if they haven't already.
**[tail-queue](#readmemd)**
> [Globals](#globalsmd) / PriorityQueueOptions
## Interface: PriorityQueueOptions
### Hierarchy
* [QueueAddOptions](#interfacesqueueaddoptionsmd)
↳ **PriorityQueueOptions**
↳↳ [PriorityQueueRunOptions](#interfacespriorityqueuerunoptionsmd)
### Indexable
▪ [key: string]: unknown
### Index
#### Properties
* [priority](#priority)
### Properties
#### priority
• `Optional` **priority**: undefined \| number
*Defined in [src/types.ts:19](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/types.ts#L19)*
**[tail-queue](#readmemd)**
> [Globals](#globalsmd) / PriorityQueueRunOptions
## Interface: PriorityQueueRunOptions
### Hierarchy
* [PriorityQueueOptions](#interfacespriorityqueueoptionsmd)
↳ **PriorityQueueRunOptions**
### Indexable
▪ [key: string]: unknown
### Index
#### Properties
* [priority](#priority)
* [run](#run)### Properties
#### priority
• `Optional` **priority**: undefined \| number
*Inherited from [PriorityQueueOptions](#interfacespriorityqueueoptionsmd).[priority](#priority)*
*Defined in [src/types.ts:19](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/types.ts#L19)*
___
#### run
• **run**: [RunFunction](#runfunction)
*Defined in [src/types.ts:23](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/types.ts#L23)*
**[tail-queue](#readmemd)**
> [Globals](#globalsmd) / Queue
## Interface: Queue\
### Type parameters
Name |
------ |
`Element` |
`Options` |### Hierarchy
* **Queue**
### Implemented by
* [PriorityQueue](#classespriorityqueuemd)
### Index
#### Properties
* [dequeue](#dequeue)
* [enqueue](#enqueue)
* [filter](#filter)
* [size](#size)### Properties
#### dequeue
• **dequeue**: () => Element \| undefined
*Defined in [src/types.ts:4](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/types.ts#L4)*
___
#### enqueue
• **enqueue**: (run: Element,options?: Partial\) => void
*Defined in [src/types.ts:5](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/types.ts#L5)*
___
#### filter
• **filter**: (options: Partial\) => Element[]
*Defined in [src/types.ts:3](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/types.ts#L3)*
___
#### size
• **size**: number
*Defined in [src/types.ts:2](https://github.com/idimetrix/tail-queue/blob/dcc7f42/src/types.ts#L2)*
**[tail-queue](#readmemd)**
> [Globals](#globalsmd) / QueueAddOptions
## Interface: QueueAddOptions
### Hierarchy
* **QueueAddOptions**
↳ [PriorityQueueOptions](#interfacespriorityqueueoptionsmd)
↳ [DefaultAddOptions](#interfacesdefaultaddoptionsmd)
### Indexable
▪ [key: string]: unknown