eternal-timer 4.3.1 → 5.0.1

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.
Files changed (42) hide show
  1. package/README.md +26 -22
  2. package/dist/cjs/TimersManager/JSONLTimersManager.d.ts +22 -7
  3. package/dist/cjs/TimersManager/JSONLTimersManager.d.ts.map +1 -1
  4. package/dist/cjs/TimersManager/JSONLTimersManager.js +44 -9
  5. package/dist/cjs/TimersManager/JSONLTimersManager.js.map +1 -1
  6. package/dist/cjs/TimersManager/PlainTextTimersManager.d.ts +19 -4
  7. package/dist/cjs/TimersManager/PlainTextTimersManager.d.ts.map +1 -1
  8. package/dist/cjs/TimersManager/PlainTextTimersManager.js +43 -6
  9. package/dist/cjs/TimersManager/PlainTextTimersManager.js.map +1 -1
  10. package/dist/cjs/TimersManager/TimersManager.d.ts +25 -26
  11. package/dist/cjs/TimersManager/TimersManager.d.ts.map +1 -1
  12. package/dist/cjs/TimersManager/TimersManager.js +39 -50
  13. package/dist/cjs/TimersManager/TimersManager.js.map +1 -1
  14. package/dist/cjs/searchRoot.d.ts +1 -1
  15. package/dist/cjs/searchRoot.d.ts.map +1 -1
  16. package/dist/cjs/searchRoot.js +13 -7
  17. package/dist/cjs/searchRoot.js.map +1 -1
  18. package/dist/cjs/throwMessage.d.ts +1 -0
  19. package/dist/cjs/throwMessage.d.ts.map +1 -1
  20. package/dist/cjs/throwMessage.js +1 -0
  21. package/dist/cjs/throwMessage.js.map +1 -1
  22. package/dist/esm/TimersManager/JSONLTimersManager.d.ts +22 -7
  23. package/dist/esm/TimersManager/JSONLTimersManager.d.ts.map +1 -1
  24. package/dist/esm/TimersManager/JSONLTimersManager.js +41 -9
  25. package/dist/esm/TimersManager/JSONLTimersManager.js.map +1 -1
  26. package/dist/esm/TimersManager/PlainTextTimersManager.d.ts +19 -4
  27. package/dist/esm/TimersManager/PlainTextTimersManager.d.ts.map +1 -1
  28. package/dist/esm/TimersManager/PlainTextTimersManager.js +40 -6
  29. package/dist/esm/TimersManager/PlainTextTimersManager.js.map +1 -1
  30. package/dist/esm/TimersManager/TimersManager.d.ts +25 -26
  31. package/dist/esm/TimersManager/TimersManager.d.ts.map +1 -1
  32. package/dist/esm/TimersManager/TimersManager.js +39 -47
  33. package/dist/esm/TimersManager/TimersManager.js.map +1 -1
  34. package/dist/esm/searchRoot.d.ts +1 -1
  35. package/dist/esm/searchRoot.d.ts.map +1 -1
  36. package/dist/esm/searchRoot.js +13 -7
  37. package/dist/esm/searchRoot.js.map +1 -1
  38. package/dist/esm/throwMessage.d.ts +1 -0
  39. package/dist/esm/throwMessage.d.ts.map +1 -1
  40. package/dist/esm/throwMessage.js +1 -0
  41. package/dist/esm/throwMessage.js.map +1 -1
  42. package/package.json +1 -1
