@stamhoofd/queues 2.52.0 → 2.54.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -27,7 +27,8 @@ export declare class AbortSignal {
27
27
  protected listeners: ((error: unknown) => Promise<void> | void)[];
28
28
  get isAborted(): boolean;
29
29
  abort(error?: unknown): void;
30
- throwIfAborted(cleanup?: () => Promise<void> | void): Promise<void>;
30
+ throwIfAborted(cleanup: () => Promise<void>): Promise<void>;
31
+ throwIfAborted(cleanup?: () => void): void;
31
32
  on(on: 'abort', listener: (error: unknown) => Promise<void> | void): void;
32
33
  }
33
34
  /**
@@ -41,7 +42,7 @@ export declare class QueueHandler {
41
42
  * Abort any running queue items. Same as 'cancel' but will also reject any running items if they support the 'abort' method (otherwise they will just resolve as normal)
42
43
  */
43
44
  static abort(queue: string, error?: Error): void;
44
- /**$
45
+ /** $
45
46
  * Waits {timeout} ms before executing the handler, if another call is made to the same queue, the timeout is reset
46
47
  * and the other users will receive an error.
47
48
  *
@@ -1 +1 @@
1
- {"version":3,"file":"QueueHandler.d.ts","sourceRoot":"","sources":["../../src/QueueHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAIrD,cAAM,KAAK;IACP,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAK;IAC5B,QAAQ,SAAI;IACZ,QAAQ,SAAI;IACZ,YAAY,EAAE,GAAG,CAAC,WAAW,CAAC,CAAY;gBAE9B,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAI;IAKtC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC;IAI5B,iBAAiB;IAMjB,iBAAiB,CAAC,MAAM,EAAE,WAAW;IAIrC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK;CAMtB;AAED,MAAM,MAAM,mBAAmB,GAAG;IAC9B,KAAK,EAAE,WAAW,CAAA;CACrB,CAAA;AAED,cAAM,SAAS,CAAC,CAAC;IACb,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IACrD,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAA;IAC3B,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,CAAA;CACjC;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,WAE9C;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,WAE7C;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,WAE5C;AAED,qBAAa,WAAW;IACpB,SAAS,CAAC,cAAc,EAAE,OAAO,GAAG,IAAI,CAAO;IAC/C,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAC,IAAI,CAAC,EAAE,CAAK;IAEpE,IAAI,SAAS,YAEZ;IAED,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO;IAgBf,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAC,IAAI;IAUvD,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAC,IAAI;CAGnE;AAED;;GAEG;AACH,qBAAa,YAAY;IACrB,MAAM,CAAC,MAAM,qBAA2B;IACxC,MAAM,CAAC,iBAAiB,8BAAqC;IAE7D,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;IAe1C;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;IAiBzC;;;;;OAKG;WACU,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;WA0B9G,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,SAAI,GAAG,OAAO,CAAC,CAAC,CAAC;IAuCxH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM;IAI9B;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM;mBAKP,OAAO;CAmD/B"}
1
+ {"version":3,"file":"QueueHandler.d.ts","sourceRoot":"","sources":["../../src/QueueHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAIrD,cAAM,KAAK;IACP,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAM;IAC7B,QAAQ,SAAK;IACb,QAAQ,SAAK;IACb,YAAY,EAAE,GAAG,CAAC,WAAW,CAAC,CAAa;gBAE/B,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAI;IAKtC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC;IAI5B,iBAAiB;IAMjB,iBAAiB,CAAC,MAAM,EAAE,WAAW;IAIrC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK;CAMtB;AAED,MAAM,MAAM,mBAAmB,GAAG;IAC9B,KAAK,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,cAAM,SAAS,CAAC,CAAC;IACb,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IACtD,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC5B,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;CAClC;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,WAE9C;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,WAE7C;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,WAE5C;AAED,qBAAa,WAAW;IACpB,SAAS,CAAC,cAAc,EAAE,OAAO,GAAG,IAAI,CAAQ;IAChD,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAM;IAEvE,IAAI,SAAS,YAEZ;IAED,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO;IAqBrB,cAAc,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3D,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAgB1C,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;CAGrE;AAED;;GAEG;AACH,qBAAa,YAAY;IACrB,MAAM,CAAC,MAAM,qBAA4B;IACzC,MAAM,CAAC,iBAAiB,8BAAqC;IAE7D,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;IAe1C;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;IAiBzC;;;;;OAKG;WACU,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;WA0B9G,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,SAAI,GAAG,OAAO,CAAC,CAAC,CAAC;IAuCxH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM;IAI9B;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM;mBAKP,OAAO;CAwD/B"}
@@ -61,17 +61,27 @@ class AbortSignal {
61
61
  this.abortWithError = error ?? new simple_errors_1.SimpleError({
62
62
  code: 'queue-aborted',
63
63
  message: 'Queue was aborted',
64
- statusCode: 500
64
+ statusCode: 500,
65
65
  });
66
66
  for (const listener of this.listeners) {
67
- listener(this.abortWithError);
67
+ const promise = listener(this.abortWithError);
68
+ if (promise instanceof Promise) {
69
+ promise.catch((e) => {
70
+ console.error('Error in abort listener', e);
71
+ });
72
+ }
68
73
  }
69
74
  this.listeners = [];
70
75
  }
71
- async throwIfAborted(cleanup) {
76
+ throwIfAborted(cleanup) {
72
77
  if (this.isAborted) {
73
78
  if (cleanup) {
74
- await cleanup();
79
+ const promise = cleanup();
80
+ if (promise instanceof Promise) {
81
+ return promise.then(() => {
82
+ throw this.abortWithError;
83
+ });
84
+ }
75
85
  }
76
86
  throw this.abortWithError;
77
87
  }
@@ -120,7 +130,7 @@ class QueueHandler {
120
130
  q.abort(error);
121
131
  }
122
132
  }
123
- /**$
133
+ /** $
124
134
  * Waits {timeout} ms before executing the handler, if another call is made to the same queue, the timeout is reset
125
135
  * and the other users will receive an error.
126
136
  *
@@ -131,7 +141,7 @@ class QueueHandler {
131
141
  this.abort(queue, new simple_errors_1.SimpleError({
132
142
  code: 'queue-debounced',
133
143
  message: 'Debounced',
134
- statusCode: 500
144
+ statusCode: 500,
135
145
  }));
136
146
  // Schedule timeout (will throw if cancelled)
137
147
  await this.schedule(queue, ({ abort }) => {
@@ -159,7 +169,7 @@ class QueueHandler {
159
169
  // otherwise we could run items on the queue with the wrong context
160
170
  const snapshot = node_async_hooks_1.AsyncLocalStorage.snapshot();
161
171
  const item = new QueueItem();
162
- item.handler = (options) => snapshot(async () => {
172
+ item.handler = options => snapshot(async () => {
163
173
  const currentQueues = this.asyncLocalStorage.getStore() ?? [];
164
174
  return await this.asyncLocalStorage.run([...currentQueues, queue], async () => {
165
175
  return await handler(options);
@@ -173,8 +183,8 @@ class QueueHandler {
173
183
  q.addItem(item);
174
184
  this.queues.set(queue, q);
175
185
  // Run the next item if not already running
176
- this.runNext(queue).catch(e => {
177
- console.error("[QUEUE] Fatal error in queue logic", e);
186
+ this.runNext(queue).catch((e) => {
187
+ console.error('[QUEUE] Fatal error in queue logic', e);
178
188
  });
179
189
  });
180
190
  return promise;
@@ -187,7 +197,7 @@ class QueueHandler {
187
197
  */
