eternal-timer 4.3.0 → 5.0.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 +26 -22
- package/dist/cjs/TimersManager/JSONLTimersManager.d.ts +22 -7
- package/dist/cjs/TimersManager/JSONLTimersManager.d.ts.map +1 -1
- package/dist/cjs/TimersManager/JSONLTimersManager.js +44 -9
- package/dist/cjs/TimersManager/JSONLTimersManager.js.map +1 -1
- package/dist/cjs/TimersManager/PlainTextTimersManager.d.ts +19 -4
- package/dist/cjs/TimersManager/PlainTextTimersManager.d.ts.map +1 -1
- package/dist/cjs/TimersManager/PlainTextTimersManager.js +43 -6
- package/dist/cjs/TimersManager/PlainTextTimersManager.js.map +1 -1
- package/dist/cjs/TimersManager/TimersManager.d.ts +24 -25
- package/dist/cjs/TimersManager/TimersManager.d.ts.map +1 -1
- package/dist/cjs/TimersManager/TimersManager.js +38 -47
- package/dist/cjs/TimersManager/TimersManager.js.map +1 -1
- package/dist/cjs/searchRoot.d.ts +1 -1
- package/dist/cjs/searchRoot.d.ts.map +1 -1
- package/dist/cjs/searchRoot.js +13 -7
- package/dist/cjs/searchRoot.js.map +1 -1
- package/dist/esm/TimersManager/JSONLTimersManager.d.ts +22 -7
- package/dist/esm/TimersManager/JSONLTimersManager.d.ts.map +1 -1
- package/dist/esm/TimersManager/JSONLTimersManager.js +41 -9
- package/dist/esm/TimersManager/JSONLTimersManager.js.map +1 -1
- package/dist/esm/TimersManager/PlainTextTimersManager.d.ts +19 -4
- package/dist/esm/TimersManager/PlainTextTimersManager.d.ts.map +1 -1
- package/dist/esm/TimersManager/PlainTextTimersManager.js +40 -6
- package/dist/esm/TimersManager/PlainTextTimersManager.js.map +1 -1
- package/dist/esm/TimersManager/TimersManager.d.ts +24 -25
- package/dist/esm/TimersManager/TimersManager.d.ts.map +1 -1
- package/dist/esm/TimersManager/TimersManager.js +38 -44
- package/dist/esm/TimersManager/TimersManager.js.map +1 -1
- package/dist/esm/searchRoot.d.ts +1 -1
- package/dist/esm/searchRoot.d.ts.map +1 -1
- package/dist/esm/searchRoot.js +13 -7
- package/dist/esm/searchRoot.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimersManager.d.ts","sourceRoot":"","sources":["../../../src/TimersManager/TimersManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TimersManager.d.ts","sourceRoot":"","sources":["../../../src/TimersManager/TimersManager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD;;;;;;;;GAQG;AACH,8BAAsB,aAAa,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,SAAS,MAAM,CAAE,SAAQ,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC;IAC9G,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAGxC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAS;IAGrC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;IAE/C,SAAS,CAAC,OAAO,EAAE,OAAO,CAAS;IAEnC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAGtD,OAAO,CAAC,KAAK,CAAoC;IACjD,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC;IAM9C,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAE3B;;;;;;;OAOG;IACH,SAAS,aAAa,SAAS,EAAE,MAAM;IAKvC;;;;;;;;;;;;;;OAcM;IACO,WAAW,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IA6BhF;;;;;;;;OAQM;IACO,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAenD;;;;;;;;OAQG;IACU,UAAU,CACtB,QAAQ,GAAE,MAAY,GACpB,OAAO,CAAC,IAAI,CAAC;IAsDhB;;;;;;;;OAQG;IACU,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IASvC;;;;;;;;OAQG;IACH,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED;;;;;;;;OAQG;IACU,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IAOrD;;;;;;;;;;;QAWO;IACM,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAwB1E"}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import path from "path";
|
|
2
|
-
import fs from "fs";
|
|
3
1
|
import { v4 as uuidv4 } from "uuid";
|
|
4
|
-
import searchRoot from "../searchRoot.js";
|
|
5
2
|
import { TimersStore } from "../TimersStore/TimersStore.js";
|
|
6
3
|
import { EventEmitter } from "../EventEmitter.js";
|
|
7
4
|
import { throwMessage } from "../throwMessage.js";
|
|
@@ -16,10 +13,13 @@ import { throwMessage } from "../throwMessage.js";
|
|
|
16
13
|
*/
|
|
17
14
|
export class TimersManager extends EventEmitter {
|
|
18
15
|
timerfiledir;
|
|
16
|
+
// lock if the check loop is running, or not. This is used to prevent multiple check loops from running simultaneously and to indicate whether a file operation is in progress (e.g. loading or saving timers).
|
|
19
17
|
checkLock = false;
|
|
18
|
+
// Interval id of the check loop. If the loop is not running, this is undefined.
|
|
20
19
|
interval;
|
|
20
|
+
// Indicates whether the check loop is running. This is used to control the loop and to prevent starting multiple loops simultaneously.
|
|
21
21
|
running = false;
|
|
22
|
-
|
|
22
|
+
// A simple promise queue to ensure that file operations are performed sequentially, preventing race conditions
|
|
23
23
|
queue = Promise.resolve();
|
|
24
24
|
runExclusive(fn) {
|
|
25
25
|
const p = this.queue.then(fn);
|
|
@@ -27,27 +27,16 @@ export class TimersManager extends EventEmitter {
|
|
|
27
27
|
return p;
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
*/
|
|
30
|
+
* constructor
|
|
31
|
+
* @param {string} timerfile timer file path.
|
|
32
|
+
* @description Initializes the TimersManager instance.
|
|
33
|
+
* @deprecated This constructor is deprecated. Please use the static `create` method instead, which performs necessary asynchronous initialization. The constructor will be made private in a future release.
|
|
34
|
+
* @example
|
|
35
|
+
* const manager = new TimersManager("/path/to/timers"); // Uses specified timer file path
|
|
36
|
+
*/
|
|
38
37
|
constructor(timerfile) {
|
|
39
38
|
super();
|
|
40
|
-
|
|
41
|
-
this.timerfiledir = path.resolve(rootDir, timerfile ?? this.getDefaultFilename());
|
|
42
|
-
if (!this.timerfiledir.startsWith(rootDir)) {
|
|
43
|
-
throw new Error(throwMessage.FilePathinvalid);
|
|
44
|
-
}
|
|
45
|
-
try {
|
|
46
|
-
fs.accessSync(this.timerfiledir);
|
|
47
|
-
}
|
|
48
|
-
catch {
|
|
49
|
-
fs.writeFileSync(this.timerfiledir, "");
|
|
50
|
-
}
|
|
39
|
+
this.timerfiledir = timerfile;
|
|
51
40
|
}
|
|
52
41
|
/**
|
|
53
42
|
* createTimer
|
|
@@ -57,16 +46,15 @@ export class TimersManager extends EventEmitter {
|
|
|
57
46
|
* @throws If length is invalid (e.g. length < 0) or file operation fails
|
|
58
47
|
* @example
|
|
59
48
|
* // For PlainTextTimersManager
|
|
60
|
-
* const manager =
|
|
49
|
+
* const manager = await PlainTextTimersManager.create();
|
|
61
50
|
* const newTimerId = await manager.createTimer(5000); // Create a 5-second timer
|
|
62
51
|
*
|
|
63
52
|
* // For JSONLTimersManager
|
|
64
|
-
* const jsonlManager =
|
|
53
|
+
* const jsonlManager = await JSONLTimersManager.create<{ title: string }>();
|
|
65
54
|
* const jsonlTimerId = await jsonlManager.createTimer({ length: 10000, extra: { title: "My JSONL Timer" } }); // Create a 10-second timer with extra data
|
|
66
55
|
*/
|
|
67
56
|
async createTimer(options) {
|
|
68
57
|
return this.runExclusive(async () => {
|
|
69
|
-
this.TimersStore ??= await this.createTimersStore();
|
|
70
58
|
if (this.type === "JSONL" && typeof options === "number") {
|
|
71
59
|
throw new Error(throwMessage.NoExtra);
|
|
72
60
|
}
|
|
@@ -100,7 +88,6 @@ export class TimersManager extends EventEmitter {
|
|
|
100
88
|
*/
|
|
101
89
|
async removeTimer(id) {
|
|
102
90
|
return this.runExclusive(async () => {
|
|
103
|
-
this.TimersStore ??= await this.createTimersStore();
|
|
104
91
|
const timers = await this.TimersStore.loadTimers();
|
|
105
92
|
const index = timers.findIndex(t => t.id === id);
|
|
106
93
|
if (index === -1 || timers[index] === undefined) {
|
|
@@ -118,14 +105,12 @@ export class TimersManager extends EventEmitter {
|
|
|
118
105
|
* @returns Promise<void> that resolves when the loop has been started
|
|
119
106
|
* @throws If file operation fails during checking
|
|
120
107
|
* @example
|
|
121
|
-
* const manager = new TimersManager();
|
|
122
108
|
* await manager.checkStart(1000); // Check for expired timers every 1 second
|
|
123
109
|
*/
|
|
124
110
|
async checkStart(interval = 200) {
|
|
125
111
|
if (this.running)
|
|
126
112
|
return;
|
|
127
113
|
this.running = true;
|
|
128
|
-
this.TimersStore ??= await this.createTimersStore();
|
|
129
114
|
const loop = async () => {
|
|
130
115
|
if (!this.running)
|
|
131
116
|
return;
|
|
@@ -150,7 +135,12 @@ export class TimersManager extends EventEmitter {
|
|
|
150
135
|
return expired;
|
|
151
136
|
});
|
|
152
137
|
for (const timer of expiredTimers) {
|
|
153
|
-
|
|
138
|
+
try {
|
|
139
|
+
await this.emit("expired", timer);
|
|
140
|
+
}
|
|
141
|
+
catch (e) {
|
|
142
|
+
await this.emit("errored", e instanceof Error ? e : new Error(String(e)));
|
|
143
|
+
}
|
|
154
144
|
}
|
|
155
145
|
}
|
|
156
146
|
catch (e) {
|
|
@@ -159,17 +149,19 @@ export class TimersManager extends EventEmitter {
|
|
|
159
149
|
}
|
|
160
150
|
finally {
|
|
161
151
|
this.checkLock = false;
|
|
152
|
+
if (this.running) {
|
|
153
|
+
this.interval = setTimeout(loop, interval);
|
|
154
|
+
}
|
|
162
155
|
}
|
|
163
156
|
};
|
|
164
157
|
this.emit("started", void 0);
|
|
165
|
-
this.interval =
|
|
158
|
+
this.interval = setTimeout(loop, interval);
|
|
166
159
|
}
|
|
167
160
|
/**
|
|
168
161
|
* checkStop
|
|
169
162
|
* @description Stops the timer checking loop.
|
|
170
163
|
* @returns Promise resolving when the loop has been stopped
|
|
171
164
|
* @example
|
|
172
|
-
* const manager = new TimersManager();
|
|
173
165
|
* await manager.checkStart(1000);
|
|
174
166
|
* // ... later, to stop checking:
|
|
175
167
|
* await manager.checkStop();
|
|
@@ -177,7 +169,7 @@ export class TimersManager extends EventEmitter {
|
|
|
177
169
|
async checkStop() {
|
|
178
170
|
this.running = false;
|
|
179
171
|
if (this.interval) {
|
|
180
|
-
|
|
172
|
+
clearTimeout(this.interval);
|
|
181
173
|
this.interval = undefined;
|
|
182
174
|
}
|
|
183
175
|
this.emit("stopped", void 0);
|
|
@@ -195,35 +187,37 @@ export class TimersManager extends EventEmitter {
|
|
|
195
187
|
return this.checkLock;
|
|
196
188
|
}
|
|
197
189
|
/**
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
190
|
+
* showTimers
|
|
191
|
+
* @description Retrieves all active timers.
|
|
192
|
+
* @returns Array of `Timer` objects
|
|
193
|
+
* @throws If file operation fails
|
|
194
|
+
* @example
|
|
195
|
+
* const timers = await manager.showTimers();
|
|
196
|
+
* console.log(JSON.stringify(timers));
|
|
197
|
+
*/
|
|
206
198
|
async showTimers() {
|
|
207
199
|
return this.runExclusive(async () => {
|
|
208
|
-
this.TimersStore ??= await this.createTimersStore();
|
|
209
200
|
const timersData = await this.TimersStore.loadTimers();
|
|
210
201
|
return timersData;
|
|
211
202
|
});
|
|
212
203
|
}
|
|
213
204
|
/**
|
|
214
|
-
|
|
205
|
+
* adjustRemainingTime
|
|
215
206
|
* @description Adjusts the remaining time of a timer.
|
|
216
207
|
* @param {string} id ID of the timer to modify
|
|
217
208
|
* @param {number} delay Delay in milliseconds to add/subtract from the remaining time
|
|
218
209
|
* @returns Promise resolving when the operation is complete
|
|
219
210
|
* @throws If file operation fails
|
|
211
|
+
* @example
|
|
212
|
+
* const timer = await manager.createTimer(10000); // Create a 10-second timer
|
|
213
|
+
* await manager.adjustRemainingTime(timer, -2000); // Subtract 2 seconds from the remaining time (now 8 seconds left)
|
|
214
|
+
* await manager.adjustRemainingTime(timer, 3000); // Add 3 seconds to the remaining time (now 11 seconds left)
|
|
220
215
|
*/
|
|
221
216
|
async adjustRemainingTime(id, delay) {
|
|
222
217
|
return this.runExclusive(async () => {
|
|
223
218
|
if (typeof delay !== "number" || !Number.isFinite(delay)) {
|
|
224
219
|
throw new Error(throwMessage.InvalidAdjustment(delay));
|
|
225
220
|
}
|
|
226
|
-
this.TimersStore ??= await this.createTimersStore();
|
|
227
221
|
const timers = await this.TimersStore.loadTimers();
|
|
228
222
|
const index = timers.findIndex(t => t.id === id);
|
|
229
223
|
if (index === -1 || timers[index] === undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimersManager.js","sourceRoot":"","sources":["../../../src/TimersManager/TimersManager.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"TimersManager.js","sourceRoot":"","sources":["../../../src/TimersManager/TimersManager.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/searchRoot.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"searchRoot.d.ts","sourceRoot":"","sources":["../../src/searchRoot.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,
|
|
1
|
+
{"version":3,"file":"searchRoot.d.ts","sourceRoot":"","sources":["../../src/searchRoot.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAA8B,UAAU,oBAavC"}
|
package/dist/esm/searchRoot.js
CHANGED
|
@@ -1,17 +1,23 @@
|
|
|
1
|
-
import fs from "fs";
|
|
1
|
+
import fs from "fs/promises";
|
|
2
2
|
import path from "path";
|
|
3
3
|
/**
|
|
4
4
|
* searchRoot
|
|
5
5
|
* @description searching root directly of the project
|
|
6
6
|
* @returns directly of the project(string)
|
|
7
7
|
*/
|
|
8
|
-
export default function searchRoot() {
|
|
8
|
+
export default async function searchRoot() {
|
|
9
9
|
let dir = process.cwd();
|
|
10
|
-
while (
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
while (true) {
|
|
11
|
+
try {
|
|
12
|
+
await fs.access(path.join(dir, "package.json"));
|
|
13
|
+
return dir;
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
const parent = path.dirname(dir);
|
|
17
|
+
if (parent === dir)
|
|
18
|
+
break;
|
|
19
|
+
dir = parent;
|
|
20
|
+
}
|
|
15
21
|
}
|
|
16
22
|
return dir;
|
|
17
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"searchRoot.js","sourceRoot":"","sources":["../../src/searchRoot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"searchRoot.js","sourceRoot":"","sources":["../../src/searchRoot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;;;GAIG;AACH,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,UAAU;IACvC,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACxB,OAAO,IAAI,EAAE,CAAC;QACb,IAAI,CAAC;YACJ,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;YAChD,OAAO,GAAG,CAAC;QACZ,CAAC;QAAC,MAAM,CAAC;YACR,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,MAAM,KAAK,GAAG;gBAAE,MAAM;YAC1B,GAAG,GAAG,MAAM,CAAC;QACd,CAAC;IACF,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC"}
|