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.
Files changed (34) 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 +24 -25
  11. package/dist/cjs/TimersManager/TimersManager.d.ts.map +1 -1
  12. package/dist/cjs/TimersManager/TimersManager.js +27 -44
  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/esm/TimersManager/JSONLTimersManager.d.ts +22 -7
  19. package/dist/esm/TimersManager/JSONLTimersManager.d.ts.map +1 -1
  20. package/dist/esm/TimersManager/JSONLTimersManager.js +41 -9
  21. package/dist/esm/TimersManager/JSONLTimersManager.js.map +1 -1
  22. package/dist/esm/TimersManager/PlainTextTimersManager.d.ts +19 -4
  23. package/dist/esm/TimersManager/PlainTextTimersManager.d.ts.map +1 -1
  24. package/dist/esm/TimersManager/PlainTextTimersManager.js +40 -6
  25. package/dist/esm/TimersManager/PlainTextTimersManager.js.map +1 -1
  26. package/dist/esm/TimersManager/TimersManager.d.ts +24 -25
  27. package/dist/esm/TimersManager/TimersManager.d.ts.map +1 -1
  28. package/dist/esm/TimersManager/TimersManager.js +27 -41
  29. package/dist/esm/TimersManager/TimersManager.js.map +1 -1
  30. package/dist/esm/searchRoot.d.ts +1 -1
  31. package/dist/esm/searchRoot.d.ts.map +1 -1
  32. package/dist/esm/searchRoot.js +13 -7
  33. package/dist/esm/searchRoot.js.map +1 -1
  34. package/package.json +1 -1
@@ -1,13 +1,7 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.TimersManager = void 0;
7
- const path_1 = __importDefault(require("path"));
8
- const fs_1 = __importDefault(require("fs"));
9
4
  const uuid_1 = require("uuid");
10
- const searchRoot_js_1 = __importDefault(require("../searchRoot.js"));
11
5
  const EventEmitter_js_1 = require("../EventEmitter.js");
12
6
  const throwMessage_js_1 = require("../throwMessage.js");
13
7
  /**
@@ -21,10 +15,13 @@ const throwMessage_js_1 = require("../throwMessage.js");
21
15
  */