188
198
  static getSize(queue) {
189
199
  const q = this.queues.get(queue);
190
- return !!q ? (q.runCount + q.items.length) : 0;
200
+ return q ? (q.runCount + q.items.length) : 0;
191
201
  }
192
202
  static async runNext(queue) {
193
203
  const q = this.queues.get(queue);
@@ -209,7 +219,7 @@ class QueueHandler {
209
219
  const abort = q.createAbortSignal();
210
220
  try {
211
221
  next.resolve(await next.handler({
212
- abort
222
+ abort,
213
223
  }));
214
224
  // console.log("[QUEUE] ("+(q.runCount-1)+"/"+q.parallel+") Resolved "+queue+" ("+q.items.length+" remaining)")
215
225
  }
@@ -217,18 +227,18 @@ class QueueHandler {
217
227
  next.reject(e);
218
228
  if (STAMHOOFD.environment !== 'test') {
219
229
  if (!isDebouncedError(e) && !isCanceledError(e) && !isAbortedError(e)) {
220
- console.log("[QUEUE] (" + (q.runCount - 1) + "/" + q.parallel + ") Rejected " + queue + " (" + q.items.length + " remaining)");
230
+ console.log('[QUEUE] (' + (q.runCount - 1) + '/' + q.parallel + ') Rejected ' + queue + ' (' + q.items.length + ' remaining)');
221
231
  console.error(e);
222
232
  }
223
233
  else {
224
234
  if (isDebouncedError(e)) {
225
- console.log("[QUEUE] (" + (q.runCount - 1) + "/" + q.parallel + ") Debounced " + queue + " (" + q.items.length + " remaining)");
235
+ console.log('[QUEUE] (' + (q.runCount - 1) + '/' + q.parallel + ') Debounced ' + queue + ' (' + q.items.length + ' remaining)');
226
236
  }
227
237
  else if (isCanceledError(e)) {
228
- console.log("[QUEUE] (" + (q.runCount - 1) + "/" + q.parallel + ") Canceled " + queue + " (" + q.items.length + " remaining)");
238
+ console.log('[QUEUE] (' + (q.runCount - 1) + '/' + q.parallel + ') Canceled ' + queue + ' (' + q.items.length + ' remaining)');
229
239
  }
230
240
  else if (isAbortedError(e)) {
231
- console.log("[QUEUE] (" + (q.runCount - 1) + "/" + q.parallel + ") Aborted " + queue + " (" + q.items.length + " remaining)");
241
+ console.log('[QUEUE] (' + (q.runCount - 1) + '/' + q.parallel + ') Aborted ' + queue + ' (' + q.items.length + ' remaining)');
232
242
  }
233
243
  }
234
244
  }
@@ -1 +1 @@
1
- {"version":3,"file":"QueueHandler.js","sourceRoot":"","sources":["../../src/QueueHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QueueHandler.js","sourceRoot":"","sources":["../../src/QueueHandler.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stamhoofd/queues",
3
- "version": "2.52.0",
3
+ "version": "2.54.0",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./dist/index.d.ts",
6
6
  "license": "UNLICENCED",
@@ -16,5 +16,5 @@
16
16
  "publishConfig": {
17
17
  "access": "public"
18
18
  },
19
- "gitHead": "3702314394e25e62289472a70174ef50b6d85898"
19
+ "gitHead": "d895bc5e468a87792398ca4e762d1216bf750baf"
20
20
  }
@@ -1,100 +1,111 @@
1
-
2
1
  import { AsyncLocalStorage } from 'node:async_hooks';
3
2
  import { sleep } from '@stamhoofd/utility';
4
3
  import { isSimpleError, SimpleError } from '@simonbackx/simple-errors';
5
4
 
6
5
  class Queue {
7
- name: string
8
- items: QueueItem<any>[] = []
9
- parallel = 1
10
- runCount = 0
11
- abortSignals: Set<AbortSignal> = new Set()
6
+ name: string;
7
+ items: QueueItem<any>[] = [];
8
+ parallel = 1;
9
+ runCount = 0;
10
+ abortSignals: Set<AbortSignal> = new Set();
12
11
 
13
12
  constructor(name: string, parallel = 1) {
14
- this.name = name
15
- this.parallel = parallel
13
+ this.name = name;
14
+ this.parallel = parallel;
16
15
  }
17
16
 
18
17
  addItem(item: QueueItem<any>) {
19
- this.items.push(item)
18
+ this.items.push(item);
20
19
  }
21
20
 
22
21
  createAbortSignal() {
23
- const signal = new AbortSignal()
24
- this.abortSignals.add(signal)
25
- return signal
22
+ const signal = new AbortSignal();
23
+ this.abortSignals.add(signal);
24
+ return signal;
26
25
  }
27
26
 
28
27
  removeAbortSignal(signal: AbortSignal) {
29
- this.abortSignals.delete(signal)
28
+ this.abortSignals.delete(signal);
30
29
  }
31
30
 
32
31
  abort(error?: Error) {
33
32
  for (const signal of this.abortSignals) {
34
- signal.abort(error)
33
+ signal.abort(error);
35
34
  }
36
- this.abortSignals.clear() // Avoid swapping error midway the abort
35
+ this.abortSignals.clear(); // Avoid swapping error midway the abort
37
36
  }
38
37
  }
39
38
 
40
39
  export type QueueHandlerOptions = {
41
- abort: AbortSignal
42
- }
40
+ abort: AbortSignal;
41
+ };
43
42
 
44
43
  class QueueItem<T> {
45
- handler: (options: QueueHandlerOptions) => Promise<T>
46
- resolve: (value: T) => void
47
- reject: (reason?: any) => void
44
+ handler: (options: QueueHandlerOptions) => Promise<T>;
45
+ resolve: (value: T) => void;
46
+ reject: (reason?: any) => void;
48
47
  }
49
48
 
50
49
  export function isDebouncedError(error: unknown) {
51
- return isSimpleError(error) && error.code === 'queue-debounced'
50
+ return isSimpleError(error) && error.code === 'queue-debounced';
52
51
  }
53
52
 
54
53
  export function isCanceledError(error: unknown) {
55
- return isSimpleError(error) && error.code === 'queue-canceled'
54
+ return isSimpleError(error) && error.code === 'queue-canceled';
56
55
  }
57
56
 
58
57
  export function isAbortedError(error: unknown) {
59
- return isSimpleError(error) && error.code === 'queue-aborted'
58
+ return isSimpleError(error) && error.code === 'queue-aborted';
60
59
  }
61
60
 
62
61
  export class AbortSignal {
63
- protected abortWithError: unknown | null = null
64
- protected listeners: ((error: unknown) => Promise<void>|void)[] = []
62
+ protected abortWithError: unknown | null = null;
63
+ protected listeners: ((error: unknown) => Promise<void> | void)[] = [];
65
64
 
66
65
  get isAborted() {
67
- return this.abortWithError !== null
66
+ return this.abortWithError !== null;
68
67
  }
69
68
 
70
69
  abort(error?: unknown) {
71
70
  if (this.isAborted) {
72
- return
71
+ return;
73
72
  }
74
73
  this.abortWithError = error ?? new SimpleError({
75
74
  code: 'queue-aborted',
76
75
  message: 'Queue was aborted',
77
- statusCode: 500
78
- })
76
+ statusCode: 500,
77
+ });
79
78
 
80
79
  for (const listener of this.listeners) {
81
- listener(this.abortWithError)
80
+ const promise = listener(this.abortWithError);
81
+ if (promise instanceof Promise) {
82
+ promise.catch((e) => {
83
+ console.error('Error in abort listener', e);
84
+ });
85
+ }
82
86
  }
83
- this.listeners = []
87
+ this.listeners = [];
84
88
  }
85
89
 
86
- async throwIfAborted(cleanup?: () => Promise<void>|void) {
90
+ throwIfAborted(cleanup: () => Promise<void>): Promise<void>;
91
+ throwIfAborted(cleanup?: () => void): void;
92
+ throwIfAborted(cleanup?: () => Promise<void> | void): Promise<void> | void {
87
93
  if (this.isAborted) {
88
94
  if (cleanup) {
89
- await cleanup()
95
+ const promise = cleanup();
96
+ if (promise instanceof Promise) {
97
+ return promise.then(() => {
98
+ throw this.abortWithError;
99
+ });
100
+ }
90
101
  }
91
- throw this.abortWithError
102
+ throw this.abortWithError;
92
103
  }
93
104
  }
94
105
 
95
106
  // Add event listeners
96
- on(on: 'abort', listener: (error: unknown) => Promise<void>|void) {
97
- this.listeners.push(listener)
107
+ on(on: 'abort', listener: (error: unknown) => Promise<void> | void) {
108
+ this.listeners.push(listener);
98
109
  }
99
110
  }
100
111
 
@@ -102,20 +113,20 @@ export class AbortSignal {
102
113
  * Force the usage of a queue to prevent concurrency issues
103
114
  */
104
115
  export class QueueHandler {
105
- static queues = new Map<string, Queue>()
116
+ static queues = new Map<string, Queue>();
106
117
  static asyncLocalStorage = new AsyncLocalStorage<string[]>();
107
118
 
108
119
  static cancel(queue: string, error?: Error) {
109
- const q = this.queues.get(queue)
120
+ const q = this.queues.get(queue);
110
121
  if (q) {
111
122
  // This doesn't interfere any running items
112
123
  for (const item of q.items) {
113
124
  item.handler = () => {
114
125
  return Promise.reject(error ?? new SimpleError({
115
126
  code: 'queue-canceled',
116
- message: 'Queue '+queue+' was canceled',
117
- }))
118
- }
127
+ message: 'Queue ' + queue + ' was canceled',
128
+ }));
129
+ };
119
130
  }
120
131
  }
121
132
  }
@@ -124,52 +135,52 @@ export class QueueHandler {
124
135
  * Abort any running queue items. Same as 'cancel' but will also reject any running items if they support the 'abort' method (otherwise they will just resolve as normal)
125
136
  */
126
137
  static abort(queue: string, error?: Error) {
127
- const q = this.queues.get(queue)
138
+ const q = this.queues.get(queue);
128
139
  if (q) {
129
140
  // This doesn't interfere any running items
130
141
  for (const item of q.items) {
131
142
  item.handler = () => {
132
143
  return Promise.reject(error ?? new SimpleError({
133
144
  code: 'queue-canceled',
134
- message: 'Queue '+queue+' was canceled',
135
- }))
136
- }
145
+ message: 'Queue ' + queue + ' was canceled',
146
+ }));
147
+ };
137
148
  }
138
149
 
139
- q.abort(error)
150
+ q.abort(error);
140
151
  }
