{"versions":{"1.0.0":{"name":"@expo/timeago.js","officialName":"timeago.js","version":"1.0.0","summary":"timeago.js is a simple library (less than 1kb) to used to format datetime with `*** time ago` statement. eg: '3 hours ago'.","description":"timeago.js is a simple library (only 1kb) to used to format datetime with `*** time ago` statement. eg: '3 hours ago'. localization supported.","main":"lib/index.js","scripts":{"lint":"eslint src/**/* __tests__/**/*","lint-staged":"lint-staged","size":"limit-size","test":"jest","ci":"npm run lint && npm run test && npm run size && lint-md .","build:umd":"rimraf ./dist && rollup -c && cp -rf dist/ gh-pages && npm run size","build:cjs":"rimraf ./lib && tsc --module commonjs --outDir lib","build:esm":"rimraf ./esm && tsc --module ESNext --outDir esm","build":"npm run build:cjs && npm run build:umd","prepublishOnly":"npm run build"},"dependencies":{},"devDependencies":{"@commitlint/cli":"^8.2.0","@types/jest":"^24.0.18","@typescript-eslint/eslint-plugin":"^2.3.1","@typescript-eslint/parser":"^2.3.1","cross-env":"^5.1.3","eslint":"^6.4.0","eslint-config-prettier":"^6.3.0","husky":"^3.0.5","jest":"^24.9.0","jest-date-mock":"^1.0.5","jest-electron":"^0.1.7","jest-expect":"^0.0.1","limit-size":"^0.1.2","lint-md-cli":"^0.1.0","lint-staged":"^9.3.0","prettier":"^1.18.2","rimraf":"^3.0.0","rollup":"^1.23.1","rollup-plugin-node-resolve":"^5.2.0","rollup-plugin-typescript":"^1.0.1","rollup-plugin-uglify":"^6.0.3","ts-jest":"^24.1.0","typescript":"^3.6.3"},"limit-size":[{"limit":"1.1 Kb","path":"dist/timeago.min.js","gzip":true},{"limit":"10 Kb","path":"dist/timeago.full.min.js","gzip":true}],"jest":{"preset":"ts-jest","runner":"jest-electron/runner","testEnvironment":"jest-electron/environment","setupFilesAfterEnv":["jest-expect"],"testRegex":"(/__tests__/.*(test|spec))\\.ts$","testURL":"https://timeago.org","collectCoverage":true,"collectCoverageFrom":["src/**/*.ts","!**/node_modules/**"]},"lint-staged":{"*.{ts,tsx}":["eslint --fix","prettier --write","git add"]},"husky":{"hooks":{"pre-commit":"npm run lint-staged","commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"author":{"name":"hustcc","url":"https://timeago.org"},"license":"MIT","keywords":["timeago","datetime","*** time ago","date","javascript timeago"],"repository":{"type":"git","url":"git+https://github.com/expo/timeago.js.git"},"bugs":{"url":"https://github.com/expo/timeago.js/issues"},"gitHead":"fd37c1aa2f30243e464fd99e776389ae1bfacafe","homepage":"https://github.com/expo/timeago.js#readme","_id":"@expo/timeago.js@1.0.0","_nodeVersion":"16.0.0","_npmVersion":"7.10.0","dist":{"shasum":"8fb2b17e93e7a8d28387a4d292af12e071040045","size":10433,"noattachment":false,"tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@expo/timeago.js/-/timeago.js-1.0.0.tgz","integrity":"sha512-PD45CGlCL8kG0U3YcH1NvYxQThw5XAS7qE9bgP4L7dakm8lsMz+p8BQ1IjBFMmImawVWsV3py6JZINaEebXLnw=="},"_npmUser":{"name":"anonymous","email":"dominiksokal@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"andyboythekid@gmail.com"},{"name":"anonymous","email":"bartlomiejbukowski.b@gmail.com"},{"name":"anonymous","email":"brentvatne@gmail.com"},{"name":"anonymous","email":"me@bycedric.com"},{"name":"anonymous","email":"ccheever@gmail.com"},{"name":"anonymous","email":"charliecruzan@gmail.com"},{"name":"anonymous","email":"dominiksokal@gmail.com"},{"name":"anonymous","email":"eric@expo.io"},{"name":"anonymous","email":"baconbrix@gmail.com"},{"name":"anonymous","email":"datwheat@gmail.com"},{"name":"anonymous","email":"ide+npm@jameside.com"},{"name":"anonymous","email":"jonathan@expo.io"},{"name":"anonymous","email":"sampjon@gmail.com"},{"name":"anonymous","email":"ckchien@gmail.com"},{"name":"anonymous","email":"quinlanjung@gmail.com"},{"name":"anonymous","email":"tc@expo.io"},{"name":"anonymous","email":"sapeta.tomasz@gmail.com"},{"name":"anonymous","email":"wojciech.kozyra@swmansion.com"},{"name":"anonymous","email":"wschurman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/timeago.js_1.0.0_1631536725268_0.6116625904439976"},"_hasShrinkwrap":false,"publish_time":1631536725410,"_cnpm_publish_time":1631536725410,"_cnpmcore_publish_time":"2021-12-16T22:11:40.158Z","contributors":[]}},"dist-tags":{"latest":"1.0.0"},"name":"@expo/timeago.js","time":{"created":"2022-01-27T13:06:37.250Z","modified":"2026-02-25T15:00:30.694Z","1.0.0":"2021-09-13T12:38:45.410Z"},"readme":"# timeago.js\n\n> **timeago.js** is a nano library(less than `2 kb`)  used to format datetime with `*** time ago` statement. eg: '3 hours ago'.\n\n - i18n supported.\n - Time `ago` and time `in` supported.\n - Real-time render supported.\n - Node and browser supported.\n - Well tested.\n\n[Official website](https://timeago.org/). React version here: [timeago-react](https://github.com/hustcc/timeago-react). Python version here: [timeago](https://github.com/hustcc/timeago).\n\n[![npm Version](https://img.shields.io/npm/v/timeago.js.svg)](https://www.npmjs.com/package/timeago.js)\n[![unpkg](https://img.shields.io/npm/v/timeago.js?label=cdn)](https://unpkg.com/browse/timeago.js/)\n[![Build Status](https://github.com/hustcc/timeago.js/workflows/build/badge.svg)](https://github.com/hustcc/timeago.js/actions)\n[![Coverage Status](https://coveralls.io/repos/github/hustcc/timeago.js/badge.svg?branch=master)](https://coveralls.io/github/hustcc/timeago.js?branch=master)\n[![Dist gzip](https://img.badgesize.io/https://unpkg.com/timeago.js/dist/timeago.min.js?compression=gzip)](https://unpkg.com/timeago.js/dist/timeago.min.js)\n[![npm Download](https://img.shields.io/npm/dm/timeago.js.svg)](https://www.npmjs.com/package/timeago.js)\n[![npm License](https://img.shields.io/npm/l/timeago.js.svg)](https://www.npmjs.com/package/timeago.js)\n\n\nSuch as\n\n```plain\njust now\n12 seconds ago\n2 hours ago\n3 days ago\n3 weeks ago\n2 years ago\n\nin 12 seconds\nin 3 minutes\nin 24 days\nin 6 months\n```\n\n\n## Usage\n\n - install\n\n```bash\nnpm install timeago.js\n```\n\n - import\n\n```ts\nimport { format, render, cancel, register } from 'timeago.js';\n```\n\nor import with `script` tag in html file and access global variable `timeago`.\n\n```html\n<script src=\"dist/timeago.min.js\"></script>\n```\n\n - example\n\n```ts\n// format the time with locale\nformat('2016-06-12', 'en_US');\n```\n\n## CDN \n\nAlternatively to NPM, you can also use a CDN which will reflect the latest version as soon as it is published to npm.\n\n```html\n<script src=\"//unpkg.com/timeago.js\"></script>\n```\n\n## API\n\nThere only 4 API below.\n\n - **format**\n\n> `format(date[, locale = 'en_US', opts])`, format a Date instance / timestamp / date string to string.\n\n```ts\nimport { format } from 'timeago.js';\n\n// format timestamp\nformat(1544666010224);\n\n// format date instance\nformat(new Date(1544666010224));\n\n// format date string\nformat('2018-12-12');\n\n// format with locale\nformat(1544666010224, 'zh_CN');\n\n// format with locale and relative date\nformat(1544666010224, 'zh_CN', { relativeDate: '2018-11-11' });\n\n// e.g.\nformat(Date.now() - 11 * 1000 * 60 * 60); // returns '11 hours ago'\n``` \n\nThe default locale is `en_US`, and the library contains `en_US` and `zh_CN` build-in.\n\n - **render** & **cancel**\n   \n> `render(dom[, locale = 'en_US', opts])`  \n> `cancel([dom])`\n\n> Make a dom with `datetime` attribute automatic rendering and cancel.\n\nHTML code:\n\n```html\n<div class=\"timeago\" datetime=\"2016-06-30 09:20:00\"></div>\n```\n\nJavascript code:\n\n```ts\nimport { render, cancel } from 'timeago.js';\n\nconst nodes = document.querySelectorAll('.timeago');\n\n// use render method to render nodes in real time\nrender(nodes, 'zh_CN');\n\n// render with opts\n// render(nodes, 'en_US', { minInterval: 3 });\n\n// cancel all real-time render task\ncancel();\n\n// or cancel for the specific one\ncancel(nodes[0])\n```\n\nThe 3rd parameter `opts` contains:\n\n```ts\nexport type Opts = {\n  /** the relative date */\n  readonly relativeDate?: TDate;\n  /** the realtime min update interval */\n  readonly minInterval?: number;\n};\n``` \n\n> The DOM object should have the attribute `datetime` with date formatted string.\n\n - **register**\n\n> `register(locale, localeFunc)`, register a new locale, build-in locale contains: `en_US`, `zh_CN`, [all locales here](src/lang).\n\nYou can register your own language with `register` API.\n\n```ts\nconst localeFunc = (number: number, index: number, totalSec: number): [string, string] => {\n  // number: the timeago / timein number;\n  // index: the index of array below;\n  // totalSec: total seconds between date to be formatted and today's date;\n  return [\n    ['just now', 'right now'],\n    ['%s seconds ago', 'in %s seconds'],\n    ['1 minute ago', 'in 1 minute'],\n    ['%s minutes ago', 'in %s minutes'],\n    ['1 hour ago', 'in 1 hour'],\n    ['%s hours ago', 'in %s hours'],\n    ['1 day ago', 'in 1 day'],\n    ['%s days ago', 'in %s days'],\n    ['1 week ago', 'in 1 week'],\n    ['%s weeks ago', 'in %s weeks'],\n    ['1 month ago', 'in 1 month'],\n    ['%s months ago', 'in %s months'],\n    ['1 year ago', 'in 1 year'],\n    ['%s years ago', 'in %s years']\n  ][index];\n};\n// register your locale with timeago\nregister('my-locale', localeFunc);\n\n// use it\nformat('2016-06-12', 'my-locale');\n```\n\n\n## Contributions\n\n1. The website is based on [rmm5t/jquery-timeago](https://github.com/rmm5t/jquery-timeago) which is a nice and featured project but it depends on jQuery.\n2. **locale translations**: The library needs more locale translations. You can:\n\n - Open an issue to write the locale translations, or submit a pull request. How to ? see [locales translation](src/lang/).\n - Please **test** the locale by exec `npm test`. How to write test cases, see [locales test cases](__tests__/lang/).\n\n\n## LICENSE\n\nMIT@[hustcc](https://github.com/hustcc)","users":{}}