22
16
  class TimersManager extends EventEmitter_js_1.EventEmitter {
23
17
  timerfiledir;
18
+ // 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).
24
19
  checkLock = false;
20
+ // Interval id of the check loop. If the loop is not running, this is undefined.
25
21
  interval;
22
+ // Indicates whether the check loop is running. This is used to control the loop and to prevent starting multiple loops simultaneously.
26
23
  running = false;
27
- TimersStore = null;
24
+ // A simple promise queue to ensure that file operations are performed sequentially, preventing race conditions
28
25
  queue = Promise.resolve();
29
26
  runExclusive(fn) {
30
27
  const p = this.queue.then(fn);
@@ -32,27 +29,16 @@ class TimersManager extends EventEmitter_js_1.EventEmitter {
32
29
  return p;
33
30
  }
34
31
  /**
35
- * constructor
36
- * @description Initializes the TimersManager instance. If the timer file does not exist, an empty file is created.
37
- * @param {string} [timerfile] (string, optional) Configuration timer file path and it is treated as the timer file path.
38
- * @throws If file access or creation fails
39
- * @example
40
- * const manager = new TimersManager(); // Uses default timer file path
41
- * const manager = new TimersManager("/path/to/timers.txt"); // Uses specified timer file path
42
- */
32
+ * constructor
33
+ * @param {string} timerfile timer file path.
34
+ * @description Initializes the TimersManager instance.
35
+ * @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.
36
+ * @example
37
+ * const manager = new TimersManager("/path/to/timers"); // Uses specified timer file path
38
+ */
43
39
  constructor(timerfile) {
44
40
  super();
45
- const rootDir = (0, searchRoot_js_1.default)();
46
- this.timerfiledir = path_1.default.resolve(rootDir, timerfile ?? this.getDefaultFilename());
47
- if (!this.timerfiledir.startsWith(rootDir)) {
48
- throw new Error(throwMessage_js_1.throwMessage.FilePathinvalid);
49
- }
50
- try {
51
- fs_1.default.accessSync(this.timerfiledir);
52
- }
53
- catch {
54
- fs_1.default.writeFileSync(this.timerfiledir, "");
55
- }
41
+ this.timerfiledir = timerfile;
56
42
  }
57
43
  /**
58
44
  * createTimer
@@ -62,16 +48,15 @@ class TimersManager extends EventEmitter_js_1.EventEmitter {
62
48
  * @throws If length is invalid (e.g. length < 0) or file operation fails
63
49
  * @example
64
50
  * // For PlainTextTimersManager
65
- * const manager = new PlainTextTimersManager();
51
+ * const manager = await PlainTextTimersManager.create();
66
52
  * const newTimerId = await manager.createTimer(5000); // Create a 5-second timer
67
53
  *
68
54
  * // For JSONLTimersManager
69
- * const jsonlManager = new JSONLTimersManager<{ title: string }>();
55
+ * const jsonlManager = await JSONLTimersManager.create<{ title: string }>();
70
56
  * const jsonlTimerId = await jsonlManager.createTimer({ length: 10000, extra: { title: "My JSONL Timer" } }); // Create a 10-second timer with extra data
71
57
  */
72
58
  async createTimer(options) {
73
59
  return this.runExclusive(async () => {
74
- this.TimersStore ??= await this.createTimersStore();
75
60
  if (this.type === "JSONL" && typeof options === "number") {
76
61
  throw new Error(throwMessage_js_1.throwMessage.NoExtra);
77
62
  }
@@ -105,7 +90,6 @@ class TimersManager extends EventEmitter_js_1.EventEmitter {
105
90
  */
106
91
  async removeTimer(id) {
107
92
  return this.runExclusive(async () => {
108
- this.TimersStore ??= await this.createTimersStore();
109
93
  const timers = await this.TimersStore.loadTimers();
110
94
  const index = timers.findIndex(t => t.id === id);
111
95
  if (index === -1 || timers[index] === undefined) {
@@ -123,14 +107,12 @@ class TimersManager extends EventEmitter_js_1.EventEmitter {
123
107
  * @returns Promise<void> that resolves when the loop has been started
124
108
  * @throws If file operation fails during checking
125
109
  * @example
126
- * const manager = new TimersManager();
127
110
  * await manager.checkStart(1000); // Check for expired timers every 1 second
128
111
  */
129
112
  async checkStart(interval = 200) {
130
113
  if (this.running)
131
114
  return;
132
115
  this.running = true;
133
- this.TimersStore ??= await this.createTimersStore();
134
116
  const loop = async () => {
135
117
  if (!this.running)
136
118
  return;
@@ -182,7 +164,6 @@ class TimersManager extends EventEmitter_js_1.EventEmitter {
182
164
  * @description Stops the timer checking loop.
183
165
  * @returns Promise resolving when the loop has been stopped
184
166
  * @example
185
- * const manager = new TimersManager();
186
167
  * await manager.checkStart(1000);
187
168
  * // ... later, to stop checking:
188
169
  * await manager.checkStop();
@@ -208,35 +189,37 @@ class TimersManager extends EventEmitter_js_1.EventEmitter {
208
189
  return this.checkLock;
209
190
  }
210
191
  /**
211
- * showTimers
212
- * @description Retrieves all active timers.
213
- * @returns Array of `Timer` objects
214
- * @throws If file operation fails
215
- * @example
216
- * const timers = await manager.showTimers();
217
- * console.log(JSON.stringify(timers))
218
- */
192
+ * showTimers
193
+ * @description Retrieves all active timers.
194
+ * @returns Array of `Timer` objects
195
+ * @throws If file operation fails
196
+ * @example
197
+ * const timers = await manager.showTimers();
198
+ * console.log(JSON.stringify(timers));
199
+ */
219
200
  async showTimers() {
220
201
  return this.runExclusive(async () => {
221
- this.TimersStore ??= await this.createTimersStore();
222
202
  const timersData = await this.TimersStore.loadTimers();
223
203
  return timersData;
224
204
  });
225
205
  }
226
206
  /**
227
- * adjustRemainingTime
207
+ * adjustRemainingTime
228
208
  * @description Adjusts the remaining time of a timer.
229
209
  * @param {string} id ID of the timer to modify
230
210
  * @param {number} delay Delay in milliseconds to add/subtract from the remaining time
231
211
  * @returns Promise resolving when the operation is complete
232
212
  * @throws If file operation fails
213
+ * @example
214
+ * const timer = await manager.createTimer(10000); // Create a 10-second timer
215
+ * await manager.adjustRemainingTime(timer, -2000); // Subtract 2 seconds from the remaining time (now 8 seconds left)
216
+ * await manager.adjustRemainingTime(timer, 3000); // Add 3 seconds to the remaining time (now 11 seconds left)
233
217
  */
234
218
  async adjustRemainingTime(id, delay) {
235
219
  return this.runExclusive(async () => {
236
220
  if (typeof delay !== "number" || !Number.isFinite(delay)) {
237
221
  throw new Error(throwMessage_js_1.throwMessage.InvalidAdjustment(delay));
238
222
  }
239
- this.TimersStore ??= await this.createTimersStore();
240
223
  const timers = await this.TimersStore.loadTimers();
241
224
  const index = timers.findIndex(t => t.id === id);
242
225
  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"}
@@ -4,20 +4,26 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.default = searchRoot;
7
- const fs_1 = __importDefault(require("fs"));
7
+ const promises_1 = __importDefault(require("fs/promises"));
8
8
  const path_1 = __importDefault(require("path"));
9
9
  /**
10
10
  * searchRoot
11
11
  * @description searching root directly of the project
12
12
  * @returns directly of the project(string)
13
13
  */
14
- function searchRoot() {
14
+ async function searchRoot() {
15
15
  let dir = process.cwd();
16
- while (!fs_1.default.existsSync(path_1.default.join(dir, "package.json"))) {
17
- const parent = path_1.default.dirname(dir);
18
- if (parent === dir)
19
- break;
20
- dir = parent;
16
+ while (true) {
17
+ try {
18
+ await promises_1.default.access(path_1.default.join(dir, "package.json"));
19
+ return dir;
20
+ }
21
+ catch {
22
+ const parent = path_1.default.dirname(dir);
23
+ if (parent === dir)
24
+ break;
25
+ dir = parent;
26
+ }
21
27
  }
22
28
  return dir;
23
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"searchRoot.js","sourceRoot":"","sources":["../../src/searchRoot.ts"],"names":[],"mappings":";;;;;AAQA,6BAQC;AAhBD,4CAAoB;AACpB,gDAAwB;AAExB;;;;GAIG;AACH,SAAwB,UAAU;IACjC,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACxB,OAAO,CAAC,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;QACvD,MAAM,MAAM,GAAG,cAAI,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":";;;;;AAQA,6BAaC;AArBD,2DAA6B;AAC7B,gDAAwB;AAExB;;;;GAIG;AACY,KAAK,UAAU,UAAU;IACvC,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACxB,OAAO,IAAI,EAAE,CAAC;QACb,IAAI,CAAC;YACJ,MAAM,kBAAE,CAAC,MAAM,CAAC,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;YAChD,OAAO,GAAG,CAAC;QACZ,CAAC;QAAC,MAAM,CAAC;YACR,MAAM,MAAM,GAAG,cAAI,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"}
@@ -3,16 +3,31 @@ import { JSONLTimersStore } from "../TimersStore/JSONLTimersStore.js";
3
3
  /**
4
4
  * JSONLTimersManager
5
5
  * @description
6
- * Manages timers stored in a JSONL file.
7
- * (This is a abstract class)
6
+ * Manages timers stored in a JSONL file.
8
7
  *
9
8
  * - Timers are persisted in a file
10
9
  * - Expired timers are detected by polling
11
10
  */
12
- export declare class JSONLTimersManager<Extra extends object = object> extends TimersManager<"JSONL", Extra> {
13
- protected TimersStore: JSONLTimersStore<Extra> | null;
14
- protected getDefaultFilename(): string;
15
- protected createTimersStore(): Promise<JSONLTimersStore<Extra>>;
11
+ export declare class JSONLTimersManager<Extra extends object> extends TimersManager<"JSONL", Extra> {
12
+ static readonly defaultFilename = ".timers.jsonl";
13
+ /**
14
+ * create
15
+ * @param {string | undefined} timerfile optional timer file path. If not provided, the default path will be used.
16
+ * @description Creates an instance of JSONLTimersManager. If the timer file does not exist, an empty file is created.
17
+ * @throws If file access or creation fails
18
+ * @example
19
+ * const manager = await JSONLTimersManager.create(); // Uses default timer file path
20
+ * const manager = await JSONLTimersManager.create("/path/to/timers.jsonl"); // Uses specified timer file path
21
+ * @returns Promise resolving to an instance of JSONLTimersManager
22
+ */
23
+ static create<Extra extends object = object>(timerfile?: string): Promise<JSONLTimersManager<Extra>>;
24
+ /**
25
+ * constructor
26
+ * @param {string} timerfiledir resolved timer file path.
27
+ * @description Initializes the JSONLTimersManager instance.
28
+ */
29
+ protected constructor(timerfiledir: string);
30
+ protected TimersStore: JSONLTimersStore<Extra>;
16
31
  protected type: "JSONL";
17
32
  /**
18
33
  * changeExtra
@@ -23,7 +38,7 @@ export declare class JSONLTimersManager<Extra extends object = object> extends T
23
38
  * @throws If timer with id not found or file operation fails
24
39
  * @example
25
40
  * const timer = await manager.createTimer({ length: 1000, extra: {author: "someone"} });
26
- * await changeExtra(timer, {author: "SUKEsann2000"});
41
+ * await manager.changeExtra(timer, {author: "SUKEsann2000"});
27
42
  * // extra is changed and author will be "SUKEsann2000" instead of "someone"
28
43
  */
29
44
  changeExtra(id: string, newExtra: Extra): Promise<void>;
@@ -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;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;CAkBhB"}
1
+ {"version":3,"file":"JSONLTimersManager.d.ts","sourceRoot":"","sources":["../../../src/TimersManager/JSONLTimersManager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAGtE;;;;;;;GAOG;AACH,qBAAa,kBAAkB,CAAC,KAAK,SAAS,MAAM,CAAE,SAAQ,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC;IAC1F,gBAAuB,eAAe,mBAAmB;IAEzD;;;;;;;;;OASG;WACiB,MAAM,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAkBjH;;;;OAIG;IACH,SAAS,aAAa,YAAY,EAAE,MAAM;IAK1C,UAAmB,WAAW,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAExD,UAAmB,IAAI,EAAE,OAAO,CAAoB;IAEpD;;;;;;;;;;;OAWG;IACU,WAAW,CACvB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,KAAK,GACb,OAAO,CAAC,IAAI,CAAC;CAiBhB"}
@@ -1,23 +1,56 @@
1
+ import path from "path";
2
+ import fs from "fs/promises";
3
+ import searchRoot from "../searchRoot.js";
1
4
  import { TimersManager } from "./TimersManager.js";
2
5
  import { JSONLTimersStore } from "../TimersStore/JSONLTimersStore.js";
3
6
  import { throwMessage } from "../throwMessage.js";
4
7
  /**
5
8
  * JSONLTimersManager
6
9
  * @description
7
- * Manages timers stored in a JSONL file.
8
- * (This is a abstract class)
10
+ * Manages timers stored in a JSONL file.
9
11
  *
10
12
  * - Timers are persisted in a file
11
13
  * - Expired timers are detected by polling
12
14
  */
13
15
  export class JSONLTimersManager extends TimersManager {
14
- TimersStore = null;
15
- getDefaultFilename() {
16
- return ".timers.jsonl";
16
+ static defaultFilename = ".timers.jsonl";
17
+ /**
18
+ * create
19
+ * @param {string | undefined} timerfile optional timer file path. If not provided, the default path will be used.
20
+ * @description Creates an instance of JSONLTimersManager. If the timer file does not exist, an empty file is created.
21
+ * @throws If file access or creation fails
22
+ * @example
23
+ * const manager = await JSONLTimersManager.create(); // Uses default timer file path
24
+ * const manager = await JSONLTimersManager.create("/path/to/timers.jsonl"); // Uses specified timer file path
25
+ * @returns Promise resolving to an instance of JSONLTimersManager
26
+ */
27
+ static async create(timerfile) {
28
+ const rootDir = await searchRoot();
29
+ const filename = timerfile ?? this.defaultFilename;
30
+ const timerfiledir = path.isAbsolute(filename)
31
+ ? filename
32
+ : path.resolve(rootDir, filename);
33
+ if (!timerfiledir.startsWith(rootDir)) {
34
+ throw new Error(throwMessage.FilePathinvalid);
35
+ }
36
+ try {
37
+ await fs.access(timerfiledir);
38
+ }
39
+ catch {
40
+ await fs.writeFile(timerfiledir, "");
41
+ }
42
+ return new this(timerfiledir);
17
43
  }
18
- async createTimersStore() {
19
- return new JSONLTimersStore(this.timerfiledir);
44
+ /**
45
+ * constructor
46
+ * @param {string} timerfiledir resolved timer file path.
47
+ * @description Initializes the JSONLTimersManager instance.
48
+ */
49
+ constructor(timerfiledir) {
50
+ super(timerfiledir);
51
+ this.TimersStore = new JSONLTimersStore(this.timerfiledir);
20
52
  }
53
+ TimersStore;
21
54
  type = "JSONL";
22
55
  /**
23
56
  * changeExtra
@@ -28,12 +61,11 @@ export class JSONLTimersManager extends TimersManager {
28
61
  * @throws If timer with id not found or file operation fails
29
62
  * @example
30
63
  * const timer = await manager.createTimer({ length: 1000, extra: {author: "someone"} });
31
- * await changeExtra(timer, {author: "SUKEsann2000"});
64
+ * await manager.changeExtra(timer, {author: "SUKEsann2000"});
32
65
  * // extra is changed and author will be "SUKEsann2000" instead of "someone"
33
66
  */
34
67
  async changeExtra(id, newExtra) {
35
68
  return this.runExclusive(async () => {
36
- this.TimersStore ??= await this.createTimersStore();
37
69
  try {
38
70
  const timers = await this.TimersStore.loadTimers();
39
71
  const index = timers?.findIndex(t => t.id === id);
@@ -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;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,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC;gBAC/B,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC3C,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"}
1
+ {"version":3,"file":"JSONLTimersManager.js","sourceRoot":"","sources":["../../../src/TimersManager/JSONLTimersManager.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,aAAa,CAAC;AAE7B,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;;;;;;GAOG;AACH,MAAM,OAAO,kBAAyC,SAAQ,aAA6B;IACnF,MAAM,CAAU,eAAe,GAAG,eAAe,CAAC;IAEzD;;;;;;;;;OASG;IACI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAgC,SAAkB;QAC3E,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,SAAS,IAAI,IAAI,CAAC,eAAe,CAAC;QACnD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC7C,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAEnC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,CAAC;YACJ,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACR,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,IAAI,IAAI,CAAQ,YAAY,CAAC,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACH,YAAsB,YAAoB;QACzC,KAAK,CAAC,YAAY,CAAC,CAAC;QACpB,IAAI,CAAC,WAAW,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5D,CAAC;IAEkB,WAAW,CAA0B;IAErC,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;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,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC;gBAC/B,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC3C,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"}
@@ -4,15 +4,30 @@ import { PlainTextTimersStore } from "../TimersStore/PlainTextTimersStore.js";
4
4
  * PlainTextTimersManager
5
5
  * @description
6
6
  * Manages timers stored in a PlainText file.
7
- * (This is a abstract class)
8
7
  *
9
8
  * - Timers are persisted in a file
10
9
  * - Expired timers are detected by polling
11
10
  */
12
11
  export declare class PlainTextTimersManager extends TimersManager<"PlainText", object> {
13
- protected TimersStore: PlainTextTimersStore | null;
14
- protected getDefaultFilename(): string;
15
- protected createTimersStore(): Promise<PlainTextTimersStore>;
12
+ static readonly defaultFilename = ".timers";
13
+ /**
14
+ * create
15
+ * @param {string | undefined} timerfile optional timer file path. If not provided, the default path will be used.
16
+ * @description Creates an instance of PlainTextTimersManager. If the timer file does not exist, an empty file is created.
17
+ * @throws If file access or creation fails
18
+ * @example
19
+ * const manager = await PlainTextTimersManager.create(); // Uses default timer file path
20
+ * const manager = await PlainTextTimersManager.create("/path/to/.timers"); // Uses specified timer file path
21
+ * @returns Promise resolving to an instance of PlainTextTimersManager
22
+ */
23
+ static create(timerfile?: string): Promise<PlainTextTimersManager>;
24
+ /**
25
+ * constructor
26
+ * @param {string} timerfiledir resolved timer file path.
27
+ * @description Initializes the PlainTextTimersManager instance.
28
+ */
29
+ protected constructor(timerfiledir: string);
30
+ protected TimersStore: PlainTextTimersStore;
16
31
  protected type: "PlainText";
17
32
  }
18
33
  //# sourceMappingURL=PlainTextTimersManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlainTextTimersManager.d.ts","sourceRoot":"","sources":["../../../src/TimersManager/PlainTextTimersManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAE9E;;;;;;;;GAQG;AACH,qBAAa,sBAAuB,SAAQ,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7E,UAAmB,WAAW,EAAE,oBAAoB,GAAG,IAAI,CAAQ;cAEhD,kBAAkB,IAAI,MAAM;cAI/B,iBAAiB,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAIlE,UAAmB,IAAI,EAAE,WAAW,CAAwB;CAC5D"}
1
+ {"version":3,"file":"PlainTextTimersManager.d.ts","sourceRoot":"","sources":["../../../src/TimersManager/PlainTextTimersManager.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAE9E;;;;;;;GAOG;AACH,qBAAa,sBAAuB,SAAQ,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7E,gBAAuB,eAAe,aAAa;IAEnD;;;;;;;;;OASG;WACiB,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAkB/E;;;;OAIG;IACH,SAAS,aAAa,YAAY,EAAE,MAAM;IAK1C,UAAmB,WAAW,EAAE,oBAAoB,CAAC;IAErD,UAAmB,IAAI,EAAE,WAAW,CAAwB;CAC5D"}
@@ -1,22 +1,56 @@
1
+ import path from "path";
2
+ import fs from "fs/promises";
3
+ import searchRoot from "../searchRoot.js";
4
+ import { throwMessage } from "../throwMessage.js";
1
5
  import { TimersManager } from "./TimersManager.js";
2
6
  import { PlainTextTimersStore } from "../TimersStore/PlainTextTimersStore.js";
3
7
  /**
4
8
  * PlainTextTimersManager
5
9
  * @description
6
10
  * Manages timers stored in a PlainText file.
7
- * (This is a abstract class)
8
11
  *
9
12
  * - Timers are persisted in a file
10
13
  * - Expired timers are detected by polling
11
14
  */
12
15
  export class PlainTextTimersManager extends TimersManager {
13
- TimersStore = null;
14
- getDefaultFilename() {
15
- return ".timers";
16
+ static defaultFilename = ".timers";
17
+ /**
18
+ * create
19
+ * @param {string | undefined} timerfile optional timer file path. If not provided, the default path will be used.
20
+ * @description Creates an instance of PlainTextTimersManager. If the timer file does not exist, an empty file is created.
21
+ * @throws If file access or creation fails
22
+ * @example
23
+ * const manager = await PlainTextTimersManager.create(); // Uses default timer file path
24
+ * const manager = await PlainTextTimersManager.create("/path/to/.timers"); // Uses specified timer file path
25
+ * @returns Promise resolving to an instance of PlainTextTimersManager
26
+ */
27
+ static async create(timerfile) {
28
+ const rootDir = await searchRoot();
29
+ const filename = timerfile ?? this.defaultFilename;
30
+ const timerfiledir = path.isAbsolute(filename)
31
+ ? filename
32
+ : path.resolve(rootDir, filename);
33
+ if (!timerfiledir.startsWith(rootDir)) {
34
+ throw new Error(throwMessage.FilePathinvalid);
35
+ }
36
+ try {
37
+ await fs.access(timerfiledir);
38
+ }
39
+ catch {
40
+ await fs.writeFile(timerfiledir, "");
41
+ }
42
+ return new this(timerfiledir);
16
43
  }
17
- async createTimersStore() {
18
- return new PlainTextTimersStore(this.timerfiledir);
44
+ /**
45
+ * constructor
46
+ * @param {string} timerfiledir resolved timer file path.
47
+ * @description Initializes the PlainTextTimersManager instance.
48
+ */
49
+ constructor(timerfiledir) {
50
+ super(timerfiledir);
51
+ this.TimersStore = new PlainTextTimersStore(this.timerfiledir);
19
52
  }
53
+ TimersStore;
20
54
  type = "PlainText";
21
55
  }
22
56
  //# sourceMappingURL=PlainTextTimersManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlainTextTimersManager.js","sourceRoot":"","sources":["../../../src/TimersManager/PlainTextTimersManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAE9E;;;;;;;;GAQG;AACH,MAAM,OAAO,sBAAuB,SAAQ,aAAkC;IAC1D,WAAW,GAAgC,IAAI,CAAC;IAEhD,kBAAkB;QACpC,OAAO,SAAS,CAAC;IAClB,CAAC;IAES,KAAK,CAAC,iBAAiB;QAChC,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACpD,CAAC;IAEkB,IAAI,GAAgB,WAAoB,CAAC;CAC5D"}
1
+ {"version":3,"file":"PlainTextTimersManager.js","sourceRoot":"","sources":["../../../src/TimersManager/PlainTextTimersManager.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,aAAa,CAAC;AAE7B,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAE9E;;;;;;;GAOG;AACH,MAAM,OAAO,sBAAuB,SAAQ,aAAkC;IACtE,MAAM,CAAU,eAAe,GAAG,SAAS,CAAC;IAEnD;;;;;;;;;OASG;IACI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAkB;QAC5C,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,SAAS,IAAI,IAAI,CAAC,eAAe,CAAC;QACnD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC7C,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAEnC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,CAAC;YACJ,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACR,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,YAAsB,YAAoB;QACzC,KAAK,CAAC,YAAY,CAAC,CAAC;QACpB,IAAI,CAAC,WAAW,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAChE,CAAC;IAEkB,WAAW,CAAuB;IAElC,IAAI,GAAgB,WAAoB,CAAC"}
@@ -15,22 +15,19 @@ export declare abstract class TimersManager<T extends StorageType, Extra extends
15
15
  protected checkLock: boolean;
16
16
  protected interval: NodeJS.Timeout | undefined;
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;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"}