141
152
  }
142
153
 
143
- /**$
154
+ /** $
144
155
  * Waits {timeout} ms before executing the handler, if another call is made to the same queue, the timeout is reset
145
156
  * and the other users will receive an error.
146
- *
157
+ *
147
158
  * Note: this will throw if the handler was debounced and not yet executed
148
159
  */
149
160
  static async debounce<T>(queue: string, handler: (options: QueueHandlerOptions) => Promise<T>, timeout: number): Promise<T> {
150
161
  // Stop any running items that were not yet executed
151
- this.abort(queue, new SimpleError({
162
+ this.abort(queue, new SimpleError({
152
163
  code: 'queue-debounced',
153
164
  message: 'Debounced',
154
- statusCode: 500
165
+ statusCode: 500,
155
166
  }));
156
167
 
157
168
  // Schedule timeout (will throw if cancelled)
158
- await this.schedule(queue, ({abort}) => {
169
+ await this.schedule(queue, ({ abort }) => {
159
170
  return new Promise<void>((resolve, reject) => {
160
171
  const timeoutId = setTimeout(() => {
161
- resolve()
162
- }, timeout)
172
+ resolve();
173
+ }, timeout);
163
174
 
164
175
  abort.on('abort', (error) => {
165
- clearTimeout(timeoutId)
166
- reject(error)
167
- })
168
- })
176
+ clearTimeout(timeoutId);
177
+ reject(error);
178
+ });
179
+ });
169
180
  });
