Master the flow of time with the ultimate solution for precision scheduling, real-time synchronization, and temporal control. Designed for developers who demand flexibility and power, this system blends intuitive time parsing, dynamic countdowns, and persistent task handling into a seamless toolkit. Schedule events using human-readable commands, manage intervals and expiration with clarity, and broadcast real-time updates to dashboards or distributed systems. Whether you build responsive interfaces, backend automation, or temporal workflows, this API equips you to orchestrate time itself—with legendary elegance and unmatched control.
- ⏱️ Human-readable scheduling (e.g. "in 5 minutes", "next Monday")
- 🧠 Persistent named tasks across restarts
- 🔁 Repeating tasks and tick events
- 🎯 Countdown timers and expiration checks
- ⚙️ Real-time dashboard synchronization with
tick
andupdate
events - 🔌 Easily configurable with
initializeTimers()
npm install @trap_stevo/timetide
const TimeTide, { parseDate, toMilliseconds } = require("@trap_stevo/timetide");
TimeTide.initializeTimers({
persistPath: "./.timers.json",
disablePersistence: false
});
TimeTide.schedule("backupJob", "10s", () => {
console.log("Backup job executed");
});
TimeTide.then("backupJob", () => {
console.log("Backup follow-up task");
});
parseDate("next Monday"); // returns ~ Date object
parseDate("in 3 days"); // returns ~ Date object
parseDuration("2h 30m"); // returns ~ Milliseconds
toMilliseconds("10s"); // returns ~ 10000
toReadable(9123456); // returns ~ "2h 32m 3s 456ms"
TimeTide.pause("backupJob");
TimeTide.resume("backupJob");
TimeTide.extend("backupJob", "2m");
TimeTide.reduce("backupJob", "30s");
TimeTide.startTick("1s");
TimeTide.events.on("tick:1s", () => {
console.log("Tick every second");
});
const timers = TimeTide.getTimers();
console.log(timers);
TimeTide.initializeTimers({
persistPath: "./my-timers.json",
disablePersistence: false
});
See license in LICENSE.md