eternal-timer 3.0.0 → 4.1.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 (62) hide show
  1. package/README.md +145 -35
  2. package/dist/cjs/EventEmitter.d.ts +12 -0
  3. package/dist/cjs/EventEmitter.d.ts.map +1 -0
  4. package/dist/cjs/EventEmitter.js +50 -0
  5. package/dist/cjs/EventEmitter.js.map +1 -0
  6. package/dist/cjs/TimersManager/JSONLTimersManager.d.ts.map +1 -1
  7. package/dist/cjs/TimersManager/JSONLTimersManager.js +6 -3
  8. package/dist/cjs/TimersManager/JSONLTimersManager.js.map +1 -1
  9. package/dist/cjs/TimersManager/TimersManager.d.ts +30 -29
  10. package/dist/cjs/TimersManager/TimersManager.d.ts.map +1 -1
  11. package/dist/cjs/TimersManager/TimersManager.js +58 -54
  12. package/dist/cjs/TimersManager/TimersManager.js.map +1 -1
  13. package/dist/cjs/TimersStore/JSONLTimersStore.d.ts.map +1 -1
  14. package/dist/cjs/TimersStore/JSONLTimersStore.js +2 -1
  15. package/dist/cjs/TimersStore/JSONLTimersStore.js.map +1 -1
  16. package/dist/cjs/TimersStore/PlainTextTimersStore.d.ts.map +1 -1
  17. package/dist/cjs/TimersStore/PlainTextTimersStore.js +2 -1
  18. package/dist/cjs/TimersStore/PlainTextTimersStore.js.map +1 -1
  19. package/dist/cjs/TimersStore/TimersStore.d.ts.map +1 -1
  20. package/dist/cjs/TimersStore/TimersStore.js +4 -3
  21. package/dist/cjs/TimersStore/TimersStore.js.map +1 -1
  22. package/dist/cjs/throwMessage.d.ts +12 -0
  23. package/dist/cjs/throwMessage.d.ts.map +1 -0
  24. package/dist/cjs/throwMessage.js +15 -0
  25. package/dist/cjs/throwMessage.js.map +1 -0
  26. package/dist/cjs/types.d.ts +14 -0
  27. package/dist/cjs/types.d.ts.map +1 -1
  28. package/dist/esm/EventEmitter.d.ts +12 -0
  29. package/dist/esm/EventEmitter.d.ts.map +1 -0
  30. package/dist/esm/EventEmitter.js +46 -0
  31. package/dist/esm/EventEmitter.js.map +1 -0
  32. package/dist/esm/TimersManager/JSONLTimersManager.d.ts.map +1 -1
  33. package/dist/esm/TimersManager/JSONLTimersManager.js +6 -3
  34. package/dist/esm/TimersManager/JSONLTimersManager.js.map +1 -1
  35. package/dist/esm/TimersManager/TimersManager.d.ts +30 -29
  36. package/dist/esm/TimersManager/TimersManager.d.ts.map +1 -1
  37. package/dist/esm/TimersManager/TimersManager.js +58 -54
  38. package/dist/esm/TimersManager/TimersManager.js.map +1 -1
  39. package/dist/esm/TimersStore/JSONLTimersStore.d.ts.map +1 -1
  40. package/dist/esm/TimersStore/JSONLTimersStore.js +2 -1
  41. package/dist/esm/TimersStore/JSONLTimersStore.js.map +1 -1
  42. package/dist/esm/TimersStore/PlainTextTimersStore.d.ts.map +1 -1
  43. package/dist/esm/TimersStore/PlainTextTimersStore.js +2 -1
  44. package/dist/esm/TimersStore/PlainTextTimersStore.js.map +1 -1
  45. package/dist/esm/TimersStore/TimersStore.d.ts.map +1 -1
  46. package/dist/esm/TimersStore/TimersStore.js +4 -3
  47. package/dist/esm/TimersStore/TimersStore.js.map +1 -1
  48. package/dist/esm/throwMessage.d.ts +12 -0
  49. package/dist/esm/throwMessage.d.ts.map +1 -0
  50. package/dist/esm/throwMessage.js +12 -0
  51. package/dist/esm/throwMessage.js.map +1 -0
  52. package/dist/esm/types.d.ts +14 -0
  53. package/dist/esm/types.d.ts.map +1 -1
  54. package/package.json +2 -5
  55. package/dist/cjs/Log.d.ts +0 -8
  56. package/dist/cjs/Log.d.ts.map +0 -1
  57. package/dist/cjs/Log.js +0 -61
  58. package/dist/cjs/Log.js.map +0 -1
  59. package/dist/esm/Log.d.ts +0 -8
  60. package/dist/esm/Log.d.ts.map +0 -1
  61. package/dist/esm/Log.js +0 -24
  62. package/dist/esm/Log.js.map +0 -1
@@ -1,5 +1,6 @@
1
1
  import type { CreateTimerOptions, StorageType, Timer } from "../types.js";
2
2
  import { TimersStore } from "../TimersStore/TimersStore.js";
3
+ import { EventEmitter } from "../EventEmitter.js";
3
4
  /**
4
5
  * TimersManager
5
6
  * @description
@@ -9,9 +10,9 @@ import { TimersStore } from "../TimersStore/TimersStore.js";
9
10
  * - Timers are persisted in a file
10
11
  * - Expired timers are detected by polling
11
12
  */