170
181
 
171
182
  // Run the handler
172
- return await this.schedule(queue, handler)
183
+ return await this.schedule(queue, handler);
173
184
  }
174
185
 
175
186
  static async schedule<T>(queue: string, handler: (options: QueueHandlerOptions) => Promise<T>, parallel = 1): Promise<T> {
@@ -178,100 +189,105 @@ export class QueueHandler {
178
189
  const currentQueues = this.asyncLocalStorage.getStore();
179
190
  if (currentQueues !== undefined && currentQueues.includes(queue)) {
180
191
  console.warn('Recursive usage of queues detected. Ignored running in queue', queue, currentQueues);
181
- return await handler({abort: new AbortSignal()});
192
+ return await handler({ abort: new AbortSignal() });
182
193
  }
183
194
 
184
195
  // We need to save the current AsyncLocalStorage context
185
196
  // otherwise we could run items on the queue with the wrong context
186
- const snapshot = AsyncLocalStorage.snapshot()
197
+ const snapshot = AsyncLocalStorage.snapshot();
187
198
 
188
- const item = new QueueItem<T>()
189
- item.handler = (options) => snapshot(async () => {
199
+ const item = new QueueItem<T>();
200
+ item.handler = options => snapshot(async () => {
190
201
  const currentQueues = this.asyncLocalStorage.getStore() ?? [];
191
202
  return await this.asyncLocalStorage.run([...currentQueues, queue], async () => {
192
203
  return await handler(options);
193
204
  });
194
- })
195
-
205
+ });
206
+
196
207
  const promise = new Promise<T>((resolve, reject) => {
197
- item.resolve = resolve
198
- item.reject = reject
208
+ item.resolve = resolve;
209
+ item.reject = reject;
199
210
 
200
211
  // We only add it here because resolve and reject is required
201
- const q = this.queues.get(queue) ?? new Queue(queue, parallel)
202
- q.addItem(item)
203
- this.queues.set(queue, q)
212
+ const q = this.queues.get(queue) ?? new Queue(queue, parallel);
213
+ q.addItem(item);
214
+ this.queues.set(queue, q);
204
215
 
205
216
  // Run the next item if not already running
206
- this.runNext(queue).catch(e => {
207
- console.error("[QUEUE] Fatal error in queue logic", e)
208
- })
209
- })
217
+ this.runNext(queue).catch((e) => {
218
+ console.error('[QUEUE] Fatal error in queue logic', e);
219
+ });
220
+ });
210
221
 
