@vdegenne/ago 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/ago.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  interface AgoOptions {
2
2
  /**
3
- * If true will print "Today" and "Yesterday" for respective interval.
3
+ * If true, will print "Today", "Yesterday", and "Tomorrow" for respective intervals.
4
4
  *
5
5
  * @default false
6
6
  */
7
- todayAndYesterday: boolean;
7
+ relativeDayNames: boolean;
8
8
  }
9
9
  export declare function ago(dateInput: string | number, options?: Partial<AgoOptions>): string;
10
10
  export {};
package/lib/ago.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ago.d.ts","sourceRoot":"","sources":["../src/ago.ts"],"names":[],"mappings":"AAAA,UAAU,UAAU;IACnB;;;;OAIG;IACH,iBAAiB,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,GAAG,CAClB,SAAS,EAAE,MAAM,GAAG,MAAM,EAC1B,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAC3B,MAAM,CAgDR"}
1
+ {"version":3,"file":"ago.d.ts","sourceRoot":"","sources":["../src/ago.ts"],"names":[],"mappings":"AAAA,UAAU,UAAU;IACnB;;;;OAIG;IACH,gBAAgB,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,GAAG,CAClB,SAAS,EAAE,MAAM,GAAG,MAAM,EAC1B,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAC3B,MAAM,CAsDR"}
package/lib/ago.js CHANGED
@@ -1,43 +1,49 @@
1
1
  export function ago(dateInput, options) {
2
2
  const _options = {
3
- todayAndYesterday: false,
3
+ relativeDayNames: false,
4
4
  ...options,
5
5
  };
6
6
  const now = new Date();
7
- let pastDate;
7
+ let targetDate;
8
8
  if (typeof dateInput === 'number') {
9
- pastDate = new Date(dateInput < 1e11 ? dateInput * 1000 : dateInput);
9
+ targetDate = new Date(dateInput < 1e11 ? dateInput * 1000 : dateInput);
10
10
  }
11
11
  else {
12
- pastDate = new Date(dateInput);
12
+ targetDate = new Date(dateInput);
13
13
  }
14
- if (_options.todayAndYesterday) {
15
- const nowDateStr = now.toDateString();
16
- const pastDateStr = pastDate.toDateString();
14
+ const isPast = targetDate.getTime() <= now.getTime();
15
+ const diffSeconds = Math.abs(now.getTime() - targetDate.getTime()) / 1000;
16
+ if (_options.relativeDayNames) {
17
+ const todayStr = now.toDateString();
18
+ const targetStr = targetDate.toDateString();
17
19
  const yesterday = new Date(now);
18
20
  yesterday.setDate(now.getDate() - 1);
19
- if (pastDateStr === nowDateStr) {
21
+ const tomorrow = new Date(now);
22
+ tomorrow.setDate(now.getDate() + 1);
23
+ if (targetStr === todayStr)
20
24
  return 'Today';
21
- }
22
- if (pastDateStr === yesterday.toDateString()) {
25
+ if (targetStr === yesterday.toDateString())
23
26
  return 'Yesterday';
24
- }
27
+ if (targetStr === tomorrow.toDateString())
28
+ return 'Tomorrow';
25
29
  }
26
- const seconds = Math.floor((now.getTime() - pastDate.getTime()) / 1000);
27
- const intervals = {
28
- year: 31536000,
29
- month: 2592000,
30
- day: 86400,
31
- hour: 3600,
32
- min: 60,
33
- sec: 1,
34
- };
35
- for (const [unit, value] of Object.entries(intervals)) {
36
- const interval = Math.floor(seconds / value);
30
+ const intervals = [
31
+ ['year', 31536000],
32
+ ['month', 2592000],
33
+ ['day', 86400],
34
+ ['hour', 3600],
35
+ ['minute', 60],
36
+ ['second', 1],
37
+ ];
38
+ for (const [unit, value] of intervals) {
39
+ const interval = diffSeconds / value;
37
40
  if (interval >= 1) {
38
- return `${interval} ${unit}${interval > 1 ? 's' : ''} ago`;
41
+ const rounded = unit === 'second' ? Math.floor(interval) : Math.ceil(interval);
42
+ return isPast
43
+ ? `${rounded} ${unit}${rounded > 1 ? 's' : ''} ago`
44
+ : `${rounded} ${unit}${rounded > 1 ? 's' : ''}`;
39
45
  }
40
46
  }
41
- return 'just now';
47
+ return isPast ? 'just now' : 'soon';
42
48
  }
43
49
  //# sourceMappingURL=ago.js.map
package/lib/ago.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ago.js","sourceRoot":"","sources":["../src/ago.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,GAAG,CAClB,SAA0B,EAC1B,OAA6B;IAE7B,MAAM,QAAQ,GAAe;QAC5B,iBAAiB,EAAE,KAAK;QACxB,GAAG,OAAO;KACV,CAAC;IAEF,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,IAAI,QAAc,CAAC;IAEnB,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QACnC,QAAQ,GAAG,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACtE,CAAC;SAAM,CAAC;QACP,QAAQ,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;QAChC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAErC,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;YAChC,OAAO,OAAO,CAAC;QAChB,CAAC;QACD,IAAI,WAAW,KAAK,SAAS,CAAC,YAAY,EAAE,EAAE,CAAC;YAC9C,OAAO,WAAW,CAAC;QACpB,CAAC;IACF,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAExE,MAAM,SAAS,GAA4B;QAC1C,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,OAAO;QACd,GAAG,EAAE,KAAK;QACV,IAAI,EAAE,IAAI;QACV,GAAG,EAAE,EAAE;QACP,GAAG,EAAE,CAAC;KACN,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;QAC7C,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;YACnB,OAAO,GAAG,QAAQ,IAAI,IAAI,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAC5D,CAAC;IACF,CAAC;IAED,OAAO,UAAU,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"ago.js","sourceRoot":"","sources":["../src/ago.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,GAAG,CAClB,SAA0B,EAC1B,OAA6B;IAE7B,MAAM,QAAQ,GAAe;QAC5B,gBAAgB,EAAE,KAAK;QACvB,GAAG,OAAO;KACV,CAAC;IAEF,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,IAAI,UAAgB,CAAC;IAErB,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QACnC,UAAU,GAAG,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACxE,CAAC;SAAM,CAAC;QACP,UAAU,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;IACrD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;IAE1E,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,EAAE,CAAC;QAE5C,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;QAChC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAErC,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/B,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAEpC,IAAI,SAAS,KAAK,QAAQ;YAAE,OAAO,OAAO,CAAC;QAC3C,IAAI,SAAS,KAAK,SAAS,CAAC,YAAY,EAAE;YAAE,OAAO,WAAW,CAAC;QAC/D,IAAI,SAAS,KAAK,QAAQ,CAAC,YAAY,EAAE;YAAE,OAAO,UAAU,CAAC;IAC9D,CAAC;IAED,MAAM,SAAS,GAAuB;QACrC,CAAC,MAAM,EAAE,QAAQ,CAAC;QAClB,CAAC,OAAO,EAAE,OAAO,CAAC;QAClB,CAAC,KAAK,EAAE,KAAK,CAAC;QACd,CAAC,MAAM,EAAE,IAAI,CAAC;QACd,CAAC,QAAQ,EAAE,EAAE,CAAC;QACd,CAAC,QAAQ,EAAE,CAAC,CAAC;KACb,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,SAAS,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,WAAW,GAAG,KAAK,CAAC;QACrC,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;YACnB,MAAM,OAAO,GACZ,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChE,OAAO,MAAM;gBACZ,CAAC,CAAC,GAAG,OAAO,IAAI,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM;gBACnD,CAAC,CAAC,GAAG,OAAO,IAAI,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAClD,CAAC;IACF,CAAC;IAED,OAAO,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;AACrC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vdegenne/ago",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "simple module for ago representations",
5
5
  "type": "module",
6
6
  "exports": {