{"_id":"at_scheduler","_rev":"8-6a4c2572b72d4b78a1a784908e30777d","name":"at_scheduler","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"at_scheduler","version":"0.1.0","author":{"url":"http://github.com/dn2k","name":"Enrico Rubboli"},"_id":"at_scheduler@0.1.0","contributors":[],"bugs":{"url":"http://github.com/dn2k/node-scheduler/issues"},"dist":{"shasum":"996ab70876fd25bfc0e6cb3935bb971c3103c857","tarball":"https://registry.npmjs.org/at_scheduler/-/at_scheduler-0.1.0.tgz","integrity":"sha512-1d+cuISzgri1cUT1HNBmsD66cU33XEuK4SMb4KU5EMNSPdIwPmbLKr7jHbU7jCDXejhb/7g6JTWluY68AA0i4g==","signatures":[{"sig":"MEUCIQCSMCr5L6Bzqr9faiFzOLn0vk94d5PANzalpQfOTM/mWwIgBAp20Oxiw54AoVHHLwhUE3cIVaLbZoeB1ZiG4Od1DeQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/scheduler","engine":["node >=0.1.90"],"engines":{"node":"*"},"scripts":{"test":"nodeunit tests/*"},"licenses":[{"url":"http://www.opensource.org/licenses/mit-license.php","type":"MIT"},{"url":"http://www.gnu.org/copyleft/gpl.html","type":"GPL"}],"repository":{"url":"git://github.com/dn2k/node-scheduler.git","type":"git"},"_npmVersion":"1.0.6","description":"AT event scheduler for your node","_nodeVersion":"v0.4.6","dependencies":{"nodeunit":"=0.5.1"},"_defaultsLoaded":true,"devDependencies":{},"_engineSupported":true,"directories":{}},"0.2.0":{"_id":"at_scheduler@0.2.0","bugs":{"url":"https://github.com/erubboli/at_scheduler/issues"},"dist":{"shasum":"1f79e91829d4f0f916500b1f4a138f14527400d5","tarball":"https://registry.npmjs.org/at_scheduler/-/at_scheduler-0.2.0.tgz","fileCount":3,"integrity":"sha512-IHBhdKlQUi/H8ThOJmbBjrJVYc1ZEc0WtAH76FXHyGMhR4d0Jr8zYHPN6NIcY+bHvTTPDgH97/FS/UMmjaxf+Q==","signatures":[{"sig":"MEQCIAg5Vo9TPyJ/+Ol6B2Gh2XEfoNSW1RrXuzOX2xUjAl/nAiAywanRBYj7Qg1Zy19G2cKfWQzyN/KewkUHaORihAdFpQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCB3LjqFW5Oe1ONMlOCG1PQyMIIagP6RXy55Kp7ztpq/wIhAKnS4l/aNPcz7H1ZoBrKC41MoBkDgqZ5V+DfT5tSCldX"}],"unpackedSize":4322},"main":"lib/scheduler.js","name":"at_scheduler","author":{"url":"https://github.com/erubboli","name":"Enrico Rubboli","email":"rubboli@gmail.com"},"engines":{"node":">=18"},"gitHead":"6a07ab17fbc804fd571949b2fd1404c851a473c7","license":"(MIT OR GPL-3.0-only)","scripts":{"test":"node --test tests/*"},"version":"0.2.0","_npmUser":{"name":"erubboli","email":"rubboli@gmail.com"},"homepage":"https://github.com/erubboli/at_scheduler#readme","keywords":["scheduler","at","timer","schedule"],"repository":{"url":"git+https://github.com/erubboli/at_scheduler.git","type":"git"},"_npmVersion":"11.19.0","description":"AT event scheduler for your node","directories":{},"maintainers":[{"name":"erubboli","email":"rubboli@gmail.com"}],"_nodeVersion":"26.7.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/at_scheduler_0.2.0_1789719552041_0.49274536288791615"}}},"time":{"created":"2011-06-21T12:38:09.320Z","modified":"2026-09-18T08:19:12.315Z","0.1.0":"2011-06-21T12:38:10.220Z","0.2.0":"2026-09-18T08:19:12.134Z"},"author":{"url":"https://github.com/erubboli","name":"Enrico Rubboli","email":"rubboli@gmail.com"},"repository":{"url":"git+https://github.com/erubboli/at_scheduler.git","type":"git"},"description":"AT event scheduler for your node","bugs":{"url":"https://github.com/erubboli/at_scheduler/issues"},"maintainers":[{"name":"erubboli","email":"rubboli@gmail.com"}],"readme":"# at_scheduler\n\nAT event scheduler for Node.js — run a function at a specific datetime.\n\nZero dependencies. Recovered and maintained by [erubboli](https://github.com/erubboli).\n\n## Usage\n\n```js\nconst Scheduler = require('at_scheduler');\n\nconst scheduler = new Scheduler();\n\nscheduler.addJob(new Date('October 27, 2026 11:13:00'), () => {\n  console.log('You will see this message at the specified datetime');\n});\n```\n\nThe scheduler loop starts automatically on the first `addJob()` — calling\n`init()` is optional (and idempotent).\n\n## API\n\n### `new Scheduler(options)`\n\n- `options.interval` — polling frequency in ms (default: `1000`). Jobs fire at\n  most this late relative to their datetime.\n- `options.onError` — callback receiving exceptions thrown inside job\n  callbacks. Without it, errors are logged to stderr; either way the scheduler\n  keeps running.\n\n### `scheduler.addJob(datetime, fn)`\n\nSchedules `fn` to run once at `datetime` (a `Date` object or ms epoch\ntimestamp). Each job fires exactly once and is then removed.\n\n### `scheduler.init()`\n\nStarts the event loop manually. Optional and idempotent.\n\n### `scheduler.clear()`\n\nCancels all pending jobs.\n\n## Install\n\n```\nnpm install at_scheduler\n```\n\n## Tests\n\n```\nnpm test\n```\n\nUses Node's built-in test runner (Node >= 18).\n\n## History\n\nFirst published to npm in June 2011 as `at_scheduler` 0.1.0. The original\nGitHub repository (`dn2k/node-scheduler`) was lost; this tree was recovered\nfrom the npm tarball and fixed in 0.2.0:\n\n- fired jobs are now removed correctly (they used to re-fire every tick, while\n  still-pending jobs could be silently dropped)\n- a throwing job callback no longer kills the scheduler\n- proper `module.exports` instead of a leaked global\n- nodeunit runtime dependency removed; tests use `node:test`\n\n## License\n\nDual licensed under MIT and GPLv3.\n","homepage":"https://github.com/erubboli/at_scheduler#readme","keywords":["scheduler","at","timer","schedule"],"license":"(MIT OR GPL-3.0-only)","readmeFilename":"README.md"}