211
- return promise
222
+ return promise;
212
223
  }
213
224
 
214
225
  static isRunning(queue: string) {
215
- return this.getSize(queue) > 0
226
+ return this.getSize(queue) > 0;
216
227
  }
217
228
 
218
229
  /**
219
230
  * Returns amount of running jobs + pending jobs for a given queue
220
231
  */
221
232
  static getSize(queue: string) {
222
- const q = this.queues.get(queue)
223
- return !!q ? (q.runCount + q.items.length) : 0
233
+ const q = this.queues.get(queue);
234
+ return q ? (q.runCount + q.items.length) : 0;
224
235
  }
225
236
 
226
237
  private static async runNext(queue: string) {
227
- const q = this.queues.get(queue)
238
+ const q = this.queues.get(queue);
228
239
  if (!q) {
229
240
  // console.warn("[QUEUE] Queue not found (no items left)", queue)
230
- return
241
+ return;
231
242
  }
232
243
 
233
244
  if (q.runCount >= q.parallel) {
234
245
  // console.log("[QUEUE] Queue", queue, 'reached maximum of', q.parallel)
235
- return
246
+ return;
236
247
  }
237
248
 
238
- const next = q.items.shift()
249
+ const next = q.items.shift();
239
250
 
240
251
  if (next === undefined) {
241
- this.queues.delete(queue)
242
- return
252
+ this.queues.delete(queue);
253
+ return;
243
254
  }
244
255
 
245
- q.runCount += 1
256
+ q.runCount += 1;
246
257
  // console.log("[QUEUE] ("+q.runCount+"/"+q.parallel+") Executing "+queue+" ("+q.items.length+" remaining)")
247
- const abort = q.createAbortSignal()
258
+ const abort = q.createAbortSignal();
248
259
 
249
260
  try {
250
261
  next.resolve(await next.handler({
251
- abort
252
- }))
262
+ abort,
263
+ }));
253
264
  // console.log("[QUEUE] ("+(q.runCount-1)+"/"+q.parallel+") Resolved "+queue+" ("+q.items.length+" remaining)")
