eternal-timer 2.2.1 → 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.
- package/README.md +89 -46
- package/dist/cjs/Log.cjs +0 -21
- package/dist/cjs/{Log.js.map → Log.cjs.map} +1 -1
- package/dist/cjs/TimersManager/JSONLTimersManager.cjs +25 -0
- package/dist/cjs/TimersManager/JSONLTimersManager.cjs.map +1 -0
- package/dist/cjs/TimersManager/JSONLTimersManager.d.ts +18 -0
- package/dist/cjs/TimersManager/JSONLTimersManager.d.ts.map +1 -0
- package/dist/cjs/TimersManager/PlainTextTimersManager.cjs +25 -0
- package/dist/cjs/TimersManager/PlainTextTimersManager.cjs.map +1 -0
- package/dist/cjs/TimersManager/PlainTextTimersManager.d.ts +18 -0
- package/dist/cjs/TimersManager/PlainTextTimersManager.d.ts.map +1 -0
- package/dist/cjs/TimersManager/TimersManager.cjs +211 -0
- package/dist/cjs/TimersManager/TimersManager.cjs.map +1 -0
- package/dist/cjs/TimersManager/TimersManager.d.ts +87 -0
- package/dist/cjs/TimersManager/TimersManager.d.ts.map +1 -0
- package/dist/cjs/TimersStore/JSONLTimersStore.cjs +50 -0
- package/dist/cjs/TimersStore/JSONLTimersStore.cjs.map +1 -0
- package/dist/cjs/TimersStore/JSONLTimersStore.d.ts +16 -0
- package/dist/cjs/TimersStore/JSONLTimersStore.d.ts.map +1 -0
- package/dist/cjs/TimersStore/PlainTextTimersStore.cjs +56 -0
- package/dist/cjs/TimersStore/PlainTextTimersStore.cjs.map +1 -0
- package/dist/cjs/TimersStore/PlainTextTimersStore.d.ts +16 -0
- package/dist/cjs/TimersStore/PlainTextTimersStore.d.ts.map +1 -0
- package/dist/cjs/TimersStore/TimersStore.cjs +44 -0
- package/dist/cjs/TimersStore/TimersStore.cjs.map +1 -0
- package/dist/cjs/TimersStore/TimersStore.d.ts +12 -0
- package/dist/cjs/TimersStore/TimersStore.d.ts.map +1 -0
- package/dist/cjs/index.cjs +2 -2
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/index.d.ts +3 -3
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/types.d.ts +11 -1
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/esm/Log.js +0 -21
- package/dist/esm/Log.js.map +1 -1
- package/dist/esm/TimersManager/JSONLTimersManager.d.ts +18 -0
- package/dist/esm/TimersManager/JSONLTimersManager.d.ts.map +1 -0
- package/dist/esm/TimersManager/JSONLTimersManager.js +21 -0
- package/dist/esm/TimersManager/JSONLTimersManager.js.map +1 -0
- package/dist/esm/TimersManager/PlainTextTimersManager.d.ts +18 -0
- package/dist/esm/TimersManager/PlainTextTimersManager.d.ts.map +1 -0
- package/dist/esm/TimersManager/PlainTextTimersManager.js +21 -0
- package/dist/esm/TimersManager/PlainTextTimersManager.js.map +1 -0
- package/dist/esm/TimersManager/TimersManager.d.ts +87 -0
- package/dist/esm/TimersManager/TimersManager.d.ts.map +1 -0
- package/dist/esm/TimersManager/TimersManager.js +205 -0
- package/dist/esm/TimersManager/TimersManager.js.map +1 -0
- package/dist/esm/TimersStore/JSONLTimersStore.d.ts +16 -0
- package/dist/esm/TimersStore/JSONLTimersStore.d.ts.map +1 -0
- package/dist/esm/TimersStore/JSONLTimersStore.js +46 -0
- package/dist/esm/TimersStore/JSONLTimersStore.js.map +1 -0
- package/dist/esm/TimersStore/PlainTextTimersStore.d.ts +16 -0
- package/dist/esm/TimersStore/PlainTextTimersStore.d.ts.map +1 -0
- package/dist/esm/TimersStore/PlainTextTimersStore.js +52 -0
- package/dist/esm/TimersStore/PlainTextTimersStore.js.map +1 -0
- package/dist/esm/TimersStore/TimersStore.d.ts +12 -0
- package/dist/esm/TimersStore/TimersStore.d.ts.map +1 -0
- package/dist/esm/TimersStore/TimersStore.js +37 -0
- package/dist/esm/TimersStore/TimersStore.js.map +1 -0
- package/dist/esm/index.d.ts +3 -3
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types.d.ts +11 -1
- package/dist/esm/types.d.ts.map +1 -1
- package/package.json +7 -4
- package/dist/cjs/JSONLTimersManager.cjs +0 -198
- package/dist/cjs/JSONLTimersManager.d.ts +0 -63
- package/dist/cjs/JSONLTimersManager.d.ts.map +0 -1
- package/dist/cjs/JSONLTimersManager.js.map +0 -1
- package/dist/cjs/PlainTextTimersManager.cjs +0 -200
- package/dist/cjs/PlainTextTimersManager.d.ts +0 -60
- package/dist/cjs/PlainTextTimersManager.d.ts.map +0 -1
- package/dist/cjs/PlainTextTimersManager.js.map +0 -1
- package/dist/cjs/TimersManager.cjs +0 -39
- package/dist/cjs/TimersManager.d.ts +0 -75
- package/dist/cjs/TimersManager.d.ts.map +0 -1
- package/dist/cjs/TimersManager.js.map +0 -1
- package/dist/cjs/index.js.map +0 -1
- package/dist/esm/JSONLTimersManager.d.ts +0 -63
- package/dist/esm/JSONLTimersManager.d.ts.map +0 -1
- package/dist/esm/JSONLTimersManager.js +0 -191
- package/dist/esm/JSONLTimersManager.js.map +0 -1
- package/dist/esm/PlainTextTimersManager.d.ts +0 -60
- package/dist/esm/PlainTextTimersManager.d.ts.map +0 -1
- package/dist/esm/PlainTextTimersManager.js +0 -193
- package/dist/esm/PlainTextTimersManager.js.map +0 -1
- package/dist/esm/TimersManager.d.ts +0 -75
- package/dist/esm/TimersManager.d.ts.map +0 -1
- package/dist/esm/TimersManager.js +0 -32
- package/dist/esm/TimersManager.js.map +0 -1
- /package/dist/cjs/{searchRoot.js.map → searchRoot.cjs.map} +0 -0
- /package/dist/cjs/{types.js.map → types.cjs.map} +0 -0
|
@@ -0,0 +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;IACxD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IACxC,OAAO,CAAC,SAAS,CAAkB;IAEnC,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAQ;IAEpD,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,YAAY;IAMpB,SAAS,CAAC,QAAQ,CAAC,kBAAkB,IAAI,MAAM;IAC/C,SAAS,CAAC,QAAQ,CAAC,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAE/D;;;;;;;;QAQO;gBAEN,OAAO,CAAC,EAAE,MAAM;IAcjB;;;;;;;;;;OAUM;IACO,WAAW,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IA0BzE;;;;;;;;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,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAE,MAAY,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;IAuD9H;;;;;;;;OAQM;IACO,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAQ9C;;;;;;;QAOO;IACM,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAsB1E"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JSONLTimersStore = void 0;
|
|
4
|
+
const uuid_1 = require("uuid");
|
|
5
|
+
const TimersStore_js_1 = require("./TimersStore.cjs");
|
|
6
|
+
class JSONLTimersStore extends TimersStore_js_1.TimersStore {
|
|
7
|
+
constructor(timerfile) {
|
|
8
|
+
super(timerfile);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* checkTimerfileSyntax
|
|
12
|
+
* @description Checks the syntax of the timer file.
|
|
13
|
+
* @param timers Array of timer objects to check
|
|
14
|
+
* @returns void
|
|
15
|
+
* @throws If syntax is invalid
|
|
16
|
+
*/
|
|
17
|
+
async checkTimerfileSyntax(timers) {
|
|
18
|
+
const throwing = () => {
|
|
19
|
+
throw new Error(`Timer file's syntax is wrong`);
|
|
20
|
+
};
|
|
21
|
+
for (const timer of timers) {
|
|
22
|
+
if (!timer.id || !(0, uuid_1.validate)(timer.id))
|
|
23
|
+
throwing();
|
|
24
|
+
if (!timer.start || typeof timer.start !== "number")
|
|
25
|
+
throwing();
|
|
26
|
+
if (!timer.stop || typeof timer.stop !== "number")
|
|
27
|
+
throwing();
|
|
28
|
+
if (timer.start > timer.stop)
|
|
29
|
+
throwing();
|
|
30
|
+
if (timer.title && typeof timer.title !== "string")
|
|
31
|
+
throwing();
|
|
32
|
+
if (timer.description && typeof timer.description !== "string")
|
|
33
|
+
throwing();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
toStringifyTimers(timers) {
|
|
37
|
+
if (timers.length === 0) {
|
|
38
|
+
return "";
|
|
39
|
+
}
|
|
40
|
+
return timers.map(t => JSON.stringify(t)).join("\n");
|
|
41
|
+
}
|
|
42
|
+
parseTimers(data) {
|
|
43
|
+
return data
|
|
44
|
+
.split(/\r?\n/)
|
|
45
|
+
.filter((line) => line.trim())
|
|
46
|
+
.map((line) => JSON.parse(line));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.JSONLTimersStore = JSONLTimersStore;
|
|
50
|
+
//# sourceMappingURL=JSONLTimersStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JSONLTimersStore.js","sourceRoot":"","sources":["../../../src/TimersStore/JSONLTimersStore.ts"],"names":[],"mappings":";;;AAAA,+BAAgC;AAGhC,qDAA+C;AAE/C,MAAa,gBAAiB,SAAQ,4BAAoB;IAEzD,YACC,SAAiB;QAEjB,KAAK,CAAC,SAAS,CAAC,CAAC;IAClB,CAAC;IAED;;;;;;OAMG;IACgB,KAAK,CAAC,oBAAoB,CAAC,MAAwB;QACrE,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,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,IAAA,eAAQ,EAAC,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,KAAK,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;gBAAE,QAAQ,EAAE,CAAC;YAC/D,IAAI,KAAK,CAAC,WAAW,IAAI,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;gBAAE,QAAQ,EAAE,CAAC;QAC5E,CAAC;IACF,CAAC;IAEe,iBAAiB,CAAC,MAAwB;QACzD,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,CAAmB,CAAC,CAAC;IACrD,CAAC;CACD;AA1CD,4CA0CC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Timer } from "../types.js";
|
|
2
|
+
import { TimersStore } from "./TimersStore.js";
|
|
3
|
+
export declare class JSONLTimersStore extends TimersStore<"JSONL"> {
|
|
4
|
+
constructor(timerfile: string);
|
|
5
|
+
/**
|
|
6
|
+
* checkTimerfileSyntax
|
|
7
|
+
* @description Checks the syntax of the timer file.
|
|
8
|
+
* @param timers Array of timer objects to check
|
|
9
|
+
* @returns void
|
|
10
|
+
* @throws If syntax is invalid
|
|
11
|
+
*/
|
|
12
|
+
protected checkTimerfileSyntax(timers: Timer<"JSONL">[]): Promise<void>;
|
|
13
|
+
toStringifyTimers(timers: Timer<"JSONL">[]): string;
|
|
14
|
+
parseTimers(data: string): Timer<"JSONL">[];
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=JSONLTimersStore.d.ts.map
|
|
@@ -0,0 +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,gBAAiB,SAAQ,WAAW,CAAC,OAAO,CAAC;gBAGxD,SAAS,EAAE,MAAM;IAKlB;;;;;;OAMG;cACsB,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IActE,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,MAAM;IAOnD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE;CAM3D"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PlainTextTimersStore = void 0;
|
|
4
|
+
const uuid_1 = require("uuid");
|
|
5
|
+
const TimersStore_js_1 = require("./TimersStore.cjs");
|
|
6
|
+
class PlainTextTimersStore extends TimersStore_js_1.TimersStore {
|
|
7
|
+
constructor(timerfile) {
|
|
8
|
+
super(timerfile);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* checkTimerfileSyntax
|
|
12
|
+
* @description Checks the syntax of the timer file.
|
|
13
|
+
* @param fileData
|
|
14
|
+
* @returns void
|
|
15
|
+
* @throws If syntax is invalid
|
|
16
|
+
*/
|
|
17
|
+
async checkTimerfileSyntax(timers) {
|
|
18
|
+
const throwing = () => {
|
|
19
|
+
throw new Error(`Timer file's syntax is wrong`);
|
|
20
|
+
};
|
|
21
|
+
for (const timer of timers) {
|
|
22
|
+
if (Object.keys(timer).length !== 3)
|
|
23
|
+
throwing();
|
|
24
|
+
if (!(0, uuid_1.validate)(timer.id))
|
|
25
|
+
throwing();
|
|
26
|
+
if (isNaN(Number(timer.start)))
|
|
27
|
+
throwing();
|
|
28
|
+
if (isNaN(Number(timer.stop)))
|
|
29
|
+
throwing();
|
|
30
|
+
if (Number(timer.start) > Number(timer.stop))
|
|
31
|
+
throwing();
|
|
32
|
+
}
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
toStringifyTimers(timers) {
|
|
36
|
+
if (timers.length === 0) {
|
|
37
|
+
return "";
|
|
38
|
+
}
|
|
39
|
+
return timers.map(timer => `${timer.id} ${timer.start} ${timer.stop}`).join("\n");
|
|
40
|
+
}
|
|
41
|
+
parseTimers(data) {
|
|
42
|
+
return data
|
|
43
|
+
.split(/\r?\n/)
|
|
44
|
+
.filter((line) => line.trim())
|
|
45
|
+
.map((line) => {
|
|
46
|
+
const [id, startStr, stopStr] = line.split(" ");
|
|
47
|
+
return {
|
|
48
|
+
id: id,
|
|
49
|
+
start: Number(startStr),
|
|
50
|
+
stop: Number(stopStr),
|
|
51
|
+
};
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.PlainTextTimersStore = PlainTextTimersStore;
|
|
56
|
+
//# sourceMappingURL=PlainTextTimersStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlainTextTimersStore.js","sourceRoot":"","sources":["../../../src/TimersStore/PlainTextTimersStore.ts"],"names":[],"mappings":";;;AAAA,+BAAgC;AAGhC,qDAA+C;AAE/C,MAAa,oBAAqB,SAAQ,4BAAwB;IAEjE,YACC,SAAiB;QAEjB,KAAK,CAAC,SAAS,CAAC,CAAC;IAClB,CAAC;IAED;;;;;;OAMM;IACa,KAAK,CAAC,oBAAoB,CAAC,MAA4B;QACzE,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,IAAA,eAAQ,EAAC,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,MAA4B;QAC7D,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;aACA,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;CACD;AAjDD,oDAiDC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Timer } from "../types.js";
|
|
2
|
+
import { TimersStore } from "./TimersStore.js";
|
|
3
|
+
export declare class PlainTextTimersStore extends TimersStore<"PlainText"> {
|
|
4
|
+
constructor(timerfile: 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(timers: Timer<"PlainText">[]): Promise<void>;
|
|
13
|
+
toStringifyTimers(timers: Timer<"PlainText">[]): string;
|
|
14
|
+
parseTimers(data: string): Timer<"PlainText">[];
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=PlainTextTimersStore.d.ts.map
|
|
@@ -0,0 +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,CAAC;gBAGhE,SAAS,EAAE,MAAM;IAKlB;;;;;;OAMM;cACmB,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAc1E,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,GAAG,MAAM;IAOvD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,EAAE;CAa/D"}
|
|
@@ -0,0 +1,44 @@
|
|
|
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.TimersStore = void 0;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
class TimersStore {
|
|
9
|
+
timerfile;
|
|
10
|
+
constructor(timerfile) {
|
|
11
|
+
this.timerfile = timerfile;
|
|
12
|
+
}
|
|
13
|
+
async loadTimers() {
|
|
14
|
+
try {
|
|
15
|
+
const data = await fs_1.default.promises.readFile(this.timerfile, "utf-8");
|
|
16
|
+
const timersData = this.parseTimers(data);
|
|
17
|
+
await this.checkTimerfileSyntax(timersData);
|
|
18
|
+
return timersData;
|
|
19
|
+
}
|
|
20
|
+
catch (e) {
|
|
21
|
+
throw new Error("Error when loading timer data", { cause: e });
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
async saveTimers(timers) {
|
|
25
|
+
const data = this.toStringifyTimers(timers);
|
|
26
|
+
try {
|
|
27
|
+
await fs_1.default.promises.writeFile(this.timerfile, data, "utf-8");
|
|
28
|
+
}
|
|
29
|
+
catch (e) {
|
|
30
|
+
throw new Error(`Error when saving timer data`, { cause: e });
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
async appendTimer(timer) {
|
|
34
|
+
try {
|
|
35
|
+
await fs_1.default.promises.appendFile(this.timerfile, this.toStringifyTimers([timer]) + "\n");
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
catch (e) {
|
|
39
|
+
throw new Error(`Error when appending timer data`, { cause: e });
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.TimersStore = TimersStore;
|
|
44
|
+
//# sourceMappingURL=TimersStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimersStore.js","sourceRoot":"","sources":["../../../src/TimersStore/TimersStore.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AAIpB,MAAsB,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,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACjE,MAAM,UAAU,GAAe,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACtD,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,MAAkB;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAE5C,IAAI,CAAC;YACJ,MAAM,YAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5D,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,KAAe;QACvC,IAAI,CAAC;YACJ,MAAM,YAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACrF,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;AA1CD,kCA0CC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { StorageType, Timer } from "../types.js";
|
|
2
|
+
export declare abstract class TimersStore<T extends StorageType> {
|
|
3
|
+
protected readonly timerfile: string;
|
|
4
|
+
protected constructor(timerfile: string);
|
|
5
|
+
loadTimers(): Promise<Timer<T>[]>;
|
|
6
|
+
saveTimers(timers: Timer<T>[]): Promise<void>;
|
|
7
|
+
appendTimer(timer: Timer<T>): Promise<void>;
|
|
8
|
+
protected abstract checkTimerfileSyntax(timers: Timer<T>[]): Promise<void>;
|
|
9
|
+
abstract toStringifyTimers(timers: Timer<T>[]): string;
|
|
10
|
+
abstract parseTimers(data: string): Timer<T>[];
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=TimersStore.d.ts.map
|
|
@@ -0,0 +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;IACtD,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAErC,SAAS,aACR,SAAS,EAAE,MAAM;IAKL,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAWjC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAU7C,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IASrD,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;aAC1D,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM;aAChD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE;CACrD"}
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PlainTextTimersManager = exports.JSONLTimersManager = void 0;
|
|
4
|
-
var JSONLTimersManager_js_1 = require("./JSONLTimersManager.cjs");
|
|
4
|
+
var JSONLTimersManager_js_1 = require("./TimersManager/JSONLTimersManager.cjs");
|
|
5
5
|
Object.defineProperty(exports, "JSONLTimersManager", { enumerable: true, get: function () { return JSONLTimersManager_js_1.JSONLTimersManager; } });
|
|
6
|
-
var PlainTextTimersManager_js_1 = require("./PlainTextTimersManager.cjs");
|
|
6
|
+
var PlainTextTimersManager_js_1 = require("./TimersManager/PlainTextTimersManager.cjs");
|
|
7
7
|
Object.defineProperty(exports, "PlainTextTimersManager", { enumerable: true, get: function () { return PlainTextTimersManager_js_1.PlainTextTimersManager; } });
|
|
8
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AACA,+EAA2E;AAAlE,2HAAA,kBAAkB,OAAA;AAC3B,uFAAmF;AAA1E,mIAAA,sBAAsB,OAAA"}
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { Timer } from "./types.
|
|
2
|
-
export { JSONLTimersManager } from "./JSONLTimersManager.
|
|
3
|
-
export { PlainTextTimersManager } from "./PlainTextTimersManager.
|
|
1
|
+
export type { Timer, CreateTimerOptions, StorageType } from "./types.js";
|
|
2
|
+
export { JSONLTimersManager } from "./TimersManager/JSONLTimersManager.js";
|
|
3
|
+
export { PlainTextTimersManager } from "./TimersManager/PlainTextTimersManager.js";
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC"}
|
package/dist/cjs/types.d.ts
CHANGED
|
@@ -1,8 +1,18 @@
|
|
|
1
|
-
export type
|
|
1
|
+
export type StorageType = "JSONL" | "PlainText";
|
|
2
|
+
export type Timer<T extends StorageType> = T extends "JSONL" ? {
|
|
2
3
|
id: string;
|
|
3
4
|
start: number;
|
|
4
5
|
stop: number;
|
|
5
6
|
title?: string;
|
|
6
7
|
description?: string;
|
|
8
|
+
} : {
|
|
9
|
+
id: string;
|
|
10
|
+
start: number;
|
|
11
|
+
stop: number;
|
|
7
12
|
};
|
|
13
|
+
export type CreateTimerOptions<T extends StorageType> = T extends "JSONL" ? {
|
|
14
|
+
length: number;
|
|
15
|
+
title?: string;
|
|
16
|
+
description?: string;
|
|
17
|
+
} | number : T extends "PlainText" ? number : never;
|
|
8
18
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/cjs/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,
|
|
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,IACnC,CAAC,SAAS,OAAO,GACX;IACI,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,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,IAAI,CAAC,SAAS,OAAO,GACnE;IACI,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,MAAM,GACV,CAAC,SAAS,WAAW,GACnB,MAAM,GACN,KAAK,CAAC"}
|
package/dist/esm/Log.js
CHANGED
|
@@ -21,25 +21,4 @@ export class Log {
|
|
|
21
21
|
return Log.logger;
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
/*
|
|
25
|
-
let logger: Logger | null = null;
|
|
26
|
-
let initPromise: Promise<void> | null = null;
|
|
27
|
-
|
|
28
|
-
export async function ensureLogger() {
|
|
29
|
-
if (logger) return;
|
|
30
|
-
if (!initPromise) {
|
|
31
|
-
initPromise = (async () => {
|
|
32
|
-
try {
|
|
33
|
-
const logtape = await import("@logtape/logtape");
|
|
34
|
-
logger = logtape.getLogger(["eternal-timer"]);
|
|
35
|
-
} catch {
|
|
36
|
-
console.info(
|
|
37
|
-
"Tip: Install the optional package '@logtape/logtape' to customize logging behavior.",
|
|
38
|
-
);
|
|
39
|
-
}
|
|
40
|
-
})();
|
|
41
|
-
}
|
|
42
|
-
await initPromise;
|
|
43
|
-
}
|
|
44
|
-
*/
|
|
45
24
|
//# sourceMappingURL=Log.js.map
|
package/dist/esm/Log.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Log.js","sourceRoot":"","sources":["../../src/Log.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,GAAG;IACP,MAAM,CAAC,MAAM,GAAkB,IAAI,CAAC;IACpC,MAAM,CAAC,WAAW,GAAyB,IAAI,CAAC;IAEjD,MAAM,CAAC,KAAK,CAAC,YAAY;QAC/B,IAAI,GAAG,CAAC,MAAM;YAAE,OAAO;QACvB,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YACtB,GAAG,CAAC,WAAW,GAAG,CAAC,KAAK,IAAI,EAAE;gBAC7B,IAAI,CAAC;oBACJ,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;oBACjD,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;gBACnD,CAAC;gBAAC,MAAM,CAAC;oBACR,OAAO,CAAC,IAAI,CACX,qFAAqF,CACrF,CAAC;gBACH,CAAC;YACF,CAAC,CAAC,EAAE,CAAC;QACN,CAAC;QACD,MAAM,GAAG,CAAC,WAAW,CAAC;IACvB,CAAC;IAEM,MAAM,KAAK,cAAc;QAC/B,OAAO,GAAG,CAAC,MAAM,CAAC;IACnB,CAAC
|
|
1
|
+
{"version":3,"file":"Log.js","sourceRoot":"","sources":["../../src/Log.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,GAAG;IACP,MAAM,CAAC,MAAM,GAAkB,IAAI,CAAC;IACpC,MAAM,CAAC,WAAW,GAAyB,IAAI,CAAC;IAEjD,MAAM,CAAC,KAAK,CAAC,YAAY;QAC/B,IAAI,GAAG,CAAC,MAAM;YAAE,OAAO;QACvB,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YACtB,GAAG,CAAC,WAAW,GAAG,CAAC,KAAK,IAAI,EAAE;gBAC7B,IAAI,CAAC;oBACJ,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;oBACjD,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;gBACnD,CAAC;gBAAC,MAAM,CAAC;oBACR,OAAO,CAAC,IAAI,CACX,qFAAqF,CACrF,CAAC;gBACH,CAAC;YACF,CAAC,CAAC,EAAE,CAAC;QACN,CAAC;QACD,MAAM,GAAG,CAAC,WAAW,CAAC;IACvB,CAAC;IAEM,MAAM,KAAK,cAAc;QAC/B,OAAO,GAAG,CAAC,MAAM,CAAC;IACnB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { TimersManager } from "./TimersManager.js";
|
|
2
|
+
import { JSONLTimersStore } from "../TimersStore/JSONLTimersStore.js";
|
|
3
|
+
import type { TimersStore } from "src/TimersStore/TimersStore.js";
|
|
4
|
+
/**
|
|
5
|
+
* JSONLTimersManager
|
|
6
|
+
* @description
|
|
7
|
+
* Manages timers stored in a JSONL file.
|
|
8
|
+
* (This is a abstract class)
|
|
9
|
+
*
|
|
10
|
+
* - Timers are persisted in a file
|
|
11
|
+
* - Expired timers are detected by polling
|
|
12
|
+
*/
|
|
13
|
+
export declare class JSONLTimersManager extends TimersManager<"JSONL"> {
|
|
14
|
+
protected TimersStore: JSONLTimersStore | null;
|
|
15
|
+
protected getDefaultFilename(): string;
|
|
16
|
+
protected createTimersStore(): Promise<TimersStore<"JSONL">>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=JSONLTimersManager.d.ts.map
|
|
@@ -0,0 +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;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAElE;;;;;;;;GAQG;AACH,qBAAa,kBAAmB,SAAQ,aAAa,CAAC,OAAO,CAAC;IAC7D,UAAmB,WAAW,EAAE,gBAAgB,GAAG,IAAI,CAAQ;cAE5C,kBAAkB,IAAI,MAAM;cAItB,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;CAG3E"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { TimersManager } from "./TimersManager.js";
|
|
2
|
+
import { JSONLTimersStore } from "../TimersStore/JSONLTimersStore.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 class JSONLTimersManager extends TimersManager {
|
|
13
|
+
TimersStore = null;
|
|
14
|
+
getDefaultFilename() {
|
|
15
|
+
return ".timers.jsonl";
|
|
16
|
+
}
|
|
17
|
+
async createTimersStore() {
|
|
18
|
+
return new JSONLTimersStore(this.timerfiledir);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=JSONLTimersManager.js.map
|
|
@@ -0,0 +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;AAGtE;;;;;;;;GAQG;AACH,MAAM,OAAO,kBAAmB,SAAQ,aAAsB;IAC1C,WAAW,GAA4B,IAAI,CAAC;IAE5C,kBAAkB;QACpC,OAAO,eAAe,CAAC;IACxB,CAAC;IAEkB,KAAK,CAAC,iBAAiB;QACzC,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAChD,CAAC;CACD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { TimersManager } from "./TimersManager.js";
|
|
2
|
+
import { PlainTextTimersStore } from "../TimersStore/PlainTextTimersStore.js";
|
|
3
|
+
import type { TimersStore } from "src/TimersStore/TimersStore.js";
|
|
4
|
+
/**
|
|
5
|
+
* PlainTextTimersManager
|
|
6
|
+
* @description
|
|
7
|
+
* Manages timers stored in a PlainText file.
|
|
8
|
+
* (This is a abstract class)
|
|
9
|
+
*
|
|
10
|
+
* - Timers are persisted in a file
|
|
11
|
+
* - Expired timers are detected by polling
|
|
12
|
+
*/
|
|
13
|
+
export declare class PlainTextTimersManager extends TimersManager<"PlainText"> {
|
|
14
|
+
protected TimersStore: PlainTextTimersStore | null;
|
|
15
|
+
protected getDefaultFilename(): string;
|
|
16
|
+
protected createTimersStore(): Promise<TimersStore<"PlainText">>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=PlainTextTimersManager.d.ts.map
|
|
@@ -0,0 +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;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAElE;;;;;;;;GAQG;AACH,qBAAa,sBAAuB,SAAQ,aAAa,CAAC,WAAW,CAAC;IACrE,UAAmB,WAAW,EAAE,oBAAoB,GAAG,IAAI,CAAQ;cAEhD,kBAAkB,IAAI,MAAM;cAI/B,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;CAGtE"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { TimersManager } from "./TimersManager.js";
|
|
2
|
+
import { PlainTextTimersStore } from "../TimersStore/PlainTextTimersStore.js";
|
|
3
|
+
/**
|
|
4
|
+
* PlainTextTimersManager
|
|
5
|
+
* @description
|
|
6
|
+
* Manages timers stored in a PlainText 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 class PlainTextTimersManager extends TimersManager {
|
|
13
|
+
TimersStore = null;
|
|
14
|
+
getDefaultFilename() {
|
|
15
|
+
return ".timers";
|
|
16
|
+
}
|
|
17
|
+
async createTimersStore() {
|
|
18
|
+
return new PlainTextTimersStore(this.timerfiledir);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=PlainTextTimersManager.js.map
|
|
@@ -0,0 +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;AAG9E;;;;;;;;GAQG;AACH,MAAM,OAAO,sBAAuB,SAAQ,aAA0B;IAClD,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;CACD"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import type { CreateTimerOptions, StorageType, Timer } from "../types.js";
|
|
2
|
+
import { TimersStore } from "../TimersStore/TimersStore.js";
|
|
3
|
+
/**
|
|
4
|
+
* TimersManager
|
|
5
|
+
* @description
|
|
6
|
+
* Manages timers stored in a 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 abstract class TimersManager<T extends StorageType> {
|
|
13
|
+
protected readonly timerfiledir: string;
|
|
14
|
+
private checkLock;
|
|
15
|
+
protected TimersStore: TimersStore<T> | null;
|
|
16
|
+
private queue;
|
|
17
|
+
private runExclusive;
|
|
18
|
+
protected abstract getDefaultFilename(): string;
|
|
19
|
+
protected abstract createTimersStore(): Promise<TimersStore<T>>;
|
|
20
|
+
/**
|
|
21
|
+
* constructor
|
|
22
|
+
* @description Initializes the TimersManager instance. If the timer file does not exist, an empty file is created.
|
|
23
|
+
* @param options (TimersManagerOptions | string, optional) Configuration object or timer file path. If a string is provided, it is treated as the timer file path. If an object is provided, `timerfiledir` can be specified.
|
|
24
|
+
* @throws If file access or creation fails
|
|
25
|
+
* @example
|
|
26
|
+
* const manager = new TimersManager(); // Uses default timer file path
|
|
27
|
+
* const manager = new TimersManager("/path/to/timers.txt"); // Uses specified timer file path
|
|
28
|
+
*/
|
|
29
|
+
constructor(options?: string);
|
|
30
|
+
/**
|
|
31
|
+
* createTimer
|
|
32
|
+
* @description Creates a new timer.
|
|
33
|
+
* @param length Timer duration in milliseconds
|
|
34
|
+
* @returns Promise that resolves to the timer ID (UUID)
|
|
35
|
+
* @throws If length is invalid(e.g. length < 0) or file operation fails
|
|
36
|
+
* @example
|
|
37
|
+
* const manager = new TimersManager();
|
|
38
|
+
* const newTimer = await manager.createTimer(5000);
|
|
39
|
+
* // newTimer will be id of the timer
|
|
40
|
+
*/
|
|
41
|
+
createTimer(options: CreateTimerOptions<T>): Promise<string>;
|
|
42
|
+
/**
|
|
43
|
+
* removeTimer
|
|
44
|
+
* @description Removes a timer by ID.
|
|
45
|
+
* @param id ID of the timer to remove
|
|
46
|
+
* @returns void
|
|
47
|
+
* @throws If file operation fails
|
|
48
|
+
* @example
|
|
49
|
+
* await manager.removeTimer(id);
|
|
50
|
+
*/
|
|
51
|
+
removeTimer(id: string): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* checkTimers
|
|
54
|
+
* @description Starts monitoring timers at the specified interval.
|
|
55
|
+
* When a timer expires, the provided `callback` is invoked with the timer.
|
|
56
|
+
* The callback is awaited before the next processing cycle continues.
|
|
57
|
+
* @param callback Function invoked when an expired timer is detected (called asynchronously)
|
|
58
|
+
* @param interval (number, optional): Check interval in milliseconds (default: 200ms)
|
|
59
|
+
* @throws If file operation fails
|
|
60
|
+
* @returns (Promise<NodeJS.Timeout>) intervalId interval id of checkTimers
|
|
61
|
+
* @example
|
|
62
|
+
* const interval = await manager.checkTimers((timer) => {
|
|
63
|
+
* console.log(`A timer was stopped: ${timer.id}`);
|
|
64
|
+
* });
|
|
65
|
+
*/
|
|
66
|
+
checkTimers(callback: (timer: Timer<T>) => void | Promise<void>, interval?: number): Promise<NodeJS.Timeout>;
|
|
67
|
+
/**
|
|
68
|
+
* showTimers
|
|
69
|
+
* @description Retrieves all active timers.
|
|
70
|
+
* @returns Array of `Timer` objects
|
|
71
|
+
* @throws If file operation fails
|
|
72
|
+
* @example
|
|
73
|
+
* const timers = await manager.showTimers();
|
|
74
|
+
* console.log(JSON.stringify(timers))
|
|
75
|
+
*/
|
|
76
|
+
showTimers(): Promise<Timer<T>[]>;
|
|
77
|
+
/**
|
|
78
|
+
* adjustRemainingTime
|
|
79
|
+
* @description Adjusts the remaining time of a timer.
|
|
80
|
+
* @param id ID of the timer to modify
|
|
81
|
+
* @param delay Delay in milliseconds to add/subtract from the remaining time
|
|
82
|
+
* @returns Promise resolving when the operation is complete
|
|
83
|
+
* @throws If file operation fails
|
|
84
|
+
*/
|
|
85
|
+
adjustRemainingTime(id: string, delay: number): Promise<void>;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=TimersManager.d.ts.map
|
|
@@ -0,0 +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;IACxD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IACxC,OAAO,CAAC,SAAS,CAAkB;IAEnC,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAQ;IAEpD,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,YAAY;IAMpB,SAAS,CAAC,QAAQ,CAAC,kBAAkB,IAAI,MAAM;IAC/C,SAAS,CAAC,QAAQ,CAAC,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAE/D;;;;;;;;QAQO;gBAEN,OAAO,CAAC,EAAE,MAAM;IAcjB;;;;;;;;;;OAUM;IACO,WAAW,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IA0BzE;;;;;;;;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,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAE,MAAY,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;IAuD9H;;;;;;;;OAQM;IACO,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAQ9C;;;;;;;QAOO;IACM,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAsB1E"}
|