12
- export declare abstract class TimersManager<T extends StorageType, Extra extends object> {
13
+ export declare abstract class TimersManager<T extends StorageType, Extra extends object> extends EventEmitter<T, Extra> {
13
14
  protected readonly timerfiledir: string;
14
- private checkLock;
15
+ protected checkLock: boolean;
15
16
  protected TimersStore: TimersStore<T, Extra> | null;
16
17
  private queue;
17
18
  protected runExclusive<T>(fn: () => Promise<T>): Promise<T>;
@@ -21,23 +22,27 @@ export declare abstract class TimersManager<T extends StorageType, Extra extends
21
22
  /**
22
23
  * constructor
23
24
  * @description Initializes the TimersManager instance. If the timer file does not exist, an empty file is created.
24
- * @param {string} [options] (string, optional) Configuration timer file path and it is treated as the timer file path.
25
+ * @param {string} [timerfile] (string, optional) Configuration timer file path and it is treated as the timer file path.
25
26
  * @throws If file access or creation fails
26
27
  * @example
27
28
  * const manager = new TimersManager(); // Uses default timer file path
28
29
  * const manager = new TimersManager("/path/to/timers.txt"); // Uses specified timer file path
29
30
  */
30
- constructor(options?: string);
31
+ constructor(timerfile?: string);
31
32
  /**
32
33
  * createTimer
33
34
  * @description Creates a new timer.
34
- * @param {{length: number, extra: Extra} | number} options Timer duration in milliseconds and extra field(only JSONL)
35
+ * @param {CreateTimerOptions<T, Extra>} options Timer duration in milliseconds for PlainText or an object with length and extra for JSONL.
35
36
  * @returns Promise that resolves to the timer ID (UUID)
36
- * @throws If length is invalid(e.g. length < 0) or file operation fails
37
+ * @throws If length is invalid (e.g. length < 0) or file operation fails
37
38
  * @example
38
- * const manager = new TimersManager();
39
- * const newTimer = await manager.createTimer(5000);
40
- * // newTimer will be id of the timer
39
+ * // For PlainTextTimersManager
40
+ * const manager = new PlainTextTimersManager();
41
+ * const newTimerId = await manager.createTimer(5000); // Create a 5-second timer
42
+ *
43
+ * // For JSONLTimersManager
44
+ * const jsonlManager = new JSONLTimersManager<{ title: string }>();
45
+ * const jsonlTimerId = await jsonlManager.createTimer({ length: 10000, extra: { title: "My JSONL Timer" } }); // Create a 10-second timer with extra data
41
46
  */
42
47
  createTimer(options: CreateTimerOptions<T, Extra>): Promise<string>;
43
48
  /**
@@ -51,29 +56,25 @@ export declare abstract class TimersManager<T extends StorageType, Extra extends
51
56
  */
52
57
  removeTimer(id: string): Promise<void>;
53
58
  /**
54
- * checkTimers
55
- * @description Starts monitoring timers at the specified interval.
56
- * When a timer expires, the provided `callback` is invoked with the timer.
57
- * The callback is awaited before the next processing cycle continues.
58
- * @param {(timer: Timer<T, Extra>) => void | Promise<void>} callback Function invoked when an expired timer is detected (called asynchronously)
59
- * @param {number} [interval=200] (number, optional): Check interval in milliseconds (default: 200ms)
60
- * @throws If file operation fails
61
- * @returns {Promise<NodeJS.Timeout>} intervalId interval id of checkTimers
59
+ * checkStart
60
+ * @description Starts the timer checking loop. This method should be called once after creating an instance of TimersManager to detect expired timers.
61
+ * @param {number} [interval=200] Polling interval in milliseconds (default: 200ms)
62
+ * @returns The interval ID which can be used to stop the loop with clearInterval
63
+ * @throws If file operation fails during checking
62
64
  * @example
63
- * const interval = await manager.checkTimers((timer) => {
64
- * console.log(`A timer was stopped: ${timer.id}`);
65
- * });
65
+ * const manager = new TimersManager();
66
+ * manager.checkStart(1000); // Check for expired timers every 1 second
66
67
  */
67
- checkTimers(callback: (timer: Timer<T, Extra>) => void | Promise<void>, interval?: number): Promise<NodeJS.Timeout>;
68
+ checkStart(interval?: number): Promise<NodeJS.Timeout>;
68
69
  /**
69
- * showTimers
70
- * @description Retrieves all active timers.
71
- * @returns Array of `Timer` objects
72
- * @throws If file operation fails
73
- * @example
74
- * const timers = await manager.showTimers();
75
- * console.log(JSON.stringify(timers))
76
- */
70
+ * showTimers
71
+ * @description Retrieves all active timers.
72
+ * @returns Array of `Timer` objects
73
+ * @throws If file operation fails
74
+ * @example
75
+ * const timers = await manager.showTimers();
76
+ * console.log(JSON.stringify(timers))
77
+ */
77
78
  showTimers(): Promise<Timer<T, Extra>[]>;
78
79
  /**
79
80
  * adjustRemainingTime
@@ -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;AAG5D;;;;;;;;GAQG;AACH,8BAAsB,aAAa,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,SAAS,MAAM;IAC9E,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IACxC,OAAO,CAAC,SAAS,CAAkB;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,OAAO,CAAC,EAAE,MAAM;IAcjB;;;;;;;;;;OAUM;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;;;;;;;;;;;;;OAaM;IACO,WAAW,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAE,MAAY,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;IAuDrI;;;;;;;;OAQM;IACO,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;CAsB1E"}
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,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;IAgChF;;;;;;;;OAQM;IACO,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBnD;;;;;;;;;OASG;IACU,UAAU,CACtB,QAAQ,GAAE,MAAY,GACpB,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;IAqD1B;;;;;;;;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;CAwB1E"}
@@ -3,7 +3,8 @@ import fs from "fs";
3
3
  import { v4 as uuidv4 } from "uuid";
4
4
  import searchRoot from "../searchRoot.js";
5
5
  import { TimersStore } from "../TimersStore/TimersStore.js";
6
- import { Log } from "../Log.js";
6
+ import { EventEmitter } from "../EventEmitter.js";
7
+ import { throwMessage } from "../throwMessage.js";
7
8
  /**
8
9
  * TimersManager
9
10
  * @description
@@ -13,7 +14,7 @@ import { Log } from "../Log.js";
13
14
  * - Timers are persisted in a file
14
15
  * - Expired timers are detected by polling
15
16
  */
16
- export class TimersManager {
17
+ export class TimersManager extends EventEmitter {
17
18
  timerfiledir;
18
19
  checkLock = false;
19
20
  TimersStore = null;
@@ -26,17 +27,18 @@ export class TimersManager {
26
27
  /**
27
28
  * constructor
28
29
  * @description Initializes the TimersManager instance. If the timer file does not exist, an empty file is created.
29
- * @param {string} [options] (string, optional) Configuration timer file path and it is treated as the timer file path.
30
+ * @param {string} [timerfile] (string, optional) Configuration timer file path and it is treated as the timer file path.
30
31
  * @throws If file access or creation fails
31
32
  * @example
32
33
  * const manager = new TimersManager(); // Uses default timer file path
33
34
  * const manager = new TimersManager("/path/to/timers.txt"); // Uses specified timer file path
34
35
  */
35
- constructor(options) {
36
+ constructor(timerfile) {
37
+ super();
36
38
  const rootDir = searchRoot();
37
- this.timerfiledir = path.resolve(rootDir, options ?? this.getDefaultFilename());
39
+ this.timerfiledir = path.resolve(rootDir, timerfile ?? this.getDefaultFilename());
38
40
  if (!this.timerfiledir.startsWith(rootDir)) {
39
- throw new Error(`Timer file path must be within the project directory`);
41
+ throw new Error(throwMessage.FilePathinvalid);
40
42
  }
41
43
  try {
42
44
  fs.accessSync(this.timerfiledir);
@@ -48,23 +50,27 @@ export class TimersManager {
48
50
  /**
49
51
  * createTimer
50
52
  * @description Creates a new timer.
51
- * @param {{length: number, extra: Extra} | number} options Timer duration in milliseconds and extra field(only JSONL)
53
+ * @param {CreateTimerOptions<T, Extra>} options Timer duration in milliseconds for PlainText or an object with length and extra for JSONL.
52
54
  * @returns Promise that resolves to the timer ID (UUID)
53
- * @throws If length is invalid(e.g. length < 0) or file operation fails
55
+ * @throws If length is invalid (e.g. length < 0) or file operation fails
54
56
  * @example
55
- * const manager = new TimersManager();
56
- * const newTimer = await manager.createTimer(5000);
57
- * // newTimer will be id of the timer
57
+ * // For PlainTextTimersManager
58
+ * const manager = new PlainTextTimersManager();
59
+ * const newTimerId = await manager.createTimer(5000); // Create a 5-second timer
60
+ *
61
+ * // For JSONLTimersManager
62
+ * const jsonlManager = new JSONLTimersManager<{ title: string }>();
63
+ * const jsonlTimerId = await jsonlManager.createTimer({ length: 10000, extra: { title: "My JSONL Timer" } }); // Create a 10-second timer with extra data
58
64
  */
59
65
  async createTimer(options) {
60
66
  return this.runExclusive(async () => {
61
67
  this.TimersStore ??= await this.createTimersStore();
62
68
  if (this.type === "JSONL" && typeof options === "number") {
63
- throw new Error(`Cannot create timer without extra fields in JSONL`);
69
+ throw new Error(throwMessage.NoExtra);
64
70
  }
65
71
  let length = typeof options === "object" ? options.length : options;
66
72
  if (length < 0)
67
- throw new Error(`Invalid length: ${length}`);
73
+ throw new Error(throwMessage.InvalidLength(length));
68
74
  length = Math.trunc(length);
69
75
  const id = uuidv4();
70
76
  const now = Date.now();
@@ -78,6 +84,7 @@ export class TimersManager {
78
84
  : {}),
79
85
  };
80
86
  await this.TimersStore.appendTimer(newTimerData);
87
+ await this.emit("created", newTimerData);
81
88
  return id;
82
89
  });
83
90
  }
@@ -95,37 +102,35 @@ export class TimersManager {
95
102
  this.TimersStore ??= await this.createTimersStore();
96
103
  const timers = await this.TimersStore.loadTimers();
97
104
  const index = timers.findIndex(t => t.id === id);
98
- if (index === -1) {
99
- throw new Error(`Timer with id ${id} not found`);
105
+ if (index === -1 || timers[index] === undefined) {
106
+ throw new Error(throwMessage.NotFound(id));
100
107
  }
101
108
  timers.splice(index, 1);
102
109
  await this.TimersStore.saveTimers(timers);
110
+ await this.emit("removed", timers[index]);
103
111
  return;
104
112
  });
105
113
  }
106
114
  /**
107
- * checkTimers
108
- * @description Starts monitoring timers at the specified interval.
109
- * When a timer expires, the provided `callback` is invoked with the timer.
110
- * The callback is awaited before the next processing cycle continues.
111
- * @param {(timer: Timer<T, Extra>) => void | Promise<void>} callback Function invoked when an expired timer is detected (called asynchronously)
112
- * @param {number} [interval=200] (number, optional): Check interval in milliseconds (default: 200ms)
113
- * @throws If file operation fails
114
- * @returns {Promise<NodeJS.Timeout>} intervalId interval id of checkTimers
115
+ * checkStart
116
+ * @description Starts the timer checking loop. This method should be called once after creating an instance of TimersManager to detect expired timers.
117
+ * @param {number} [interval=200] Polling interval in milliseconds (default: 200ms)
118
+ * @returns The interval ID which can be used to stop the loop with clearInterval
119
+ * @throws If file operation fails during checking
115
120
  * @example
116
- * const interval = await manager.checkTimers((timer) => {
117
- * console.log(`A timer was stopped: ${timer.id}`);
118
- * });
121
+ * const manager = new TimersManager();
122
+ * manager.checkStart(1000); // Check for expired timers every 1 second
119
123
  */
120
- async checkTimers(callback, interval = 200) {
124
+ async checkStart(interval = 200) {
121
125
  this.TimersStore ??= await this.createTimersStore();
122
126
  const loop = async () => {
123
- if (this.checkLock) {
127
+ if (this.checkLock)
124
128
  return;
125
- }
126
129
  this.checkLock = true;
130
+ let expiredTimers = [];
127
131
  try {
128
- const expiredTimers = await this.runExclusive(async () => {
132
+ expiredTimers = await this.runExclusive(async () => {
133
+ await this.emit("interval", void 0);
129
134
  const allTimers = await this.TimersStore.loadTimers();
130
135
  const now = Date.now();
131
136
  const expired = [];
@@ -143,35 +148,33 @@ export class TimersManager {
143
148
  }
144
149
  return expired;
145
150
  });
146
- for (const timerData of expiredTimers) {
147
- try {
148
- await callback(timerData);
149
- }
150
- catch (e) {
151
- await Log.ensureLogger();
152
- Log.loggerInstance?.error(`Error in callback of checkTimers: ${e}`);
153
- }
154
- }
155
151
  }
156
152
  catch (e) {
157
- await Log.ensureLogger();
158
- Log.loggerInstance?.error(`Error when checking timer: ${e}`);
159
- }
160
- finally {
153
+ this.emit("errored", e instanceof Error ? e : new Error(String(e))).catch(() => { });
161
154
  this.checkLock = false;
155
+ return;
156
+ }
157
+ for (const timer of expiredTimers) {
158
+ try {
159
+ await this.emit("expired", timer);
160
+ }
161
+ catch (e) {
162
+ await this.emit("errored", e instanceof Error ? e : new Error(String(e)));
163
+ }
162
164
  }
165
+ this.checkLock = false;
163
166
  };
164
167
  return setInterval(loop, interval);
165
168
  }
166
169
  /**
167
- * showTimers
168
- * @description Retrieves all active timers.
169
- * @returns Array of `Timer` objects
170
- * @throws If file operation fails
171
- * @example
172
- * const timers = await manager.showTimers();
173
- * console.log(JSON.stringify(timers))
174
- */
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
+ */
175
178
  async showTimers() {
176
179
  return this.runExclusive(async () => {
177
180
  this.TimersStore ??= await this.createTimersStore();
@@ -192,16 +195,17 @@ export class TimersManager {
192
195
  this.TimersStore ??= await this.createTimersStore();
193
196
  const timers = await this.TimersStore.loadTimers();
194
197
  const index = timers.findIndex(t => t.id === id);
195
- if (index === -1) {
196
- throw new Error(`Timer with id ${id} not found`);
198
+ if (index === -1 || timers[index] === undefined) {
199
+ throw new Error(throwMessage.NotFound(id));
197
200
  }
201
+ const old = { ...timers[index] };
198
202
  const now = Date.now();
199
203
  const timer = timers[index];
200
204
  const remaining = Math.max(0, timer.stop - now);
201
205
  const newRemaining = Math.max(0, remaining + delay);
202
206
  timer.stop = now + newRemaining;
203
- timers[index] = timer;
204
207
  await this.TimersStore.saveTimers(timers);
208
+ await this.emit("updated", { old, new: timer });
205
209
  return;
206
210
  });
207
211
  }
@@ -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":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;;;;;;;GAQG;AACH,MAAM,OAAgB,aAA2D,SAAQ,YAAsB;IAC3F,YAAY,CAAS;IAC9B,SAAS,GAAY,KAAK,CAAC;IAE3B,WAAW,GAAiC,IAAI,CAAC;IAEnD,KAAK,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IACvC,YAAY,CAAI,EAAoB;QAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,CAAC;IACV,CAAC;IAMD;;;;;;;;QAQO;IACP,YACC,SAAkB;QAElB,KAAK,EAAE,CAAC;QACR,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAClF,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,CAAC;YACJ,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACR,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACzC,CAAC;IACF,CAAC;IAED;;;;;;;;;;;;;;OAcM;IACC,KAAK,CAAC,WAAW,CAAC,OAAqC;QAC7D,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;YACnC,IAAI,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAEpD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC1D,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YACvC,CAAC;YAED,IAAI,MAAM,GAAW,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;YAC5E,IAAI,MAAM,GAAG,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;YAEpE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAE5B,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAE3C,MAAM,YAAY,GAAoB;gBACrC,EAAE;gBACF,KAAK,EAAE,GAAG;gBACV,IAAI,EAAE,QAAQ;gBACd,GAAG,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;oBACxE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;oBAC1B,CAAC,CAAC,EAAE,CAAC;aACa,CAAC;YAErB,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YACjD,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YACzC,OAAO,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQM;IACC,KAAK,CAAC,WAAW,CAAC,EAAU;QAClC,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;YACnC,IAAI,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACpD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;YAEnD,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YACjD,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;gBACjD,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5C,CAAC;YAED,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACxB,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1C,OAAO;QACR,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACI,KAAK,CAAC,UAAU,CACtB,WAAmB,GAAG;QAGtB,IAAI,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEpD,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;YACvB,IAAI,IAAI,CAAC,SAAS;gBAAE,OAAO;YAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAEtB,IAAI,aAAa,GAAsB,EAAE,CAAC;YAE1C,IAAI,CAAC;gBACJ,aAAa,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;oBAClD,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;oBACpC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,WAAY,CAAC,UAAU,EAAE,CAAC;oBACvD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAEvB,MAAM,OAAO,GAAsB,EAAE,CAAC;oBACtC,MAAM,MAAM,GAAsB,EAAE,CAAC;oBAErC,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;wBAC/B,IAAI,KAAK,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;4BACvB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBACrB,CAAC;6BAAM,CAAC;4BACP,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBACpB,CAAC;oBACF,CAAC;oBAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACxB,MAAM,IAAI,CAAC,WAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;oBAC5C,CAAC;oBAED,OAAO,OAAO,CAAC;gBAChB,CAAC,CAAC,CAAC;YAEJ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACZ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBACpF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACvB,OAAO;YACR,CAAC;YACD,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;gBACnC,IAAI,CAAC;oBACJ,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBACnC,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACZ,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3E,CAAC;YACF,CAAC;YAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACxB,CAAC,CAAC;QAEF,OAAO,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED;;;;;;;;UAQG;IACI,KAAK,CAAC,UAAU;QACtB,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;YACnC,IAAI,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACpD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;YACvD,OAAO,UAAU,CAAC;QACnB,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;;QAOO;IACA,KAAK,CAAC,mBAAmB,CAAC,EAAU,EAAE,KAAa;QACzD,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;YACnC,IAAI,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACpD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;YAEnD,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YACjD,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;gBACjD,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5C,CAAC;YAED,MAAM,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAEjC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAEvB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;YAChD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,CAAC;YAEpD,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,YAAY,CAAC;YAChC,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;YAChD,OAAO;QACR,CAAC,CAAC,CAAC;IACH,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"JSONLTimersStore.d.ts","sourceRoot":"","sources":["../../../src/TimersStore/JSONLTimersStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,qBAAa,gBAAgB,CAAC,KAAK,SAAS,MAAM,CAAE,SAAQ,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC;gBAGrF,SAAS,EAAE,MAAM;IAKlB;;;;;;OAMG;cACsB,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAe7E,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,GAAG,MAAM;IAO1D,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;CAMlE"}
1
+ {"version":3,"file":"JSONLTimersStore.d.ts","sourceRoot":"","sources":["../../../src/TimersStore/JSONLTimersStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,qBAAa,gBAAgB,CAAC,KAAK,SAAS,MAAM,CAAE,SAAQ,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC;gBAGrF,SAAS,EAAE,MAAM;IAKlB;;;;;;OAMG;cACsB,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAe7E,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,GAAG,MAAM;IAO1D,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;CAMlE"}
@@ -1,5 +1,6 @@
1
1
  import { validate } from "uuid";
2
2
  import { TimersStore } from "./TimersStore.js";
3
+ import { throwMessage } from "../throwMessage.js";
3
4
  export class JSONLTimersStore extends TimersStore {
4
5
  constructor(timerfile) {
5
6
  super(timerfile);
@@ -13,7 +14,7 @@ export class JSONLTimersStore extends TimersStore {
13
14
  */
14
15
  async checkTimerfileSyntax(timers) {
15
16
  const throwing = () => {
16
- throw new Error(`Timer file's syntax is wrong`);
17
+ throw new Error(throwMessage.InvalidSyntax);
17
18
  };
18
19
  for (const timer of timers) {
19
20
  if (Object.keys(timer).length !== 4)
@@ -1 +1 @@
1
- {"version":3,"file":"JSONLTimersStore.js","sourceRoot":"","sources":["../../../src/TimersStore/JSONLTimersStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAGhC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,OAAO,gBAAuC,SAAQ,WAA2B;IAEtF,YACC,SAAiB;QAEjB,KAAK,CAAC,SAAS,CAAC,CAAC;IAClB,CAAC;IAED;;;;;;OAMG;IACgB,KAAK,CAAC,oBAAoB,CAAC,MAA+B;QAC5E,MAAM,QAAQ,GAAG,GAAG,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACjD,CAAC,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC5B,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,QAAQ,EAAE,CAAC;YAChD,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,QAAQ,EAAE,CAAC;YAChD,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAAE,QAAQ,EAAE,CAAC;YACjD,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;gBAAE,QAAQ,EAAE,CAAC;YAChE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;gBAAE,QAAQ,EAAE,CAAC;YAC9D,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI;gBAAE,QAAQ,EAAE,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;gBAAE,QAAQ,EAAE,CAAC;QACjE,CAAC;IACF,CAAC;IAEe,iBAAiB,CAAC,MAA+B;QAChE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,CAAC;QACX,CAAC;QACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAEe,WAAW,CAAC,IAAY;QACvC,OAAO,IAAI;aACT,KAAK,CAAC,OAAO,CAAC;aACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC7B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAA0B,CAAC,CAAC;IAC5D,CAAC;CACD"}
1
+ {"version":3,"file":"JSONLTimersStore.js","sourceRoot":"","sources":["../../../src/TimersStore/JSONLTimersStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAGhC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,OAAO,gBAAuC,SAAQ,WAA2B;IAEtF,YACC,SAAiB;QAEjB,KAAK,CAAC,SAAS,CAAC,CAAC;IAClB,CAAC;IAED;;;;;;OAMG;IACgB,KAAK,CAAC,oBAAoB,CAAC,MAA+B;QAC5E,MAAM,QAAQ,GAAG,GAAG,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QAC7C,CAAC,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC5B,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,QAAQ,EAAE,CAAC;YAChD,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,QAAQ,EAAE,CAAC;YAChD,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAAE,QAAQ,EAAE,CAAC;YACjD,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;gBAAE,QAAQ,EAAE,CAAC;YAChE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;gBAAE,QAAQ,EAAE,CAAC;YAC9D,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI;gBAAE,QAAQ,EAAE,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;gBAAE,QAAQ,EAAE,CAAC;QACjE,CAAC;IACF,CAAC;IAEe,iBAAiB,CAAC,MAA+B;QAChE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,CAAC;QACX,CAAC;QACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAEe,WAAW,CAAC,IAAY;QACvC,OAAO,IAAI;aACT,KAAK,CAAC,OAAO,CAAC;aACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC7B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAA0B,CAAC,CAAC;IAC5D,CAAC;CACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"PlainTextTimersStore.d.ts","sourceRoot":"","sources":["../../../src/TimersStore/PlainTextTimersStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,qBAAa,oBAAqB,SAAQ,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC;gBAGxE,SAAS,EAAE,MAAM;IAKlB;;;;;;OAMM;cACmB,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAclF,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,GAAG,MAAM;IAO/D,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE;CAavE"}
1
+ {"version":3,"file":"PlainTextTimersStore.d.ts","sourceRoot":"","sources":["../../../src/TimersStore/PlainTextTimersStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,qBAAa,oBAAqB,SAAQ,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC;gBAGxE,SAAS,EAAE,MAAM;IAKlB;;;;;;OAMM;cACmB,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAclF,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,GAAG,MAAM;IAO/D,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE;CAavE"}
@@ -1,5 +1,6 @@
1
1
  import { validate } from "uuid";
2
2
  import { TimersStore } from "./TimersStore.js";
3
+ import { throwMessage } from "../throwMessage.js";
3
4
  export class PlainTextTimersStore extends TimersStore {
4
5
  constructor(timerfile) {
5
6
  super(timerfile);
@@ -13,7 +14,7 @@ export class PlainTextTimersStore extends TimersStore {
13
14
  */
14
15
  async checkTimerfileSyntax(timers) {
15
16
  const throwing = () => {
16
- throw new Error(`Timer file's syntax is wrong`);
17
+ throw new Error(throwMessage.InvalidSyntax);
17
18
  };
18
19
  for (const timer of timers) {
19
20
  if (Object.keys(timer).length !== 3)
@@ -1 +1 @@
1
- {"version":3,"file":"PlainTextTimersStore.js","sourceRoot":"","sources":["../../../src/TimersStore/PlainTextTimersStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAGhC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,OAAO,oBAAqB,SAAQ,WAAgC;IAEzE,YACC,SAAiB;QAEjB,KAAK,CAAC,SAAS,CAAC,CAAC;IAClB,CAAC;IAED;;;;;;OAMM;IACa,KAAK,CAAC,oBAAoB,CAAC,MAAoC;QACjF,MAAM,QAAQ,GAAG,GAAG,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACjD,CAAC,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC5B,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,QAAQ,EAAE,CAAC;YAChD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAAE,QAAQ,EAAE,CAAC;YACpC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAAE,QAAQ,EAAE,CAAC;YAC3C,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAAE,QAAQ,EAAE,CAAC;YAC1C,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,QAAQ,EAAE,CAAC;QAC1D,CAAC;QACD,OAAO;IACR,CAAC;IAEe,iBAAiB,CAAC,MAAoC;QACrE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,CAAC;QACX,CAAC;QACD,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnF,CAAC;IAEe,WAAW,CAAC,IAAY;QACvC,OAAO,IAAI;aACT,KAAK,CAAC,OAAO,CAAC;aACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC7B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACb,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChD,OAAO;gBACN,EAAE,EAAE,EAAG;gBACP,KAAK,EAAE,MAAM,CAAC,QAAS,CAAC;gBACxB,IAAI,EAAE,MAAM,CAAC,OAAQ,CAAC;aACQ,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC;CACD"}
1
+ {"version":3,"file":"PlainTextTimersStore.js","sourceRoot":"","sources":["../../../src/TimersStore/PlainTextTimersStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAGhC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,OAAO,oBAAqB,SAAQ,WAAgC;IAEzE,YACC,SAAiB;QAEjB,KAAK,CAAC,SAAS,CAAC,CAAC;IAClB,CAAC;IAED;;;;;;OAMM;IACa,KAAK,CAAC,oBAAoB,CAAC,MAAoC;QACjF,MAAM,QAAQ,GAAG,GAAG,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QAC7C,CAAC,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC5B,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,QAAQ,EAAE,CAAC;YAChD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAAE,QAAQ,EAAE,CAAC;YACpC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAAE,QAAQ,EAAE,CAAC;YAC3C,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAAE,QAAQ,EAAE,CAAC;YAC1C,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,QAAQ,EAAE,CAAC;QAC1D,CAAC;QACD,OAAO;IACR,CAAC;IAEe,iBAAiB,CAAC,MAAoC;QACrE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,CAAC;QACX,CAAC;QACD,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnF,CAAC;IAEe,WAAW,CAAC,IAAY;QACvC,OAAO,IAAI;aACT,KAAK,CAAC,OAAO,CAAC;aACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC7B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACb,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChD,OAAO;gBACN,EAAE,EAAE,EAAG;gBACP,KAAK,EAAE,MAAM,CAAC,QAAS,CAAC;gBACxB,IAAI,EAAE,MAAM,CAAC,OAAQ,CAAC;aACQ,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC;CACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"TimersStore.d.ts","sourceRoot":"","sources":["../../../src/TimersStore/TimersStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEtD,8BAAsB,WAAW,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,SAAS,MAAM;IAC5E,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAErC,SAAS,aACR,SAAS,EAAE,MAAM;IAKL,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IAWxC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAUpD,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAS5D,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;aACjE,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,MAAM;aACvD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE;CAC5D"}
1
+ {"version":3,"file":"TimersStore.d.ts","sourceRoot":"","sources":["../../../src/TimersStore/TimersStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGtD,8BAAsB,WAAW,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,SAAS,MAAM;IAC5E,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAErC,SAAS,aACR,SAAS,EAAE,MAAM;IAKL,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IAWxC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAUpD,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAS5D,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;aACjE,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,MAAM;aACvD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE;CAC5D"}
@@ -1,4 +1,5 @@
1
1
  import fs from "fs/promises";
2
+ import { throwMessage } from "../throwMessage.js";
2
3
  export class TimersStore {
3
4
  timerfile;
4
5
  constructor(timerfile) {
@@ -12,7 +13,7 @@ export class TimersStore {
12
13
  return timersData;
13
14
  }
14
15
  catch (e) {
15
- throw new Error("Error when loading timer data", { cause: e });
16
+ throw new Error(throwMessage.LoadTimerData, { cause: e });
16
17
  }
17
18
  }
18
19
  async saveTimers(timers) {
@@ -21,7 +22,7 @@ export class TimersStore {
21
22
  await fs.writeFile(this.timerfile, data, "utf-8");
22
23
  }
23
24
  catch (e) {
24
- throw new Error(`Error when saving timer data`, { cause: e });
25
+ throw new Error(throwMessage.SaveTimerData, { cause: e });
25
26
  }
26
27
  }
27
28
  async appendTimer(timer) {
@@ -30,7 +31,7 @@ export class TimersStore {
30
31
  return;
31
32
  }
32
33
  catch (e) {
33
- throw new Error(`Error when appending timer data`, { cause: e });
34
+ throw new Error(throwMessage.AppendTimerData, { cause: e });
34
35
  }
35
36
  }
36
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TimersStore.js","sourceRoot":"","sources":["../../../src/TimersStore/TimersStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAI7B,MAAM,OAAgB,WAAW;IACb,SAAS,CAAS;IAErC,YACC,SAAiB;QAEjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,CAAC;IAEM,KAAK,CAAC,UAAU;QACtB,IAAI,CAAC;YACJ,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACxD,MAAM,UAAU,GAAsB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC7D,MAAM,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;YAC5C,OAAO,UAAU,CAAC;QACnB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,+BAA+B,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC;IACF,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,MAAyB;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAE5C,IAAI,CAAC;YACJ,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,8BAA8B,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/D,CAAC;IACF,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,KAAsB;QAC9C,IAAI,CAAC;YACJ,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAC5E,OAAO;QACR,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,iCAAiC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAClE,CAAC;IACF,CAAC;CAKD"}
1
+ {"version":3,"file":"TimersStore.js","sourceRoot":"","sources":["../../../src/TimersStore/TimersStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAG7B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,OAAgB,WAAW;IACb,SAAS,CAAS;IAErC,YACC,SAAiB;QAEjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,CAAC;IAEM,KAAK,CAAC,UAAU;QACtB,IAAI,CAAC;YACJ,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACxD,MAAM,UAAU,GAAsB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC7D,MAAM,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;YAC5C,OAAO,UAAU,CAAC;QACnB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC;IACF,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,MAAyB;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAE5C,IAAI,CAAC;YACJ,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC;IACF,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,KAAsB;QAC9C,IAAI,CAAC;YACJ,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAC5E,OAAO;QACR,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;IACF,CAAC;CAKD"}
@@ -0,0 +1,12 @@
1
+ export declare const throwMessage: {
2
+ NotFound: (id: string) => string;
3
+ ChangeExtra: string;
4
+ FilePathinvalid: string;
5
+ NoExtra: string;
6
+ InvalidLength: (length: number) => string;
7
+ InvalidSyntax: string;
8
+ LoadTimerData: string;
9
+ SaveTimerData: string;
10
+ AppendTimerData: string;
11
+ };
12
+ //# sourceMappingURL=throwMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"throwMessage.d.ts","sourceRoot":"","sources":["../../src/throwMessage.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;mBACT,MAAM;;;;4BAIG,MAAM;;;;;CAK9B,CAAC"}
@@ -0,0 +1,12 @@
1
+ export const throwMessage = {
2
+ NotFound: (id) => `Timer with id ${id} not found`,
3
+ ChangeExtra: "Error when changing extra",
4
+ FilePathinvalid: "Timer file path must be within the project directory",
5
+ NoExtra: "Cannot create timer without extra fields in JSONL",
6
+ InvalidLength: (length) => `Invalid length: ${length}`,
7
+ InvalidSyntax: "Timer file's syntax is wrong",
8
+ LoadTimerData: "Error when loading timer data",
9
+ SaveTimerData: "Error when saving timer data",
10
+ AppendTimerData: "Error when appending timer data",
11
+ };
12
+ //# sourceMappingURL=throwMessage.js.map
@@ -0,0 +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,aAAa,EAAE,8BAA8B;IAC7C,aAAa,EAAE,+BAA+B;IAC9C,aAAa,EAAE,8BAA8B;IAC7C,eAAe,EAAE,iCAAiC;CAClD,CAAC"}
@@ -13,4 +13,18 @@ export type CreateTimerOptions<T extends StorageType, Extra extends object> = T
13
13
  length: number;
14
14
  extra: Extra;
15
15
  } : T extends "PlainText" ? number : never;
16
+ export type TimerEvents<T extends StorageType, Extra extends object> = {
17
+ expired: Timer<T, Extra>;
18
+ errored: Error;
19
+ interval: void;
20
+ created: Timer<T, Extra>;
21
+ removed: Timer<T, Extra>;
22
+ updated: {
23
+ old: Timer<T, Extra>;
24
+ new: Timer<T, Extra>;
25
+ };
26
+ };
27
+ export type ListenerMap<T extends StorageType, Extra extends object> = {
28
+ [K in keyof TimerEvents<T, Extra>]?: ((payload: TimerEvents<T, Extra>[K]) => void | Promise<void>)[];
29
+ };
16
30
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,WAAW,CAAC;AAEhD,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,SAAS,MAAM,IACzD,CAAC,SAAS,OAAO,GACX;IACI,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAA;CACf,GACD;IACI,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEZ,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,SAAS,MAAM,IAAI,CAAC,SAAS,OAAO,GACzF;IACI,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAA;CACf,GACD,CAAC,SAAS,WAAW,GACnB,MAAM,GACN,KAAK,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,WAAW,CAAC;AAEhD,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,SAAS,MAAM,IACzD,CAAC,SAAS,OAAO,GACX;IACI,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAA;CACf,GACD;IACI,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEZ,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,SAAS,MAAM,IAAI,CAAC,SAAS,OAAO,GACzF;IACI,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAA;CACf,GACD,CAAC,SAAS,WAAW,GACnB,MAAM,GACN,KAAK,CAAC;AAEd,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,SAAS,MAAM,IAAI;IACrE,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACxB,OAAO,EAAE,KAAK,CAAA;IACd,QAAQ,EAAE,IAAI,CAAA;IACd,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACxB,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACxB,OAAO,EAAE;QAAE,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAAC,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;KAAE,CAAA;CACxD,CAAA;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,SAAS,MAAM,IAAI;KACpE,CAAC,IAAI,MAAM,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CACpC,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAC9B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;CAC7B,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eternal-timer",
3
- "version": "3.0.0",
3
+ "version": "4.1.0",
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",
@@ -47,8 +47,5 @@
47
47
  "files": [
48
48
  "dist"
49
49
  ],
50
- "main": "./dist/cjs/index.js",
51
- "optionalDependencies": {
52
- "@logtape/logtape": "^2.0.0"
53
- }
50
+ "main": "./dist/cjs/index.js"
54
51
  }
package/dist/cjs/Log.d.ts DELETED
@@ -1,8 +0,0 @@
1
- import type { Logger } from "@logtape/logtape";
2
- export declare class Log {
3
- private static logger;
4
- private static initPromise;
5
- static ensureLogger(): Promise<void>;
6
- static get loggerInstance(): Logger | null;
7
- }
8
- //# sourceMappingURL=Log.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Log.d.ts","sourceRoot":"","sources":["../../src/Log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,qBAAa,GAAG;IACf,OAAO,CAAC,MAAM,CAAC,MAAM,CAAuB;IAC5C,OAAO,CAAC,MAAM,CAAC,WAAW,CAA8B;WAEpC,YAAY;IAiBhC,WAAkB,cAAc,IAAI,MAAM,GAAG,IAAI,CAEhD;CACD"}
package/dist/cjs/Log.js DELETED
@@ -1,61 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.Log = void 0;
37
- class Log {
38
- static logger = null;
39
- static initPromise = null;
40
- static async ensureLogger() {
41
- if (Log.logger)
42
- return;
43
- if (!Log.initPromise) {
44
- Log.initPromise = (async () => {
45
- try {
46
- const logtape = await Promise.resolve().then(() => __importStar(require("@logtape/logtape")));
47
- Log.logger = logtape.getLogger(["eternal-timer"]);
48
- }
49
- catch {
50
- console.info("Tip: Install the optional package '@logtape/logtape' to customize logging behavior.");
51
- }
52
- })();
53
- }
54
- await Log.initPromise;
55
- }
56
- static get loggerInstance() {
57
- return Log.logger;
58
- }
59
- }
60
- exports.Log = Log;
61
- //# sourceMappingURL=Log.js.map