eternal-timer 2.3.0 → 2.4.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 (86) hide show
  1. package/README.md +25 -13
  2. package/dist/cjs/TimersManager/JSONLTimersManager.cjs +25 -0
  3. package/dist/cjs/TimersManager/JSONLTimersManager.cjs.map +1 -0
  4. package/dist/cjs/TimersManager/JSONLTimersManager.d.ts +18 -0
  5. package/dist/cjs/TimersManager/JSONLTimersManager.d.ts.map +1 -0
  6. package/dist/cjs/TimersManager/PlainTextTimersManager.cjs +25 -0
  7. package/dist/cjs/TimersManager/PlainTextTimersManager.cjs.map +1 -0
  8. package/dist/cjs/TimersManager/PlainTextTimersManager.d.ts +18 -0
  9. package/dist/cjs/TimersManager/PlainTextTimersManager.d.ts.map +1 -0
  10. package/dist/cjs/TimersManager/TimersManager.cjs +211 -0
  11. package/dist/cjs/TimersManager/TimersManager.cjs.map +1 -0
  12. package/dist/cjs/TimersManager/TimersManager.d.ts +87 -0
  13. package/dist/cjs/TimersManager/TimersManager.d.ts.map +1 -0
  14. package/dist/cjs/TimersStore/JSONLTimersStore.cjs +50 -0
  15. package/dist/cjs/TimersStore/JSONLTimersStore.cjs.map +1 -0
  16. package/dist/cjs/TimersStore/JSONLTimersStore.d.ts +16 -0
  17. package/dist/cjs/TimersStore/JSONLTimersStore.d.ts.map +1 -0
  18. package/dist/cjs/TimersStore/PlainTextTimersStore.cjs +56 -0
  19. package/dist/cjs/TimersStore/PlainTextTimersStore.cjs.map +1 -0
  20. package/dist/cjs/TimersStore/PlainTextTimersStore.d.ts +16 -0
  21. package/dist/cjs/TimersStore/PlainTextTimersStore.d.ts.map +1 -0
  22. package/dist/cjs/TimersStore/TimersStore.cjs +44 -0
  23. package/dist/cjs/TimersStore/TimersStore.cjs.map +1 -0
  24. package/dist/cjs/TimersStore/TimersStore.d.ts +12 -0
  25. package/dist/cjs/TimersStore/TimersStore.d.ts.map +1 -0
  26. package/dist/cjs/index.cjs +2 -2
  27. package/dist/cjs/index.cjs.map +1 -1
  28. package/dist/cjs/index.d.ts +2 -2
  29. package/dist/cjs/index.d.ts.map +1 -1
  30. package/dist/cjs/types.d.ts +6 -3
  31. package/dist/cjs/types.d.ts.map +1 -1
  32. package/dist/esm/TimersManager/JSONLTimersManager.d.ts +18 -0
  33. package/dist/esm/TimersManager/JSONLTimersManager.d.ts.map +1 -0
  34. package/dist/esm/TimersManager/JSONLTimersManager.js +21 -0
  35. package/dist/esm/TimersManager/JSONLTimersManager.js.map +1 -0
  36. package/dist/esm/TimersManager/PlainTextTimersManager.d.ts +18 -0
  37. package/dist/esm/TimersManager/PlainTextTimersManager.d.ts.map +1 -0
  38. package/dist/esm/TimersManager/PlainTextTimersManager.js +21 -0
  39. package/dist/esm/TimersManager/PlainTextTimersManager.js.map +1 -0
  40. package/dist/esm/TimersManager/TimersManager.d.ts +87 -0
  41. package/dist/esm/TimersManager/TimersManager.d.ts.map +1 -0
  42. package/dist/esm/TimersManager/TimersManager.js +205 -0
  43. package/dist/esm/TimersManager/TimersManager.js.map +1 -0
  44. package/dist/esm/TimersStore/JSONLTimersStore.d.ts +16 -0
  45. package/dist/esm/TimersStore/JSONLTimersStore.d.ts.map +1 -0
  46. package/dist/esm/TimersStore/JSONLTimersStore.js +46 -0
  47. package/dist/esm/TimersStore/JSONLTimersStore.js.map +1 -0
  48. package/dist/esm/TimersStore/PlainTextTimersStore.d.ts +16 -0
  49. package/dist/esm/TimersStore/PlainTextTimersStore.d.ts.map +1 -0
  50. package/dist/esm/TimersStore/PlainTextTimersStore.js +52 -0
  51. package/dist/esm/TimersStore/PlainTextTimersStore.js.map +1 -0
  52. package/dist/esm/TimersStore/TimersStore.d.ts +12 -0
  53. package/dist/esm/TimersStore/TimersStore.d.ts.map +1 -0
  54. package/dist/esm/TimersStore/TimersStore.js +37 -0
  55. package/dist/esm/TimersStore/TimersStore.js.map +1 -0
  56. package/dist/esm/index.d.ts +2 -2
  57. package/dist/esm/index.d.ts.map +1 -1
  58. package/dist/esm/index.js +2 -2
  59. package/dist/esm/index.js.map +1 -1
  60. package/dist/esm/types.d.ts +6 -3
  61. package/dist/esm/types.d.ts.map +1 -1
  62. package/package.json +1 -1
  63. package/dist/cjs/JSONLTimersManager.cjs +0 -199
  64. package/dist/cjs/JSONLTimersManager.cjs.map +0 -1
  65. package/dist/cjs/JSONLTimersManager.d.ts +0 -63
  66. package/dist/cjs/JSONLTimersManager.d.ts.map +0 -1
  67. package/dist/cjs/PlainTextTimersManager.cjs +0 -200
  68. package/dist/cjs/PlainTextTimersManager.cjs.map +0 -1
  69. package/dist/cjs/PlainTextTimersManager.d.ts +0 -60
  70. package/dist/cjs/PlainTextTimersManager.d.ts.map +0 -1
  71. package/dist/cjs/TimersManager.cjs +0 -39
  72. package/dist/cjs/TimersManager.cjs.map +0 -1
  73. package/dist/cjs/TimersManager.d.ts +0 -75
  74. package/dist/cjs/TimersManager.d.ts.map +0 -1
  75. package/dist/esm/JSONLTimersManager.d.ts +0 -63
  76. package/dist/esm/JSONLTimersManager.d.ts.map +0 -1
  77. package/dist/esm/JSONLTimersManager.js +0 -192
  78. package/dist/esm/JSONLTimersManager.js.map +0 -1
  79. package/dist/esm/PlainTextTimersManager.d.ts +0 -60
  80. package/dist/esm/PlainTextTimersManager.d.ts.map +0 -1
  81. package/dist/esm/PlainTextTimersManager.js +0 -193
  82. package/dist/esm/PlainTextTimersManager.js.map +0 -1
  83. package/dist/esm/TimersManager.d.ts +0 -75
  84. package/dist/esm/TimersManager.d.ts.map +0 -1
  85. package/dist/esm/TimersManager.js +0 -32
  86. package/dist/esm/TimersManager.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"PlainTextTimersManager.js","sourceRoot":"","sources":["../../src/PlainTextTimersManager.ts"],"names":[],"mappings":"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"}
