{"versions":{"1.0.0":{"name":"event-time-utils","version":"1.0.0","description":"A collection of utilities based around events with begins/ends timestamps","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"./node_modules/webpack/bin/webpack.js","prepublish":"npm run build"},"repository":{"type":"git","url":"git+https://github.com/uptick/event-time-utils.git"},"keywords":["event","events","time","moment","util","utils","utilities","begins","ends"],"author":{"name":"Uptick Pty Ltd"},"license":"MIT","bugs":{"url":"https://github.com/uptick/event-time-utils/issues"},"homepage":"https://github.com/uptick/event-time-utils#readme","dependencies":{"moment":"^2.22.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-loader":"^7.1.4","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-preset-env":"^1.7.0","babel-preset-stage-0":"^6.24.1","webpack":"^4.8.3","webpack-cli":"^2.1.3","webpack-node-externals":"^1.7.2"},"gitHead":"d74543a88b678bd6d0a8f5469c4b837bbc6cc370","_id":"event-time-utils@1.0.0","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"anonymous","email":"bor3ham@gmail.com"},"dist":{"integrity":"sha512-bE36jajWLXp9tFlb1flNszwVD6Fv9J0srX9o5+9bbXPHchx+DLVcMidIMtONdsY8p55w4dJLUUjkYSnrJYDXVg==","shasum":"852371ef643d8fd5615aa3dbe1c99bea67c62449","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/event-time-utils/-/event-time-utils-1.0.0.tgz","fileCount":8,"unpackedSize":174269,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+kOOCRA9TVsSAnZWagAAIOkP/0owDEvMiiBBdqiq2yX3\nj9tNi8LiaBLOAN8KcfJO013E13D9c60DtnzzmXrf3Jxzk7E60VYdzfnVhuUq\nS4PkuxMvwVzI9vR9MaQPrvMzKicbnmpoBbwULMmNUUxmLtT1EuOUHH0l8HF8\nXB+boxxPHCpIF7HCWFfgHIi3tETj9QtQE2rhVl8azUy0YHWFl2nuByB7eD9I\nxi1YacENolgJtptWZQLvSz5/NeC4rmYlEFRo9AQSIvdhGiZTrcWuyrdVpJ6B\n5i0kdosPtj65JhgXPqLQB9I3pQ8ZmBijtP0qneIcLIxtdZUdM/ZOikzxyQTv\nT+PIoiJ+R/EwYpesG7hjmY2bPKski1T7ynj0B1uTpvhZZM9iCDGpT8aBtwSh\n/amr+x9Oj6HHDbpgoDyB+C7jiHAeeL1wwcAAbYC1o2DY9D5HB25qNrDo4BQ+\ncIwUSaCLWvSgE43wNRUhm6sbphqhJoZLi8+izTw2kFNqWfQMi1PRMQnVl8Ux\nIyJ9jWTGkLbi9hqCUvGwJ29dM9V8qlVTnnDnRVDFD6fKwiO9Cw5O+bcw6edi\nTHRkfvRitzwT4UvxX2aluBEa3iq6M39xLHTJaLRVIMUqgTFyXjJbkVxv/FxB\nbjVAZXunqVRkPmXVVMGXjTH7awTR+WTrH3fYot4UNxAfEENgLiiG+lBs3xnE\nu+Sk\r\n=6yLA\r\n-----END PGP SIGNATURE-----\r\n","size":45866},"maintainers":[{"name":"anonymous","email":"bor3ham@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/event-time-utils_1.0.0_1526350734055_0.7148765511896154"},"_cnpmcore_publish_time":"2021-12-23T00:05:27.565Z","contributors":[]},"1.0.1":{"name":"event-time-utils","version":"1.0.1","description":"A collection of utilities based around events with begins/ends timestamps","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"./node_modules/webpack/bin/webpack.js","prepublish":"npm run build"},"repository":{"type":"git","url":"git+https://github.com/uptick/event-time-utils.git"},"keywords":["event","events","time","moment","util","utils","utilities","begins","ends"],"author":{"name":"Uptick Pty Ltd"},"license":"MIT","bugs":{"url":"https://github.com/uptick/event-time-utils/issues"},"homepage":"https://github.com/uptick/event-time-utils#readme","dependencies":{"moment":"^2.22.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-loader":"^7.1.4","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-preset-env":"^1.7.0","babel-preset-stage-0":"^6.24.1","webpack":"^4.8.3","webpack-cli":"^2.1.3","webpack-node-externals":"^1.7.2"},"gitHead":"d0978eafcdb4bcab5997bdc22318540c1b62096a","_id":"event-time-utils@1.0.1","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"anonymous","email":"bor3ham@gmail.com"},"dist":{"integrity":"sha512-6KI6pE4STc5PS5cHn02B5j4zpmOLWMj1RjYRwxeMrn7SKzgY4Wv48PnLjk+aNITl34SrglxK2PmzD5aw7IyclA==","shasum":"ffd9a2f2a08b10daabaafe5e472cab7648a6fca7","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/event-time-utils/-/event-time-utils-1.0.1.tgz","fileCount":8,"unpackedSize":350053,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+kTKCRA9TVsSAnZWagAAjBsQAKB8+uRau8zJvelHN1AV\nrTjME3EeP2pyFmwAKUQI3Su9hP8ulNt6KRjhrF1DsgCMRXBr7AH2Eju/CeAN\naaUl8pLHPS46gpnqk9VXgevhAfM8YvuIN+q+mSj2M/9G5N0Bo0MtkB+yGn+n\nqlASgsLJ/RD7+Ir5r0qpc/urscyr2dYsXuvm8BsbatqNoSIzHAUM28axed5e\n5QKAx++59h+CpsgfqyEjkbY61k9L7vgHsSbyM/7gpIjUQluLnlrQwxg2UOsm\nb5SHikQVFCMW5rbrhI6l8/W26o6egfo3Ck94Uk0k142kVEhnIcDIhT0KhqB6\nHLQ95rV8sfhtEGDueQ26lADed4DLp9kE4bBNAzO2Fcvk54yohCc9zdiLkfEF\nztz5b5k7TgDKQqh+DcGGnBnPcRq1ZRKH7zUzBGbQ+2H/c6gomt2FsD6Kchv/\nSIIx+hXQf504VSLOCzSgsD0qEitZnm3C2ka4jKc7UHAEPiBEJd+n7D20wA3S\n8YB9aEwG5bYMpYRGRjWOCTFIzscmXjqiLfxVmCca0t3Ty7VHFh3lkmNujzP3\n7SymCTXCdkib+za26xZEkjwWCiBUiuEgr07jQaY0HA5KFfzTU1WNtzE7L1J6\nDrn05cswsrQYQbFg6ctNyg1YzAjWhWDxZjda1/hNEufXtEthnawwbkP36mA5\n7Xm1\r\n=/3oX\r\n-----END PGP SIGNATURE-----\r\n","size":88979},"maintainers":[{"name":"anonymous","email":"bor3ham@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/event-time-utils_1.0.1_1526351050515_0.9015450710142634"},"_cnpmcore_publish_time":"2021-12-23T00:05:28.945Z","contributors":[]},"1.0.2":{"name":"event-time-utils","version":"1.0.2","description":"A collection of utilities based around events with begins/ends timestamps","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"./node_modules/webpack/bin/webpack.js","prepare":"npm run build"},"repository":{"type":"git","url":"git+https://github.com/uptick/event-time-utils.git"},"keywords":["event","events","time","moment","util","utils","utilities","begins","ends"],"author":{"name":"Uptick Pty Ltd"},"license":"MIT","bugs":{"url":"https://github.com/uptick/event-time-utils/issues"},"homepage":"https://github.com/uptick/event-time-utils#readme","dependencies":{"moment":"^2.22.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-loader":"^7.1.4","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-preset-env":"^1.7.0","babel-preset-stage-0":"^6.24.1","webpack":"^4.8.3","webpack-cli":"^2.1.3","webpack-node-externals":"^1.7.2"},"gitHead":"aa2180152adf86fb85acd54702f1c946248f55d5","_id":"event-time-utils@1.0.2","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"anonymous","email":"bor3ham@gmail.com"},"dist":{"integrity":"sha512-Eu5BBCXcZZ4fmct+6Pl05xScCF2PNEcqj35WIjd7E2GNMK77V2K7TkpW9yKj2idRJyaLjKPhkAmm9njP6lP/Vw==","shasum":"42810a9198829c96704475d8a5fae8f40d25ca4a","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/event-time-utils/-/event-time-utils-1.0.2.tgz","fileCount":8,"unpackedSize":355391,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+m7JCRA9TVsSAnZWagAAhXwP/R9AT2dj6D6fUjdT9gwB\nUzmQJhrSIRNdiaoQdseJuzSzogqFFhr74EWrRe/ennYelcn1PHZ4ZI2akETg\nQghEi4BKKIMjs4oRmgWHMK8is26u/kyrfB/EGVdj/KvvZRRh8BXGCrDYtdzO\n4wOrLCIotPjPsXBEuQcreYq9Gi2R/L+vn8k3Q+ty1N5gSEC+0wbaif3V8+mH\n6fju1083NtDfFbWnzqLznCko0buIksaD1acwftikuJxyBaPL1TottccKO2ws\njOkExsBVGcF1ObV7DnHDjVvbLMUTOhxEkuEWB2Xz09RT7aK78xK1mHkAnst1\nHivik57tksLdplImiewQN9+coOvUiILfK5CsuNvHSTPl+py+GY88Ozlq7Ffw\nn624LQ+vGvor1RVoyKxtaWgyAT9n31IbmEtSRCluPLAgGaLxsCIk0jDoHpw8\nQVHSdfkMds9FCBV14vGJ8FFFaOvjtqjJxHOPXTUZr9HbNHu2lbLfUPhdL/Lb\nQXTpwNUywFFXj2ihz9bmbwuBsnIx/4pc2LWm+o5Hkl+Ik5bQw/jiGrHL4sag\nvvOYD0gIbA7meOg04QaWPhAWNqjJja+140uvoSQKNHm18je2wwuvJ0T49a90\nchb4gb2URoRt6DYog6WjRyvNbrwLvClVjQT9OPKkgDy3Q6dwu12Tmgmd+Z0i\nWB1Z\r\n=TWqt\r\n-----END PGP SIGNATURE-----\r\n","size":90332},"maintainers":[{"name":"anonymous","email":"bor3ham@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/event-time-utils_1.0.2_1526361799738_0.2842319383196361"},"_cnpmcore_publish_time":"2021-12-23T00:05:30.272Z","contributors":[]},"1.0.3":{"name":"event-time-utils","version":"1.0.3","description":"A collection of utilities based around events with begins/ends timestamps","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"./node_modules/webpack/bin/webpack.js","prepare":"npm run build"},"repository":{"type":"git","url":"git+https://github.com/uptick/event-time-utils.git"},"keywords":["event","events","time","moment","util","utils","utilities","begins","ends"],"author":{"name":"Uptick Pty Ltd"},"license":"MIT","bugs":{"url":"https://github.com/uptick/event-time-utils/issues"},"homepage":"https://github.com/uptick/event-time-utils#readme","dependencies":{"moment":"^2.22.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-loader":"^7.1.4","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-preset-env":"^1.7.0","babel-preset-stage-0":"^6.24.1","webpack":"^4.8.3","webpack-cli":"^2.1.3","webpack-node-externals":"^1.7.2"},"gitHead":"5680cd7aaf91b9dab10997410162ff8c290f8ecd","_id":"event-time-utils@1.0.3","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"anonymous","email":"bor3ham@gmail.com"},"dist":{"integrity":"sha512-IuxqQ5v+30Fje9Qw0uJZK1V0AxHFQrOWSHStWk78tJ/uTThgFlBiA+rRphdX+wc4/iMFlkfi0t9iqxnTNqW1Mw==","shasum":"4b0f2f12885bb65a83794b91dc09700845249805","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/event-time-utils/-/event-time-utils-1.0.3.tgz","fileCount":8,"unpackedSize":355575,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+nAeCRA9TVsSAnZWagAA+i8P/RUNmaJ2Zft6rO/c7A8U\n5JPrrgL25xNO9ycBL4hUBCQCE+htyXsO5TWeTmH3iNRk5c3kyAExfrZn0895\nDYNMs0XloMaygq9Mf3flzfCIKI9y+xjlY8lN0DJ6vxNqfEgITQ46XlvbPPpe\nw28Fxezx/Q9f3lOUbz3nuM8hnawtV3FY6PM/gcWAp3SkiRlqt/dHToUy3SqI\ntNvipME67PmwkJLYK9rM7XyqExVrfsBablJpQ5P57deQdy9HGy2kddUZTk7t\n4v6/8+zxKh5vWGZEmNUOxMJsPOkTUB2068+I3t0RXrry3060E0II1Gn+s5fl\ng3xfcK4m/oBh+WbZcGfA3yNB/K8JfxehImeYkszXi5QG8U7R6QehLIr4+xwG\nNAuxpvaCVOvbt8NlQ6fbGDJ7cQ71wIL/8itLjEp0wH3QTWPeKEvnfojrPlYf\nd7JohHDcAlOKkSE6Z4FZO8hCt/lWAnZLjHo884TsczkhNXsQUyiBOMaG5weP\nzU/9MBr8/vOs9ASsSsqCJkKrdC8OJyuadsrbQjX4wII8kwkPTdTwD5jP1Uw1\nHfw0M0NkcR6122ToNQLtW4vo7hdzuyW0g8KT9dqXpfu1+Rxrx6T1kxItIZmJ\nIijHu3JAkkJOItmiwGolaG9qCpxAPkjw0uH9+iOqK/JAhkvMFhCuuft5tJCG\nNJzF\r\n=oQXR\r\n-----END PGP SIGNATURE-----\r\n","size":90418},"maintainers":[{"name":"anonymous","email":"bor3ham@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/event-time-utils_1.0.3_1526362140436_0.6988253825159361"},"_cnpmcore_publish_time":"2021-12-23T00:05:31.635Z","contributors":[]}},"dist-tags":{"latest":"1.0.3"},"name":"event-time-utils","time":{"created":"2022-01-26T18:54:05.562Z","modified":"2022-01-26T18:54:05.563Z","1.0.0":"2018-05-15T02:18:54.160Z","1.0.1":"2018-05-15T02:24:10.597Z","1.0.2":"2018-05-15T05:23:19.959Z","1.0.3":"2018-05-15T05:29:01.489Z"},"readme":"# event-time-utils\n\n[![npm version](https://badge.fury.io/js/event-time-utils.svg)](http://badge.fury.io/js/event-time-utils)\n![Downloads](http://img.shields.io/npm/dm/event-time-utils.svg?style=flat)\n\nA collection of utilities based around events with begins/ends timestamps\n\n## Installation\n\nInstall the package with npm:\n\n```\nnpm install event-time-utils\n```\n\n## Usage\n\nThese utilities are intended to be used with any objects that have a `begins` / `ends` timestamp,\nformatted as a millisecond integer.\n\n### chronoEventsComparer\n\n`chronoEventsComparer` is used for sorting events by start time:\n\n```javascript\nimport { chronoEventsComparer } from 'event-time-utils'\nimport moment from 'moment'\n\nlet events = [\n  {\n    title: 'Dinner',\n    begins: +moment().set({hour: 19, minute: 0,}).startOf('minute').format('x'),\n    ends: +moment().set({hour: 20, minute: 0,}).startOf('minute').format('x'),\n  },\n  {\n    title: 'Breakfast',\n    begins: +moment().set({hour: 7, minute: 30,}).startOf('minute').format('x'),\n    ends: +moment().set({hour: 8, minute: 0,}).startOf('minute').format('x'),\n  },\n  {\n    title: 'Lunch',\n    begins: +moment().set({hour: 12, minute: 0,}).startOf('minute').format('x'),\n    ends: +moment().set({hour: 13, minute: 15,}).startOf('minute').format('x'),\n  },\n]\nlet sortedEvents = [...events,].sort(chronoEventsComparer)\n\nconsole.log(sortedEvents)\n// [{title: 'Breakfast', ...}, {title: 'Lunch', ...}, {title: 'Dinner', ...}]\n```\n\n### activeTime\n\n`activeTime` tells you the amount of total time spent within a set of events, given a `begins` and\n`ends` bound. Overlapping times are only counted once.\n\nFor this function to work, events require a key-serialisable unique `id` attribute. The time value\nis returned as a simplified two decimal place string count of hours.\n\n```javascript\nimport { activeTime } from 'event-time-utils'\nimport moment from 'moment'\n\nlet events = [\n  {\n    id: 1,\n    title: 'Eat Breakfast',\n    begins: +moment().set({hour: 6, minute: 30,}).startOf('minute').format('x'),\n    ends: +moment().set({hour: 7, minute: 0,}).startOf('minute').format('x'),\n  },\n  {\n    id: 2,\n    title: 'Shower',\n    begins: +moment().set({hour: 7, minute: 15,}).startOf('minute').format('x'),\n    ends: +moment().set({hour: 7, minute: 30,}).startOf('minute').format('x'),\n  },\n  {\n    id: 3,\n    title: 'Brush Teeth',\n    begins: +moment().set({hour: 7, minute: 20,}).startOf('minute').format('x'),\n    ends: +moment().set({hour: 7, minute: 25,}).startOf('minute').format('x'),\n  },\n]\nlet dayBegins = +moment().startOf('day').format('x')\nlet dayEnds = +moment().endOf('day').format('x')\nlet time = activeTime(events, dayBegins, dayEnds)\n\nconsole.log(time)\n// '0.75'\n```\n\n### eventsInRange\n\n`eventsInRange` returns a filtered set of events that fall within a specified `begins` and `ends`\nbound.\n\n```javascript\nimport { eventsInRange } from 'event-time-utils'\nimport moment from 'moment'\n\nlet events = [\n  {\n    title: 'Lunch Yesterday',\n    begins: +moment().subtract({days: 1,}).set({hour: 6, minute: 30,}).startOf('minute').format('x'),\n    ends: +moment().subtract({days: 1,}).set({hour: 7, minute: 0,}).startOf('minute').format('x'),\n  },\n  {\n    title: 'Lunch Today',\n    begins: +moment().set({hour: 7, minute: 15,}).startOf('minute').format('x'),\n    ends: +moment().set({hour: 7, minute: 30,}).startOf('minute').format('x'),\n  },\n  {\n    title: 'Lunch Tomorrow',\n    begins: +moment().add({days: 1,}).set({hour: 7, minute: 20,}).startOf('minute').format('x'),\n    ends: +moment().add({days: 1,}).set({hour: 7, minute: 25,}).startOf('minute').format('x'),\n  },\n]\nlet dayBegins = +moment().startOf('day').format('x')\nlet dayEnds = +moment().endOf('day').format('x')\nlet todaysEvents = eventsInRange(events, dayBegins, dayEnds)\n\nconsole.log(todaysEvents)\n// [{title: 'Lunch Today', ...}]\n```\n\n### stackEvents\n\n`stackEvents` returns a mutated set of events with an additional `stackIndex` attribute, with any\noverlapping events placed on a higher stack.\n\nThe input events can be supplied with their own `stackIndex` attribute, so all other events will\nstack around them.\n\nOptionally, you can provide a `margin` to which events will stack even if they don't overlap.\n\n```javascript\nimport { stackEvents } from 'event-time-utils'\nimport moment from 'moment'\n\nlet events = [\n  {\n    title: 'Eat Breakfast',\n    begins: +moment().set({hour: 6, minute: 30,}).startOf('minute').format('x'),\n    ends: +moment().set({hour: 7, minute: 0,}).startOf('minute').format('x'),\n  },\n  {\n    title: 'Shower',\n    begins: +moment().set({hour: 7, minute: 15,}).startOf('minute').format('x'),\n    ends: +moment().set({hour: 7, minute: 30,}).startOf('minute').format('x'),\n  },\n  {\n    title: 'Brush Teeth',\n    begins: +moment().set({hour: 7, minute: 20,}).startOf('minute').format('x'),\n    ends: +moment().set({hour: 7, minute: 25,}).startOf('minute').format('x'),\n  },\n]\nlet stackedEvents = stackEvents(events, 0)\n\nconsole.log(\n  'shower stack:', stackedEvents[1].stackIndex,\n  'brush teeth stack:', stackedEvents[2].stackIndex,\n)\n// shower stack: 0, brush teeth stack: 1\n```\n\n### nearestTime\n\n`nearestTime` rounds a given time value to the nearest given time unit.\n\n```javascript\nimport { nearestTime } from 'event-time-utils'\nimport moment from 'moment'\n\nlet vagueTime = +moment().set({hour: 7, minute: 7,}).startOf('minute').format('x')\nlet roundedTime = nearestTime(vagueTime, +moment.duration({minutes: 15,}))\n\nconsole.log(\n  moment(vagueTime, 'x').format(), 'rounded to:',\n  moment(roundedTime, 'x').format(),\n)\n// 2018-05-15T07:07:00+10:00 rounded to: 2018-05-15T07:00:00+10:00\n```","users":{}}