eternal-timer 4.3.1 → 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 +27 -44
- 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 +27 -41
- 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,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;
|
|
@@ -177,7 +162,6 @@ export class TimersManager extends EventEmitter {
|
|
|
177
162
|
* @description Stops the timer checking loop.
|
|
178
163
|
* @returns Promise resolving when the loop has been stopped
|
|
179
164
|
* @example
|
|
180
|
-
* const manager = new TimersManager();
|
|
181
165
|
* await manager.checkStart(1000);
|
|
182
166
|
* // ... later, to stop checking:
|
|
183
167
|
* await manager.checkStop();
|
|
@@ -203,35 +187,37 @@ export class TimersManager extends EventEmitter {
|
|
|
203
187
|
return this.checkLock;
|
|
204
188
|
}
|
|
205
189
|
/**
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
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
|
+
*/
|
|
214
198
|
async showTimers() {
|
|
215
199
|
return this.runExclusive(async () => {
|
|
216
|
-
this.TimersStore ??= await this.createTimersStore();
|
|
217
200
|
const timersData = await this.TimersStore.loadTimers();
|
|
218
201
|
return timersData;
|
|
219
202
|
});
|
|
220
203
|
}
|
|
221
204
|
/**
|
|
222
|
-
|
|
205
|
+
* adjustRemainingTime
|
|
223
206
|
* @description Adjusts the remaining time of a timer.
|
|
224
207
|
* @param {string} id ID of the timer to modify
|
|
225
208
|
* @param {number} delay Delay in milliseconds to add/subtract from the remaining time
|
|
226
209
|
* @returns Promise resolving when the operation is complete
|
|
227
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)
|
|
228
215
|
*/
|
|
229
216
|
async adjustRemainingTime(id, delay) {
|
|
230
217
|
return this.runExclusive(async () => {
|
|
231
218
|
if (typeof delay !== "number" || !Number.isFinite(delay)) {
|
|
232
219
|
throw new Error(throwMessage.InvalidAdjustment(delay));
|
|
233
220
|
}
|
|
234
|
-
this.TimersStore ??= await this.createTimersStore();
|
|
235
221
|
const timers = await this.TimersStore.loadTimers();
|
|
236
222
|
const index = timers.findIndex(t => t.id === id);
|
|
237
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"}
|