@@ -1,60 +0,0 @@
1
- import type { Timer, CreateTimerOptions } from "./types.js";
2
- import { TimersManager } from "./TimersManager.js";
3
- export declare class PlainTextTimersManager extends TimersManager<"PlainText"> {
4
- protected getDefaultFilename(): string;
5
- /**
6
- * checkTimerfileSyntax
7
- * @description Checks the syntax of the timer file.
8
- * @param fileData
9
- * @returns void
10
- * @throws If syntax is invalid
11
- */
12
- protected checkTimerfileSyntax(fileData: string): Promise<void>;
13
- /**
14
- * createTimer
15
- * @description Creates a new timer.
16
- * @param length
17
- * @returns Promise that resolves to the timer ID (UUID)
18
- * @throws If length is invalid(e.g. length < 0) or file operation fails
19
- * @example
20
- * const manager = new PlainTextTimersManager();
21
- * const newTimer = await manager.createTimer(5000);
22
- * // newTimer will be id of the timer
23
- */
24
- createTimer(options: CreateTimerOptions<"PlainText">): Promise<string>;
25
- /**
26
- * removeTimer
27
- * @description Removes a timer by ID.
28
- * @param id ID of the timer to remove
29
- * @returns void
30
- * @throws If file operation fails
31
- * @example
32
- * await manager.removeTimer(id);
33
- */
34
- removeTimer(id: string): Promise<void>;
35
- /**
36
- * checkTimers
37
- * @description Starts monitoring expired timers asynchronously and returns immediately. The callback is invoked asynchronously when a timer expires.
38
- * The callback is awaited before continuing.
39
- * @param callback Function invoked when an expired timer is detected (called asynchronously)
40
- * @param interval (number, optional): Check interval in milliseconds (default: 200ms)
41
- * @throws If file operation fails
42
- * @returns (NodeJS.Timeout) intervalId interval id of checkTimers
43
- * @example
44
- * const interval = manager.checkTimers((timer) => {
45
- * console.log(`A timer was stopped: ${timer.id}`);
46
- * });
47
- */
48
- checkTimers(callback: (timer: Timer<"PlainText">) => Promise<void>, interval?: number): NodeJS.Timeout;
49
- /**
50
- * showTimers
51
- * @description Retrieves all active timers.
52
- * @returns Array of `Timer` objects
53
- * @throws If file operation fails
54
- * @example
55
- * const timers = await manager.showTimers();
56
- * console.log(JSON.stringify(timers))
57
- */
58
- showTimers(): Promise<Timer<"PlainText">[]>;
59
- }
60
- //# sourceMappingURL=PlainTextTimersManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PlainTextTimersManager.d.ts","sourceRoot":"","sources":["../../src/PlainTextTimersManager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,qBAAa,sBAAuB,SAAQ,aAAa,CAAC,WAAW,CAAC;IACrE,SAAS,CAAC,kBAAkB,IAAI,MAAM;IAItC;;;;;;OAMG;cACsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB9E;;;;;;;;;;OAUG;IACmB,WAAW,CAAC,OAAO,EAAE,kBAAkB,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAsB5F;;;;;;;;OAQG;IACmB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B5D;;;;;;;;;;;;OAYG;IACa,WAAW,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAE,MAAY,GAAG,MAAM,CAAC,OAAO;IAyC3H;;;;;;;;OAQG;IACmB,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;CAoBjE"}
@@ -1,39 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.TimersManager = void 0;
7
- const path_1 = __importDefault(require("path"));
8
- const fs_1 = __importDefault(require("fs"));
9
- const searchRoot_js_1 = __importDefault(require("./searchRoot.cjs"));
10
- /**
11
- * TimersManager
12
- * @description
13
- * Manages timers stored in a file.
14
- * (This is a abstract class)
15
- *
16
- * - Timers are persisted in a file
17
- * - Expired timers are detected by polling
18
- */
19
- class TimersManager {
20
- timerfiledir;
21
- checkLock = false;
22
- /**
23
- * constructor
24
- * @param timerfiledir(string, optional)
25
- * If omitted, `.timers.jsonl` under the project root is used.
26
- */
27
- constructor(timerfiledir) {
28
- this.timerfiledir =
29
- timerfiledir ?? path_1.default.join((0, searchRoot_js_1.default)(), this.getDefaultFilename());
30
- try {
31
- fs_1.default.accessSync(this.timerfiledir);
32
- }
33
- catch {
34
- fs_1.default.writeFileSync(this.timerfiledir, "");
35
- }
36
- }
37
- }
38
- exports.TimersManager = TimersManager;
39
- //# sourceMappingURL=TimersManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TimersManager.js","sourceRoot":"","sources":["../../src/TimersManager.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,4CAAoB;AACpB,oEAAyC;AAGzC;;;;;;;;GAQG;AACH,MAAsB,aAAa;IACf,YAAY,CAAS;IAC9B,SAAS,GAAY,KAAK,CAAC;IAIrC;;;;OAIM;IACN,YACC,YAAqB;QAErB,IAAI,CAAC,YAAY;YACP,YAAY,IAAI,cAAI,CAAC,IAAI,CAAC,IAAA,uBAAU,GAAE,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAE7E,IAAI,CAAC;YACJ,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACR,YAAE,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACzC,CAAC;IACF,CAAC;CA2DD;AAjFD,sCAiFC"}
@@ -1,75 +0,0 @@
1
- import type { CreateTimerOptions, StorageType, Timer } from "./types.js";
2
- /**
3
- * TimersManager
4
- * @description
5
- * Manages timers stored in a file.
6
- * (This is a abstract class)
7
- *
8
- * - Timers are persisted in a file
9
- * - Expired timers are detected by polling
10
- */
11
- export declare abstract class TimersManager<T extends StorageType> {
12
- protected readonly timerfiledir: string;
13
- protected checkLock: boolean;
14
- protected abstract getDefaultFilename(): string;
15
- /**
16
- * constructor
17
- * @param timerfiledir(string, optional)
18
- * If omitted, `.timers.jsonl` under the project root is used.
19
- */
20
- constructor(timerfiledir?: string);
21
- /**
22
- * checkTimerfileSyntax
23
- * @description Checks the syntax of the timer file.
24
- * @param fileData
25
- * @returns void
26
- * @throws If syntax is invalid
27
- */
28
- protected abstract checkTimerfileSyntax(fileData: string): Promise<void>;
29
- /**
30
- * createTimer
31
- * @description Creates a new timer.
32
- * @param length Timer duration in milliseconds
33
- * @returns Promise that resolves to the timer ID (UUID)
34
- * @throws If length is invalid(e.g. length < 0) or file operation fails
35
- * @example
36
- * const manager = new TimersManager();
37
- * const newTimer = await manager.createTimer(5000);
38
- * // newTimer will be id of the timer
39
- */
40
- abstract createTimer(options: CreateTimerOptions<T>): Promise<string>;
41
- /**
42
- * removeTimer
43
- * @description Removes a timer by ID.
44
- * @param id ID of the timer to remove
45
- * @returns void
46
- * @throws If file operation fails
47
- * @example
48
- * await manager.removeTimer(id);
49
- */
50
- abstract removeTimer(id: string): Promise<void>;
51
- /**
52
- * @description Starts monitoring expired timers asynchronously and returns immediately. The callback is invoked asynchronously when a timer expires.
53
- * The callback is awaited before continuing.
54
- * @param callback Function invoked when an expired timer is detected (called asynchronously)
55
- * @param interval (number, optional): Check interval in milliseconds (default: 200ms)
56
- * @throws If file operation fails
57
- * @returns (NodeJS.Timeout) intervalId interval id of checkTimers
58
- * @example
59
- * const interval = manager.checkTimers((timer) => {
60
- * console.log(`A timer was stopped: ${timer.id}`);
61
- * });
62
- */
63
- abstract checkTimers(callback: (timer: Timer<T>) => Promise<void>, interval?: number): NodeJS.Timeout;
64
- /**
65
- * showTimers
66
- * @description Retrieves all active timers.
67
- * @returns Array of `Timer` objects
68
- * @throws If file operation fails
69
- * @example
70
- * const timers = await manager.showTimers();
71
- * console.log(JSON.stringify(timers))
72
- */
73
- abstract showTimers(): Promise<Timer<T>[]>;
74
- }
75
- //# sourceMappingURL=TimersManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TimersManager.d.ts","sourceRoot":"","sources":["../../src/TimersManager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEzE;;;;;;;;GAQG;AACH,8BAAsB,aAAa,CAAC,CAAC,SAAS,WAAW;IACxD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IACxC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAS;IAErC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,IAAI,MAAM;IAE/C;;;;OAIM;gBAEL,YAAY,CAAC,EAAE,MAAM;IAYtB;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAExE;;;;;;;;;;OAUM;aACc,WAAW,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAEhF;;;;;;;;OAQM;aACU,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAEtD;;;;;;;;;;;OAWM;aACc,WAAW,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,OAAO;IAEhH;;;;;;;;OAQM;aACU,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;CACjD"}
@@ -1,63 +0,0 @@
1
- import type { Timer, CreateTimerOptions } from "./types.js";
2
- import { TimersManager } from "./TimersManager.js";
3
- /**
4
- * JSONLTimersManager
5
- * @description
6
- * Manages timers stored in a JSONL file.
7
- * (This is a abstract class)
8
- *
9
- * - Timers are persisted in a file
10
- * - Expired timers are detected by polling
11
- */
12
- export declare class JSONLTimersManager extends TimersManager<"JSONL"> {
13
- protected getDefaultFilename(): string;
14
- protected checkTimerfileSyntax(fileData: string): Promise<void>;
15
- /**
16
- * createTimer
17
- * @description Creates a new timer.
18
- * @param length Timer duration in milliseconds
19
- * @param title(string, optional) Title of the timer(only for JSONLTimersManager)
20
- * @param description(string, optional) Description of the timer(only for JSONLTimersManager)
21
- * @returns Promise that resolves to the timer ID (UUID)
22
- * @throws If length is invalid(e.g. length < 0) or file operation fails
23
- * @example
24
- * const manager = new JSONLTimersManager();
25
- * const newTimer = await manager.createTimer(5000);
26
- * // newTimer will be id of the timer
27
- */
28
- createTimer(options: CreateTimerOptions<"JSONL">): Promise<string>;
29
- /**
30
- * removeTimer
31
- * @description Removes a timer by ID.
32
- * @param id ID of the timer to remove
33
- * @returns void
34
- * @throws If file operation fails
35
- * @example
36
- * await manager.removeTimer(id);
37
- */
38
- removeTimer(id: string): Promise<void>;
39
- /**
40
- * @description Starts monitoring expired timers asynchronously and returns immediately. The callback is invoked asynchronously when a timer expires.
41
- * The callback is awaited before continuing.
42
- * @param callback Function invoked when an expired timer is detected (called asynchronously)
43
- * @param interval (number, optional): Check interval in milliseconds (default: 200ms)
44
- * @throws If file operation fails
45
- * @returns (NodeJS.Timeout) intervalId interval id of checkTimers
46
- * @example
47
- * const interval = manager.checkTimers((timer) => {
48
- * console.log(`A timer was stopped: ${timer.id}`);
49
- * });
50
- */
51
- checkTimers(callback: (timer: Timer<"JSONL">) => Promise<void>, interval?: number): NodeJS.Timeout;
52
- /**
53
- * showTimers
54
- * @description Retrieves all active timers.
55
- * @returns Array of `Timer` objects
56
- * @throws If file operation fails
57
- * @example
58
- * const timers = await manager.showTimers();
59
- * console.log(JSON.stringify(timers))
60
- */
61
- showTimers(): Promise<Timer<"JSONL">[]>;
62
- }
63
- //# sourceMappingURL=JSONLTimersManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"JSONLTimersManager.d.ts","sourceRoot":"","sources":["../../src/JSONLTimersManager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD;;;;;;;;GAQG;AACH,qBAAa,kBAAmB,SAAQ,aAAa,CAAC,OAAO,CAAC;cAC1C,kBAAkB,IAAI,MAAM;cAI/B,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBrE;;;;;;;;;;;;OAYM;IACgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IA6BxF;;;;;;;;OAQM;IACgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiC5D;;;;;;;;;;;OAWM;IACU,WAAW,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAE,MAAY,GAAG,MAAM,CAAC,OAAO;IAoCvH;;;;;;;;OAQM;IACgB,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;CAa7D"}
@@ -1,192 +0,0 @@
1
- import fs from "fs";
2
- import { v4 as uuidv4 } from "uuid";
3
- import readline from "readline";
4
- import { TimersManager } from "./TimersManager.js";
5
- import { Log } from "./Log.js";
6
- /**
7
- * JSONLTimersManager
8
- * @description
9
- * Manages timers stored in a JSONL file.
10
- * (This is a abstract class)
11
- *
12
- * - Timers are persisted in a file
13
- * - Expired timers are detected by polling
14
- */
15
- export class JSONLTimersManager extends TimersManager {
16
- getDefaultFilename() {
17
- return ".timers.jsonl";
18
- }
19
- async checkTimerfileSyntax(fileData) {
20
- const throwing = () => {
21
- throw new Error(`Timer file's syntax is wrong`);
22
- };
23
- const timersData = fileData
24
- .split('\n')
25
- .map(l => l.trim())
26
- .filter(l => l !== "");
27
- for (const timerData of timersData) {
28
- const parsed = JSON.parse(timerData);
29
- if (!parsed.id || typeof parsed.id !== "string" || parsed.id.length !== 36)
30
- throwing();
31
- if (!parsed.start || typeof parsed.start !== "number" || parsed.start.toString().trim() === "")
32
- throwing();
33
- if (!parsed.stop || typeof parsed.stop !== "number" || parsed.stop.toString().trim() === "")
34
- throwing();
35
- if (parsed.title && typeof parsed.title !== "string")
36
- throwing();
37
- if (parsed.description && typeof parsed.description !== "string")
38
- throwing();
39
- }
40
- return;
41
- }
42
- /**
43
- * createTimer
44
- * @description Creates a new timer.
45
- * @param length Timer duration in milliseconds
46
- * @param title(string, optional) Title of the timer(only for JSONLTimersManager)
47
- * @param description(string, optional) Description of the timer(only for JSONLTimersManager)
48
- * @returns Promise that resolves to the timer ID (UUID)
49
- * @throws If length is invalid(e.g. length < 0) or file operation fails
50
- * @example
51
- * const manager = new JSONLTimersManager();
52
- * const newTimer = await manager.createTimer(5000);
53
- * // newTimer will be id of the timer
54
- */
55
- async createTimer(options) {
56
- try {
57
- let length = typeof options === "object" ? options.length : options;
58
- if (length < 0) {
59
- throw new Error(`Invailed length: ${length}`);
60
- }
61
- const timersRaw = await fs.promises.readFile(this.timerfiledir, "utf-8");
62
- await this.checkTimerfileSyntax(timersRaw);
63
- length = Math.trunc(length);
64
- // uuid, start, end
65
- const id = uuidv4();
66
- const now = Date.now();
67
- const newTimerData = JSON.stringify({
68
- id,
69
- start: now,
70
- stop: (now + length),
71
- ...(typeof options === "object" && options.title !== undefined && { title: options.title }),
72
- ...(typeof options === "object" && options.description !== undefined && { description: options.description }),
73
- });
74
- await fs.promises.appendFile(this.timerfiledir, newTimerData + "\n");
75
- return id;
76
- }
77
- catch (e) {
78
- throw new Error(`Error when creating timer: ${e}`);
79
- }
80
- }
81
- /**
82
- * removeTimer
83
- * @description Removes a timer by ID.
84
- * @param id ID of the timer to remove
85
- * @returns void
86
- * @throws If file operation fails
87
- * @example
88
- * await manager.removeTimer(id);
89
- */
90
- async removeTimer(id) {
91
- try {
92
- const timersRaw = await fs.promises.readFile(this.timerfiledir, "utf-8");
93
- await this.checkTimerfileSyntax(timersRaw);
94
- const rl = readline.createInterface({
95
- input: fs.createReadStream(this.timerfiledir),
96
- crlfDelay: Infinity,
97
- });
98
- let newTimersData = "";
99
- let found = false;
100
- for await (const line of rl) {
101
- if (!line.trim())
102
- continue;
103
- const timerData = JSON.parse(line);
104
- if (timerData.id === id) {
105
- found = true;
106
- continue;
107
- }
108
- newTimersData += `${JSON.stringify(timerData, null, 0)}\n`;
109
- }
110
- if (!found) {
111
- throw new Error(`Timer with id ${id} not found`);
112
- }
113
- await fs.promises.writeFile(this.timerfiledir, newTimersData, "utf-8");
114
- return;
115
- }
116
- catch (e) {
117
- throw new Error(`Error when removing timer: ${e}`);
118
- }
119
- }
120
- /**
121
- * @description Starts monitoring expired timers asynchronously and returns immediately. The callback is invoked asynchronously when a timer expires.
122
- * The callback is awaited before continuing.
123
- * @param callback Function invoked when an expired timer is detected (called asynchronously)
124
- * @param interval (number, optional): Check interval in milliseconds (default: 200ms)
125
- * @throws If file operation fails
126
- * @returns (NodeJS.Timeout) intervalId interval id of checkTimers
127
- * @example
128
- * const interval = manager.checkTimers((timer) => {
129
- * console.log(`A timer was stopped: ${timer.id}`);
130
- * });
131
- */
132
- checkTimers(callback, interval = 200) {
133
- return setInterval(async () => {
134
- if (this.checkLock)
135
- return;
136
- this.checkLock = true;
137
- try {
138
- const rl = readline.createInterface({
139
- input: fs.createReadStream(this.timerfiledir),
140
- crlfDelay: Infinity,
141
- });
142
- for await (const line of rl) {
143
- if (!line.trim())
144
- continue;
145
- const timerData = JSON.parse(line);
146
- const now = Date.now();
147
- if (Number(timerData.stop) <= now) {
148
- await this.removeTimer(timerData.id);
149
- callback(timerData).catch(async (e) => {
150
- await Log.ensureLogger();
151
- if (Log.loggerInstance) {
152
- Log.loggerInstance.error(`Error in callback of checkTimers: ${e}`);
153
- }
154
- });
155
- }
156
- }
157
- }
158
- catch (e) {
159
- await Log.ensureLogger();
160
- if (Log.loggerInstance) {
161
- Log.loggerInstance.error(`Error when checking alarm: ${e}`);
162
- }
163
- }
164
- finally {
165
- this.checkLock = false;
166
- }
167
- }, interval);
168
- }
169
- /**
170
- * showTimers
171
- * @description Retrieves all active timers.
172
- * @returns Array of `Timer` objects
173
- * @throws If file operation fails
174
- * @example
175
- * const timers = await manager.showTimers();
176
- * console.log(JSON.stringify(timers))
177
- */
178
- async showTimers() {
179
- try {
180
- const timersRaw = await fs.promises.readFile(this.timerfiledir, "utf-8");
181
- const timersData = timersRaw
182
- .split(/\r?\n/)
183
- .filter(t => t.trim())
184
- .map(line => JSON.parse(line));
185
- return timersData;
186
- }
187
- catch (e) {
188
- throw new Error(`Error when showing timers: ${e}`);
189
- }
190
- }
191
- }
192
- //# sourceMappingURL=JSONLTimersManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"JSONLTimersManager.js","sourceRoot":"","sources":["../../src/JSONLTimersManager.ts"],"names":[],"mappings":"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"}
@@ -1,60 +0,0 @@
1
- import type { Timer, CreateTimerOptions } from "./types.js";
2
- import { TimersManager } from "./TimersManager.js";
3
- export declare class PlainTextTimersManager extends TimersManager<"PlainText"> {
4
- protected getDefaultFilename(): string;
5
- /**
6
- * checkTimerfileSyntax
7
- * @description Checks the syntax of the timer file.
8
- * @param fileData
9
- * @returns void
10
- * @throws If syntax is invalid
11
- */
12
- protected checkTimerfileSyntax(fileData: string): Promise<void>;
13
- /**
14
- * createTimer
15
- * @description Creates a new timer.
16
- * @param length
17
- * @returns Promise that resolves to the timer ID (UUID)
18
- * @throws If length is invalid(e.g. length < 0) or file operation fails
19
- * @example
20
- * const manager = new PlainTextTimersManager();
21
- * const newTimer = await manager.createTimer(5000);
22
- * // newTimer will be id of the timer
23
- */
24
- createTimer(options: CreateTimerOptions<"PlainText">): Promise<string>;
25
- /**
26
- * removeTimer
27
- * @description Removes a timer by ID.
28
- * @param id ID of the timer to remove
29
- * @returns void
30
- * @throws If file operation fails
31
- * @example
32
- * await manager.removeTimer(id);
33
- */
34
- removeTimer(id: string): Promise<void>;
35
- /**
36
- * checkTimers
37
- * @description Starts monitoring expired timers asynchronously and returns immediately. The callback is invoked asynchronously when a timer expires.
38
- * The callback is awaited before continuing.
39
- * @param callback Function invoked when an expired timer is detected (called asynchronously)
40
- * @param interval (number, optional): Check interval in milliseconds (default: 200ms)
41
- * @throws If file operation fails
42
- * @returns (NodeJS.Timeout) intervalId interval id of checkTimers
43
- * @example
44
- * const interval = manager.checkTimers((timer) => {
45
- * console.log(`A timer was stopped: ${timer.id}`);
46
- * });
47
- */
48
- checkTimers(callback: (timer: Timer<"PlainText">) => Promise<void>, interval?: number): NodeJS.Timeout;
49
- /**
50
- * showTimers
51
- * @description Retrieves all active timers.
52
- * @returns Array of `Timer` objects
53
- * @throws If file operation fails
54
- * @example
55
- * const timers = await manager.showTimers();
56
- * console.log(JSON.stringify(timers))
57
- */
58
- showTimers(): Promise<Timer<"PlainText">[]>;
59
- }
60
- //# sourceMappingURL=PlainTextTimersManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PlainTextTimersManager.d.ts","sourceRoot":"","sources":["../../src/PlainTextTimersManager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,qBAAa,sBAAuB,SAAQ,aAAa,CAAC,WAAW,CAAC;IACrE,SAAS,CAAC,kBAAkB,IAAI,MAAM;IAItC;;;;;;OAMG;cACsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB9E;;;;;;;;;;OAUG;IACmB,WAAW,CAAC,OAAO,EAAE,kBAAkB,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAsB5F;;;;;;;;OAQG;IACmB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B5D;;;;;;;;;;;;OAYG;IACa,WAAW,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAE,MAAY,GAAG,MAAM,CAAC,OAAO;IAyC3H;;;;;;;;OAQG;IACmB,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;CAoBjE"}