254
- } catch (e) {
255
- next.reject(e)
265
+ }
266
+ catch (e) {
267
+ next.reject(e);
256
268
  if (STAMHOOFD.environment !== 'test') {
257
269
  if (!isDebouncedError(e) && !isCanceledError(e) && !isAbortedError(e)) {
258
- console.log("[QUEUE] ("+(q.runCount-1)+"/"+q.parallel+") Rejected "+queue+" ("+q.items.length+" remaining)")
259
- console.error(e)
260
- } else {
270
+ console.log('[QUEUE] (' + (q.runCount - 1) + '/' + q.parallel + ') Rejected ' + queue + ' (' + q.items.length + ' remaining)');
271
+ console.error(e);
272
+ }
273
+ else {
261
274
  if (isDebouncedError(e)) {
262
- console.log("[QUEUE] ("+(q.runCount-1)+"/"+q.parallel+") Debounced "+queue+" ("+q.items.length+" remaining)")
263
- } else if (isCanceledError(e)) {
264
- console.log("[QUEUE] ("+(q.runCount-1)+"/"+q.parallel+") Canceled "+queue+" ("+q.items.length+" remaining)")
265
- } else if (isAbortedError(e)) {
266
- console.log("[QUEUE] ("+(q.runCount-1)+"/"+q.parallel+") Aborted "+queue+" ("+q.items.length+" remaining)")
275
+ console.log('[QUEUE] (' + (q.runCount - 1) + '/' + q.parallel + ') Debounced ' + queue + ' (' + q.items.length + ' remaining)');
276
+ }
277
+ else if (isCanceledError(e)) {
278
+ console.log('[QUEUE] (' + (q.runCount - 1) + '/' + q.parallel + ') Canceled ' + queue + ' (' + q.items.length + ' remaining)');
279
+ }
280
+ else if (isAbortedError(e)) {
281
+ console.log('[QUEUE] (' + (q.runCount - 1) + '/' + q.parallel + ') Aborted ' + queue + ' (' + q.items.length + ' remaining)');
267
282
  }
268
283
  }
269
284
  }
270
- } finally {
271
- q.removeAbortSignal(abort)
285
+ }
286
+ finally {
287
+ q.removeAbortSignal(abort);
272
288
  }
273
289
 
274
- q.runCount -= 1
275
- await this.runNext(queue)
290
+ q.runCount -= 1;
291
+ await this.runNext(queue);
276
292
  }
277
293
  }