eternal-timer 3.0.0 → 4.1.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/README.md +145 -35
- package/dist/cjs/EventEmitter.d.ts +12 -0
- package/dist/cjs/EventEmitter.d.ts.map +1 -0
- package/dist/cjs/EventEmitter.js +50 -0
- package/dist/cjs/EventEmitter.js.map +1 -0
- package/dist/cjs/TimersManager/JSONLTimersManager.d.ts.map +1 -1
- package/dist/cjs/TimersManager/JSONLTimersManager.js +6 -3
- package/dist/cjs/TimersManager/JSONLTimersManager.js.map +1 -1
- package/dist/cjs/TimersManager/TimersManager.d.ts +30 -29
- package/dist/cjs/TimersManager/TimersManager.d.ts.map +1 -1
- package/dist/cjs/TimersManager/TimersManager.js +58 -54
- package/dist/cjs/TimersManager/TimersManager.js.map +1 -1
- package/dist/cjs/TimersStore/JSONLTimersStore.d.ts.map +1 -1
- package/dist/cjs/TimersStore/JSONLTimersStore.js +2 -1
- package/dist/cjs/TimersStore/JSONLTimersStore.js.map +1 -1
- package/dist/cjs/TimersStore/PlainTextTimersStore.d.ts.map +1 -1
- package/dist/cjs/TimersStore/PlainTextTimersStore.js +2 -1
- package/dist/cjs/TimersStore/PlainTextTimersStore.js.map +1 -1
- package/dist/cjs/TimersStore/TimersStore.d.ts.map +1 -1
- package/dist/cjs/TimersStore/TimersStore.js +4 -3
- package/dist/cjs/TimersStore/TimersStore.js.map +1 -1
- package/dist/cjs/throwMessage.d.ts +12 -0
- package/dist/cjs/throwMessage.d.ts.map +1 -0
- package/dist/cjs/throwMessage.js +15 -0
- package/dist/cjs/throwMessage.js.map +1 -0
- package/dist/cjs/types.d.ts +14 -0
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/esm/EventEmitter.d.ts +12 -0
- package/dist/esm/EventEmitter.d.ts.map +1 -0
- package/dist/esm/EventEmitter.js +46 -0
- package/dist/esm/EventEmitter.js.map +1 -0
- package/dist/esm/TimersManager/JSONLTimersManager.d.ts.map +1 -1
- package/dist/esm/TimersManager/JSONLTimersManager.js +6 -3
- package/dist/esm/TimersManager/JSONLTimersManager.js.map +1 -1
- package/dist/esm/TimersManager/TimersManager.d.ts +30 -29
- package/dist/esm/TimersManager/TimersManager.d.ts.map +1 -1
- package/dist/esm/TimersManager/TimersManager.js +58 -54
- package/dist/esm/TimersManager/TimersManager.js.map +1 -1
- package/dist/esm/TimersStore/JSONLTimersStore.d.ts.map +1 -1
- package/dist/esm/TimersStore/JSONLTimersStore.js +2 -1
- package/dist/esm/TimersStore/JSONLTimersStore.js.map +1 -1
- package/dist/esm/TimersStore/PlainTextTimersStore.d.ts.map +1 -1
- package/dist/esm/TimersStore/PlainTextTimersStore.js +2 -1
- package/dist/esm/TimersStore/PlainTextTimersStore.js.map +1 -1
- package/dist/esm/TimersStore/TimersStore.d.ts.map +1 -1
- package/dist/esm/TimersStore/TimersStore.js +4 -3
- package/dist/esm/TimersStore/TimersStore.js.map +1 -1
- package/dist/esm/throwMessage.d.ts +12 -0
- package/dist/esm/throwMessage.d.ts.map +1 -0
- package/dist/esm/throwMessage.js +12 -0
- package/dist/esm/throwMessage.js.map +1 -0
- package/dist/esm/types.d.ts +14 -0
- package/dist/esm/types.d.ts.map +1 -1
- package/package.json +2 -5
- package/dist/cjs/Log.d.ts +0 -8
- package/dist/cjs/Log.d.ts.map +0 -1
- package/dist/cjs/Log.js +0 -61
- package/dist/cjs/Log.js.map +0 -1
- package/dist/esm/Log.d.ts +0 -8
- package/dist/esm/Log.d.ts.map +0 -1
- package/dist/esm/Log.js +0 -24
- package/dist/esm/Log.js.map +0 -1
|
@@ -8,7 +8,8 @@ const path_1 = __importDefault(require("path"));
|
|
|
8
8
|
const fs_1 = __importDefault(require("fs"));
|
|
9
9
|
const uuid_1 = require("uuid");
|
|
10
10
|
const searchRoot_js_1 = __importDefault(require("../searchRoot.js"));
|
|
11
|
-
const
|
|
11
|
+
const EventEmitter_js_1 = require("../EventEmitter.js");
|
|
12
|
+
const throwMessage_js_1 = require("../throwMessage.js");
|
|
12
13
|
/**
|
|
13
14
|
* TimersManager
|
|
14
15
|
* @description
|
|
@@ -18,7 +19,7 @@ const Log_js_1 = require("../Log.js");
|
|
|
18
19
|
* - Timers are persisted in a file
|
|
19
20
|
* - Expired timers are detected by polling
|
|
20
21
|
*/
|
|
21
|
-
class TimersManager {
|
|
22
|
+
class TimersManager extends EventEmitter_js_1.EventEmitter {
|
|
22
23
|
timerfiledir;
|
|
23
24
|
checkLock = false;
|
|
24
25
|
TimersStore = null;
|
|
@@ -31,17 +32,18 @@ class TimersManager {
|
|
|
31
32
|
/**
|
|
32
33
|
* constructor
|
|
33
34
|
* @description Initializes the TimersManager instance. If the timer file does not exist, an empty file is created.
|
|
34
|
-
* @param {string} [
|
|
35
|
+
* @param {string} [timerfile] (string, optional) Configuration timer file path and it is treated as the timer file path.
|
|
35
36
|
* @throws If file access or creation fails
|
|
36
37
|
* @example
|
|
37
38
|
* const manager = new TimersManager(); // Uses default timer file path
|
|
38
39
|
* const manager = new TimersManager("/path/to/timers.txt"); // Uses specified timer file path
|
|
39
40
|
*/
|
|
40
|
-
constructor(
|
|
41
|
+
constructor(timerfile) {
|
|
42
|
+
super();
|
|
41
43
|
const rootDir = (0, searchRoot_js_1.default)();
|
|
42
|
-
this.timerfiledir = path_1.default.resolve(rootDir,
|
|
44
|
+
this.timerfiledir = path_1.default.resolve(rootDir, timerfile ?? this.getDefaultFilename());
|
|
43
45
|
if (!this.timerfiledir.startsWith(rootDir)) {
|
|
44
|
-
throw new Error(
|
|
46
|
+
throw new Error(throwMessage_js_1.throwMessage.FilePathinvalid);
|
|
45
47
|
}
|
|
46
48
|
try {
|
|
47
49
|
fs_1.default.accessSync(this.timerfiledir);
|
|
@@ -53,23 +55,27 @@ class TimersManager {
|
|
|
53
55
|
/**
|
|
54
56
|
* createTimer
|
|
55
57
|
* @description Creates a new timer.
|
|
56
|
-
* @param {
|
|
58
|
+
* @param {CreateTimerOptions<T, Extra>} options Timer duration in milliseconds for PlainText or an object with length and extra for JSONL.
|
|
57
59
|
* @returns Promise that resolves to the timer ID (UUID)
|
|
58
|
-
* @throws If length is invalid(e.g. length < 0) or file operation fails
|
|
60
|
+
* @throws If length is invalid (e.g. length < 0) or file operation fails
|
|
59
61
|
* @example
|
|
60
|
-
*
|
|
61
|
-
* const
|
|
62
|
-
*
|
|
62
|
+
* // For PlainTextTimersManager
|
|
63
|
+
* const manager = new PlainTextTimersManager();
|
|
64
|
+
* const newTimerId = await manager.createTimer(5000); // Create a 5-second timer
|
|
65
|
+
*
|
|
66
|
+
* // For JSONLTimersManager
|
|
67
|
+
* const jsonlManager = new JSONLTimersManager<{ title: string }>();
|
|
68
|
+
* const jsonlTimerId = await jsonlManager.createTimer({ length: 10000, extra: { title: "My JSONL Timer" } }); // Create a 10-second timer with extra data
|
|
63
69
|
*/
|
|
64
70
|
async createTimer(options) {
|
|
65
71
|
return this.runExclusive(async () => {
|
|
66
72
|
this.TimersStore ??= await this.createTimersStore();
|
|
67
73
|
if (this.type === "JSONL" && typeof options === "number") {
|
|
68
|
-
throw new Error(
|
|
74
|
+
throw new Error(throwMessage_js_1.throwMessage.NoExtra);
|
|
69
75
|
}
|
|
70
76
|
let length = typeof options === "object" ? options.length : options;
|
|
71
77
|
if (length < 0)
|
|
72
|
-
throw new Error(
|
|
78
|
+
throw new Error(throwMessage_js_1.throwMessage.InvalidLength(length));
|
|
73
79
|
length = Math.trunc(length);
|
|
74
80
|
const id = (0, uuid_1.v4)();
|
|
75
81
|
const now = Date.now();
|
|
@@ -83,6 +89,7 @@ class TimersManager {
|
|
|
83
89
|
: {}),
|
|
84
90
|
};
|
|
85
91
|
await this.TimersStore.appendTimer(newTimerData);
|
|
92
|
+
await this.emit("created", newTimerData);
|
|
86
93
|
return id;
|
|
87
94
|
});
|
|
88
95
|
}
|
|
@@ -100,37 +107,35 @@ class TimersManager {
|
|
|
100
107
|
this.TimersStore ??= await this.createTimersStore();
|
|
101
108
|
const timers = await this.TimersStore.loadTimers();
|
|
102
109
|
const index = timers.findIndex(t => t.id === id);
|
|
103
|
-
if (index === -1) {
|
|
104
|
-
throw new Error(
|
|
110
|
+
if (index === -1 || timers[index] === undefined) {
|
|
111
|
+
throw new Error(throwMessage_js_1.throwMessage.NotFound(id));
|
|
105
112
|
}
|
|
106
113
|
timers.splice(index, 1);
|
|
107
114
|
await this.TimersStore.saveTimers(timers);
|
|
115
|
+
await this.emit("removed", timers[index]);
|
|
108
116
|
return;
|
|
109
117
|
});
|
|
110
118
|
}
|
|
111
119
|
/**
|
|
112
|
-
*
|
|
113
|
-
* @description Starts
|
|
114
|
-
*
|
|
115
|
-
* The
|
|
116
|
-
* @
|
|
117
|
-
* @param {number} [interval=200] (number, optional): Check interval in milliseconds (default: 200ms)
|
|
118
|
-
* @throws If file operation fails
|
|
119
|
-
* @returns {Promise<NodeJS.Timeout>} intervalId interval id of checkTimers
|
|
120
|
+
* checkStart
|
|
121
|
+
* @description Starts the timer checking loop. This method should be called once after creating an instance of TimersManager to detect expired timers.
|
|
122
|
+
* @param {number} [interval=200] Polling interval in milliseconds (default: 200ms)
|
|
123
|
+
* @returns The interval ID which can be used to stop the loop with clearInterval
|
|
124
|
+
* @throws If file operation fails during checking
|
|
120
125
|
* @example
|
|
121
|
-
* const
|
|
122
|
-
*
|
|
123
|
-
* });
|
|
126
|
+
* const manager = new TimersManager();
|
|
127
|
+
* manager.checkStart(1000); // Check for expired timers every 1 second
|
|
124
128
|
*/
|
|
125
|
-
async
|
|
129
|
+
async checkStart(interval = 200) {
|
|
126
130
|
this.TimersStore ??= await this.createTimersStore();
|
|
127
131
|
const loop = async () => {
|
|
128
|
-
if (this.checkLock)
|
|
132
|
+
if (this.checkLock)
|
|
129
133
|
return;
|
|
130
|
-
}
|
|
131
134
|
this.checkLock = true;
|
|
135
|
+
let expiredTimers = [];
|
|
132
136
|
try {
|
|
133
|
-
|
|
137
|
+
expiredTimers = await this.runExclusive(async () => {
|
|
138
|
+
await this.emit("interval", void 0);
|
|
134
139
|
const allTimers = await this.TimersStore.loadTimers();
|
|
135
140
|
const now = Date.now();
|
|
136
141
|
const expired = [];
|
|
@@ -148,35 +153,33 @@ class TimersManager {
|
|
|
148
153
|
}
|
|
149
154
|
return expired;
|
|
150
155
|
});
|
|
151
|
-
for (const timerData of expiredTimers) {
|
|
152
|
-
try {
|
|
153
|
-
await callback(timerData);
|
|
154
|
-
}
|
|
155
|
-
catch (e) {
|
|
156
|
-
await Log_js_1.Log.ensureLogger();
|
|
157
|
-
Log_js_1.Log.loggerInstance?.error(`Error in callback of checkTimers: ${e}`);
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
156
|
}
|
|
161
157
|
catch (e) {
|
|
162
|
-
|
|
163
|
-
Log_js_1.Log.loggerInstance?.error(`Error when checking timer: ${e}`);
|
|
164
|
-
}
|
|
165
|
-
finally {
|
|
158
|
+
this.emit("errored", e instanceof Error ? e : new Error(String(e))).catch(() => { });
|
|
166
159
|
this.checkLock = false;
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
for (const timer of expiredTimers) {
|
|
163
|
+
try {
|
|
164
|
+
await this.emit("expired", timer);
|
|
165
|
+
}
|
|
166
|
+
catch (e) {
|
|
167
|
+
await this.emit("errored", e instanceof Error ? e : new Error(String(e)));
|
|
168
|
+
}
|
|
167
169
|
}
|
|
170
|
+
this.checkLock = false;
|
|
168
171
|
};
|
|
169
172
|
return setInterval(loop, interval);
|
|
170
173
|
}
|
|
171
174
|
/**
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
175
|
+
* showTimers
|
|
176
|
+
* @description Retrieves all active timers.
|
|
177
|
+
* @returns Array of `Timer` objects
|
|
178
|
+
* @throws If file operation fails
|
|
179
|
+
* @example
|
|
180
|
+
* const timers = await manager.showTimers();
|
|
181
|
+
* console.log(JSON.stringify(timers))
|
|
182
|
+
*/
|
|
180
183
|
async showTimers() {
|
|
181
184
|
return this.runExclusive(async () => {
|
|
182
185
|
this.TimersStore ??= await this.createTimersStore();
|
|
@@ -197,16 +200,17 @@ class TimersManager {
|
|
|
197
200
|
this.TimersStore ??= await this.createTimersStore();
|
|
198
201
|
const timers = await this.TimersStore.loadTimers();
|
|
199
202
|
const index = timers.findIndex(t => t.id === id);
|
|
200
|
-
if (index === -1) {
|
|
201
|
-
throw new Error(
|
|
203
|
+
if (index === -1 || timers[index] === undefined) {
|
|
204
|
+
throw new Error(throwMessage_js_1.throwMessage.NotFound(id));
|
|
202
205
|
}
|
|
206
|
+
const old = { ...timers[index] };
|
|
203
207
|
const now = Date.now();
|
|
204
208
|
const timer = timers[index];
|
|
205
209
|
const remaining = Math.max(0, timer.stop - now);
|
|
206
210
|
const newRemaining = Math.max(0, remaining + delay);
|
|
207
211
|
timer.stop = now + newRemaining;
|
|
208
|
-
timers[index] = timer;
|
|
209
212
|
await this.TimersStore.saveTimers(timers);
|
|
213
|
+
await this.emit("updated", { old, new: timer });
|
|
210
214
|
return;
|
|
211
215
|
});
|
|
212
216
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimersManager.js","sourceRoot":"","sources":["../../../src/TimersManager/TimersManager.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,4CAAoB;AACpB,+BAAoC;AAEpC,qEAA0C;AAG1C,
|
|
1
|
+
{"version":3,"file":"TimersManager.js","sourceRoot":"","sources":["../../../src/TimersManager/TimersManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JSONLTimersStore.d.ts","sourceRoot":"","sources":["../../../src/TimersStore/JSONLTimersStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"JSONLTimersStore.d.ts","sourceRoot":"","sources":["../../../src/TimersStore/JSONLTimersStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,qBAAa,gBAAgB,CAAC,KAAK,SAAS,MAAM,CAAE,SAAQ,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC;gBAGrF,SAAS,EAAE,MAAM;IAKlB;;;;;;OAMG;cACsB,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAe7E,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,GAAG,MAAM;IAO1D,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;CAMlE"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.JSONLTimersStore = void 0;
|
|
4
4
|
const uuid_1 = require("uuid");
|
|
5
5
|
const TimersStore_js_1 = require("./TimersStore.js");
|
|
6
|
+
const throwMessage_js_1 = require("../throwMessage.js");
|
|
6
7
|
class JSONLTimersStore extends TimersStore_js_1.TimersStore {
|
|
7
8
|
constructor(timerfile) {
|
|
8
9
|
super(timerfile);
|
|
@@ -16,7 +17,7 @@ class JSONLTimersStore extends TimersStore_js_1.TimersStore {
|
|
|
16
17
|
*/
|
|
17
18
|
async checkTimerfileSyntax(timers) {
|
|
18
19
|
const throwing = () => {
|
|
19
|
-
throw new Error(
|
|
20
|
+
throw new Error(throwMessage_js_1.throwMessage.InvalidSyntax);
|
|
20
21
|
};
|
|
21
22
|
for (const timer of timers) {
|
|
22
23
|
if (Object.keys(timer).length !== 4)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JSONLTimersStore.js","sourceRoot":"","sources":["../../../src/TimersStore/JSONLTimersStore.ts"],"names":[],"mappings":";;;AAAA,+BAAgC;AAGhC,qDAA+C;
|
|
1
|
+
{"version":3,"file":"JSONLTimersStore.js","sourceRoot":"","sources":["../../../src/TimersStore/JSONLTimersStore.ts"],"names":[],"mappings":";;;AAAA,+BAAgC;AAGhC,qDAA+C;AAC/C,wDAAkD;AAElD,MAAa,gBAAuC,SAAQ,4BAA2B;IAEtF,YACC,SAAiB;QAEjB,KAAK,CAAC,SAAS,CAAC,CAAC;IAClB,CAAC;IAED;;;;;;OAMG;IACgB,KAAK,CAAC,oBAAoB,CAAC,MAA+B;QAC5E,MAAM,QAAQ,GAAG,GAAG,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,8BAAY,CAAC,aAAa,CAAC,CAAC;QAC7C,CAAC,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC5B,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,QAAQ,EAAE,CAAC;YAChD,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,QAAQ,EAAE,CAAC;YAChD,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,IAAA,eAAQ,EAAC,KAAK,CAAC,EAAE,CAAC;gBAAE,QAAQ,EAAE,CAAC;YACjD,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;gBAAE,QAAQ,EAAE,CAAC;YAChE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;gBAAE,QAAQ,EAAE,CAAC;YAC9D,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI;gBAAE,QAAQ,EAAE,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;gBAAE,QAAQ,EAAE,CAAC;QACjE,CAAC;IACF,CAAC;IAEe,iBAAiB,CAAC,MAA+B;QAChE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,CAAC;QACX,CAAC;QACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAEe,WAAW,CAAC,IAAY;QACvC,OAAO,IAAI;aACT,KAAK,CAAC,OAAO,CAAC;aACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC7B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAA0B,CAAC,CAAC;IAC5D,CAAC;CACD;AA3CD,4CA2CC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlainTextTimersStore.d.ts","sourceRoot":"","sources":["../../../src/TimersStore/PlainTextTimersStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"PlainTextTimersStore.d.ts","sourceRoot":"","sources":["../../../src/TimersStore/PlainTextTimersStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,qBAAa,oBAAqB,SAAQ,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC;gBAGxE,SAAS,EAAE,MAAM;IAKlB;;;;;;OAMM;cACmB,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAclF,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,GAAG,MAAM;IAO/D,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE;CAavE"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.PlainTextTimersStore = void 0;
|
|
4
4
|
const uuid_1 = require("uuid");
|
|
5
5
|
const TimersStore_js_1 = require("./TimersStore.js");
|
|
6
|
+
const throwMessage_js_1 = require("../throwMessage.js");
|
|
6
7
|
class PlainTextTimersStore extends TimersStore_js_1.TimersStore {
|
|
7
8
|
constructor(timerfile) {
|
|
8
9
|
super(timerfile);
|
|
@@ -16,7 +17,7 @@ class PlainTextTimersStore extends TimersStore_js_1.TimersStore {
|
|
|
16
17
|
*/
|
|
17
18
|
async checkTimerfileSyntax(timers) {
|
|
18
19
|
const throwing = () => {
|
|
19
|
-
throw new Error(
|
|
20
|
+
throw new Error(throwMessage_js_1.throwMessage.InvalidSyntax);
|
|
20
21
|
};
|
|
21
22
|
for (const timer of timers) {
|
|
22
23
|
if (Object.keys(timer).length !== 3)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlainTextTimersStore.js","sourceRoot":"","sources":["../../../src/TimersStore/PlainTextTimersStore.ts"],"names":[],"mappings":";;;AAAA,+BAAgC;AAGhC,qDAA+C;
|
|
1
|
+
{"version":3,"file":"PlainTextTimersStore.js","sourceRoot":"","sources":["../../../src/TimersStore/PlainTextTimersStore.ts"],"names":[],"mappings":";;;AAAA,+BAAgC;AAGhC,qDAA+C;AAC/C,wDAAkD;AAElD,MAAa,oBAAqB,SAAQ,4BAAgC;IAEzE,YACC,SAAiB;QAEjB,KAAK,CAAC,SAAS,CAAC,CAAC;IAClB,CAAC;IAED;;;;;;OAMM;IACa,KAAK,CAAC,oBAAoB,CAAC,MAAoC;QACjF,MAAM,QAAQ,GAAG,GAAG,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,8BAAY,CAAC,aAAa,CAAC,CAAC;QAC7C,CAAC,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC5B,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,QAAQ,EAAE,CAAC;YAChD,IAAI,CAAC,IAAA,eAAQ,EAAC,KAAK,CAAC,EAAE,CAAC;gBAAE,QAAQ,EAAE,CAAC;YACpC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAAE,QAAQ,EAAE,CAAC;YAC3C,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAAE,QAAQ,EAAE,CAAC;YAC1C,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,QAAQ,EAAE,CAAC;QAC1D,CAAC;QACD,OAAO;IACR,CAAC;IAEe,iBAAiB,CAAC,MAAoC;QACrE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,CAAC;QACX,CAAC;QACD,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnF,CAAC;IAEe,WAAW,CAAC,IAAY;QACvC,OAAO,IAAI;aACT,KAAK,CAAC,OAAO,CAAC;aACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC7B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACb,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChD,OAAO;gBACN,EAAE,EAAE,EAAG;gBACP,KAAK,EAAE,MAAM,CAAC,QAAS,CAAC;gBACxB,IAAI,EAAE,MAAM,CAAC,OAAQ,CAAC;aACQ,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC;CACD;AAjDD,oDAiDC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimersStore.d.ts","sourceRoot":"","sources":["../../../src/TimersStore/TimersStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"TimersStore.d.ts","sourceRoot":"","sources":["../../../src/TimersStore/TimersStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGtD,8BAAsB,WAAW,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,SAAS,MAAM;IAC5E,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAErC,SAAS,aACR,SAAS,EAAE,MAAM;IAKL,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IAWxC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAUpD,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAS5D,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;aACjE,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,MAAM;aACvD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE;CAC5D"}
|
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.TimersStore = void 0;
|
|
7
7
|
const promises_1 = __importDefault(require("fs/promises"));
|
|
8
|
+
const throwMessage_js_1 = require("../throwMessage.js");
|
|
8
9
|
class TimersStore {
|
|
9
10
|
timerfile;
|
|
10
11
|
constructor(timerfile) {
|
|
@@ -18,7 +19,7 @@ class TimersStore {
|
|
|
18
19
|
return timersData;
|
|
19
20
|
}
|
|
20
21
|
catch (e) {
|
|
21
|
-
throw new Error(
|
|
22
|
+
throw new Error(throwMessage_js_1.throwMessage.LoadTimerData, { cause: e });
|
|
22
23
|
}
|
|
23
24
|
}
|
|
24
25
|
async saveTimers(timers) {
|
|
@@ -27,7 +28,7 @@ class TimersStore {
|
|
|
27
28
|
await promises_1.default.writeFile(this.timerfile, data, "utf-8");
|
|
28
29
|
}
|
|
29
30
|
catch (e) {
|
|
30
|
-
throw new Error(
|
|
31
|
+
throw new Error(throwMessage_js_1.throwMessage.SaveTimerData, { cause: e });
|
|
31
32
|
}
|
|
32
33
|
}
|
|
33
34
|
async appendTimer(timer) {
|
|
@@ -36,7 +37,7 @@ class TimersStore {
|
|
|
36
37
|
return;
|
|
37
38
|
}
|
|
38
39
|
catch (e) {
|
|
39
|
-
throw new Error(
|
|
40
|
+
throw new Error(throwMessage_js_1.throwMessage.AppendTimerData, { cause: e });
|
|
40
41
|
}
|
|
41
42
|
}
|
|
42
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimersStore.js","sourceRoot":"","sources":["../../../src/TimersStore/TimersStore.ts"],"names":[],"mappings":";;;;;;AAAA,2DAA6B;
|
|
1
|
+
{"version":3,"file":"TimersStore.js","sourceRoot":"","sources":["../../../src/TimersStore/TimersStore.ts"],"names":[],"mappings":";;;;;;AAAA,2DAA6B;AAG7B,wDAAkD;AAElD,MAAsB,WAAW;IACb,SAAS,CAAS;IAErC,YACC,SAAiB;QAEjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,CAAC;IAEM,KAAK,CAAC,UAAU;QACtB,IAAI,CAAC;YACJ,MAAM,IAAI,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACxD,MAAM,UAAU,GAAsB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC7D,MAAM,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;YAC5C,OAAO,UAAU,CAAC;QACnB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,8BAAY,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC;IACF,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,MAAyB;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAE5C,IAAI,CAAC;YACJ,MAAM,kBAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,8BAAY,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC;IACF,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,KAAsB;QAC9C,IAAI,CAAC;YACJ,MAAM,kBAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAC5E,OAAO;QACR,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,8BAAY,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;IACF,CAAC;CAKD;AA1CD,kCA0CC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const throwMessage: {
|
|
2
|
+
NotFound: (id: string) => string;
|
|
3
|
+
ChangeExtra: string;
|
|
4
|
+
FilePathinvalid: string;
|
|
5
|
+
NoExtra: string;
|
|
6
|
+
InvalidLength: (length: number) => string;
|
|
7
|
+
InvalidSyntax: string;
|
|
8
|
+
LoadTimerData: string;
|
|
9
|
+
SaveTimerData: string;
|
|
10
|
+
AppendTimerData: string;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=throwMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"throwMessage.d.ts","sourceRoot":"","sources":["../../src/throwMessage.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;mBACT,MAAM;;;;4BAIG,MAAM;;;;;CAK9B,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.throwMessage = void 0;
|
|
4
|
+
exports.throwMessage = {
|
|
5
|
+
NotFound: (id) => `Timer with id ${id} not found`,
|
|
6
|
+
ChangeExtra: "Error when changing extra",
|
|
7
|
+
FilePathinvalid: "Timer file path must be within the project directory",
|
|
8
|
+
NoExtra: "Cannot create timer without extra fields in JSONL",
|
|
9
|
+
InvalidLength: (length) => `Invalid length: ${length}`,
|
|
10
|
+
InvalidSyntax: "Timer file's syntax is wrong",
|
|
11
|
+
LoadTimerData: "Error when loading timer data",
|
|
12
|
+
SaveTimerData: "Error when saving timer data",
|
|
13
|
+
AppendTimerData: "Error when appending timer data",
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=throwMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"throwMessage.js","sourceRoot":"","sources":["../../src/throwMessage.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG;IAC3B,QAAQ,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,iBAAiB,EAAE,YAAY;IACzD,WAAW,EAAE,2BAA2B;IACxC,eAAe,EAAE,sDAAsD;IACvE,OAAO,EAAE,mDAAmD;IAC5D,aAAa,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,mBAAmB,MAAM,EAAE;IAC9D,aAAa,EAAE,8BAA8B;IAC7C,aAAa,EAAE,+BAA+B;IAC9C,aAAa,EAAE,8BAA8B;IAC7C,eAAe,EAAE,iCAAiC;CAClD,CAAC"}
|
package/dist/cjs/types.d.ts
CHANGED
|
@@ -13,4 +13,18 @@ export type CreateTimerOptions<T extends StorageType, Extra extends object> = T
|
|
|
13
13
|
length: number;
|
|
14
14
|
extra: Extra;
|
|
15
15
|
} : T extends "PlainText" ? number : never;
|
|
16
|
+
export type TimerEvents<T extends StorageType, Extra extends object> = {
|
|
17
|
+
expired: Timer<T, Extra>;
|
|
18
|
+
errored: Error;
|
|
19
|
+
interval: void;
|
|
20
|
+
created: Timer<T, Extra>;
|
|
21
|
+
removed: Timer<T, Extra>;
|
|
22
|
+
updated: {
|
|
23
|
+
old: Timer<T, Extra>;
|
|
24
|
+
new: Timer<T, Extra>;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
export type ListenerMap<T extends StorageType, Extra extends object> = {
|
|
28
|
+
[K in keyof TimerEvents<T, Extra>]?: ((payload: TimerEvents<T, Extra>[K]) => void | Promise<void>)[];
|
|
29
|
+
};
|
|
16
30
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/cjs/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,WAAW,CAAC;AAEhD,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,SAAS,MAAM,IACzD,CAAC,SAAS,OAAO,GACX;IACI,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAA;CACf,GACD;IACI,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEZ,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,SAAS,MAAM,IAAI,CAAC,SAAS,OAAO,GACzF;IACI,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAA;CACf,GACD,CAAC,SAAS,WAAW,GACnB,MAAM,GACN,KAAK,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,WAAW,CAAC;AAEhD,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,SAAS,MAAM,IACzD,CAAC,SAAS,OAAO,GACX;IACI,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAA;CACf,GACD;IACI,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEZ,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,SAAS,MAAM,IAAI,CAAC,SAAS,OAAO,GACzF;IACI,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAA;CACf,GACD,CAAC,SAAS,WAAW,GACnB,MAAM,GACN,KAAK,CAAC;AAEd,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,SAAS,MAAM,IAAI;IACrE,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACxB,OAAO,EAAE,KAAK,CAAA;IACd,QAAQ,EAAE,IAAI,CAAA;IACd,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACxB,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACxB,OAAO,EAAE;QAAE,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAAC,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;KAAE,CAAA;CACxD,CAAA;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,SAAS,MAAM,IAAI;KACpE,CAAC,IAAI,MAAM,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CACpC,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAC9B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;CAC7B,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { StorageType, TimerEvents } from "./types.js";
|
|
2
|
+
export declare class EventEmitter<T extends StorageType, Extra extends object> {
|
|
3
|
+
protected listeners: {
|
|
4
|
+
[K in keyof TimerEvents<T, Extra>]?: ((payload: TimerEvents<T, Extra>[K]) => void | Promise<void>)[];
|
|
5
|
+
};
|
|
6
|
+
on<K extends keyof TimerEvents<T, Extra>>(event: K, listener: (payload: TimerEvents<T, Extra>[K]) => void | Promise<void>): void;
|
|
7
|
+
once<K extends keyof TimerEvents<T, Extra>>(event: K, listener: (payload: TimerEvents<T, Extra>[K]) => void | Promise<void>): void;
|
|
8
|
+
off<K extends keyof TimerEvents<T, Extra>>(event: K, listener: (payload: TimerEvents<T, Extra>[K]) => void | Promise<void>): void;
|
|
9
|
+
offAll<K extends keyof TimerEvents<T, Extra>>(event: K): void;
|
|
10
|
+
protected emit<K extends keyof TimerEvents<T, Extra>>(event: K, payload: TimerEvents<T, Extra>[K]): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=EventEmitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventEmitter.d.ts","sourceRoot":"","sources":["../../src/EventEmitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE3D,qBAAa,YAAY,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,SAAS,MAAM;IACpE,SAAS,CAAC,SAAS,EAAE;SACb,CAAC,IAAI,MAAM,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAClC,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAChC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;KAC/B,CAAM;IAEH,EAAE,CAAC,CAAC,SAAS,MAAM,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,EAC9C,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACnE,IAAI;IAOA,IAAI,CAAC,CAAC,SAAS,MAAM,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,EAChD,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACnE,IAAI;IAQA,GAAG,CAAC,CAAC,SAAS,MAAM,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,EAC/C,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACnE,IAAI;IAUA,MAAM,CAAC,CAAC,SAAS,MAAM,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,EAClD,KAAK,EAAE,CAAC,GACN,IAAI;cAIS,IAAI,CAAC,CAAC,SAAS,MAAM,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,EACzD,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,IAAI,CAAC;CAoBhB"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export class EventEmitter {
|
|
2
|
+
listeners = {};
|
|
3
|
+
on(event, listener) {
|
|
4
|
+
if (!this.listeners[event]) {
|
|
5
|
+
this.listeners[event] = [];
|
|
6
|
+
}
|
|
7
|
+
this.listeners[event].push(listener);
|
|
8
|
+
}
|
|
9
|
+
once(event, listener) {
|
|
10
|
+
const wrapper = (payload) => {
|
|
11
|
+
this.off(event, wrapper);
|
|
12
|
+
return listener(payload);
|
|
13
|
+
};
|
|
14
|
+
this.on(event, wrapper);
|
|
15
|
+
}
|
|
16
|
+
off(event, listener) {
|
|
17
|
+
const listeners = this.listeners[event];
|
|
18
|
+
if (!listeners)
|
|
19
|
+
return;
|
|
20
|
+
const index = listeners.indexOf(listener);
|
|
21
|
+
if (index !== -1) {
|
|
22
|
+
listeners.splice(index, 1);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
offAll(event) {
|
|
26
|
+
this.listeners[event] = [];
|
|
27
|
+
}
|
|
28
|
+
async emit(event, payload) {
|
|
29
|
+
const listeners = this.listeners[event];
|
|
30
|
+
if (!listeners?.length)
|
|
31
|
+
return;
|
|
32
|
+
const errors = [];
|
|
33
|
+
await Promise.all(listeners.map(async (l) => {
|
|
34
|
+
try {
|
|
35
|
+
await l(payload);
|
|
36
|
+
}
|
|
37
|
+
catch (e) {
|
|
38
|
+
errors.push(e);
|
|
39
|
+
}
|
|
40
|
+
}));
|
|
41
|
+
if (errors.length > 0) {
|
|
42
|
+
throw new AggregateError(errors, `Errors in event "${event}"`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=EventEmitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventEmitter.js","sourceRoot":"","sources":["../../src/EventEmitter.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,YAAY;IACd,SAAS,GAIZ,EAAE,CAAC;IAEH,EAAE,CACR,KAAQ,EACR,QAAqE;QAErE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC5B,CAAC;QACK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAEM,IAAI,CACV,KAAQ,EACR,QAAqE;QAErE,MAAM,OAAO,GAAG,CAAC,OAAiC,EAAE,EAAE;YACrD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACzB,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACzB,CAAC;IAEM,GAAG,CACT,KAAQ,EACR,QAAqE;QAErE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YAClB,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5B,CAAC;IACF,CAAC;IAEM,MAAM,CACZ,KAAQ;QAER,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IAC5B,CAAC;IAES,KAAK,CAAC,IAAI,CACnB,KAAQ,EACR,OAAiC;QAEjC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,EAAE,MAAM;YAAE,OAAO;QAE/B,MAAM,MAAM,GAAc,EAAE,CAAC;QAE7B,MAAM,OAAO,CAAC,GAAG,CAChB,SAAS,CAAC,GAAG,CAAC,KAAK,EAAC,CAAC,EAAC,EAAE;YACvB,IAAI,CAAC;gBACJ,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC;YAClB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACZ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,CAAC;QACF,CAAC,CAAC,CACF,CAAC;QAEF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE,oBAAoB,KAAK,GAAG,CAAC,CAAC;QAChE,CAAC;IACF,CAAC;CACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JSONLTimersManager.d.ts","sourceRoot":"","sources":["../../../src/TimersManager/JSONLTimersManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"JSONLTimersManager.d.ts","sourceRoot":"","sources":["../../../src/TimersManager/JSONLTimersManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAGtE;;;;;;;;GAQG;AACH,qBAAa,kBAAkB,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC;IACnG,UAAmB,WAAW,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAQ;cAEnD,kBAAkB,IAAI,MAAM;cAItB,iBAAiB,IAAI,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAI9E,UAAmB,IAAI,EAAE,OAAO,CAAoB;IAEpD;;;;;;;;;;;OAWG;IACU,WAAW,CACvB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,KAAK,GACb,OAAO,CAAC,IAAI,CAAC;CAqBhB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { TimersManager } from "./TimersManager.js";
|
|
2
2
|
import { JSONLTimersStore } from "../TimersStore/JSONLTimersStore.js";
|
|
3
|
+
import { throwMessage } from "../throwMessage.js";
|
|
3
4
|
/**
|
|
4
5
|
* JSONLTimersManager
|
|
5
6
|
* @description
|
|
@@ -36,14 +37,16 @@ export class JSONLTimersManager extends TimersManager {
|
|
|
36
37
|
try {
|
|
37
38
|
const timers = await this.TimersStore.loadTimers();
|
|
38
39
|
const index = timers?.findIndex(t => t.id === id);
|
|
39
|
-
if (index === -1) {
|
|
40
|
-
throw new Error(
|
|
40
|
+
if (index === -1 || timers[index] === undefined) {
|
|
41
|
+
throw new Error(throwMessage.NotFound(id));
|
|
41
42
|
}
|
|
43
|
+
const old = { ...timers[index] };
|
|
42
44
|
timers[index].extra = newExtra;
|
|
43
45
|
await this.TimersStore.saveTimers(timers);
|
|
46
|
+
await this.emit("updated", { old, new: timers[index] });
|
|
44
47
|
}
|
|
45
48
|
catch (e) {
|
|
46
|
-
throw new Error(
|
|
49
|
+
throw new Error(throwMessage.ChangeExtra, { cause: e });
|
|
47
50
|
}
|
|
48
51
|
});
|
|
49
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JSONLTimersManager.js","sourceRoot":"","sources":["../../../src/TimersManager/JSONLTimersManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"JSONLTimersManager.js","sourceRoot":"","sources":["../../../src/TimersManager/JSONLTimersManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;;;;;;;GAQG;AACH,MAAM,OAAO,kBAAkD,SAAQ,aAA6B;IAChF,WAAW,GAAmC,IAAI,CAAC;IAEnD,kBAAkB;QACpC,OAAO,eAAe,CAAC;IACxB,CAAC;IAEkB,KAAK,CAAC,iBAAiB;QACzC,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAChD,CAAC;IAEkB,IAAI,GAAY,OAAgB,CAAC;IAEpD;;;;;;;;;;;OAWG;IACI,KAAK,CAAC,WAAW,CACvB,EAAU,EACV,QAAe;QAEf,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;YACnC,IAAI,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACpD,IAAI,CAAC;gBACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;gBAEnD,MAAM,KAAK,GAAG,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBAClD,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;oBACjD,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5C,CAAC;gBAED,MAAM,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBAEjC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC;gBAC/B,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAC1C,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACzD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACzD,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;CACD"}
|