{"_id":"@accelint/temporal","_rev":"11-cf05143d5934a91227fceadffc1eb9d0","name":"@accelint/temporal","dist-tags":{"latest":"0.1.5"},"versions":{"0.1.0":{"name":"@accelint/temporal","version":"0.1.0","author":{"name":"https://hypergiant.com"},"license":"Apache-2.0","_id":"@accelint/temporal@0.1.0","maintainers":[{"name":"bryan_hg","email":"bryan.kizer@hypergiant.com"},{"name":"brandonjpierce","email":"brandonpierce91@gmail.com"},{"name":"ray.knight-hypergiant","email":"ray.knight@hypergiant.com"},{"name":"hg-devsecops","email":"timothy.mcdonald@hypergiant.com"}],"dist":{"shasum":"ddb502bbb37b51f8975839b619e17988e8f92a73","tarball":"https://registry.npmjs.org/@accelint/temporal/-/temporal-0.1.0.tgz","fileCount":11,"integrity":"sha512-m54Dj/aVdy13u8/LpO7g1H0z9Q5UGw+uBg1NDfJ5H7XH4TWmS5WmkQYIHmL0ccOoZrpibDcLHtWWZpuYNCOUBw==","signatures":[{"sig":"MEYCIQCGddOyHWNbfRrC/96IbMAfkKfJ1iPBH71ChXzSygs7nwIhANxijm4Mcote/Zn08qI0TMz8ijlVp8vko0DcFmpViY0b","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17306},"type":"module","_from":"file:accelint-temporal-0.1.0.tgz","types":"./dist/index.d.ts","$schema":"https://json.schemastore.org/package","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"scripts":{"dev":"pnpm tsc --watch","lint":"pnpm biome lint ./","test":"pnpm vitest --dir=src","bench":"pnpm vitest bench --run --dir src","build":"pnpm tsup","index":"pnpm zx ../../scripts/indexer.mjs packages/clock"},"_npmUser":{"name":"hg-devsecops","email":"timothy.mcdonald@hypergiant.com"},"_resolved":"/tmp/e2495ac766d6ecad0a6230b9f037398b/accelint-temporal-0.1.0.tgz","_integrity":"sha512-m54Dj/aVdy13u8/LpO7g1H0z9Q5UGw+uBg1NDfJ5H7XH4TWmS5WmkQYIHmL0ccOoZrpibDcLHtWWZpuYNCOUBw==","_npmVersion":"10.9.0","directories":{},"sideEffects":false,"_nodeVersion":"22.10.0","dependencies":{"typescript":"^5.6.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","vitest":"^2.1.3","@accelint/vitest-config":"0.1.3","@vitest/coverage-istanbul":"^2.1.3","@accelint/typescript-config":"0.1.2","esbuild-plugin-file-path-extensions":"^2.1.3"},"_npmOperationalInternal":{"tmp":"tmp/temporal_0.1.0_1730902903259_0.36014706185849343","host":"s3://npm-registry-packages"}},"0.1.1":{"name":"@accelint/temporal","version":"0.1.1","keywords":["dev-tk","tooling"],"author":{"name":"https://hypergiant.com"},"license":"Apache-2.0","_id":"@accelint/temporal@0.1.1","maintainers":[{"name":"ray.knight-hypergiant","email":"ray.knight@hypergiant.com"},{"name":"hg-devsecops","email":"hg-devsecops@hypergiant.com"},{"name":"brandonjpierce","email":"brandonpierce91@gmail.com"},{"name":"bryan_hg","email":"bryan.kizer@hypergiant.com"},{"name":"isaac.kehle-hypergiant","email":"isaac.kehle@hypergiant.com"}],"homepage":"https://github.com/gohypergiant/standard-toolkit#readme","bugs":{"url":"https://github.com/gohypergiant/standard-toolkit/issues"},"dist":{"shasum":"2c9fcc8c2641931c68e43c48100f3cd65ece11b4","tarball":"https://registry.npmjs.org/@accelint/temporal/-/temporal-0.1.1.tgz","fileCount":15,"integrity":"sha512-H8XbeerxnhCldwucpouNafRUBvSa8ETIVTuWI6jlMAv0Y1bztizh45Zyr+bQLU8nWk2Lk4mOFuLsJWX/PRIAhw==","signatures":[{"sig":"MEQCIFxodM2oeqTykK9XJcig0QyVFOswA+6Z+j6oFyg3A3QKAiAZSJAfncNbd5QMsFtFA/AD/DPOUwz+oH/oa+Gx2jKPQg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22137},"type":"module","_from":"file:accelint-temporal-0.1.1.tgz","owner":"default/pathfinder","title":"Accelint Temporal","types":"./dist/index.d.ts","$schema":"https://json.schemastore.org/package","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"default":"./dist/index.js"}},"private":false,"scripts":{"dev":"pnpm tsc --watch","lint":"pnpm biome lint","test":"pnpm vitest --dir=src","bench":"pnpm vitest bench --run --dir src","build":"pnpm tsup","index":"pnpm zx ../../scripts/indexer.mjs packages/temporal","constellation-tracker":"constellation-tracker"},"subPath":"packages/temporal","_npmUser":{"name":"brandonjpierce","email":"brandonpierce91@gmail.com"},"_resolved":"/tmp/db4048918621ac08bee54060cc3d8bc0/accelint-temporal-0.1.1.tgz","_integrity":"sha512-H8XbeerxnhCldwucpouNafRUBvSa8ETIVTuWI6jlMAv0Y1bztizh45Zyr+bQLU8nWk2Lk4mOFuLsJWX/PRIAhw==","repository":{"url":"git+https://github.com/gohypergiant/standard-toolkit.git","type":"git"},"_npmVersion":"10.9.3","description":"A lightweight JavaScript library offering a collection of simple temporal functions for parsing, formatting, manipulating dates and times, and specialty timers.","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"typescript":"^5.8.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.5.0","vitest":"2.1.3","@accelint/vitest-config":"0.1.4","esbuild-fix-imports-plugin":"1.0.21","@accelint/typescript-config":"0.1.3","@accelint/constellation-tracker":"1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/temporal_0.1.1_1760140541306_0.22545395585641703","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@accelint/temporal","version":"0.1.2","keywords":["dev-tk","tooling"],"author":{"name":"https://hypergiant.com"},"license":"Apache-2.0","_id":"@accelint/temporal@0.1.2","maintainers":[{"name":"ray.knight-hypergiant","email":"ray.knight@hypergiant.com"},{"name":"hg-devsecops","email":"hg-devsecops@hypergiant.com"},{"name":"brandonjpierce","email":"brandonpierce91@gmail.com"},{"name":"bryan_hg","email":"bryan.kizer@hypergiant.com"},{"name":"isaac.kehle-hypergiant","email":"isaac.kehle@hypergiant.com"}],"homepage":"https://github.com/gohypergiant/standard-toolkit#readme","bugs":{"url":"https://github.com/gohypergiant/standard-toolkit/issues"},"dist":{"shasum":"a7980d9be581761c9bfeb2fec70d7a6952c86926","tarball":"https://registry.npmjs.org/@accelint/temporal/-/temporal-0.1.2.tgz","fileCount":15,"integrity":"sha512-ZzyUpAqFuJDMjBrxagII89SbMcb1ZiOb1uIAxmoXQSxgEnJR0UGcH4lVYEhtNxC467Jdbdc/SBETURCxJlrB6w==","signatures":[{"sig":"MEUCIQC8FSpw6abQ5F3qH2vfs8h3hmXhVQ4VXX7yLi6lYtt3XAIgENKFusUPGEQcnYsW55PeJECUrK/G6mSw+zLDFrUGIhg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22431},"type":"module","_from":"file:accelint-temporal-0.1.2.tgz","owner":"default/pathfinder","title":"Accelint Temporal","types":"./dist/index.d.ts","$schema":"https://json.schemastore.org/package","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"default":"./dist/index.js"}},"private":false,"scripts":{"dev":"pnpm tsc --watch","lint":"pnpm biome lint","test":"pnpm vitest --dir=src","bench":"pnpm vitest bench --run --dir src","build":"pnpm tsup","index":"pnpm zx ../../scripts/indexer.mjs packages/temporal","constellation-tracker":"constellation-tracker"},"subPath":"packages/temporal","_npmUser":{"name":"brandonjpierce","email":"brandonpierce91@gmail.com"},"_resolved":"/tmp/36218991636b471bf530698e1b94d49c/accelint-temporal-0.1.2.tgz","_integrity":"sha512-ZzyUpAqFuJDMjBrxagII89SbMcb1ZiOb1uIAxmoXQSxgEnJR0UGcH4lVYEhtNxC467Jdbdc/SBETURCxJlrB6w==","repository":{"url":"git+https://github.com/gohypergiant/standard-toolkit.git","type":"git"},"_npmVersion":"10.9.3","description":"A lightweight JavaScript library offering a collection of simple temporal functions for parsing, formatting, manipulating dates and times, and specialty timers.","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.5.0","vitest":"^2.1.9","typescript":"5.8.3","@accelint/vitest-config":"0.1.5","esbuild-fix-imports-plugin":"^1.0.23","@accelint/typescript-config":"0.1.4","@accelint/constellation-tracker":"1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/temporal_0.1.2_1761862912361_0.1274627872228271","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@accelint/temporal","version":"0.1.3","keywords":["dev-tk","tooling"],"author":{"name":"https://hypergiant.com"},"license":"Apache-2.0","_id":"@accelint/temporal@0.1.3","maintainers":[{"name":"ray.knight-hypergiant","email":"ray.knight@hypergiant.com"},{"name":"hg-devsecops","email":"hg-devsecops@hypergiant.com"},{"name":"brandonjpierce","email":"brandonpierce91@gmail.com"},{"name":"bryan_hg","email":"bryan.kizer@hypergiant.com"},{"name":"isaac.kehle-hypergiant","email":"isaac.kehle@hypergiant.com"}],"homepage":"https://github.com/gohypergiant/standard-toolkit#readme","bugs":{"url":"https://github.com/gohypergiant/standard-toolkit/issues"},"dist":{"shasum":"2f9d34f79c06f5a417c56427451764f03b5e0dd0","tarball":"https://registry.npmjs.org/@accelint/temporal/-/temporal-0.1.3.tgz","fileCount":13,"integrity":"sha512-B9WmvHRnS5jhboV6VZK6BcuOPGMs8kbtYT5B0AjEltYITK+5rqNvoSbgzGOfuqVU9W0+URACIg4jByAINzxmXA==","signatures":[{"sig":"MEUCIQD/BTl/ByZ9EfM98uuW4owbRt8FaAS4wEe5aVH2xl2EhQIgTgjugkbKxO/W329JeN3oFZ8/jPmfopA/B1jWNwCOVkw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24743},"main":"./dist/index.js","type":"module","_from":"file:accelint-temporal-0.1.3.tgz","owner":"default/pathfinder","title":"Accelint Temporal","types":"./dist/index.d.ts","module":"./dist/index.js","$schema":"https://json.schemastore.org/package","engines":{"node":">=22","pnpm":">=10"},"exports":{".":"./dist/index.js","./timers":"./dist/timers/index.js","./package.json":"./package.json","./timers/utils":"./dist/timers/utils.js"},"private":false,"scripts":{"dev":"pnpm tsc --watch","lint":"pnpm biome lint","test":"pnpm vitest --dir=src","bench":"pnpm vitest bench --run --dir src","build":"pnpm tsdown","index":"pnpm zx ../../scripts/indexer.mjs packages/temporal","constellation-tracker":"constellation-tracker"},"subPath":"packages/temporal","_npmUser":{"name":"brandonjpierce","email":"brandonpierce91@gmail.com"},"_resolved":"/tmp/c79f04afbda9808e10c1eb5f5fec7ffe/accelint-temporal-0.1.3.tgz","_integrity":"sha512-B9WmvHRnS5jhboV6VZK6BcuOPGMs8kbtYT5B0AjEltYITK+5rqNvoSbgzGOfuqVU9W0+URACIg4jByAINzxmXA==","repository":{"url":"git+https://github.com/gohypergiant/standard-toolkit.git","type":"git"},"_npmVersion":"10.9.4","description":"A lightweight JavaScript library offering a collection of simple temporal functions for parsing, formatting, manipulating dates and times, and specialty timers.","directories":{},"sideEffects":false,"_nodeVersion":"22.21.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.17.2","vitest":"^4.0.8","typescript":"5.8.3","@accelint/vitest-config":"0.1.5","@accelint/typescript-config":"0.1.4","@accelint/constellation-tracker":"1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/temporal_0.1.3_1765564495940_0.28062024508332883","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@accelint/temporal","version":"0.1.4","keywords":["dev-tk","tooling"],"author":{"name":"https://hypergiant.com"},"license":"Apache-2.0","_id":"@accelint/temporal@0.1.4","maintainers":[{"name":"ray.knight-hypergiant","email":"ray.knight@hypergiant.com"},{"name":"hg-devsecops","email":"hg-devsecops@hypergiant.com"},{"name":"brandonjpierce","email":"brandonpierce91@gmail.com"},{"name":"bryan_hg","email":"bryan.kizer@hypergiant.com"},{"name":"isaac.kehle-hypergiant","email":"isaac.kehle@hypergiant.com"}],"homepage":"https://github.com/gohypergiant/standard-toolkit#readme","bugs":{"url":"https://github.com/gohypergiant/standard-toolkit/issues"},"dist":{"shasum":"9b3f215a66436b9bf66ad44966cb44d9b36452da","tarball":"https://registry.npmjs.org/@accelint/temporal/-/temporal-0.1.4.tgz","fileCount":13,"integrity":"sha512-zYZHESjHr/2oCYNGzIxSJBGN930b+vuSustf+bUR0U1xnDuItgJu+GUbPBLzOjhyQRItaxpLdpikWyzdJ0pA4g==","signatures":[{"sig":"MEYCIQCF1EPAK0b+RXfUPFT+bZJqKs75/mDNF2wImAxjRh8jkQIhAK6Aol98ycAO58uXWmmL1fg0VEtidW6jFRBlUbLiGDW6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25764},"main":"./dist/index.js","type":"module","_from":"file:accelint-temporal-0.1.4.tgz","owner":"default/pathfinder","title":"Accelint Temporal","types":"./dist/index.d.ts","module":"./dist/index.js","$schema":"https://json.schemastore.org/package","engines":{"node":">=22","pnpm":">=10"},"exports":{".":"./dist/index.js","./timers":"./dist/timers/index.js","./package.json":"./package.json","./timers/utils":"./dist/timers/utils.js"},"private":false,"scripts":{"dev":"pnpm tsc --watch","lint":"pnpm biome lint . --verbose","test":"pnpm vitest --dir=src","bench":"pnpm vitest bench --run --dir src","build":"pnpm tsdown","index":"pnpm zx ../../scripts/indexer.mjs packages/temporal","format":"pnpm biome format . --write --verbose","license":"pnpm zx ../../scripts/license.mjs","format:check":"pnpm biome format . --verbose","constellation-tracker":"pnpm exec constellation-tracker"},"subPath":"packages/temporal","_npmUser":{"name":"brandonjpierce","email":"brandonpierce91@gmail.com"},"_resolved":"/tmp/47c7a90d0b439b805a4e7ddeafbe5ce2/accelint-temporal-0.1.4.tgz","_integrity":"sha512-zYZHESjHr/2oCYNGzIxSJBGN930b+vuSustf+bUR0U1xnDuItgJu+GUbPBLzOjhyQRItaxpLdpikWyzdJ0pA4g==","repository":{"url":"git+https://github.com/gohypergiant/standard-toolkit.git","type":"git"},"_npmVersion":"11.6.2","description":"A lightweight JavaScript library offering a collection of simple temporal functions for parsing, formatting, manipulating dates and times, and specialty timers.","directories":{},"sideEffects":false,"_nodeVersion":"24.12.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.18.0","vitest":"^4.0.15","typescript":"^5.9.3","@accelint/vitest-config":"0.1.6","@accelint/typescript-config":"0.1.4"},"_npmOperationalInternal":{"tmp":"tmp/temporal_0.1.4_1766092881836_0.7499928376948819","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@accelint/temporal","description":"A lightweight JavaScript library offering a collection of simple temporal functions for parsing, formatting, manipulating dates and times, and specialty timers.","version":"0.1.5","author":{"name":"https://hypergiant.com"},"$schema":"https://json.schemastore.org/package","devDependencies":{"tsdown":"^0.18.0","typescript":"^5.9.3","vitest":"^4.0.15","@accelint/typescript-config":"0.1.4","@accelint/vitest-config":"0.1.6"},"engines":{"node":">=22","pnpm":">=10"},"exports":{".":"./dist/index.js","./timers":"./dist/timers/index.js","./timers/utils":"./dist/timers/utils.js","./package.json":"./package.json"},"keywords":["dev-tk","tooling"],"license":"Apache-2.0","main":"./dist/index.js","module":"./dist/index.js","owner":"default/pathfinder","private":false,"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/gohypergiant/standard-toolkit.git"},"sideEffects":false,"subPath":"packages/temporal","title":"Accelint Temporal","type":"module","types":"./dist/index.d.ts","scripts":{"bench":"pnpm vitest bench --run --dir src","build":"pnpm tsdown","constellation-tracker":"pnpm exec constellation-tracker","dev":"pnpm tsc --watch","format":"pnpm biome format . --write --verbose","format:check":"pnpm biome format . --verbose","index":"pnpm zx ../../scripts/indexer.mjs packages/temporal","license":"pnpm zx ../../scripts/license.mjs","lint":"pnpm biome lint . --verbose","lint:package":"pnpm publint","test":"pnpm vitest --dir=src","test:watch":"pnpm vitest --dir=src --watch"},"_id":"@accelint/temporal@0.1.5","bugs":{"url":"https://github.com/gohypergiant/standard-toolkit/issues"},"homepage":"https://github.com/gohypergiant/standard-toolkit#readme","_integrity":"sha512-Z0qT85UiXpmLggnusU0HLPzBbPHOuy47rY4IKXR4JOC+J8WsTH4m1jRsR6VrtqsdG3lskr9TpyZZ3srDsLwuGQ==","_resolved":"/tmp/b111d7cf69ef086cc2f428414e3d2595/accelint-temporal-0.1.5.tgz","_from":"file:accelint-temporal-0.1.5.tgz","_nodeVersion":"24.20.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-Z0qT85UiXpmLggnusU0HLPzBbPHOuy47rY4IKXR4JOC+J8WsTH4m1jRsR6VrtqsdG3lskr9TpyZZ3srDsLwuGQ==","shasum":"7675480e75f7d673bea4ff5f2806d760e821ba38","tarball":"https://registry.npmjs.org/@accelint/temporal/-/temporal-0.1.5.tgz","fileCount":13,"unpackedSize":37154,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFVt+1nJeXr/Q1EVaKT5r9GLxr0CD5V8UAfZXvPYlFZQAiA7w3jeaGck8ind2LBU7VQrhdnEdtmGhNqnyZGebLsaXQ=="}]},"_npmUser":{"name":"brandonjpierce","email":"brandonpierce91@gmail.com"},"directories":{},"maintainers":[{"name":"hg-devsecops","email":"hg-devsecops@hypergiant.com"},{"name":"brandonjpierce","email":"brandonpierce91@gmail.com"},{"name":"bryan_hg","email":"bryan.kizer@hypergiant.com"},{"name":"colin.leahy","email":"colin.leahy@hypergiant.com"},{"name":"jacob.foster.hg","email":"jacob.foster@hypergiant.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/temporal_0.1.5_1789154045538_0.002086796505869737"},"_hasShrinkwrap":false}},"time":{"created":"2024-11-06T14:21:43.169Z","modified":"2026-09-11T19:14:05.870Z","0.1.0":"2024-11-06T14:21:43.505Z","0.1.1":"2025-10-10T23:55:41.493Z","0.1.2":"2025-10-30T22:21:52.607Z","0.1.3":"2025-12-12T18:34:56.086Z","0.1.4":"2025-12-18T21:21:21.983Z","0.1.5":"2026-09-11T19:14:05.676Z"},"bugs":{"url":"https://github.com/gohypergiant/standard-toolkit/issues"},"author":{"name":"https://hypergiant.com"},"license":"Apache-2.0","homepage":"https://github.com/gohypergiant/standard-toolkit#readme","keywords":["dev-tk","tooling"],"repository":{"type":"git","url":"git+https://github.com/gohypergiant/standard-toolkit.git"},"description":"A lightweight JavaScript library offering a collection of simple temporal functions for parsing, formatting, manipulating dates and times, and specialty timers.","maintainers":[{"name":"hg-devsecops","email":"hg-devsecops@hypergiant.com"},{"name":"brandonjpierce","email":"brandonpierce91@gmail.com"},{"name":"bryan_hg","email":"bryan.kizer@hypergiant.com"},{"name":"colin.leahy","email":"colin.leahy@hypergiant.com"},{"name":"jacob.foster.hg","email":"jacob.foster@hypergiant.com"}],"readme":"# @accelint/temporal\n\nA lightweight JavaScript library offering a collection of simple temporal functions for parsing, formatting, manipulating dates and times, and specialty timers.\n\n## Installation\n\n```sh\nnpm install @accelint/temporal\n```\n\n## Features\n\n### Clock-Aligned Timers\n\nClock-aligned timers synchronize callback execution with the system clock, ensuring callbacks fire precisely at second boundaries. This is useful for:\n\n- Digital clocks and time displays\n- Synchronized animations\n- Periodic polling aligned to specific times\n- Time-based data sampling\n\n## Usage\n\n### setClockInterval\n\nWorks like `setInterval` but synchronizes the first execution to the next clock second, then continues at the specified interval.\n\n```typescript\nimport { setClockInterval } from '@accelint/temporal/timers';\n\n// Update clock display every second, starting on the next second boundary\nconst cleanup = setClockInterval(() => {\n  const now = new Date();\n  console.log(now.toLocaleTimeString());\n}, 1000);\n\n// Cleanup when done\ncleanup();\n```\n\n**Key Features:**\n\n- Waits for the next second boundary before first execution\n- Automatically corrects for drift on subsequent executions\n- Returns a cleanup function to clear the timer\n\n### setClockTimeout\n\nWorks like `setTimeout` but waits for the next clock second before starting the countdown.\n\n```typescript\nimport { setClockTimeout } from '@accelint/temporal/timers';\n\n// Execute callback 500ms after the next second boundary\nconst cleanup = setClockTimeout(() => {\n  console.log('Executed 500ms after clock second');\n}, 500);\n\n// Cleanup if needed\ncleanup();\n```\n\n**Key Features:**\n\n- Waits for the next second boundary before starting timer\n- Returns a cleanup function to clear the timeout\n\n## Advanced Usage\n\n### Utils\n\nThe package exports utility functions for advanced clock-aligned timing needs.\n\n#### remainder\n\nCalculates the remaining time until the next interval boundary.\n\n```typescript\nimport { remainder } from '@accelint/temporal/timers/utils';\n\n// Get milliseconds until next second\nconst msUntilNextSecond = remainder(1000);\nconsole.log(msUntilNextSecond); // e.g., 347\n\n// Get milliseconds until next 5-second boundary\nconst msUntilNext5Seconds = remainder(5000);\nconsole.log(msUntilNext5Seconds); // e.g., 2347\n```\n\n#### callNextSecond\n\nExecutes a callback precisely at the start of the next clock second.\n\n```typescript\nimport { callNextSecond } from '@accelint/temporal/timers/utils';\n\nconst cancel = callNextSecond(() => {\n  console.log('Executed at second boundary');\n});\n\ncancel();\n```\n\n## Use Cases\n\n### Digital Clock Display\n\n```typescript\nimport { setClockInterval } from '@accelint/temporal/timers';\n\nfunction updateClock() {\n  const now = new Date();\n  document.getElementById('clock').textContent = now.toLocaleTimeString();\n}\n\n// Update immediately on next second, then every second\nconst cleanup = setClockInterval(updateClock, 1000);\n```\n\n### Synchronized Data Polling\n\n```typescript\nimport { setClockInterval } from '@accelint/temporal/timers';\n\n// Poll API every 5 seconds, synchronized to clock\nconst cleanup = setClockInterval(async () => {\n  const data = await fetch('/api/status').then(r => r.json());\n  updateUI(data);\n}, 5000);\n```\n\n### Time-Based Animation\n\n```typescript\nimport { setClockInterval } from '@accelint/temporal/timers';\n\n// Update animation frame every 100ms, starting on second boundary\nconst cleanup = setClockInterval(() => {\n  animationFrame++;\n  renderFrame(animationFrame);\n}, 100);\n```\n\n## API Reference\n\n### `setClockInterval(callback: () => void, ms: number): () => void`\n\nCreates a repeating timer that synchronizes to clock seconds.\n\n**Parameters:**\n\n- `callback` - Function to execute on each interval\n- `ms` - Interval duration in milliseconds\n\n**Returns:** Cleanup function to clear the interval\n\n### `setClockTimeout(callback: () => void, ms: number): () => void`\n\nCreates a one-time timer that waits for the next clock second before starting.\n\n**Parameters:**\n\n- `callback` - Function to execute after delay\n- `ms` - Delay duration in milliseconds\n\n**Returns:** Cleanup function to clear the timeout\n\n### `remainder(interval: number): number`\n\nCalculates remaining time until next interval boundary.\n\n**Parameters:**\n\n- `interval` - Interval duration in milliseconds\n\n**Returns:** Remaining milliseconds\n\n### `callNextSecond(callback: () => void): () => void`\n\nExecutes callback at the start of the next clock second.\n\n**Parameters:**\n\n- `callback` - Function to execute at next second boundary\n\n**Returns:** Cleanup function to cancel the scheduled callback\n\n## TypeScript Support\n\nAll functions are fully typed and written in TypeScript. Type definitions are included in the package.\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md"}