{"_id":"approximate-now","_rev":"148638","name":"approximate-now","description":"Approximate (fast) current UNIX time.","dist-tags":{"latest":"1.0.2"},"maintainers":[{"name":"gajus","email":"gk@anuary.com"}],"time":{"modified":"2021-06-03T11:31:05.000Z","created":"2020-12-25T22:50:42.026Z","1.0.2":"2021-01-12T17:51:40.898Z","1.0.1":"2020-12-26T01:43:49.256Z","1.0.0":"2020-12-25T22:50:42.026Z"},"users":{},"author":{"name":"Gajus Kuizinas","email":"gajus@gajus.com","url":"http://gajus.com"},"repository":{"type":"git","url":"git+ssh://git@github.com/gajus/approximate-now.git"},"versions":{"1.0.2":{"author":{"name":"Gajus Kuizinas","email":"gajus@gajus.com","url":"http://gajus.com"},"ava":{"extensions":["ts"],"files":["test/approximate-now/**/*"],"require":["ts-node/register/transpile-only"]},"description":"Approximate (fast) current UNIX time.","devDependencies":{"@istanbuljs/nyc-config-typescript":"^1.0.1","ava":"^3.14.0","benchmark":"^2.1.4","coveralls":"^3.1.0","del-cli":"^3.0.1","delay":"^4.4.0","eslint":"^7.16.0","eslint-config-canonical":"^24.4.4","husky":"^4.3.6","nyc":"^15.1.0","semantic-release":"^17.3.0","ts-node":"^9.1.1","typescript":"^4.1.3"},"engines":{"node":">=10.0"},"husky":{"hooks":{"pre-commit":"npm run lint && npm run test && npm run build"}},"keywords":["log","logger","json"],"license":"BSD-3-Clause","main":"./dist/approximateNow.js","name":"approximate-now","repository":{"type":"git","url":"git+ssh://git@github.com/gajus/approximate-now.git"},"scripts":{"benchmark":"ROARR_LOG=true ts-node --transpile-only test/benchmark.ts","build":"del-cli ./dist && tsc","create-readme":"gitdown ./.README/README.md --output-file ./README.md","dev":"tsc --watch","lint":"eslint ./src ./test && tsc --noEmit","test":"NODE_ENV=test ava --serial --verbose"},"typings":"./dist/approximateNow.d.ts","version":"1.0.2","gitHead":"6ea8bab38d13a6afbe456714136c9adfa0590f96","bugs":{"url":"https://github.com/gajus/approximate-now/issues"},"homepage":"https://github.com/gajus/approximate-now#readme","_id":"approximate-now@1.0.2","_nodeVersion":"15.5.1","_npmVersion":"6.14.10","dist":{"shasum":"f72310c2aae8625d5f1ed8031005ce8ae16a0000","size":3141,"noattachment":false,"key":"/approximate-now/-/approximate-now-1.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/approximate-now/download/approximate-now-1.0.2.tgz"},"_npmUser":{"name":"gajus","email":"gajus@gajus.com"},"directories":{},"maintainers":[{"name":"gajus","email":"gk@anuary.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/approximate-now_1.0.2_1610473900739_0.8289720405846814"},"_hasShrinkwrap":false,"publish_time":1610473900898,"_cnpm_publish_time":1610473900898},"1.0.1":{"author":{"name":"Gajus Kuizinas","email":"gajus@gajus.com","url":"http://gajus.com"},"ava":{"extensions":["ts"],"files":["test/approximate-now/**/*"],"require":["ts-node/register/transpile-only"]},"description":"Approximate (fast) current UNIX time.","devDependencies":{"@istanbuljs/nyc-config-typescript":"^1.0.1","ava":"^3.14.0","benchmark":"^2.1.4","coveralls":"^3.1.0","del-cli":"^3.0.1","delay":"^4.4.0","eslint":"^7.16.0","eslint-config-canonical":"^24.4.4","husky":"^4.3.6","nyc":"^15.1.0","semantic-release":"^17.3.0","ts-node":"^9.1.1","typescript":"^4.1.3"},"engines":{"node":">=10.0"},"husky":{"hooks":{"pre-commit":"npm run lint && npm run test && npm run build"}},"keywords":["log","logger","json"],"license":"BSD-3-Clause","main":"./dist/approximateNow.js","name":"approximate-now","repository":{"type":"git","url":"git+ssh://git@github.com/gajus/approximate-now.git"},"scripts":{"benchmark":"ROARR_LOG=true ts-node --transpile-only test/benchmark.ts","build":"del-cli ./dist && tsc","create-readme":"gitdown ./.README/README.md --output-file ./README.md","dev":"tsc --watch","lint":"eslint ./src ./test && tsc --noEmit","test":"NODE_ENV=test ava --serial --verbose"},"typings":"./dist/approximateNow.d.ts","version":"1.0.1","gitHead":"f434964c74f42c4b895820c9818c60e7488a777d","bugs":{"url":"https://github.com/gajus/approximate-now/issues"},"homepage":"https://github.com/gajus/approximate-now#readme","_id":"approximate-now@1.0.1","_nodeVersion":"15.5.0","_npmVersion":"6.14.10","dist":{"shasum":"824fd836a54f1afc4dd5e41dc3dca134185e823f","size":3121,"noattachment":false,"key":"/approximate-now/-/approximate-now-1.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/approximate-now/download/approximate-now-1.0.1.tgz"},"_npmUser":{"name":"gajus","email":"gajus@gajus.com"},"directories":{},"maintainers":[{"name":"gajus","email":"gk@anuary.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/approximate-now_1.0.1_1608947029095_0.5208004461867293"},"_hasShrinkwrap":false,"publish_time":1608947029256,"_cnpm_publish_time":1608947029256},"1.0.0":{"author":{"name":"Gajus Kuizinas","email":"gajus@gajus.com","url":"http://gajus.com"},"ava":{"extensions":["ts"],"files":["test/approximate-now/**/*"],"require":["ts-node/register/transpile-only"]},"description":"Approximate (fast) current UNIX time.","devDependencies":{"@istanbuljs/nyc-config-typescript":"^1.0.1","ava":"^3.14.0","benchmark":"^2.1.4","coveralls":"^3.1.0","del-cli":"^3.0.1","delay":"^4.4.0","eslint":"^7.16.0","eslint-config-canonical":"^24.4.4","husky":"^4.3.6","nyc":"^15.1.0","semantic-release":"^17.3.0","ts-node":"^9.1.1","typescript":"^4.1.3"},"engines":{"node":">=10.0"},"husky":{"hooks":{"pre-commit":"npm run lint && npm run test && npm run build"}},"keywords":["log","logger","json"],"license":"BSD-3-Clause","main":"./dist/approximateNow.js","name":"approximate-now","repository":{"type":"git","url":"git+ssh://git@github.com/gajus/approximate-now.git"},"scripts":{"benchmark":"ROARR_LOG=true ts-node --transpile-only test/benchmark.ts","build":"del-cli ./dist && tsc","create-readme":"gitdown ./.README/README.md --output-file ./README.md","dev":"tsc --watch","lint":"eslint ./src ./test && tsc --noEmit","test":"NODE_ENV=test ava --serial --verbose"},"typings":"./dist/approximateNow.d.ts","version":"1.0.0","gitHead":"5dcaff55ea0f3426a049c20c393ea6c9ca8d027e","bugs":{"url":"https://github.com/gajus/approximate-now/issues"},"homepage":"https://github.com/gajus/approximate-now#readme","_id":"approximate-now@1.0.0","_nodeVersion":"15.5.0","_npmVersion":"6.14.10","dist":{"shasum":"00f80e42309f2b5518402daba8595c4206e1bf73","size":3124,"noattachment":false,"key":"/approximate-now/-/approximate-now-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/approximate-now/download/approximate-now-1.0.0.tgz"},"_npmUser":{"name":"gajus","email":"gajus@gajus.com"},"directories":{},"maintainers":[{"name":"gajus","email":"gk@anuary.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/approximate-now_1.0.0_1608936641882_0.8685191623913973"},"_hasShrinkwrap":false,"publish_time":1608936642026,"_cnpm_publish_time":1608936642026}},"readme":"# approximate-now\n\n[![Travis build status](http://img.shields.io/travis/gajus/approximate-now/master.svg?style=flat-square)](https://travis-ci.org/gajus/approximate-now)\n[![Coveralls](https://img.shields.io/coveralls/gajus/approximate-now.svg?style=flat-square)](https://coveralls.io/github/gajus/approximate-now)\n[![NPM version](http://img.shields.io/npm/v/approximate-now.svg?style=flat-square)](https://www.npmjs.org/package/approximate-now)\n[![Canonical Code Style](https://img.shields.io/badge/code%20style-canonical-blue.svg?style=flat-square)](https://github.com/gajus/canonical)\n[![Twitter Follow](https://img.shields.io/twitter/follow/kuizinas.svg?style=social&label=Follow)](https://twitter.com/kuizinas)\n\nApproximate (fast) current UNIX time.\n\n## Motivation\n\nSometimes you don't care about the exact time the event took place, but rather need to know approximately when. If your use case is performance sensitive, then `Date.now()` might not be the best option because it has a [measurable impact](#benchmark) to the performance. `approximate-now` provides an approximate (to the error of 50ms) time without a performance penalty of `Date.now()`.\n\n## Usage\n\n```js\nimport {\n  approximateTime,\n} from 'approximate-now';\n\n// `approximateTime.now` value is updated by reference every 50ms.\nconsole.log(approximateTime.now);\n\n```\n\n## Sequence guarantee\n\nIt is guaranteed that two consequent attempts to retrieve time within the same 50ms time window will have unique values, i.e.\n\nAssuming that the current time is `0000000000000`, then:\n\n```js\napproximateTime.now; // 0000000000000\napproximateTime.now; // 0000000000001\napproximateTime.now; // 0000000000002\n\n```\n\nHowever, if `approximateTime.now` is accessed more than 50 times within the same 50ms time window, then the top-most value within that interval is returned repeatedly.\n\n```js\napproximateTime.now; // 0000000000000\napproximateTime.now; // 0000000000001\napproximateTime.now; // 0000000000002\n\n// approximateTime.now x 50\napproximateTime.now; // 0000000000050\napproximateTime.now; // 0000000000050\napproximateTime.now; // 0000000000050\n\n```\n\n## benchmark\n\n```\nDate.now()          x 19,900,411 ops/sec ±0.59% (93 runs sampled)\napproximateTime.now x 82,420,291 ops/sec ±0.83% (92 runs sampled)\n\n```\n\n## Use cases\n\nAny sort of time-sensitive operations when it is sufficient to retrieve an approximate timestamp, e.g. [`roarr`](https://github.com/gajus/roarr) logger uses `approximate-now` to record the time when a log message was produced.\n","_attachments":{},"homepage":"https://github.com/gajus/approximate-now#readme","bugs":{"url":"https://github.com/gajus/approximate-now/issues"},"license":"BSD-3-Clause"}