clever-queue 0.1.2 → 0.2.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/.gitlab-ci.yml +80 -0
- package/README.md +66 -6
- package/dist/engine/index.d.ts +14 -10
- package/dist/engine/index.js +45 -46
- package/dist/engine/index.js.map +1 -1
- package/dist/engine/interfaces.d.ts +3 -2
- package/dist/engine/interfaces.js.map +1 -1
- package/dist/helpers/id.d.ts +2 -0
- package/dist/helpers/id.js +7 -0
- package/dist/helpers/id.js.map +1 -0
- package/dist/helpers/index.d.ts +1 -0
- package/dist/helpers/index.js +19 -8
- package/dist/helpers/index.js.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.js +25 -15
- package/dist/index.js.map +1 -1
- package/dist/{queue → queues}/index.d.ts +8 -5
- package/dist/{queue → queues}/index.js +27 -33
- package/dist/queues/index.js.map +1 -0
- package/dist/{queue → queues}/interfaces.d.ts +9 -4
- package/dist/{queue → queues}/interfaces.js +4 -2
- package/dist/queues/interfaces.js.map +1 -0
- package/dist/{runner → runners}/index.d.ts +7 -3
- package/dist/{runner → runners}/index.js +33 -15
- package/dist/runners/index.js.map +1 -0
- package/dist/{runner → runners}/interfaces.d.ts +2 -1
- package/dist/{runner → runners}/interfaces.js +1 -1
- package/dist/runners/interfaces.js.map +1 -0
- package/dist/{task → tasks}/index.d.ts +8 -2
- package/dist/{task → tasks}/index.js +27 -15
- package/dist/tasks/index.js.map +1 -0
- package/dist/{task → tasks}/interfaces.d.ts +1 -0
- package/dist/tasks/interfaces.js.map +1 -0
- package/documentation/demo_1E_1Q_1R_4T.svg +1 -0
- package/documentation/demo_1E_1Q_2R_4T.svg +1 -0
- package/documentation/demo_1E_2Q_1R_8T.svg +1 -0
- package/eslint.config.mjs +68 -68
- package/examples/package-lock.json +19 -0
- package/examples/package.json +15 -0
- package/examples/src/demo_1E_1Q_1R_4T.ts +37 -0
- package/examples/src/demo_1E_1Q_2R_4T.ts +36 -0
- package/examples/src/demo_1E_2Q_1R_8T.ts +40 -0
- package/examples/src/example00.ts +16 -0
- package/examples/src/helpers/animations.ts +295 -0
- package/examples/src/helpers/index.ts +2 -0
- package/examples/src/helpers/myAsyncTaskToExecute.ts +6 -0
- package/examples/src/helpers/svg.ts +155 -0
- package/examples/src/tsconfig.json +24 -0
- package/package.json +16 -6
- package/src/engine/index.ts +37 -48
- package/src/engine/interfaces.ts +3 -2
- package/src/helpers/id.ts +4 -0
- package/src/helpers/index.ts +1 -0
- package/src/index.ts +7 -7
- package/src/{queue → queues}/index.ts +11 -28
- package/src/{queue → queues}/interfaces.ts +4 -3
- package/src/{runner → runners}/index.ts +17 -12
- package/src/{runner → runners}/interfaces.ts +2 -1
- package/src/{task → tasks}/index.ts +11 -10
- package/src/{task → tasks}/interfaces.ts +1 -0
- package/test/issues/00001.mjs +1 -1
- package/test/miscellaneous/test.mjs +13 -13
- package/test/units/engine.mjs +5 -5
- package/test/units/queue.mjs +4 -4
- package/test/units/task.mjs +6 -6
- package/dist/errors.d.ts +0 -13
- package/dist/errors.js +0 -42
- package/dist/errors.js.map +0 -1
- package/dist/queue/index.js.map +0 -1
- package/dist/queue/interfaces.js.map +0 -1
- package/dist/runner/index.js.map +0 -1
- package/dist/runner/interfaces.js.map +0 -1
- package/dist/task/index.js.map +0 -1
- package/dist/task/interfaces.js.map +0 -1
- package/exemples/index01.js +0 -116
- package/exemples/index01.ts +0 -98
- package/exemples/index02.mjs +0 -13
- package/exemples/tsconfig.json +0 -24
- /package/dist/{task → tasks}/interfaces.js +0 -0
package/.gitlab-ci.yml
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
include:
|
|
2
|
+
|
|
3
|
+
- template: Jobs/Build.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Build.gitlab-ci.yml
|
|
4
|
+
- template: Jobs/Test.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Test.gitlab-ci.yml
|
|
5
|
+
- template: Jobs/Code-Quality.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Code-Quality.gitlab-ci.yml
|
|
6
|
+
#- template: Jobs/Code-Intelligence.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Code-Intelligence.gitlab-ci.yml
|
|
7
|
+
#- template: Jobs/Deploy.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Deploy.gitlab-ci.yml
|
|
8
|
+
#- template: Jobs/Deploy/ECS.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Deploy/ECS.gitlab-ci.yml
|
|
9
|
+
#- template: Jobs/Deploy/EC2.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Deploy/EC2.gitlab-ci.yml
|
|
10
|
+
#- template: Jobs/DAST-Default-Branch-Deploy.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/DAST-Default-Branch-Deploy.gitlab-ci.yml
|
|
11
|
+
#- template: Jobs/Browser-Performance-Testing.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Browser-Performance-Testing.gitlab-ci.yml
|
|
12
|
+
#- template: Jobs/Helm-2to3.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Helm-2to3.gitlab-ci.yml
|
|
13
|
+
#- template: Security/DAST.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Security/DAST.gitlab-ci.yml
|
|
14
|
+
#- template: Jobs/Container-Scanning.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Container-Scanning.gitlab-ci.yml
|
|
15
|
+
#- template: Jobs/Dependency-Scanning.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Dependency-Scanning.gitlab-ci.yml
|
|
16
|
+
#- template: Jobs/SAST.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/SAST.gitlab-ci.yml
|
|
17
|
+
- template: Jobs/Secret-Detection.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Secret-Detection.gitlab-ci.yml
|
|
18
|
+
|
|
19
|
+
variables:
|
|
20
|
+
NODE_VERSION: '24'
|
|
21
|
+
|
|
22
|
+
default:
|
|
23
|
+
image: node:${NODE_VERSION}
|
|
24
|
+
|
|
25
|
+
workflow:
|
|
26
|
+
rules:
|
|
27
|
+
- if: $CI_COMMIT_BRANCH
|
|
28
|
+
|
|
29
|
+
variables:
|
|
30
|
+
NPM_TOKEN: ${CI_JOB_TOKEN}
|
|
31
|
+
|
|
32
|
+
stages:
|
|
33
|
+
- build
|
|
34
|
+
- test
|
|
35
|
+
- release
|
|
36
|
+
- publish
|
|
37
|
+
|
|
38
|
+
build:
|
|
39
|
+
stage: build
|
|
40
|
+
script:
|
|
41
|
+
- npm install
|
|
42
|
+
- npm run build
|
|
43
|
+
artifacts:
|
|
44
|
+
when: always
|
|
45
|
+
paths:
|
|
46
|
+
- node_modules/
|
|
47
|
+
- dist/
|
|
48
|
+
|
|
49
|
+
test:
|
|
50
|
+
stage: test
|
|
51
|
+
needs: [build]
|
|
52
|
+
script:
|
|
53
|
+
- npm run test:junit
|
|
54
|
+
artifacts:
|
|
55
|
+
when: always
|
|
56
|
+
reports:
|
|
57
|
+
junit:
|
|
58
|
+
- junit.xml
|
|
59
|
+
|
|
60
|
+
semantic-release:
|
|
61
|
+
stage: release
|
|
62
|
+
needs: [build]
|
|
63
|
+
script:
|
|
64
|
+
- npm run semantic-release
|
|
65
|
+
rules:
|
|
66
|
+
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
67
|
+
|
|
68
|
+
publish:
|
|
69
|
+
stage: publish
|
|
70
|
+
id_tokens:
|
|
71
|
+
NPM_ID_TOKEN:
|
|
72
|
+
aud: "npm:registry.npmjs.org"
|
|
73
|
+
SIGSTORE_ID_TOKEN:
|
|
74
|
+
aud: sigstore
|
|
75
|
+
script:
|
|
76
|
+
- npm ci
|
|
77
|
+
- npm run build --if-present
|
|
78
|
+
- npm publish
|
|
79
|
+
only:
|
|
80
|
+
- tags
|
package/README.md
CHANGED
|
@@ -2,12 +2,72 @@
|
|
|
2
2
|
|
|
3
3
|
## Purpose
|
|
4
4
|
|
|
5
|
-
Queuing system for promises that handle concurring, throttling, weighting and prioritizing in a clever fashion
|
|
5
|
+
Queuing system for promises that handle concurring, throttling, weighting and prioritizing in a *clever* fashion ?
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Zero dependancies.
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
- [
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
- [X] Promises
|
|
12
|
+
- [X] Concurrency running
|
|
13
|
+
- [X] Priority & BestEffort queues
|
|
14
|
+
- [X] Weighted Queue
|
|
12
15
|
- [ ] Throttling
|
|
13
|
-
|
|
16
|
+
|
|
17
|
+
## Architecture - clever-queue implements 4 classes :
|
|
18
|
+
|
|
19
|
+
- *engine* : this is the starting point of clever-queue. You must instantiate at least one engine in your program. You may instantiate multiple engines if needed.
|
|
20
|
+
- *task* : this is what we would like to execute. It may be an async or a sync function
|
|
21
|
+
- *runner* : It is in charge of the execution of tasks. It runs tasks, one by one. You must have at least one runner in an engine (one best-effort runner is automatically created on engine instantiation). If you need concurrency running, you may instantiate as many runners as needed. You may configure each runner in a way that it will only execute tasks coming from queues that have an equal or higher priority than runner priority.
|
|
22
|
+
- *queue* : It is in charge of keeping tasks in a deterministic order (FIFO : First In, First Out by default), waiting for an available runner. You must have at least one queue in an engine. You may instantiate as many queues you need and manage priorities and weights between queues.
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
import * as cleverQueue from "clever-queue"; // import the library - no dependancies
|
|
26
|
+
|
|
27
|
+
const engine = cleverQueue.createEngine(); // create and start (by default) engine with a single best effort runner (by default)
|
|
28
|
+
const queue = engine.createQueue(); // create your first queue, with standard priority (by default) and default weight (by default)
|
|
29
|
+
|
|
30
|
+
const myAsyncTaskToExecute: cleverQueue.tasks.FunctionToExecute = async function (message: string, timeout: number) {
|
|
31
|
+
// do your stuff here - In this case, just wait for the timeout and return the message
|
|
32
|
+
await new Promise((resolve) => setTimeout(resolve, timeout));
|
|
33
|
+
return message;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
(async () => {
|
|
37
|
+
const result = await queue.createTaskAndEnqueue(() => myAsyncTaskToExecute("myValue", 1000));
|
|
38
|
+
console.log(result);
|
|
39
|
+
engine.stop(); // stop the engine when you have finished
|
|
40
|
+
})();
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Examples
|
|
44
|
+
|
|
45
|
+
### 1 x Queue / 1 x Runner / 4 x Tasks
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
const engine = cleverQueue.createEngine();
|
|
49
|
+
const queueA = engine.createQueue();
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+

|
|
53
|
+
|
|
54
|
+
### 1 x Queue / 2 x Runners / 4 x Tasks
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
const engine = cleverQueue.createEngine();
|
|
58
|
+
engine.createRunner({ priority: cleverQueue.queues.Priorities.BestEffort });
|
|
59
|
+
const queueA = engine.createQueue();
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+

|
|
63
|
+
|
|
64
|
+
### 2 x Queues / 1 x Runner / 8 x Tasks
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
const engine = cleverQueue.createEngine();
|
|
68
|
+
const queueA = engine.createQueue();
|
|
69
|
+
const queueB = engine.createQueue();
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+

|
|
73
|
+
|
package/dist/engine/index.d.ts
CHANGED
|
@@ -1,21 +1,25 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
import * as
|
|
3
|
-
import * as
|
|
1
|
+
import * as cqQueue from "../queues";
|
|
2
|
+
import * as cqRunner from "../runners";
|
|
3
|
+
import * as cqTask from "../tasks";
|
|
4
4
|
type Status = "unknown" | "initialiazing" | "running" | "stopping" | "destroying";
|
|
5
5
|
import { Options, Statistics } from "./interfaces";
|
|
6
6
|
declare class Engine {
|
|
7
7
|
#private;
|
|
8
8
|
status: Status;
|
|
9
|
-
readonly
|
|
10
|
-
|
|
9
|
+
readonly options: Options;
|
|
10
|
+
tags: {
|
|
11
|
+
[key: string]: string | number | boolean;
|
|
12
|
+
};
|
|
13
|
+
readonly runners: cqRunner.Runner[];
|
|
14
|
+
readonly queues: cqQueue.Queue[];
|
|
11
15
|
constructor(opt: Options);
|
|
12
16
|
start(): void;
|
|
13
17
|
stop(): void;
|
|
14
|
-
createQueue(options
|
|
15
|
-
createRunner(options:
|
|
16
|
-
createTask(function_:
|
|
17
|
-
getNextTask(priorityGreaterOrEqualTo: number): Promise<
|
|
18
|
+
createQueue(options?: cqQueue.Options): cqQueue.Queue;
|
|
19
|
+
createRunner(options: cqRunner.Options): cqRunner.Runner;
|
|
20
|
+
createTask(function_: cqTask.FunctionToExecute, options: cqTask.Options): cqTask.Task;
|
|
21
|
+
getNextTask(priorityGreaterOrEqualTo: number): Promise<cqTask.Task | undefined>;
|
|
18
22
|
statistics(): Statistics;
|
|
19
23
|
}
|
|
20
|
-
export { Options, Statistics, ErrorsList } from "./interfaces";
|
|
24
|
+
export { Options, Statistics, ErrorsList, LogFunction } from "./interfaces";
|
|
21
25
|
export { Engine };
|
package/dist/engine/index.js
CHANGED
|
@@ -16,20 +16,30 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
16
16
|
}) : function(o, v) {
|
|
17
17
|
o["default"] = v;
|
|
18
18
|
});
|
|
19
|
-
var __importStar = (this && this.__importStar) || function (
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
};
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
26
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
37
|
exports.Engine = exports.ErrorsList = void 0;
|
|
28
38
|
const _ = __importStar(require("../helpers"));
|
|
29
|
-
const
|
|
30
|
-
const
|
|
31
|
-
const
|
|
32
|
-
const TICK_START = 42;
|
|
39
|
+
const cqQueue = __importStar(require("../queues"));
|
|
40
|
+
const cqRunner = __importStar(require("../runners"));
|
|
41
|
+
const cqTask = __importStar(require("../tasks"));
|
|
42
|
+
const TICK_START = 42; // RANDOM ? ;-) value to avoid zero division
|
|
33
43
|
const interfaces_1 = require("./interfaces");
|
|
34
44
|
const defaultOptions = {
|
|
35
45
|
bestEffortRunners: 1,
|
|
@@ -38,18 +48,22 @@ const defaultOptions = {
|
|
|
38
48
|
};
|
|
39
49
|
class Engine {
|
|
40
50
|
status = "unknown";
|
|
51
|
+
options;
|
|
52
|
+
tags = {};
|
|
41
53
|
runners = [];
|
|
42
54
|
queues = [];
|
|
43
55
|
constructor(opt) {
|
|
44
56
|
this.status = "initialiazing";
|
|
45
|
-
|
|
46
|
-
this
|
|
57
|
+
this.options = { ...defaultOptions, ...opt };
|
|
58
|
+
if (!this.options.id)
|
|
59
|
+
this.options.id = _.Id.generate();
|
|
60
|
+
this.#checkOptionsConsistancy(this.options);
|
|
47
61
|
// create runners
|
|
48
|
-
for (let index = 0; index < (options.bestEffortRunners ?? 0); index++)
|
|
49
|
-
this.createRunner({ priority:
|
|
50
|
-
if (options.logFunction)
|
|
51
|
-
options.logFunction({ body: "engine has been initialized" });
|
|
52
|
-
if (options.autostart)
|
|
62
|
+
for (let index = 0; index < (this.options.bestEffortRunners ?? 0); index++)
|
|
63
|
+
this.createRunner({ priority: cqRunner.Priorities.BestEffort });
|
|
64
|
+
if (this.options.logFunction)
|
|
65
|
+
this.options.logFunction({ body: "engine has been initialized" });
|
|
66
|
+
if (this.options.autostart)
|
|
53
67
|
this.start();
|
|
54
68
|
}
|
|
55
69
|
start() {
|
|
@@ -62,19 +76,19 @@ class Engine {
|
|
|
62
76
|
for (const runner of this.runners)
|
|
63
77
|
runner.stop();
|
|
64
78
|
}
|
|
65
|
-
createQueue(options) {
|
|
66
|
-
const queue = new
|
|
79
|
+
createQueue(options = { priority: cqQueue.Priorities.Standard, weight: cqQueue.Weights.Default }) {
|
|
80
|
+
const queue = new cqQueue.Queue({ logFunction: options.logFunction, ...options });
|
|
67
81
|
this.queues.push(queue);
|
|
68
82
|
this.#resetLastTick(options.priority);
|
|
69
83
|
return queue;
|
|
70
84
|
}
|
|
71
85
|
createRunner(options) {
|
|
72
|
-
const runner = new
|
|
86
|
+
const runner = new cqRunner.Runner({ logFunction: options.logFunction, ...options }, this);
|
|
73
87
|
this.runners.push(runner);
|
|
74
88
|
return runner;
|
|
75
89
|
}
|
|
76
90
|
createTask(function_, options) {
|
|
77
|
-
return new
|
|
91
|
+
return new cqTask.Task(function_, { logFunction: options.logFunction, ...options });
|
|
78
92
|
}
|
|
79
93
|
#checkOptionsConsistancy(options) {
|
|
80
94
|
if (!options)
|
|
@@ -90,9 +104,13 @@ class Engine {
|
|
|
90
104
|
return result;
|
|
91
105
|
};
|
|
92
106
|
#resetLastTick(priority) {
|
|
93
|
-
for (
|
|
107
|
+
for (let i = 0; i < this.queues.length; i++) {
|
|
108
|
+
const q = this.queues[i];
|
|
94
109
|
if (q.options.priority === priority)
|
|
95
|
-
q.tick = TICK_START
|
|
110
|
+
q.tick = TICK_START
|
|
111
|
+
+ this.#getSumWeightFunction(priority) / q.options.weight // set tick to max weight / queue weight to favorize low weight queues
|
|
112
|
+
+ i / 255; // slight increment to favorize first created queues
|
|
113
|
+
}
|
|
96
114
|
}
|
|
97
115
|
#getNextWeightedQueue(priority) {
|
|
98
116
|
let minTick = Infinity;
|
|
@@ -111,31 +129,12 @@ class Engine {
|
|
|
111
129
|
result += q.tasks.length;
|
|
112
130
|
return result;
|
|
113
131
|
}
|
|
114
|
-
/*
|
|
115
|
-
async getNextTask(priorityGreaterOrEqualTo: number): Promise<Task.Task> {
|
|
116
|
-
for (let priority = Queue.Priorities.Absolute; priority <= priorityGreaterOrEqualTo; priority++) {
|
|
117
|
-
// Iterate on Each PriorityLevel From Absolute to param function
|
|
118
|
-
while (this.#howMuchTasksWaitingInQueues(priority) > 0) {
|
|
119
|
-
let task: Task.Task | undefined;
|
|
120
|
-
while (!task) {
|
|
121
|
-
const nextPriorityQueue = this.#getNextQueue(priority); // Find Next Priority Queue to process
|
|
122
|
-
if (nextPriorityQueue) {
|
|
123
|
-
nextPriorityQueue.tick += this.#getSumWeightFunction(priority) / nextPriorityQueue.options.weight; // Update tick with related weight
|
|
124
|
-
if (nextPriorityQueue.tasks.length > 0) {
|
|
125
|
-
task = nextPriorityQueue.tasks.shift(); // If queue is not empty, this is our next Task to process
|
|
126
|
-
if (task) task.runner();
|
|
127
|
-
console.log(nextPriorityQueue.options.name, nextPriorityQueue.tick);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
*/
|
|
135
132
|
async getNextTask(priorityGreaterOrEqualTo) {
|
|
133
|
+
if (this.status !== "running")
|
|
134
|
+
return undefined;
|
|
136
135
|
let task = undefined;
|
|
137
136
|
// Iterate on Each PriorityLevel From Absolute to parameter
|
|
138
|
-
for (let priority =
|
|
137
|
+
for (let priority = cqQueue.Priorities.Absolute; priority >= priorityGreaterOrEqualTo; priority--) {
|
|
139
138
|
// Check if there is task waiting of this priority level
|
|
140
139
|
while (this.#howMuchTasksWaitingInQueues(priority) > 0) {
|
|
141
140
|
// Find Next Weighted Queue of this priority level to check
|
package/dist/engine/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":";AAAA,eAAe
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import * as _ from "../helpers";
|
|
2
|
-
import * as Runner from "../
|
|
3
|
-
import * as Queue from "../
|
|
2
|
+
import * as Runner from "../runners/interfaces";
|
|
3
|
+
import * as Queue from "../runners/interfaces";
|
|
4
4
|
interface Options {
|
|
5
|
+
id?: string;
|
|
5
6
|
autostart?: boolean;
|
|
6
7
|
bestEffortRunners?: number;
|
|
7
8
|
logFunction?: _.Logs.LogFunction;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/engine/interfaces.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/engine/interfaces.ts"],"names":[],"mappings":";;;AAwBA,MAAM,UAAU,GAEZ;IACF,+BAA+B,EAAE,EAAE,IAAI,EAAE,iCAAiC,EAAE,OAAO,EAAE,iDAAiD,EAAE;IACxI,4CAA4C,EAAE,EAAE,IAAI,EAAE,8CAA8C,EAAE,OAAO,EAAE,yDAAyD,EAAE;CAC3K,CAAC;AAI4B,gCAAU"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id.js","sourceRoot":"","sources":["../../src/helpers/id.ts"],"names":[],"mappings":";;AAGS,4BAAQ;AAHjB,SAAS,QAAQ;IACf,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC7D,CAAC"}
|
package/dist/helpers/index.d.ts
CHANGED
package/dist/helpers/index.js
CHANGED
|
@@ -15,16 +15,27 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.Traces = exports.Logs = exports.Errors = void 0;
|
|
36
|
+
exports.Id = exports.Traces = exports.Logs = exports.Errors = void 0;
|
|
27
37
|
exports.Errors = __importStar(require("./errors"));
|
|
28
38
|
exports.Logs = __importStar(require("./logs"));
|
|
29
39
|
exports.Traces = __importStar(require("./traces"));
|
|
40
|
+
exports.Id = __importStar(require("./id"));
|
|
30
41
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAmC;AACnC,+CAA+B;AAC/B,mDAAmC;AACnC,2CAA2B"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
declare function createEngine(options
|
|
3
|
-
export * as
|
|
4
|
-
export * as
|
|
5
|
-
export * as
|
|
6
|
-
export * as
|
|
1
|
+
import * as engine from "./engine";
|
|
2
|
+
declare function createEngine(options?: engine.Options): engine.Engine;
|
|
3
|
+
export * as engine from "./engine";
|
|
4
|
+
export * as runners from "./runners";
|
|
5
|
+
export * as queues from "./queues";
|
|
6
|
+
export * as tasks from "./tasks";
|
|
7
7
|
export { createEngine };
|
package/dist/index.js
CHANGED
|
@@ -15,23 +15,33 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.
|
|
36
|
+
exports.tasks = exports.queues = exports.runners = exports.engine = void 0;
|
|
27
37
|
exports.createEngine = createEngine;
|
|
28
38
|
// clever-queue
|
|
29
|
-
const
|
|
30
|
-
function createEngine(options) {
|
|
31
|
-
return new
|
|
39
|
+
const engine = __importStar(require("./engine"));
|
|
40
|
+
function createEngine(options = {}) {
|
|
41
|
+
return new engine.Engine(options);
|
|
32
42
|
}
|
|
33
|
-
exports.
|
|
34
|
-
exports.
|
|
35
|
-
exports.
|
|
36
|
-
exports.
|
|
43
|
+
exports.engine = __importStar(require("./engine"));
|
|
44
|
+
exports.runners = __importStar(require("./runners"));
|
|
45
|
+
exports.queues = __importStar(require("./queues"));
|
|
46
|
+
exports.tasks = __importStar(require("./tasks"));
|
|
37
47
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYS,oCAAY;AAZrB,eAAe;AACf,iDAAmC;AAEnC,SAAS,YAAY,CAAC,UAA0B,EAAE;IAChD,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC;AAED,mDAAmC;AACnC,qDAAqC;AACrC,mDAAmC;AACnC,iDAAiC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as cqTask from "../tasks";
|
|
2
2
|
import { Options, Statistics } from "./interfaces";
|
|
3
3
|
type GetSumWeightFunction = (priority: number) => number;
|
|
4
4
|
type Status = "unknown" | "initialiazing" | "running" | "stopping" | "destroying";
|
|
@@ -6,14 +6,17 @@ declare class Queue {
|
|
|
6
6
|
#private;
|
|
7
7
|
status: Status;
|
|
8
8
|
readonly options: Options;
|
|
9
|
+
tags: {
|
|
10
|
+
[key: string]: string | number | boolean;
|
|
11
|
+
};
|
|
9
12
|
tick: number;
|
|
10
|
-
tasks:
|
|
13
|
+
tasks: cqTask.Task[];
|
|
11
14
|
constructor(opt: Options);
|
|
12
15
|
start(): void;
|
|
13
16
|
stop(): void;
|
|
14
|
-
createTaskAndEnqueue(function_:
|
|
15
|
-
enqueue(task:
|
|
17
|
+
createTaskAndEnqueue(function_: cqTask.FunctionToExecute, options?: cqTask.Options): Promise<unknown>;
|
|
18
|
+
enqueue(task: cqTask.Task): Promise<unknown>;
|
|
16
19
|
statistics(): Statistics;
|
|
17
20
|
}
|
|
18
|
-
export { Options, Statistics, ErrorsList, Priorities } from "./interfaces";
|
|
21
|
+
export { Options, Statistics, ErrorsList, Priorities, Weights } from "./interfaces";
|
|
19
22
|
export { Queue, GetSumWeightFunction };
|
|
@@ -16,17 +16,27 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
16
16
|
}) : function(o, v) {
|
|
17
17
|
o["default"] = v;
|
|
18
18
|
});
|
|
19
|
-
var __importStar = (this && this.__importStar) || function (
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
};
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
26
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
-
exports.Queue = exports.Priorities = exports.ErrorsList = void 0;
|
|
37
|
+
exports.Queue = exports.Weights = exports.Priorities = exports.ErrorsList = void 0;
|
|
28
38
|
const _ = __importStar(require("../helpers"));
|
|
29
|
-
const
|
|
39
|
+
const cqTask = __importStar(require("../tasks"));
|
|
30
40
|
const interfaces_1 = require("./interfaces");
|
|
31
41
|
const defaultOptions = {
|
|
32
42
|
autostart: true,
|
|
@@ -37,11 +47,14 @@ const defaultOptions = {
|
|
|
37
47
|
class Queue {
|
|
38
48
|
status = "unknown";
|
|
39
49
|
options;
|
|
50
|
+
tags = {};
|
|
40
51
|
tick = 0;
|
|
41
52
|
tasks = [];
|
|
42
53
|
constructor(opt) {
|
|
43
54
|
this.status = "initialiazing";
|
|
44
55
|
this.options = this.#checkOptionsConsistancy({ ...defaultOptions, ...opt });
|
|
56
|
+
if (!this.options.id)
|
|
57
|
+
this.options.id = _.Id.generate();
|
|
45
58
|
if (this.options.autostart)
|
|
46
59
|
this.start();
|
|
47
60
|
}
|
|
@@ -60,33 +73,13 @@ class Queue {
|
|
|
60
73
|
stop() {
|
|
61
74
|
this.status = "stopping";
|
|
62
75
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
if (typeof function_ !== "function") {
|
|
66
|
-
console.error("raisong Task.ErrorsList.FunctionIsNotAFunction", Task.ErrorsList.FunctionIsNotAFunction);
|
|
67
|
-
throw new _.Errors.CQError(Task.ErrorsList.FunctionIsNotAFunction);
|
|
68
|
-
}
|
|
69
|
-
return new Promise((resolve, reject) => {
|
|
70
|
-
try {
|
|
71
|
-
const taskRunner = async (): Promise<void> => {
|
|
72
|
-
console.log("running Task");
|
|
73
|
-
const result = await function_();
|
|
74
|
-
console.log("task runned", result);
|
|
75
|
-
resolve(result);
|
|
76
|
-
};
|
|
77
|
-
const task = new Task.Task(taskRunner, {});
|
|
78
|
-
this.tasks.push(task);
|
|
79
|
-
} catch (error) {
|
|
80
|
-
reject(error);
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
*/
|
|
85
|
-
async createTaskAndEnqueue(function_, options) {
|
|
86
|
-
const task = new Task.Task(function_, options);
|
|
76
|
+
async createTaskAndEnqueue(function_, options = {}) {
|
|
77
|
+
const task = new cqTask.Task(function_, options);
|
|
87
78
|
return this.enqueue(task);
|
|
88
79
|
}
|
|
89
80
|
async enqueue(task) {
|
|
81
|
+
task.status = "queued";
|
|
82
|
+
task.queueId = this.options.id; // store queue that handle task for future references
|
|
90
83
|
return new Promise((resolve, reject) => {
|
|
91
84
|
task.resolver = resolve;
|
|
92
85
|
task.rejecter = reject;
|
|
@@ -107,4 +100,5 @@ exports.Queue = Queue;
|
|
|
107
100
|
var interfaces_2 = require("./interfaces");
|
|
108
101
|
Object.defineProperty(exports, "ErrorsList", { enumerable: true, get: function () { return interfaces_2.ErrorsList; } });
|
|
109
102
|
Object.defineProperty(exports, "Priorities", { enumerable: true, get: function () { return interfaces_2.Priorities; } });
|
|
103
|
+
Object.defineProperty(exports, "Weights", { enumerable: true, get: function () { return interfaces_2.Weights; } });
|
|
110
104
|
//# sourceMappingURL=index.js.map
|