not-node 6.5.18 → 6.5.20

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/.husky/pre-commit CHANGED
@@ -1,4 +1 @@
1
- #!/usr/bin/env sh
2
- . "$(dirname -- "$0")/_/husky.sh"
3
-
4
1
  npm test
package/index.js CHANGED
@@ -37,6 +37,8 @@ module.exports.Enrich = require("./src/model/enrich");
37
37
  module.exports.Routine = require("./src/model/routine");
38
38
  /** Common functions */
39
39
  module.exports.Common = require("./src/common");
40
+ /** Task Runner */
41
+ module.exports.TaskRunner = require("./src/task.runner.js");
40
42
  /** Fields library manager */
41
43
  module.exports.Fields = require("./src/fields");
42
44
  /** Application generic helpers */
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "not-node",
3
- "version": "6.5.18",
3
+ "version": "6.5.20",
4
4
  "description": "node complimentary part for client side notFramework.",
5
5
  "main": "index.js",
6
6
  "scripts": {
7
- "test": "mocha --require mocha-suppress-logs --reporter spec --timeout 12000",
7
+ "test": "mocha --exit --require mocha-suppress-logs --reporter spec --timeout 12000",
8
8
  "lint": "eslint ./src --fix",
9
9
  "pretest": "eslint ./src",
10
10
  "docs": "jsdoc -c jsdoc.json",
package/src/domain.js CHANGED
@@ -59,7 +59,6 @@ class notDomain extends EventEmitter {
59
59
  constructor(options) {
60
60
  super();
61
61
  this.#options = options;
62
-
63
62
  return this;
64
63
  }
65
64
 
@@ -138,8 +137,8 @@ class notDomain extends EventEmitter {
138
137
 
139
138
  /**
140
139
  * Returns route
141
- * @param {string} name 'moduleName//routeName//functionName' ('not-user//user//add')
142
- * @return {function} route
140
+ * @param {string} name 'moduleName//routeName//functionName' ('not-user//user//add')
141
+ * @return {function} route
143
142
  **/
144
143
  getRoute(name) {
145
144
  if (name.indexOf("//") > 0) {
@@ -0,0 +1,95 @@
1
+ const MIN_TASK_CHECK_INTERVAL = 3600;
2
+
3
+ class TaskRunner {
4
+ static #logger = console;
5
+ static #runEvery = 3600;
6
+ static #checkEvery = 3500; //every hour
7
+ static #int = setInterval(TaskRunner.#check, TaskRunner.#checkEvery * 1000);
8
+ static #tasks = [];
9
+
10
+ static setLogger(logger) {
11
+ TaskRunner.#logger = logger;
12
+ }
13
+
14
+ static #create(id, task, tag) {
15
+ return {
16
+ id,
17
+ task,
18
+ tag,
19
+ count: 0,
20
+ lastRunnedAt: -1,
21
+ };
22
+ }
23
+
24
+ static add(task, tag) {
25
+ const id = Math.random();
26
+ if (!tag) {
27
+ tag = `task#${TaskRunner.#tasks.length + 1}`;
28
+ }
29
+ TaskRunner.#tasks.push(TaskRunner.#create(id, task, tag));
30
+ }
31
+
32
+ static remove(id) {
33
+ const task = TaskRunner.#tasks.find((item) => item.id === id);
34
+ if (task) {
35
+ TaskRunner.#tasks.splice(TaskRunner.#tasks.indexOf(task), 1);
36
+ return true;
37
+ }
38
+ return false;
39
+ }
40
+
41
+ static clear() {
42
+ this.#tasks = [];
43
+ }
44
+
45
+ static async #check() {
46
+ try {
47
+ const runners = TaskRunner.#tasks
48
+ .filter(TaskRunner.#taskShouldBeRunned)
49
+ .map(TaskRunner.#taskToPromise);
50
+ await Promise.allSettled(runners);
51
+ } catch (e) {
52
+ TaskRunner.#logger.error("Task Set Failed", new Date(), e);
53
+ }
54
+ }
55
+
56
+ static async #taskToPromise(taskItem) {
57
+ const { tag } = taskItem;
58
+ try {
59
+ await taskItem.task();
60
+ taskItem.lastRunnedAt = Date.now();
61
+ taskItem.count += 1;
62
+ } catch (e) {
63
+ TaskRunner.#logger.error("Task Failed", tag, new Date(), e);
64
+ }
65
+ }
66
+
67
+ static #taskShouldBeRunned(taskItem) {
68
+ if (taskItem.count === 0) {
69
+ return true;
70
+ }
71
+ return taskItem.lastRunnedAt < Date.now() - TaskRunner.#runEvery;
72
+ }
73
+
74
+ static stop() {
75
+ clearInterval(TaskRunner.#int);
76
+ }
77
+
78
+ static start() {
79
+ TaskRunner.#int = setInterval(
80
+ TaskRunner.#check,
81
+ TaskRunner.#checkEvery * 1000
82
+ );
83
+ }
84
+
85
+ static setInterval(int = MIN_TASK_CHECK_INTERVAL) {
86
+ if (isNaN(int) || int < MIN_TASK_CHECK_INTERVAL) {
87
+ return false;
88
+ }
89
+ TaskRunner.#checkEvery = int;
90
+ TaskRunner.stop();
91
+ TaskRunner.start();
92
+ }
93
+ }
94
+
95
+ module.exports = TaskRunner;
package/.eslintignore DELETED
@@ -1,4 +0,0 @@
1
- /node_modules/**
2
- src/rollup.js
3
- src/repos.js
4
- src/lib.js