@@ -13,24 +13,21 @@ import { EventEmitter } from "../EventEmitter.js";
13
13
  export declare abstract class TimersManager<T extends StorageType, Extra extends object> extends EventEmitter<T, Extra> {
14
14
  protected readonly timerfiledir: string;
15
15
  protected checkLock: boolean;
16
- protected interval: NodeJS.Timeout | undefined;
16
+ protected static intervals: Map<string, NodeJS.Timeout>;
17
17
  protected running: boolean;
18
- protected TimersStore: TimersStore<T, Extra> | null;
18
+ protected abstract TimersStore: TimersStore<T, Extra>;
19
19
  private queue;
20
20
  protected runExclusive<T>(fn: () => Promise<T>): Promise<T>;
21
- protected abstract getDefaultFilename(): string;
22
- protected abstract createTimersStore(): Promise<TimersStore<T, Extra>>;
23
21
  protected abstract type: T;
24
22
  /**
25
- * constructor
26
- * @description Initializes the TimersManager instance. If the timer file does not exist, an empty file is created.
27
- * @param {string} [timerfile] (string, optional) Configuration timer file path and it is treated as the timer file path.
28
- * @throws If file access or creation fails
29
- * @example
30
- * const manager = new TimersManager(); // Uses default timer file path
31
- * const manager = new TimersManager("/path/to/timers.txt"); // Uses specified timer file path
32
- */
33
- constructor(timerfile?: string);
23
+ * constructor
24
+ * @param {string} timerfile timer file path.
25
+ * @description Initializes the TimersManager instance.
26
+ * @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.
27
+ * @example
28
+ * const manager = new TimersManager("/path/to/timers"); // Uses specified timer file path
29
+ */
30
+ protected constructor(timerfile: string);
34
31
  /**
35
32
  * createTimer
36
33
  * @description Creates a new timer.
@@ -39,11 +36,11 @@ export declare abstract class TimersManager<T extends StorageType, Extra extends
39
36
  * @throws If length is invalid (e.g. length < 0) or file operation fails
40
37
  * @example
41
38
  * // For PlainTextTimersManager
42
- * const manager = new PlainTextTimersManager();
39
+ * const manager = await PlainTextTimersManager.create();
43
40
  * const newTimerId = await manager.createTimer(5000); // Create a 5-second timer
44
41
  *
45
42
  * // For JSONLTimersManager
46
- * const jsonlManager = new JSONLTimersManager<{ title: string }>();
43
+ * const jsonlManager = await JSONLTimersManager.create<{ title: string }>();
47
44
  * const jsonlTimerId = await jsonlManager.createTimer({ length: 10000, extra: { title: "My JSONL Timer" } }); // Create a 10-second timer with extra data
48
45
  */
49
46
  createTimer(options: CreateTimerOptions<T, Extra>): Promise<string>;
@@ -64,7 +61,6 @@ export declare abstract class TimersManager<T extends StorageType, Extra extends
64
61
  * @returns Promise<void> that resolves when the loop has been started
65
62
  * @throws If file operation fails during checking
66
63
  * @example
67
- * const manager = new TimersManager();
68
64
  * await manager.checkStart(1000); // Check for expired timers every 1 second
69
65
  */
70
66
  checkStart(interval?: number): Promise<void>;
@@ -73,7 +69,6 @@ export declare abstract class TimersManager<T extends StorageType, Extra extends
73
69
  * @description Stops the timer checking loop.
74
70
  * @returns Promise resolving when the loop has been stopped
75
71
  * @example
76
- * const manager = new TimersManager();
77
72
  * await manager.checkStart(1000);
78
73
  * // ... later, to stop checking:
79
74
  * await manager.checkStop();
@@ -90,22 +85,26 @@ export declare abstract class TimersManager<T extends StorageType, Extra extends
90
85
  */
91
86
  get isBusy(): boolean;
92
87
  /**
93
- * showTimers
94
- * @description Retrieves all active timers.
95
- * @returns Array of `Timer` objects
96
- * @throws If file operation fails
97
- * @example
98
- * const timers = await manager.showTimers();
99
- * console.log(JSON.stringify(timers))
100
- */
88
+ * showTimers
89
+ * @description Retrieves all active timers.
90
+ * @returns Array of `Timer` objects
91
+ * @throws If file operation fails
92
+ * @example
93
+ * const timers = await manager.showTimers();
94
+ * console.log(JSON.stringify(timers));
95
+ */
101
96
  showTimers(): Promise<Timer<T, Extra>[]>;
102
97
  /**
103
- * adjustRemainingTime
98
+ * adjustRemainingTime
104
99
  * @description Adjusts the remaining time of a timer.
105
100
  * @param {string} id ID of the timer to modify
106
101
  * @param {number} delay Delay in milliseconds to add/subtract from the remaining time
107
102
  * @returns Promise resolving when the operation is complete
108
103
  * @throws If file operation fails
104
+ * @example
105
+ * const timer = await manager.createTimer(10000); // Create a 10-second timer
106
+ * await manager.adjustRemainingTime(timer, -2000); // Subtract 2 seconds from the remaining time (now 8 seconds left)
107
+ * await manager.adjustRemainingTime(timer, 3000); // Add 3 seconds to the remaining time (now 11 seconds left)
109
108
  */
110
109
  adjustRemainingTime(id: string, delay: number): Promise<void>;
111
110
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TimersManager.d.ts","sourceRoot":"","sources":["../../../src/TimersManager/TimersManager.ts"],"names":[],"mappings":"AAKA,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;IACxC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAS;IAErC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;IAC/C,SAAS,CAAC,OAAO,EAAE,OAAO,CAAS;IAEnC,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,IAAI,CAAQ;IAE3D,OAAO,CAAC,KAAK,CAAoC;IACjD,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC;IAM9C,SAAS,CAAC,QAAQ,CAAC,kBAAkB,IAAI,MAAM;IAC/C,SAAS,CAAC,QAAQ,CAAC,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACtE,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAE3B;;;;;;;;QAQO;gBAEN,SAAS,CAAC,EAAE,MAAM;IAenB;;;;;;;;;;;;;;OAcM;IACO,WAAW,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IA+BhF;;;;;;;;OAQM;IACO,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBnD;;;;;;;;;OASG;IACU,UAAU,CACtB,QAAQ,GAAE,MAAY,GACpB,OAAO,CAAC,IAAI,CAAC;IAwDhB;;;;;;;;;OASG;IACU,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IASvC;;;;;;;;OAQG;IACH,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED;;;;;;;;UAQG;IACU,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IAQrD;;;;;;;QAOO;IACM,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAyB1E"}
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;IAMrC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAa;IAEpE,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;IAyDhB;;;;;;;;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,16 @@ 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;
20
- interval;
18
+ /*
19
+ // Interval id of the check loop. If the loop is not running, this is undefined.
20
+ protected interval: NodeJS.Timeout | undefined;
21
+ */
22
+ static intervals = new Map();
23
+ // Indicates whether the check loop is running. This is used to control the loop and to prevent starting multiple loops simultaneously.
21
24
  running = false;
22
- TimersStore = null;
25
+ // A simple promise queue to ensure that file operations are performed sequentially, preventing race conditions
23
26
  queue = Promise.resolve();
24
27
  runExclusive(fn) {
25
28
  const p = this.queue.then(fn);
@@ -27,27 +30,16 @@ export class TimersManager extends EventEmitter {
27
30
  return p;
28
31
  }
29
32
  /**
30
- * constructor
31
- * @description Initializes the TimersManager instance. If the timer file does not exist, an empty file is created.
32
- * @param {string} [timerfile] (string, optional) Configuration timer file path and it is treated as the timer file path.
33
- * @throws If file access or creation fails
34
- * @example
35
- * const manager = new TimersManager(); // Uses default timer file path
36
- * const manager = new TimersManager("/path/to/timers.txt"); // Uses specified timer file path
37
- */
33
+ * constructor
34
+ * @param {string} timerfile timer file path.
35
+ * @description Initializes the TimersManager instance.
36
+ * @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.
37
+ * @example
38
+ * const manager = new TimersManager("/path/to/timers"); // Uses specified timer file path
39
+ */
38
40
  constructor(timerfile) {
39
41
  super();
40
- const rootDir = searchRoot();
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
- }
42
+ this.timerfiledir = timerfile;
51
43
  }
52
44
  /**
53
45
  * createTimer
@@ -57,16 +49,15 @@ export class TimersManager extends EventEmitter {
57
49
  * @throws If length is invalid (e.g. length < 0) or file operation fails
58
50
  * @example
59
51
  * // For PlainTextTimersManager
60
- * const manager = new PlainTextTimersManager();
52
+ * const manager = await PlainTextTimersManager.create();
61
53
  * const newTimerId = await manager.createTimer(5000); // Create a 5-second timer
62
54
  *
63
55
  * // For JSONLTimersManager
64
- * const jsonlManager = new JSONLTimersManager<{ title: string }>();
56
+ * const jsonlManager = await JSONLTimersManager.create<{ title: string }>();
65
57
  * const jsonlTimerId = await jsonlManager.createTimer({ length: 10000, extra: { title: "My JSONL Timer" } }); // Create a 10-second timer with extra data
66
58
  */
67
59
  async createTimer(options) {
68
60
  return this.runExclusive(async () => {
69
- this.TimersStore ??= await this.createTimersStore();
70
61
  if (this.type === "JSONL" && typeof options === "number") {
71
62
  throw new Error(throwMessage.NoExtra);
72
63
  }
@@ -100,7 +91,6 @@ export class TimersManager extends EventEmitter {
100
91
  */
101
92
  async removeTimer(id) {
102
93
  return this.runExclusive(async () => {
103
- this.TimersStore ??= await this.createTimersStore();
104
94
  const timers = await this.TimersStore.loadTimers();
105
95
  const index = timers.findIndex(t => t.id === id);
106
96
  if (index === -1 || timers[index] === undefined) {
@@ -118,14 +108,12 @@ export class TimersManager extends EventEmitter {
118
108
  * @returns Promise<void> that resolves when the loop has been started
119
109
  * @throws If file operation fails during checking
120
110
  * @example
121
- * const manager = new TimersManager();
122
111
  * await manager.checkStart(1000); // Check for expired timers every 1 second
123
112
  */
124
113
  async checkStart(interval = 200) {
125
114
  if (this.running)
126
115
  return;
127
116
  this.running = true;
128
- this.TimersStore ??= await this.createTimersStore();
129
117
  const loop = async () => {
130
118
  if (!this.running)
131
119
  return;
@@ -165,28 +153,30 @@ export class TimersManager extends EventEmitter {
165
153
  finally {
166
154
  this.checkLock = false;
167
155
  if (this.running) {
168
- this.interval = setTimeout(loop, interval);
156
+ TimersManager.intervals.set(this.timerfiledir, setTimeout(loop, interval));
169
157
  }
170
158
  }
171
159
  };
172
160
  this.emit("started", void 0);
173
- this.interval = setTimeout(loop, interval);
161
+ if (TimersManager.intervals.has(this.timerfiledir)) {
162
+ throw new Error(throwMessage.AlreadyExists);
163
+ }
164
+ TimersManager.intervals.set(this.timerfiledir, setTimeout(loop, interval));
174
165
  }
175
166
  /**
176
167
  * checkStop
177
168
  * @description Stops the timer checking loop.
178
169
  * @returns Promise resolving when the loop has been stopped
179
170
  * @example
180
- * const manager = new TimersManager();
181
171
  * await manager.checkStart(1000);
182
172
  * // ... later, to stop checking:
183
173
  * await manager.checkStop();
184
174
  */
185
175
  async checkStop() {
186
176
  this.running = false;
187
- if (this.interval) {
188
- clearTimeout(this.interval);
189
- this.interval = undefined;
177
+ if (TimersManager.intervals.has(this.timerfiledir)) {
178
+ clearTimeout(TimersManager.intervals.get(this.timerfiledir));
179
+ TimersManager.intervals.delete(this.timerfiledir);
190
180
  }
191
181
  this.emit("stopped", void 0);
192
182
  }
@@ -203,35 +193,37 @@ export class TimersManager extends EventEmitter {
203
193
  return this.checkLock;
204
194
  }
205
195
  /**
206
- * showTimers
207
- * @description Retrieves all active timers.
208
- * @returns Array of `Timer` objects
209
- * @throws If file operation fails
210
- * @example
211
- * const timers = await manager.showTimers();
212
- * console.log(JSON.stringify(timers))
213
- */
196
+ * showTimers
197
+ * @description Retrieves all active timers.
198
+ * @returns Array of `Timer` objects
199
+ * @throws If file operation fails
200
+ * @example
201
+ * const timers = await manager.showTimers();
202
+ * console.log(JSON.stringify(timers));
203
+ */
214
204
  async showTimers() {
215
205
  return this.runExclusive(async () => {
216
- this.TimersStore ??= await this.createTimersStore();
217
206
  const timersData = await this.TimersStore.loadTimers();
218
207
  return timersData;
219
208
  });
220
209
  }
221
210
  /**
222
- * adjustRemainingTime
211
+ * adjustRemainingTime
223
212
  * @description Adjusts the remaining time of a timer.
224
213
  * @param {string} id ID of the timer to modify
225
214
  * @param {number} delay Delay in milliseconds to add/subtract from the remaining time
226
215
  * @returns Promise resolving when the operation is complete
227
216
  * @throws If file operation fails
217
+ * @example
218
+ * const timer = await manager.createTimer(10000); // Create a 10-second timer
219
+ * await manager.adjustRemainingTime(timer, -2000); // Subtract 2 seconds from the remaining time (now 8 seconds left)
220
+ * await manager.adjustRemainingTime(timer, 3000); // Add 3 seconds to the remaining time (now 11 seconds left)
228
221
  */
229
222
  async adjustRemainingTime(id, delay) {
230
223
  return this.runExclusive(async () => {
231
224
  if (typeof delay !== "number" || !Number.isFinite(delay)) {
232
225
  throw new Error(throwMessage.InvalidAdjustment(delay));
233
226
  }
234
- this.TimersStore ??= await this.createTimersStore();
235
227
  const timers = await this.TimersStore.loadTimers();
236
228
  const index = timers.findIndex(t => t.id === id);
237
229
  if (index === -1 || timers[index] === undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"TimersManager.js","sourceRoot":"","sources":["../../../src/TimersManager/TimersManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TimersManager.js","sourceRoot":"","sources":["../../../src/TimersManager/TimersManager.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,5 @@
3
3
  * @description searching root directly of the project
4
4
  * @returns directly of the project(string)
5
5
  */
6
- export default function searchRoot(): string;
6
+ export default function searchRoot(): Promise<string>;
7
7
  //# sourceMappingURL=searchRoot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"searchRoot.d.ts","sourceRoot":"","sources":["../../src/searchRoot.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,WAQjC"}
1
+ {"version":3,"file":"searchRoot.d.ts","sourceRoot":"","sources":["../../src/searchRoot.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAA8B,UAAU,oBAavC"}
@@ -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 (!fs.existsSync(path.join(dir, "package.json"))) {
11
- const parent = path.dirname(dir);
12
- if (parent === dir)
13
- break;
14
- dir = parent;
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,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU;IACjC,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACd,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC"}
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"}
@@ -9,5 +9,6 @@ export declare const throwMessage: {
9
9
  LoadTimerData: string;
10
10
  SaveTimerData: string;
11
11
  AppendTimerData: string;
12
+ AlreadyExists: string;
12
13
  };
13
14
  //# sourceMappingURL=throwMessage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"throwMessage.d.ts","sourceRoot":"","sources":["../../src/throwMessage.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;mBACT,MAAM;;;;4BAIG,MAAM;+BACH,MAAM;;;;;CAKjC,CAAC"}
1
+ {"version":3,"file":"throwMessage.d.ts","sourceRoot":"","sources":["../../src/throwMessage.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;mBACT,MAAM;;;;4BAIG,MAAM;+BACH,MAAM;;;;;;CAMjC,CAAC"}
@@ -9,5 +9,6 @@ export const throwMessage = {
9
9
  LoadTimerData: "Error when loading timer data",
10
10
  SaveTimerData: "Error when saving timer data",
11
11
  AppendTimerData: "Error when appending timer data",
12
+ AlreadyExists: "The loop is already running",
12
13
  };
13
14
  //# sourceMappingURL=throwMessage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"throwMessage.js","sourceRoot":"","sources":["../../src/throwMessage.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,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,iBAAiB,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,uBAAuB,KAAK,EAAE;IACpE,aAAa,EAAE,8BAA8B;IAC7C,aAAa,EAAE,+BAA+B;IAC9C,aAAa,EAAE,8BAA8B;IAC7C,eAAe,EAAE,iCAAiC;CAClD,CAAC"}
1
+ {"version":3,"file":"throwMessage.js","sourceRoot":"","sources":["../../src/throwMessage.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,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,iBAAiB,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,uBAAuB,KAAK,EAAE;IACpE,aAAa,EAAE,8BAA8B;IAC7C,aAAa,EAAE,+BAA+B;IAC9C,aAAa,EAAE,8BAA8B;IAC7C,eAAe,EAAE,iCAAiC;IAClD,aAAa,EAAE,6BAA6B;CAC5C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eternal-timer",
3
- "version": "4.3.1",
3
+ "version": "5.0.1",
4
4
  "description": "timer for node.js package",
5
5
  "scripts": {
6
6
  "build": "tsc -p tsconfig.esm.json && tsc -p tsconfig.cjs.json && node scripts/move-package-json.js",