async-queue-runner 0.12.0 → 0.14.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.
package/_cjs/queue.js CHANGED
@@ -2,10 +2,18 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AsyncQueue = void 0;
4
4
  const action_js_1 = require("./action.js");
5
+ const logger = {
6
+ info(message) {
7
+ console.log(message);
8
+ },
9
+ setContext(context) { },
10
+ error(e) { console.error(e); },
11
+ };
5
12
  class AsyncQueue {
6
13
  name = 'default queue name';
7
14
  queue = [];
8
15
  end;
16
+ logger;
9
17
  loopAction = false;
10
18
  context = {
11
19
  push: (actions) => this.push(actions),
@@ -22,6 +30,7 @@ class AsyncQueue {
22
30
  this.queue = opts.actions;
23
31
  this.name = opts.name;
24
32
  this.end = opts.end || (() => { });
33
+ this.logger = opts.logger || logger;
25
34
  }
26
35
  async delay(timeout) {
27
36
  return new Promise((res) => setTimeout(res, timeout));
@@ -33,7 +42,7 @@ class AsyncQueue {
33
42
  while (this.loopAction) {
34
43
  if (this.queue.length === 0) {
35
44
  this.loopAction = false;
36
- console.log('Queue stopped');
45
+ this.logger.info(`Queue(${this.name}): stopped`);
37
46
  break;
38
47
  }
39
48
  const item = this.queue.shift();
@@ -43,13 +52,14 @@ class AsyncQueue {
43
52
  this.end();
44
53
  }
45
54
  catch (e) {
46
- console.log(`Queue(${this.name}) failed`);
47
- console.error(e);
55
+ this.logger.info(`Queue(${this.name}) failed`);
56
+ this.logger.error(e);
48
57
  }
49
58
  }
50
59
  async iterate(action) {
51
60
  const actionName = action.constructor.name || 'some undefined';
52
- console.log(`Queue(${this.name}): running ${actionName} action`);
61
+ this.logger.setContext(actionName);
62
+ this.logger.info(`Queue(${this.name}): running action`);
53
63
  await action.execute(this.context);
54
64
  await this.delay(action.delay);
55
65
  }
package/_cjs/runner.js CHANGED
@@ -5,13 +5,20 @@ const queue_js_1 = require("./queue.js");
5
5
  class QueueRunner {
6
6
  queues = new Map();
7
7
  listeners = [];
8
+ logger;
9
+ constructor(opts = {}) {
10
+ if (opts.logger) {
11
+ this.logger = opts.logger;
12
+ }
13
+ }
8
14
  add(actions, context = {}, name = this.getName()) {
9
15
  const queue = new queue_js_1.AsyncQueue({
10
16
  name, actions,
11
17
  end: () => {
12
18
  this.queues.delete(name);
13
19
  this.endEvent(name);
14
- }
20
+ },
21
+ logger: this.logger,
15
22
  });
16
23
  this.queues.set(name, queue);
17
24
  queue.run(context);
package/_esm/queue.js CHANGED
@@ -2,10 +2,18 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AsyncQueue = void 0;
4
4
  const action_js_1 = require("./action.js");
5
+ const logger = {
6
+ info(message) {
7
+ console.log(message);
8
+ },
9
+ setContext(context) { },
10
+ error(e) { console.error(e); },
11
+ };
5
12
  class AsyncQueue {
6
13
  name = 'default queue name';
7
14
  queue = [];
8
15
  end;
16
+ logger;
9
17
  loopAction = false;
10
18
  context = {
11
19
  push: (actions) => this.push(actions),
@@ -22,6 +30,7 @@ class AsyncQueue {
22
30
  this.queue = opts.actions;
23
31
  this.name = opts.name;
24
32
  this.end = opts.end || (() => { });
33
+ this.logger = opts.logger || logger;
25
34
  }
26
35
  async delay(timeout) {
27
36
  return new Promise((res) => setTimeout(res, timeout));
@@ -33,7 +42,7 @@ class AsyncQueue {
33
42
  while (this.loopAction) {
34
43
  if (this.queue.length === 0) {
35
44
  this.loopAction = false;
36
- console.log('Queue stopped');
45
+ this.logger.info(`Queue(${this.name}): stopped`);
37
46
  break;
38
47
  }
39
48
  const item = this.queue.shift();
@@ -43,13 +52,14 @@ class AsyncQueue {
43
52
  this.end();
44
53
  }
45
54
  catch (e) {
46
- console.log(`Queue(${this.name}) failed`);
47
- console.error(e);
55
+ this.logger.info(`Queue(${this.name}) failed`);
56
+ this.logger.error(e);
48
57
  }
49
58
  }
50
59
  async iterate(action) {
51
60
  const actionName = action.constructor.name || 'some undefined';
52
- console.log(`Queue(${this.name}): running ${actionName} action`);
61
+ this.logger.setContext(actionName);
62
+ this.logger.info(`Queue(${this.name}): running action`);
53
63
  await action.execute(this.context);
54
64
  await this.delay(action.delay);
55
65
  }
package/_esm/runner.js CHANGED
@@ -5,13 +5,20 @@ const queue_js_1 = require("./queue.js");
5
5
  class QueueRunner {
6
6
  queues = new Map();
7
7
  listeners = [];
8
+ logger;
9
+ constructor(opts = {}) {
10
+ if (opts.logger) {
11
+ this.logger = opts.logger;
12
+ }
13
+ }
8
14
  add(actions, context = {}, name = this.getName()) {
9
15
  const queue = new queue_js_1.AsyncQueue({
10
16
  name, actions,
11
17
  end: () => {
12
18
  this.queues.delete(name);
13
19
  this.endEvent(name);
14
- }
20
+ },
21
+ logger: this.logger,
15
22
  });
16
23
  this.queues.set(name, queue);
17
24
  queue.run(context);
package/_types/queue.d.ts CHANGED
@@ -1,13 +1,20 @@
1
1
  import { IAction, QueueAction, QueueContext } from './types.js';
2
+ export interface ILogger {
3
+ info: (message: string) => void;
4
+ setContext: (context: string) => void;
5
+ error: (e: Error) => void;
6
+ }
2
7
  export type QueueOpts = {
3
8
  actions: QueueAction[];
4
9
  name: string;
5
10
  end?: () => void;
11
+ logger?: ILogger;
6
12
  };
7
13
  export declare class AsyncQueue {
8
14
  name: string;
9
15
  queue: QueueAction[];
10
16
  end: () => void;
17
+ logger: ILogger;
11
18
  loopAction: boolean;
12
19
  context: QueueContext;
13
20
  constructor(opts: QueueOpts);
@@ -1,8 +1,14 @@
1
+ import { ILogger } from "./queue.js";
1
2
  import { QueueAction } from "./types.js";
2
3
  export type EndListener = (name: string, size: number) => void;
4
+ export type RunnerOpts = {
5
+ logger?: ILogger;
6
+ };
3
7
  export declare class QueueRunner {
4
8
  queues: Map<any, any>;
5
9
  listeners: EndListener[];
10
+ logger?: ILogger;
11
+ constructor(opts?: RunnerOpts);
6
12
  add(actions: QueueAction[], context?: object, name?: string): void;
7
13
  addEndListener(listener: EndListener): void;
8
14
  endEvent(name: string): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "async-queue-runner",
3
- "version": "0.12.0",
3
+ "version": "0.14.0",
4
4
  "description": "Library to run in parallel extendable queue of tasks",
5
5
  "scripts": {
6
6
  "compile": "tsc --project ./tsconfig.json",