eternal-timer 1.3.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,6 +7,7 @@ exports.createTimer = createTimer;
7
7
  exports.removeTimer = removeTimer;
8
8
  exports.checkTimers = checkTimers;
9
9
  exports.showTimers = showTimers;
10
+ exports.getRemainingTimer = getRemainingTimer;
10
11
  const fs_1 = __importDefault(require("fs"));
11
12
  const path_1 = __importDefault(require("path"));
12
13
  const searchRoot_js_1 = __importDefault(require("./searchRoot.js"));
@@ -71,8 +72,22 @@ async function removeTimer(id) {
71
72
  try {
72
73
  const timersRaw = fs_1.default.readFileSync(timerfiledir, "utf-8");
73
74
  const timersData = timersRaw.split(/\r?\n/);
74
- const filteredTimers = timersData.filter(line => line.split(" ")[0] !== id);
75
- await fs_1.default.promises.writeFile(timerfiledir, filteredTimers.join("\n"), "utf-8");
75
+ let newTimersData = "";
76
+ let found = false;
77
+ for (const timerData of timersData) {
78
+ if (!timerData.trim()) {
79
+ found = true;
80
+ continue;
81
+ }
82
+ const [timerId] = timerData.split(" ");
83
+ if (timerId !== id) {
84
+ newTimersData += timerData + "\n";
85
+ }
86
+ }
87
+ if (!found) {
88
+ throw new Error(`Timer with id ${id} not found`);
89
+ }
90
+ await fs_1.default.promises.writeFile(timerfiledir, newTimersData, "utf-8");
76
91
  return;
77
92
  }
78
93
  catch (e) {
@@ -149,6 +164,34 @@ async function showTimers() {
149
164
  throw new Error(`Error when showing timers: ${e}`);
150
165
  }
151
166
  }
167
+ /**
168
+ * getRemainingTimer
169
+ * @description Retrieves the remaining time of a timer by ID.
170
+ * @param id timer's id you want to get remaining time(ms)
171
+ * @returns Remaining time of the timer(ms)
172
+ * @throws If timer with the specified ID is not found or file operation fails
173
+ * @example
174
+ * const remaining: number = await getRemainingTimer(id);
175
+ * console.log(`Remaining time: ${remaining} ms`);
176
+ */
177
+ async function getRemainingTimer(id) {
178
+ try {
179
+ const timersRaw = fs_1.default.readFileSync(timerfiledir, "utf-8");
180
+ const timersData = timersRaw.split(/\r?\n/);
181
+ for (const timerData of timersData) {
182
+ const splitedTimerData = timerData.split(" ");
183
+ if (splitedTimerData[0] === id) {
184
+ const now = Date.now();
185
+ const stop = Number(splitedTimerData[2]);
186
+ return Math.max(0, stop - now);
187
+ }
188
+ }
189
+ throw new Error(`Timer with id ${id} not found`);
190
+ }
191
+ catch (e) {
192
+ throw new Error(`Error when getting remaining timer: ${e}`);
193
+ }
194
+ }
152
195
  async function checkTimerfileSyntax(fileData) {
153
196
  const throwing = () => {
154
197
  throw new Error(`Timer file's syntax is wrong`);
@@ -45,4 +45,15 @@ export declare function checkTimers(callback: (timer: Timer) => void, interval?:
45
45
  * console.log(JSON.stringify(timers))
46
46
  */
47
47
  export declare function showTimers(): Promise<Timer[]>;
48
+ /**
49
+ * getRemainingTimer
50
+ * @description Retrieves the remaining time of a timer by ID.
51
+ * @param id timer's id you want to get remaining time(ms)
52
+ * @returns Remaining time of the timer(ms)
53
+ * @throws If timer with the specified ID is not found or file operation fails
54
+ * @example
55
+ * const remaining: number = await getRemainingTimer(id);
56
+ * console.log(`Remaining time: ${remaining} ms`);
57
+ */
58
+ export declare function getRemainingTimer(id: string): Promise<number>;
48
59
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,KAAK,GAAG;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAA;CACf,CAAA;AAuBD;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBjE;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAY3D;AAED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAAE,QAAQ,GAAE,MAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCxG;AAED;;;;;;;;GAQG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAmBnD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,KAAK,GAAG;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAA;CACf,CAAA;AAuBD;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBjE;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB3D;AAED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAAE,QAAQ,GAAE,MAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCxG;AAED;;;;;;;;GAQG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAmBnD;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBnE"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -45,4 +45,15 @@ export declare function checkTimers(callback: (timer: Timer) => void, interval?:
45
45
  * console.log(JSON.stringify(timers))
46
46
  */
47
47
  export declare function showTimers(): Promise<Timer[]>;
48
+ /**
49
+ * getRemainingTimer
50
+ * @description Retrieves the remaining time of a timer by ID.
51
+ * @param id timer's id you want to get remaining time(ms)
52
+ * @returns Remaining time of the timer(ms)
53
+ * @throws If timer with the specified ID is not found or file operation fails
54
+ * @example
55
+ * const remaining: number = await getRemainingTimer(id);
56
+ * console.log(`Remaining time: ${remaining} ms`);
57
+ */
58
+ export declare function getRemainingTimer(id: string): Promise<number>;
48
59
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,KAAK,GAAG;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAA;CACf,CAAA;AAuBD;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBjE;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAY3D;AAED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAAE,QAAQ,GAAE,MAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCxG;AAED;;;;;;;;GAQG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAmBnD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,KAAK,GAAG;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAA;CACf,CAAA;AAuBD;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBjE;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB3D;AAED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAAE,QAAQ,GAAE,MAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCxG;AAED;;;;;;;;GAQG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAmBnD;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBnE"}
package/dist/esm/index.js CHANGED
@@ -62,8 +62,22 @@ export async function removeTimer(id) {
62
62
  try {
63
63
  const timersRaw = fs.readFileSync(timerfiledir, "utf-8");
64
64
  const timersData = timersRaw.split(/\r?\n/);
65
- const filteredTimers = timersData.filter(line => line.split(" ")[0] !== id);
66
- await fs.promises.writeFile(timerfiledir, filteredTimers.join("\n"), "utf-8");
65
+ let newTimersData = "";
66
+ let found = false;
67
+ for (const timerData of timersData) {
68
+ if (!timerData.trim()) {
69
+ found = true;
70
+ continue;
71
+ }
72
+ const [timerId] = timerData.split(" ");
73
+ if (timerId !== id) {
74
+ newTimersData += timerData + "\n";
75
+ }
76
+ }
77
+ if (!found) {
78
+ throw new Error(`Timer with id ${id} not found`);
79
+ }
80
+ await fs.promises.writeFile(timerfiledir, newTimersData, "utf-8");
67
81
  return;
68
82
  }
69
83
  catch (e) {
@@ -140,6 +154,34 @@ export async function showTimers() {
140
154
  throw new Error(`Error when showing timers: ${e}`);
141
155
  }
142
156
  }
157
+ /**
158
+ * getRemainingTimer
159
+ * @description Retrieves the remaining time of a timer by ID.
160
+ * @param id timer's id you want to get remaining time(ms)
161
+ * @returns Remaining time of the timer(ms)
162
+ * @throws If timer with the specified ID is not found or file operation fails
163
+ * @example
164
+ * const remaining: number = await getRemainingTimer(id);
165
+ * console.log(`Remaining time: ${remaining} ms`);
166
+ */
167
+ export async function getRemainingTimer(id) {
168
+ try {
169
+ const timersRaw = fs.readFileSync(timerfiledir, "utf-8");
170
+ const timersData = timersRaw.split(/\r?\n/);
171
+ for (const timerData of timersData) {
172
+ const splitedTimerData = timerData.split(" ");
173
+ if (splitedTimerData[0] === id) {
174
+ const now = Date.now();
175
+ const stop = Number(splitedTimerData[2]);
176
+ return Math.max(0, stop - now);
177
+ }
178
+ }
179
+ throw new Error(`Timer with id ${id} not found`);
180
+ }
181
+ catch (e) {
182
+ throw new Error(`Error when getting remaining timer: ${e}`);
183
+ }
184
+ }
143
185
  async function checkTimerfileSyntax(fileData) {
144
186
  const throwing = () => {
145
187
  throw new Error(`Timer file's syntax is wrong`);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eternal-timer",
3
- "version": "1.3.0",
3
+ "version": "1.4.1",
4
4
  "description": "timer for node.js package",
5
5
  "scripts": {
6
6
  "dev": "nodemon --watch src --exec ts-node src/index.ts",
package/src/index.ts CHANGED
@@ -74,10 +74,23 @@ export async function removeTimer(id: string): Promise<void> {
74
74
  try {
75
75
  const timersRaw: string = fs.readFileSync(timerfiledir, "utf-8");
76
76
  const timersData: string[] = timersRaw.split(/\r?\n/);
77
-
78
- const filteredTimers = timersData.filter(line => line.split(" ")[0] !== id);
79
-
80
- await fs.promises.writeFile(timerfiledir, filteredTimers.join("\n"), "utf-8");
77
+
78
+ let newTimersData: string = "";
79
+ let found: boolean = false;
80
+ for (const timerData of timersData) {
81
+ if (!timerData.trim()) {
82
+ found = true;
83
+ continue;
84
+ }
85
+ const [timerId] = timerData.split(" ");
86
+ if (timerId !== id) {
87
+ newTimersData += timerData + "\n";
88
+ }
89
+ }
90
+ if (!found) {
91
+ throw new Error(`Timer with id ${id} not found`);
92
+ }
93
+ await fs.promises.writeFile(timerfiledir, newTimersData, "utf-8");
81
94
  return;
82
95
  } catch (e) {
83
96
  throw new Error(`Error when removing timer: ${e}`);
@@ -158,6 +171,34 @@ export async function showTimers(): Promise<Timer[]> {
158
171
  }
159
172
  }
160
173
 
174
+ /**
175
+ * getRemainingTimer
176
+ * @description Retrieves the remaining time of a timer by ID.
177
+ * @param id timer's id you want to get remaining time(ms)
178
+ * @returns Remaining time of the timer(ms)
179
+ * @throws If timer with the specified ID is not found or file operation fails
180
+ * @example
181
+ * const remaining: number = await getRemainingTimer(id);
182
+ * console.log(`Remaining time: ${remaining} ms`);
183
+ */
184
+ export async function getRemainingTimer(id: string): Promise<number> {
185
+ try {
186
+ const timersRaw: string = fs.readFileSync(timerfiledir, "utf-8");
187
+ const timersData: string[] = timersRaw.split(/\r?\n/);
188
+ for (const timerData of timersData) {
189
+ const splitedTimerData = timerData.split(" ")
190
+ if (splitedTimerData[0] === id) {
191
+ const now = Date.now();
192
+ const stop = Number(splitedTimerData[2]);
193
+ return Math.max(0, stop - now);
194
+ }
195
+ }
196
+ throw new Error(`Timer with id ${id} not found`);
197
+ } catch (e) {
198
+ throw new Error(`Error when getting remaining timer: ${e}`);
199
+ }
200
+ }
201
+
161
202
  async function checkTimerfileSyntax(fileData: string): Promise<void> {
162
203
  const throwing = () => {
163
204
  throw new Error(`Timer file's syntax is wrong`);