@autometa/datetime 0.0.0 → 0.1.0

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/CHANGELOG.md ADDED
@@ -0,0 +1,14 @@
1
+ # @autometa/datetime
2
+
3
+ ## 0.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 554b77e: Releasing packages
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [554b77e]
12
+ - @autometa/asserters@0.1.0
13
+ - @autometa/errors@0.1.0
14
+ - @autometa/phrases@0.1.0
package/dist/esm/index.js CHANGED
@@ -17,7 +17,7 @@ var __privateMethod = (obj, member, method) => {
17
17
  };
18
18
 
19
19
  // src/dates/date-factory.ts
20
- import { camel, convertPhrase } from "@autometa/phrases";
20
+ import { camel, convertPhrase, collapse } from "@autometa/phrases";
21
21
 
22
22
  // src/dates/midnight.ts
23
23
  function midnight() {
@@ -27,72 +27,130 @@ function midnight() {
27
27
  }
28
28
 
29
29
  // src/dates/date-factory.ts
30
- var _matchDayPhrase, matchDayPhrase_fn, _addDays, addDays_fn, _addSeconds, addSeconds_fn, _addMilliseconds, addMilliseconds_fn, _addHours, addHours_fn, _addMinutes, addMinutes_fn;
30
+ import { AutomationError, raise } from "@autometa/errors";
31
+ import { ConfirmDefined, ConfirmLengthAtLeast } from "@autometa/asserters";
32
+ var _extractTimeFromPhrase, extractTimeFromPhrase_fn, _extractFutureFromPhrase, extractFutureFromPhrase_fn, _extractPastFromPhrase, extractPastFromPhrase_fn, _addYears, addYears_fn, _addMonths, addMonths_fn, _addWeeks, addWeeks_fn, _addDays, addDays_fn, _addSeconds, addSeconds_fn, _addMilliseconds, addMilliseconds_fn, _addHours, addHours_fn, _addMinutes, addMinutes_fn;
31
33
  var DateFactory = class {
32
34
  constructor() {
33
- __privateAdd(this, _matchDayPhrase);
35
+ __privateAdd(this, _extractTimeFromPhrase);
36
+ __privateAdd(this, _extractFutureFromPhrase);
37
+ __privateAdd(this, _extractPastFromPhrase);
38
+ __privateAdd(this, _addYears);
39
+ __privateAdd(this, _addMonths);
40
+ __privateAdd(this, _addWeeks);
34
41
  __privateAdd(this, _addDays);
35
42
  __privateAdd(this, _addSeconds);
36
43
  __privateAdd(this, _addMilliseconds);
37
44
  __privateAdd(this, _addHours);
38
45
  __privateAdd(this, _addMinutes);
39
46
  this.phraseMap = /* @__PURE__ */ new Map([
40
- ["beforeYesterday", this.make(-2, "days")],
41
- ["yesterday", this.make(-1, "days")],
42
- ["today", this.make(0, "days")],
43
- ["tomorrow", this.make(1, "days")],
44
- ["afterTomorrow", this.make(2, "days")],
45
- ["nextWeek", this.make(7, "days")],
46
- ["lastWeek", this.make(-7, "days")],
47
- ["nextFortnight", this.make(14, "days")],
48
- ["lastFortnight", this.make(-14, "days")],
49
- ["midnight", midnight()]
47
+ ["now", () => this.make(0, "days")],
48
+ ["beforeYesterday", () => this.make(-2, "days")],
49
+ ["yesterday", () => this.make(-1, "days")],
50
+ ["today", () => this.make(0, "days")],
51
+ ["tomorrow", () => this.make(1, "days")],
52
+ ["afterTomorrow", () => this.make(2, "days")],
53
+ ["nextWeek", () => this.make(7, "days")],
54
+ ["lastWeek", () => this.make(-7, "days")],
55
+ ["nextFortnight", () => this.make(14, "days")],
56
+ ["lastFortnight", () => this.make(-14, "days")],
57
+ ["midnight", midnight]
50
58
  ]);
51
59
  }
52
- fromPhrase(phrase) {
60
+ fromPhraseSafe(phrase) {
53
61
  const name = convertPhrase(phrase, camel);
54
62
  if (this.phraseMap.has(name)) {
55
- return this.phraseMap.get(name);
63
+ return this.phraseMap.get(name)?.call(this);
56
64
  }
57
- const matchDay = __privateMethod(this, _matchDayPhrase, matchDayPhrase_fn).call(this, phrase);
65
+ const matchDay = __privateMethod(this, _extractTimeFromPhrase, extractTimeFromPhrase_fn).call(this, phrase);
58
66
  if (matchDay) {
59
67
  return matchDay;
60
68
  }
61
69
  const parsed = new Date(phrase);
62
- if (!isNaN(parsed.getTime()))
63
- return parsed;
64
- throw new Error(`Cannot find date matching '${phrase}'`);
70
+ if (isNaN(parsed.getTime())) {
71
+ return new Date(Date.parse(phrase));
72
+ }
73
+ return parsed;
65
74
  }
66
- make(daysOffset, timeunit) {
67
- switch (timeunit) {
75
+ fromPhrase(phrase) {
76
+ const result = this.fromPhraseSafe(phrase);
77
+ if (result) {
78
+ return result;
79
+ }
80
+ raise(
81
+ `Could not parse date from phrase ${phrase}. Please use a valid date string or a phrase from the following list: ${Array.from(
82
+ this.phraseMap.keys()
83
+ ).join(", ")}`
84
+ );
85
+ }
86
+ make(timeOffset, timeunit) {
87
+ const unit = timeunit.endsWith("s") ? timeunit : `${timeunit}s`;
88
+ switch (unit) {
89
+ case "years":
90
+ return __privateMethod(this, _addYears, addYears_fn).call(this, timeOffset);
91
+ case "months":
92
+ return __privateMethod(this, _addMonths, addMonths_fn).call(this, timeOffset);
93
+ case "weeks":
94
+ return __privateMethod(this, _addWeeks, addWeeks_fn).call(this, timeOffset);
68
95
  case "days":
69
- return __privateMethod(this, _addDays, addDays_fn).call(this, daysOffset);
96
+ return __privateMethod(this, _addDays, addDays_fn).call(this, timeOffset);
70
97
  case "seconds":
71
- return __privateMethod(this, _addSeconds, addSeconds_fn).call(this, daysOffset);
98
+ return __privateMethod(this, _addSeconds, addSeconds_fn).call(this, timeOffset);
72
99
  case "milliseconds":
73
- return __privateMethod(this, _addMilliseconds, addMilliseconds_fn).call(this, daysOffset);
100
+ return __privateMethod(this, _addMilliseconds, addMilliseconds_fn).call(this, timeOffset);
74
101
  case "hours":
75
- return __privateMethod(this, _addHours, addHours_fn).call(this, daysOffset);
102
+ return __privateMethod(this, _addHours, addHours_fn).call(this, timeOffset);
76
103
  case "minutes":
77
- return __privateMethod(this, _addMinutes, addMinutes_fn).call(this, daysOffset);
104
+ return __privateMethod(this, _addMinutes, addMinutes_fn).call(this, timeOffset);
78
105
  default:
79
- throw new Error(
80
- `Invalid timeunit ${timeunit}, options are 'days', 'seconds', 'milliseconds', 'hours', 'minutes'`
106
+ throw new AutomationError(
107
+ `Invalid timeunit ${timeunit}, options are 'days', 'seconds', 'milliseconds', 'hours', 'minutes'. Non plural equivalents such as 'day' or 'week' are also accepted.`
81
108
  );
82
109
  }
83
110
  }
84
111
  };
85
- _matchDayPhrase = new WeakSet();
86
- matchDayPhrase_fn = function(phrase) {
87
- if (phrase.match(/\d+ day(s)? ago?/gi)) {
88
- const value = Number(phrase.match(/\d+/gi)?.pop());
89
- return this.make(-value, "days");
112
+ _extractTimeFromPhrase = new WeakSet();
113
+ extractTimeFromPhrase_fn = function(phrase) {
114
+ return __privateMethod(this, _extractFutureFromPhrase, extractFutureFromPhrase_fn).call(this, phrase) ?? __privateMethod(this, _extractPastFromPhrase, extractPastFromPhrase_fn).call(this, phrase);
115
+ };
116
+ _extractFutureFromPhrase = new WeakSet();
117
+ extractFutureFromPhrase_fn = function(phrase) {
118
+ const pastPattern = /(\d+) (.*)s? from now?/;
119
+ const pastMatch = pastPattern.exec(phrase);
120
+ if (ConfirmDefined(pastMatch) && ConfirmLengthAtLeast(pastMatch, 3)) {
121
+ const [_, value, unit] = pastMatch;
122
+ const timeunit = convertPhrase(unit, collapse);
123
+ return this.make(Number(value), timeunit);
90
124
  }
91
- if (phrase.match(/\d+ day(s)?( from now)?/gi)) {
92
- const value = Number(phrase.match(/\d+/gi)?.pop());
93
- return this.make(value, "days");
125
+ };
126
+ _extractPastFromPhrase = new WeakSet();
127
+ extractPastFromPhrase_fn = function(phrase) {
128
+ const pastPattern = /(\d+) (.*)(s)? ago?/gm;
129
+ const pastMatch = pastPattern.exec(phrase);
130
+ if (ConfirmDefined(pastMatch) && ConfirmLengthAtLeast(pastMatch, 3)) {
131
+ const [_, value, unit] = pastMatch;
132
+ const timeunit = convertPhrase(unit, camel);
133
+ return this.make(-Number(value), timeunit);
94
134
  }
95
135
  };
136
+ _addYears = new WeakSet();
137
+ addYears_fn = function(yearsOffset) {
138
+ const date = /* @__PURE__ */ new Date();
139
+ date.setFullYear(date.getFullYear() + yearsOffset);
140
+ return date;
141
+ };
142
+ _addMonths = new WeakSet();
143
+ addMonths_fn = function(monthOffset) {
144
+ const date = /* @__PURE__ */ new Date();
145
+ date.setMonth(date.getMonth() + monthOffset);
146
+ return date;
147
+ };
148
+ _addWeeks = new WeakSet();
149
+ addWeeks_fn = function(weekOffset) {
150
+ const date = /* @__PURE__ */ new Date();
151
+ date.setMonth(date.getMonth() + weekOffset / 4);
152
+ return date;
153
+ };
96
154
  _addDays = new WeakSet();
97
155
  addDays_fn = function(daysOffset) {
98
156
  const date = /* @__PURE__ */ new Date();
@@ -206,6 +264,9 @@ var DatesObject = class {
206
264
  get fmt() {
207
265
  return __privateGet(this, _fmt);
208
266
  }
267
+ get now() {
268
+ return __privateGet(this, _factory).phraseMap.get("now");
269
+ }
209
270
  get beforeYesterday() {
210
271
  return __privateGet(this, _factory).phraseMap.get("beforeYesterday");
211
272
  }
@@ -239,6 +300,9 @@ var DatesObject = class {
239
300
  fromPhrase(phrase) {
240
301
  return __privateGet(this, _factory).fromPhrase(phrase);
241
302
  }
303
+ fromPhraseSafe(phrase) {
304
+ return __privateGet(this, _factory).fromPhraseSafe(phrase);
305
+ }
242
306
  make(timeOffset, timeUnit) {
243
307
  return __privateGet(this, _factory).make(timeOffset, timeUnit);
244
308
  }
@@ -247,6 +311,55 @@ _factory = new WeakMap();
247
311
  _iso = new WeakMap();
248
312
  _fmt = new WeakMap();
249
313
  var Dates = new DatesObject();
314
+
315
+ // src/time/time.ts
316
+ import { AssertKey } from "@autometa/asserters";
317
+ import { camel as camel2, convertPhrase as convertPhrase2 } from "@autometa/phrases";
318
+ var TimeDiff = class {
319
+ minutes(date1, date2) {
320
+ return this.millis(date1, date2) / 6e4;
321
+ }
322
+ seconds(date1, date2) {
323
+ return this.millis(date1, date2) / 1e3;
324
+ }
325
+ millis(date1, date2) {
326
+ const d1 = new Date(date1).getTime();
327
+ const d2 = new Date(date2).getTime();
328
+ return Math.abs(Math.round(d2 - d1));
329
+ }
330
+ days(date1, date2) {
331
+ return this.millis(date1, date2) / 864e5;
332
+ }
333
+ hours(date1, date2) {
334
+ return this.millis(date1, date2) / 36e5;
335
+ }
336
+ weeks(date1, date2) {
337
+ return this.millis(date1, date2) / 6048e5;
338
+ }
339
+ };
340
+ var _diff;
341
+ var TimeObject = class {
342
+ constructor() {
343
+ __privateAdd(this, _diff, new TimeDiff());
344
+ }
345
+ get diff() {
346
+ return __privateGet(this, _diff);
347
+ }
348
+ fromPhrase(phrase) {
349
+ const propertyKey = convertPhrase2(phrase, camel2);
350
+ AssertKey(this.diff, propertyKey);
351
+ return Time.diff[propertyKey];
352
+ }
353
+ };
354
+ _diff = new WeakMap();
355
+ var Time = new TimeObject();
250
356
  export {
251
- Dates
357
+ DateFactory,
358
+ Dates,
359
+ FmtDateFactory,
360
+ IsoDateFactory,
361
+ Time,
362
+ TimeDiff,
363
+ TimeObject
252
364
  };
365
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/dates/date-factory.ts","../../src/dates/midnight.ts","../../src/dates/iso-date-factory.ts","../../src/dates/formatted-date-factory.ts","../../src/dates/dates.ts","../../src/time/time.ts"],"sourcesContent":["import { TimeUnit, camel, convertPhrase, collapse } from \"@autometa/phrases\";\nimport { midnight } from \"./midnight\";\nimport { AutomationError, raise } from \"@autometa/errors\";\nimport { ConfirmDefined, ConfirmLengthAtLeast } from \"@autometa/asserters\";\n\nexport class DateFactory {\n phraseMap = new Map<string, () => Date>([\n [\"now\", () => this.make(0, \"days\")],\n [\"beforeYesterday\", () => this.make(-2, \"days\")],\n [\"yesterday\", () => this.make(-1, \"days\")],\n [\"today\", () => this.make(0, \"days\")],\n [\"tomorrow\", () => this.make(1, \"days\")],\n [\"afterTomorrow\", () => this.make(2, \"days\")],\n [\"nextWeek\", () => this.make(7, \"days\")],\n [\"lastWeek\", () => this.make(-7, \"days\")],\n [\"nextFortnight\", () => this.make(14, \"days\")],\n [\"lastFortnight\", () => this.make(-14, \"days\")],\n [\"midnight\", midnight]\n ]);\n\n fromPhraseSafe(phrase: string) {\n const name = convertPhrase(phrase, camel);\n if (this.phraseMap.has(name)) {\n return this.phraseMap.get(name)?.call(this);\n }\n const matchDay = this.#extractTimeFromPhrase(phrase);\n if (matchDay) {\n return matchDay;\n }\n const parsed = new Date(phrase);\n if (isNaN(parsed.getTime())) {\n return new Date(Date.parse(phrase));\n }\n return parsed;\n }\n fromPhrase(phrase: string) {\n const result = this.fromPhraseSafe(phrase);\n if (result) {\n return result;\n }\n raise(\n `Could not parse date from phrase ${phrase}. Please use a valid date string or a phrase from the following list: ${Array.from(\n this.phraseMap.keys()\n ).join(\", \")}`\n );\n }\n make(timeOffset: number, timeunit: TimeUnit) {\n const unit = timeunit.endsWith(\"s\") ? timeunit : `${timeunit}s`;\n switch (unit) {\n case \"years\":\n return this.#addYears(timeOffset);\n case \"months\":\n return this.#addMonths(timeOffset);\n case \"weeks\":\n return this.#addWeeks(timeOffset);\n case \"days\":\n return this.#addDays(timeOffset);\n case \"seconds\":\n return this.#addSeconds(timeOffset);\n case \"milliseconds\":\n return this.#addMilliseconds(timeOffset);\n case \"hours\":\n return this.#addHours(timeOffset);\n case \"minutes\":\n return this.#addMinutes(timeOffset);\n default:\n throw new AutomationError(\n `Invalid timeunit ${timeunit}, options are 'days', 'seconds', 'milliseconds', 'hours', 'minutes'. Non plural equivalents such as 'day' or 'week' are also accepted.`\n );\n }\n }\n #extractTimeFromPhrase(phrase: string) {\n return (\n this.#extractFutureFromPhrase(phrase) ??\n this.#extractPastFromPhrase(phrase)\n );\n }\n #extractFutureFromPhrase(phrase: string) {\n const pastPattern = /(\\d+) (.*)s? from now?/;\n const pastMatch = pastPattern.exec(phrase);\n\n if (ConfirmDefined(pastMatch) && ConfirmLengthAtLeast(pastMatch, 3)) {\n const [_, value, unit] = pastMatch;\n const timeunit = convertPhrase(unit, collapse) as TimeUnit;\n return this.make(Number(value), timeunit);\n }\n }\n #extractPastFromPhrase(phrase: string) {\n const pastPattern = /(\\d+) (.*)(s)? ago?/gm;\n const pastMatch = pastPattern.exec(phrase);\n if (ConfirmDefined(pastMatch) && ConfirmLengthAtLeast(pastMatch, 3)) {\n const [_, value, unit] = pastMatch;\n const timeunit = convertPhrase(unit, camel) as TimeUnit;\n return this.make(-Number(value), timeunit);\n }\n }\n #addYears(yearsOffset: number) {\n const date = new Date();\n date.setFullYear(date.getFullYear() + yearsOffset);\n return date;\n }\n #addMonths(monthOffset: number) {\n const date = new Date();\n date.setMonth(date.getMonth() + monthOffset);\n return date;\n }\n #addWeeks(weekOffset: number) {\n const date = new Date();\n date.setMonth(date.getMonth() + weekOffset / 4);\n return date;\n }\n #addDays(daysOffset: number) {\n const date = new Date();\n date.setDate(date.getDate() + daysOffset);\n return date;\n }\n\n #addSeconds(secondsOffset: number) {\n const date = new Date();\n date.setSeconds(date.getSeconds() + secondsOffset);\n return date;\n }\n\n #addMilliseconds(millisecondsOffset: number) {\n const date = new Date();\n date.setMilliseconds(date.getMilliseconds() + millisecondsOffset);\n return date;\n }\n #addHours(hoursOffset: number) {\n const date = new Date();\n date.setHours(date.getHours() + hoursOffset);\n return date;\n }\n #addMinutes(minutesOffset: number) {\n const date = new Date();\n date.setMinutes(date.getMinutes() + minutesOffset);\n return date;\n }\n}\n","\nexport function midnight() {\n const date = new Date();\n date.setHours(0, 0, 0, 0);\n return date;\n}\n","import { TimeUnit } from '@autometa/phrases';\nimport { midnight } from './midnight';\nimport { DateFactory } from './date-factory';\n\n\nexport class IsoDateFactory {\n constructor(readonly dateFactory: DateFactory) { }\n phraseMap = new Map<string, string>([\n ['beforeYesterday', this.make(-2, 'days')],\n ['yesterday', this.make(-1, 'days')],\n ['today', this.make(0, 'days')],\n ['tomorrow', this.make(1, 'days')],\n ['afterTomorrow', this.make(2, 'days')],\n ['nextWeek', this.make(7, 'days')],\n ['lastWeek', this.make(-7, 'days')],\n ['nextFortnight', this.make(14, 'days')],\n ['lastFortnight', this.make(-14, 'days')],\n ['midnight', midnight().toISOString()],\n ]);\n make(daysOffset: number, timeunit: TimeUnit) {\n return this.dateFactory.make(daysOffset, timeunit).toISOString();\n }\n fromPhrase(phrase: string) {\n return this.dateFactory.fromPhrase(phrase)?.toISOString();\n }\n\n get beforeYesterday() {\n return this.phraseMap.get('beforeYesterday');\n }\n get yesterday() {\n return this.phraseMap.get('yesterday');\n }\n get today() {\n return this.phraseMap.get('today');\n }\n get tomorrow() {\n return this.phraseMap.get('tomorrow');\n }\n get afterTomorrow() {\n return this.phraseMap.get('afterTomorrow');\n }\n get midnight() {\n return this.phraseMap.get('midnight');\n }\n get lastWeek() {\n return this.phraseMap.get('lastWeek');\n }\n get nextWeek() {\n return this.phraseMap.get('nextWeek');\n }\n get lastFortnight() {\n return this.phraseMap.get('lastFortnight');\n }\n get nextFortnight() {\n return this.phraseMap.get('nextFortnight');\n }\n}\n","import { TimeUnit } from '@autometa/phrases';\nimport { DateFactory } from './date-factory';\n\n\nexport class FmtDateFactory {\n constructor(readonly dateFactory: DateFactory) { }\n make(daysOffset: number, timeunit: TimeUnit) {\n return this.dateFactory\n .make(daysOffset, timeunit)\n .toISOString()\n .split('T')[0];\n }\n fromPhrase(phrase: string) {\n return this.dateFactory.fromPhrase(phrase)?.toISOString().split('T')[0];\n }\n}\n","import { DateFactory } from \"./date-factory\";\nimport { IsoDateFactory } from \"./iso-date-factory\";\nimport { FmtDateFactory } from \"./formatted-date-factory\";\nimport { TimeUnit } from \"@autometa/phrases\";\n\nexport class DatesObject {\n #factory: DateFactory = new DateFactory();\n #iso = new IsoDateFactory(this.#factory);\n #fmt = new FmtDateFactory(this.#factory);\n get iso() {\n return this.#iso;\n }\n\n get fmt() {\n return this.#fmt;\n }\n\n get now(){\n return this.#factory.phraseMap.get(\"now\");\n\n }\n\n get beforeYesterday() {\n return this.#factory.phraseMap.get(\"beforeYesterday\");\n }\n\n get yesterday() {\n return this.#factory.phraseMap.get(\"yesterday\");\n }\n\n get today() {\n return this.#factory.phraseMap.get(\"today\");\n }\n\n get tomorrow() {\n return this.#factory.phraseMap.get(\"tomorrow\");\n }\n\n get afterTomorrow() {\n return this.#factory.phraseMap.get(\"afterTomorrow\");\n }\n\n get midnight() {\n return this.#factory.phraseMap.get(\"midnight\");\n }\n\n get lastWeek() {\n return this.#factory.phraseMap.get(\"lastWeek\");\n }\n\n get nextWeek() {\n return this.#factory.phraseMap.get(\"nextWeek\");\n }\n\n get lastFortnight() {\n return this.#factory.phraseMap.get(\"lastFortnight\");\n }\n\n get nextFortnight() {\n return this.#factory.phraseMap.get(\"nextFortnight\");\n }\n\n fromPhrase(phrase: string) {\n return this.#factory.fromPhrase(phrase);\n }\n \n fromPhraseSafe(phrase: string) {\n return this.#factory.fromPhraseSafe(phrase);\n }\n\n make(timeOffset: number, timeUnit: TimeUnit) {\n return this.#factory.make(timeOffset, timeUnit);\n }\n}\n\nexport const Dates = new DatesObject();","import { AssertKey } from \"@autometa/asserters\";\nimport { camel, convertPhrase } from \"@autometa/phrases\";\ntype TimeDiffFn = (date1: Date, date2: Date) => number;\n\nexport class TimeDiff {\n minutes(date1: Date, date2: Date) {\n return this.millis(date1, date2) / 60000;\n }\n seconds(date1: Date, date2: Date) {\n return this.millis(date1, date2) / 1000;\n }\n millis(date1: Date, date2: Date) {\n const d1 = new Date(date1).getTime();\n const d2 = new Date(date2).getTime();\n return Math.abs(Math.round(d2 - d1));\n }\n days(date1: Date, date2: Date) {\n return this.millis(date1, date2) / 86400000;\n }\n hours(date1: Date, date2: Date) {\n return this.millis(date1, date2) / 3600000;\n }\n weeks(date1: Date, date2: Date) {\n return this.millis(date1, date2) / 604800000;\n }\n}\n\nexport class TimeObject {\n #diff = new TimeDiff();\n get diff() {\n return this.#diff;\n }\n\n fromPhrase(phrase: string): TimeDiffFn {\n const propertyKey = convertPhrase(phrase, camel);\n AssertKey(this.diff, propertyKey);\n return Time.diff[propertyKey];\n }\n}\n\nexport const Time = new TimeObject();\n"],"mappings":"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","names":["camel","convertPhrase","convertPhrase","camel"]}
@@ -0,0 +1,73 @@
1
+ import { TimeUnit } from '@autometa/phrases';
2
+
3
+ declare class DateFactory {
4
+ #private;
5
+ phraseMap: Map<string, () => Date>;
6
+ fromPhraseSafe(phrase: string): Date | undefined;
7
+ fromPhrase(phrase: string): Date;
8
+ make(timeOffset: number, timeunit: TimeUnit): Date;
9
+ }
10
+
11
+ declare class IsoDateFactory {
12
+ readonly dateFactory: DateFactory;
13
+ constructor(dateFactory: DateFactory);
14
+ phraseMap: Map<string, string>;
15
+ make(daysOffset: number, timeunit: TimeUnit): string;
16
+ fromPhrase(phrase: string): string;
17
+ get beforeYesterday(): string | undefined;
18
+ get yesterday(): string | undefined;
19
+ get today(): string | undefined;
20
+ get tomorrow(): string | undefined;
21
+ get afterTomorrow(): string | undefined;
22
+ get midnight(): string | undefined;
23
+ get lastWeek(): string | undefined;
24
+ get nextWeek(): string | undefined;
25
+ get lastFortnight(): string | undefined;
26
+ get nextFortnight(): string | undefined;
27
+ }
28
+
29
+ declare class FmtDateFactory {
30
+ readonly dateFactory: DateFactory;
31
+ constructor(dateFactory: DateFactory);
32
+ make(daysOffset: number, timeunit: TimeUnit): string;
33
+ fromPhrase(phrase: string): string;
34
+ }
35
+
36
+ declare class DatesObject {
37
+ #private;
38
+ get iso(): IsoDateFactory;
39
+ get fmt(): FmtDateFactory;
40
+ get now(): (() => Date) | undefined;
41
+ get beforeYesterday(): (() => Date) | undefined;
42
+ get yesterday(): (() => Date) | undefined;
43
+ get today(): (() => Date) | undefined;
44
+ get tomorrow(): (() => Date) | undefined;
45
+ get afterTomorrow(): (() => Date) | undefined;
46
+ get midnight(): (() => Date) | undefined;
47
+ get lastWeek(): (() => Date) | undefined;
48
+ get nextWeek(): (() => Date) | undefined;
49
+ get lastFortnight(): (() => Date) | undefined;
50
+ get nextFortnight(): (() => Date) | undefined;
51
+ fromPhrase(phrase: string): Date;
52
+ fromPhraseSafe(phrase: string): Date | undefined;
53
+ make(timeOffset: number, timeUnit: TimeUnit): Date;
54
+ }
55
+ declare const Dates: DatesObject;
56
+
57
+ type TimeDiffFn = (date1: Date, date2: Date) => number;
58
+ declare class TimeDiff {
59
+ minutes(date1: Date, date2: Date): number;
60
+ seconds(date1: Date, date2: Date): number;
61
+ millis(date1: Date, date2: Date): number;
62
+ days(date1: Date, date2: Date): number;
63
+ hours(date1: Date, date2: Date): number;
64
+ weeks(date1: Date, date2: Date): number;
65
+ }
66
+ declare class TimeObject {
67
+ #private;
68
+ get diff(): TimeDiff;
69
+ fromPhrase(phrase: string): TimeDiffFn;
70
+ }
71
+ declare const Time: TimeObject;
72
+
73
+ export { DateFactory, Dates, FmtDateFactory, IsoDateFactory, Time, TimeDiff, TimeObject };
package/dist/index.d.ts CHANGED
@@ -2,9 +2,10 @@ import { TimeUnit } from '@autometa/phrases';
2
2
 
3
3
  declare class DateFactory {
4
4
  #private;
5
- phraseMap: Map<string, Date>;
6
- fromPhrase(phrase: string): Date | undefined;
7
- make(daysOffset: number, timeunit: TimeUnit): Date;
5
+ phraseMap: Map<string, () => Date>;
6
+ fromPhraseSafe(phrase: string): Date | undefined;
7
+ fromPhrase(phrase: string): Date;
8
+ make(timeOffset: number, timeunit: TimeUnit): Date;
8
9
  }
9
10
 
10
11
  declare class IsoDateFactory {
@@ -12,7 +13,7 @@ declare class IsoDateFactory {
12
13
  constructor(dateFactory: DateFactory);
13
14
  phraseMap: Map<string, string>;
14
15
  make(daysOffset: number, timeunit: TimeUnit): string;
15
- fromPhrase(phrase: string): string | undefined;
16
+ fromPhrase(phrase: string): string;
16
17
  get beforeYesterday(): string | undefined;
17
18
  get yesterday(): string | undefined;
18
19
  get today(): string | undefined;
@@ -29,26 +30,44 @@ declare class FmtDateFactory {
29
30
  readonly dateFactory: DateFactory;
30
31
  constructor(dateFactory: DateFactory);
31
32
  make(daysOffset: number, timeunit: TimeUnit): string;
32
- fromPhrase(phrase: string): string | undefined;
33
+ fromPhrase(phrase: string): string;
33
34
  }
34
35
 
35
36
  declare class DatesObject {
36
37
  #private;
37
38
  get iso(): IsoDateFactory;
38
39
  get fmt(): FmtDateFactory;
39
- get beforeYesterday(): Date | undefined;
40
- get yesterday(): Date | undefined;
41
- get today(): Date | undefined;
42
- get tomorrow(): Date | undefined;
43
- get afterTomorrow(): Date | undefined;
44
- get midnight(): Date | undefined;
45
- get lastWeek(): Date | undefined;
46
- get nextWeek(): Date | undefined;
47
- get lastFortnight(): Date | undefined;
48
- get nextFortnight(): Date | undefined;
49
- fromPhrase(phrase: string): Date | undefined;
40
+ get now(): (() => Date) | undefined;
41
+ get beforeYesterday(): (() => Date) | undefined;
42
+ get yesterday(): (() => Date) | undefined;
43
+ get today(): (() => Date) | undefined;
44
+ get tomorrow(): (() => Date) | undefined;
45
+ get afterTomorrow(): (() => Date) | undefined;
46
+ get midnight(): (() => Date) | undefined;
47
+ get lastWeek(): (() => Date) | undefined;
48
+ get nextWeek(): (() => Date) | undefined;
49
+ get lastFortnight(): (() => Date) | undefined;
50
+ get nextFortnight(): (() => Date) | undefined;
51
+ fromPhrase(phrase: string): Date;
52
+ fromPhraseSafe(phrase: string): Date | undefined;
50
53
  make(timeOffset: number, timeUnit: TimeUnit): Date;
51
54
  }
52
55
  declare const Dates: DatesObject;
53
56
 
54
- export { Dates };
57
+ type TimeDiffFn = (date1: Date, date2: Date) => number;
58
+ declare class TimeDiff {
59
+ minutes(date1: Date, date2: Date): number;
60
+ seconds(date1: Date, date2: Date): number;
61
+ millis(date1: Date, date2: Date): number;
62
+ days(date1: Date, date2: Date): number;
63
+ hours(date1: Date, date2: Date): number;
64
+ weeks(date1: Date, date2: Date): number;
65
+ }
66
+ declare class TimeObject {
67
+ #private;
68
+ get diff(): TimeDiff;
69
+ fromPhrase(phrase: string): TimeDiffFn;
70
+ }
71
+ declare const Time: TimeObject;
72
+
73
+ export { DateFactory, Dates, FmtDateFactory, IsoDateFactory, Time, TimeDiff, TimeObject };
package/dist/index.js CHANGED
@@ -37,7 +37,13 @@ var __privateMethod = (obj, member, method) => {
37
37
  // src/index.ts
38
38
  var src_exports = {};
39
39
  __export(src_exports, {
40
- Dates: () => Dates
40
+ DateFactory: () => DateFactory,
41
+ Dates: () => Dates,
42
+ FmtDateFactory: () => FmtDateFactory,
43
+ IsoDateFactory: () => IsoDateFactory,
44
+ Time: () => Time,
45
+ TimeDiff: () => TimeDiff,
46
+ TimeObject: () => TimeObject
41
47
  });
42
48
  module.exports = __toCommonJS(src_exports);
43
49
 
@@ -52,72 +58,130 @@ function midnight() {
52
58
  }
53
59
 
54
60
  // src/dates/date-factory.ts
55
- var _matchDayPhrase, matchDayPhrase_fn, _addDays, addDays_fn, _addSeconds, addSeconds_fn, _addMilliseconds, addMilliseconds_fn, _addHours, addHours_fn, _addMinutes, addMinutes_fn;
61
+ var import_errors = require("@autometa/errors");
62
+ var import_asserters = require("@autometa/asserters");
63
+ var _extractTimeFromPhrase, extractTimeFromPhrase_fn, _extractFutureFromPhrase, extractFutureFromPhrase_fn, _extractPastFromPhrase, extractPastFromPhrase_fn, _addYears, addYears_fn, _addMonths, addMonths_fn, _addWeeks, addWeeks_fn, _addDays, addDays_fn, _addSeconds, addSeconds_fn, _addMilliseconds, addMilliseconds_fn, _addHours, addHours_fn, _addMinutes, addMinutes_fn;
56
64
  var DateFactory = class {
57
65
  constructor() {
58
- __privateAdd(this, _matchDayPhrase);
66
+ __privateAdd(this, _extractTimeFromPhrase);
67
+ __privateAdd(this, _extractFutureFromPhrase);
68
+ __privateAdd(this, _extractPastFromPhrase);
69
+ __privateAdd(this, _addYears);
70
+ __privateAdd(this, _addMonths);
71
+ __privateAdd(this, _addWeeks);
59
72
  __privateAdd(this, _addDays);
60
73
  __privateAdd(this, _addSeconds);
61
74
  __privateAdd(this, _addMilliseconds);
62
75
  __privateAdd(this, _addHours);
63
76
  __privateAdd(this, _addMinutes);
64
77
  this.phraseMap = /* @__PURE__ */ new Map([
65
- ["beforeYesterday", this.make(-2, "days")],
66
- ["yesterday", this.make(-1, "days")],
67
- ["today", this.make(0, "days")],
68
- ["tomorrow", this.make(1, "days")],
69
- ["afterTomorrow", this.make(2, "days")],
70
- ["nextWeek", this.make(7, "days")],
71
- ["lastWeek", this.make(-7, "days")],
72
- ["nextFortnight", this.make(14, "days")],
73
- ["lastFortnight", this.make(-14, "days")],
74
- ["midnight", midnight()]
78
+ ["now", () => this.make(0, "days")],
79
+ ["beforeYesterday", () => this.make(-2, "days")],
80
+ ["yesterday", () => this.make(-1, "days")],
81
+ ["today", () => this.make(0, "days")],
82
+ ["tomorrow", () => this.make(1, "days")],
83
+ ["afterTomorrow", () => this.make(2, "days")],
84
+ ["nextWeek", () => this.make(7, "days")],
85
+ ["lastWeek", () => this.make(-7, "days")],
86
+ ["nextFortnight", () => this.make(14, "days")],
87
+ ["lastFortnight", () => this.make(-14, "days")],
88
+ ["midnight", midnight]
75
89
  ]);
76
90
  }
77
- fromPhrase(phrase) {
91
+ fromPhraseSafe(phrase) {
78
92
  const name = (0, import_phrases.convertPhrase)(phrase, import_phrases.camel);
79
93
  if (this.phraseMap.has(name)) {
80
- return this.phraseMap.get(name);
94
+ return this.phraseMap.get(name)?.call(this);
81
95
  }
82
- const matchDay = __privateMethod(this, _matchDayPhrase, matchDayPhrase_fn).call(this, phrase);
96
+ const matchDay = __privateMethod(this, _extractTimeFromPhrase, extractTimeFromPhrase_fn).call(this, phrase);
83
97
  if (matchDay) {
84
98
  return matchDay;
85
99
  }
86
100
  const parsed = new Date(phrase);
87
- if (!isNaN(parsed.getTime()))
88
- return parsed;
89
- throw new Error(`Cannot find date matching '${phrase}'`);
101
+ if (isNaN(parsed.getTime())) {
102
+ return new Date(Date.parse(phrase));
103
+ }
104
+ return parsed;
90
105
  }
91
- make(daysOffset, timeunit) {
92
- switch (timeunit) {
106
+ fromPhrase(phrase) {
107
+ const result = this.fromPhraseSafe(phrase);
108
+ if (result) {
109
+ return result;
110
+ }
111
+ (0, import_errors.raise)(
112
+ `Could not parse date from phrase ${phrase}. Please use a valid date string or a phrase from the following list: ${Array.from(
113
+ this.phraseMap.keys()
114
+ ).join(", ")}`
115
+ );
116
+ }
117
+ make(timeOffset, timeunit) {
118
+ const unit = timeunit.endsWith("s") ? timeunit : `${timeunit}s`;
119
+ switch (unit) {
120
+ case "years":
121
+ return __privateMethod(this, _addYears, addYears_fn).call(this, timeOffset);
122
+ case "months":
123
+ return __privateMethod(this, _addMonths, addMonths_fn).call(this, timeOffset);
124
+ case "weeks":
125
+ return __privateMethod(this, _addWeeks, addWeeks_fn).call(this, timeOffset);
93
126
  case "days":
94
- return __privateMethod(this, _addDays, addDays_fn).call(this, daysOffset);
127
+ return __privateMethod(this, _addDays, addDays_fn).call(this, timeOffset);
95
128
  case "seconds":
96
- return __privateMethod(this, _addSeconds, addSeconds_fn).call(this, daysOffset);
129
+ return __privateMethod(this, _addSeconds, addSeconds_fn).call(this, timeOffset);
97
130
  case "milliseconds":
98
- return __privateMethod(this, _addMilliseconds, addMilliseconds_fn).call(this, daysOffset);
131
+ return __privateMethod(this, _addMilliseconds, addMilliseconds_fn).call(this, timeOffset);
99
132
  case "hours":
100
- return __privateMethod(this, _addHours, addHours_fn).call(this, daysOffset);
133
+ return __privateMethod(this, _addHours, addHours_fn).call(this, timeOffset);
101
134
  case "minutes":
102
- return __privateMethod(this, _addMinutes, addMinutes_fn).call(this, daysOffset);
135
+ return __privateMethod(this, _addMinutes, addMinutes_fn).call(this, timeOffset);
103
136
  default:
104
- throw new Error(
105
- `Invalid timeunit ${timeunit}, options are 'days', 'seconds', 'milliseconds', 'hours', 'minutes'`
137
+ throw new import_errors.AutomationError(
138
+ `Invalid timeunit ${timeunit}, options are 'days', 'seconds', 'milliseconds', 'hours', 'minutes'. Non plural equivalents such as 'day' or 'week' are also accepted.`
106
139
  );
107
140
  }
108
141
  }
109
142
  };
110
- _matchDayPhrase = new WeakSet();
111
- matchDayPhrase_fn = function(phrase) {
112
- if (phrase.match(/\d+ day(s)? ago?/gi)) {
113
- const value = Number(phrase.match(/\d+/gi)?.pop());
114
- return this.make(-value, "days");
143
+ _extractTimeFromPhrase = new WeakSet();
144
+ extractTimeFromPhrase_fn = function(phrase) {
145
+ return __privateMethod(this, _extractFutureFromPhrase, extractFutureFromPhrase_fn).call(this, phrase) ?? __privateMethod(this, _extractPastFromPhrase, extractPastFromPhrase_fn).call(this, phrase);
146
+ };
147
+ _extractFutureFromPhrase = new WeakSet();
148
+ extractFutureFromPhrase_fn = function(phrase) {
149
+ const pastPattern = /(\d+) (.*)s? from now?/;
150
+ const pastMatch = pastPattern.exec(phrase);
151
+ if ((0, import_asserters.ConfirmDefined)(pastMatch) && (0, import_asserters.ConfirmLengthAtLeast)(pastMatch, 3)) {
152
+ const [_, value, unit] = pastMatch;
153
+ const timeunit = (0, import_phrases.convertPhrase)(unit, import_phrases.collapse);
154
+ return this.make(Number(value), timeunit);
115
155
  }
116
- if (phrase.match(/\d+ day(s)?( from now)?/gi)) {
117
- const value = Number(phrase.match(/\d+/gi)?.pop());
118
- return this.make(value, "days");
156
+ };
157
+ _extractPastFromPhrase = new WeakSet();
158
+ extractPastFromPhrase_fn = function(phrase) {
159
+ const pastPattern = /(\d+) (.*)(s)? ago?/gm;
160
+ const pastMatch = pastPattern.exec(phrase);
161
+ if ((0, import_asserters.ConfirmDefined)(pastMatch) && (0, import_asserters.ConfirmLengthAtLeast)(pastMatch, 3)) {
162
+ const [_, value, unit] = pastMatch;
163
+ const timeunit = (0, import_phrases.convertPhrase)(unit, import_phrases.camel);
164
+ return this.make(-Number(value), timeunit);
119
165
  }
120
166
  };
167
+ _addYears = new WeakSet();
168
+ addYears_fn = function(yearsOffset) {
169
+ const date = /* @__PURE__ */ new Date();
170
+ date.setFullYear(date.getFullYear() + yearsOffset);
171
+ return date;
172
+ };
173
+ _addMonths = new WeakSet();
174
+ addMonths_fn = function(monthOffset) {
175
+ const date = /* @__PURE__ */ new Date();
176
+ date.setMonth(date.getMonth() + monthOffset);
177
+ return date;
178
+ };
179
+ _addWeeks = new WeakSet();
180
+ addWeeks_fn = function(weekOffset) {
181
+ const date = /* @__PURE__ */ new Date();
182
+ date.setMonth(date.getMonth() + weekOffset / 4);
183
+ return date;
184
+ };
121
185
  _addDays = new WeakSet();
122
186
  addDays_fn = function(daysOffset) {
123
187
  const date = /* @__PURE__ */ new Date();
@@ -231,6 +295,9 @@ var DatesObject = class {
231
295
  get fmt() {
232
296
  return __privateGet(this, _fmt);
233
297
  }
298
+ get now() {
299
+ return __privateGet(this, _factory).phraseMap.get("now");
300
+ }
234
301
  get beforeYesterday() {
235
302
  return __privateGet(this, _factory).phraseMap.get("beforeYesterday");
236
303
  }
@@ -264,6 +331,9 @@ var DatesObject = class {
264
331
  fromPhrase(phrase) {
265
332
  return __privateGet(this, _factory).fromPhrase(phrase);
266
333
  }
334
+ fromPhraseSafe(phrase) {
335
+ return __privateGet(this, _factory).fromPhraseSafe(phrase);
336
+ }
267
337
  make(timeOffset, timeUnit) {
268
338
  return __privateGet(this, _factory).make(timeOffset, timeUnit);
269
339
  }
@@ -272,7 +342,56 @@ _factory = new WeakMap();
272
342
  _iso = new WeakMap();
273
343
  _fmt = new WeakMap();
274
344
  var Dates = new DatesObject();
345
+
346
+ // src/time/time.ts
347
+ var import_asserters2 = require("@autometa/asserters");
348
+ var import_phrases2 = require("@autometa/phrases");
349
+ var TimeDiff = class {
350
+ minutes(date1, date2) {
351
+ return this.millis(date1, date2) / 6e4;
352
+ }
353
+ seconds(date1, date2) {
354
+ return this.millis(date1, date2) / 1e3;
355
+ }
356
+ millis(date1, date2) {
357
+ const d1 = new Date(date1).getTime();
358
+ const d2 = new Date(date2).getTime();
359
+ return Math.abs(Math.round(d2 - d1));
360
+ }
361
+ days(date1, date2) {
362
+ return this.millis(date1, date2) / 864e5;
363
+ }
364
+ hours(date1, date2) {
365
+ return this.millis(date1, date2) / 36e5;
366
+ }
367
+ weeks(date1, date2) {
368
+ return this.millis(date1, date2) / 6048e5;
369
+ }
370
+ };
371
+ var _diff;
372
+ var TimeObject = class {
373
+ constructor() {
374
+ __privateAdd(this, _diff, new TimeDiff());
375
+ }
376
+ get diff() {
377
+ return __privateGet(this, _diff);
378
+ }
379
+ fromPhrase(phrase) {
380
+ const propertyKey = (0, import_phrases2.convertPhrase)(phrase, import_phrases2.camel);
381
+ (0, import_asserters2.AssertKey)(this.diff, propertyKey);
382
+ return Time.diff[propertyKey];
383
+ }
384
+ };
385
+ _diff = new WeakMap();
386
+ var Time = new TimeObject();
275
387
  // Annotate the CommonJS export names for ESM import in node:
276
388
  0 && (module.exports = {
277
- Dates
389
+ DateFactory,
390
+ Dates,
391
+ FmtDateFactory,
392
+ IsoDateFactory,
393
+ Time,
394
+ TimeDiff,
395
+ TimeObject
278
396
  });
397
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/dates/date-factory.ts","../src/dates/midnight.ts","../src/dates/iso-date-factory.ts","../src/dates/formatted-date-factory.ts","../src/dates/dates.ts","../src/time/time.ts"],"sourcesContent":["export * from './dates'\nexport * from './time'","import { TimeUnit, camel, convertPhrase, collapse } from \"@autometa/phrases\";\nimport { midnight } from \"./midnight\";\nimport { AutomationError, raise } from \"@autometa/errors\";\nimport { ConfirmDefined, ConfirmLengthAtLeast } from \"@autometa/asserters\";\n\nexport class DateFactory {\n phraseMap = new Map<string, () => Date>([\n [\"now\", () => this.make(0, \"days\")],\n [\"beforeYesterday\", () => this.make(-2, \"days\")],\n [\"yesterday\", () => this.make(-1, \"days\")],\n [\"today\", () => this.make(0, \"days\")],\n [\"tomorrow\", () => this.make(1, \"days\")],\n [\"afterTomorrow\", () => this.make(2, \"days\")],\n [\"nextWeek\", () => this.make(7, \"days\")],\n [\"lastWeek\", () => this.make(-7, \"days\")],\n [\"nextFortnight\", () => this.make(14, \"days\")],\n [\"lastFortnight\", () => this.make(-14, \"days\")],\n [\"midnight\", midnight]\n ]);\n\n fromPhraseSafe(phrase: string) {\n const name = convertPhrase(phrase, camel);\n if (this.phraseMap.has(name)) {\n return this.phraseMap.get(name)?.call(this);\n }\n const matchDay = this.#extractTimeFromPhrase(phrase);\n if (matchDay) {\n return matchDay;\n }\n const parsed = new Date(phrase);\n if (isNaN(parsed.getTime())) {\n return new Date(Date.parse(phrase));\n }\n return parsed;\n }\n fromPhrase(phrase: string) {\n const result = this.fromPhraseSafe(phrase);\n if (result) {\n return result;\n }\n raise(\n `Could not parse date from phrase ${phrase}. Please use a valid date string or a phrase from the following list: ${Array.from(\n this.phraseMap.keys()\n ).join(\", \")}`\n );\n }\n make(timeOffset: number, timeunit: TimeUnit) {\n const unit = timeunit.endsWith(\"s\") ? timeunit : `${timeunit}s`;\n switch (unit) {\n case \"years\":\n return this.#addYears(timeOffset);\n case \"months\":\n return this.#addMonths(timeOffset);\n case \"weeks\":\n return this.#addWeeks(timeOffset);\n case \"days\":\n return this.#addDays(timeOffset);\n case \"seconds\":\n return this.#addSeconds(timeOffset);\n case \"milliseconds\":\n return this.#addMilliseconds(timeOffset);\n case \"hours\":\n return this.#addHours(timeOffset);\n case \"minutes\":\n return this.#addMinutes(timeOffset);\n default:\n throw new AutomationError(\n `Invalid timeunit ${timeunit}, options are 'days', 'seconds', 'milliseconds', 'hours', 'minutes'. Non plural equivalents such as 'day' or 'week' are also accepted.`\n );\n }\n }\n #extractTimeFromPhrase(phrase: string) {\n return (\n this.#extractFutureFromPhrase(phrase) ??\n this.#extractPastFromPhrase(phrase)\n );\n }\n #extractFutureFromPhrase(phrase: string) {\n const pastPattern = /(\\d+) (.*)s? from now?/;\n const pastMatch = pastPattern.exec(phrase);\n\n if (ConfirmDefined(pastMatch) && ConfirmLengthAtLeast(pastMatch, 3)) {\n const [_, value, unit] = pastMatch;\n const timeunit = convertPhrase(unit, collapse) as TimeUnit;\n return this.make(Number(value), timeunit);\n }\n }\n #extractPastFromPhrase(phrase: string) {\n const pastPattern = /(\\d+) (.*)(s)? ago?/gm;\n const pastMatch = pastPattern.exec(phrase);\n if (ConfirmDefined(pastMatch) && ConfirmLengthAtLeast(pastMatch, 3)) {\n const [_, value, unit] = pastMatch;\n const timeunit = convertPhrase(unit, camel) as TimeUnit;\n return this.make(-Number(value), timeunit);\n }\n }\n #addYears(yearsOffset: number) {\n const date = new Date();\n date.setFullYear(date.getFullYear() + yearsOffset);\n return date;\n }\n #addMonths(monthOffset: number) {\n const date = new Date();\n date.setMonth(date.getMonth() + monthOffset);\n return date;\n }\n #addWeeks(weekOffset: number) {\n const date = new Date();\n date.setMonth(date.getMonth() + weekOffset / 4);\n return date;\n }\n #addDays(daysOffset: number) {\n const date = new Date();\n date.setDate(date.getDate() + daysOffset);\n return date;\n }\n\n #addSeconds(secondsOffset: number) {\n const date = new Date();\n date.setSeconds(date.getSeconds() + secondsOffset);\n return date;\n }\n\n #addMilliseconds(millisecondsOffset: number) {\n const date = new Date();\n date.setMilliseconds(date.getMilliseconds() + millisecondsOffset);\n return date;\n }\n #addHours(hoursOffset: number) {\n const date = new Date();\n date.setHours(date.getHours() + hoursOffset);\n return date;\n }\n #addMinutes(minutesOffset: number) {\n const date = new Date();\n date.setMinutes(date.getMinutes() + minutesOffset);\n return date;\n }\n}\n","\nexport function midnight() {\n const date = new Date();\n date.setHours(0, 0, 0, 0);\n return date;\n}\n","import { TimeUnit } from '@autometa/phrases';\nimport { midnight } from './midnight';\nimport { DateFactory } from './date-factory';\n\n\nexport class IsoDateFactory {\n constructor(readonly dateFactory: DateFactory) { }\n phraseMap = new Map<string, string>([\n ['beforeYesterday', this.make(-2, 'days')],\n ['yesterday', this.make(-1, 'days')],\n ['today', this.make(0, 'days')],\n ['tomorrow', this.make(1, 'days')],\n ['afterTomorrow', this.make(2, 'days')],\n ['nextWeek', this.make(7, 'days')],\n ['lastWeek', this.make(-7, 'days')],\n ['nextFortnight', this.make(14, 'days')],\n ['lastFortnight', this.make(-14, 'days')],\n ['midnight', midnight().toISOString()],\n ]);\n make(daysOffset: number, timeunit: TimeUnit) {\n return this.dateFactory.make(daysOffset, timeunit).toISOString();\n }\n fromPhrase(phrase: string) {\n return this.dateFactory.fromPhrase(phrase)?.toISOString();\n }\n\n get beforeYesterday() {\n return this.phraseMap.get('beforeYesterday');\n }\n get yesterday() {\n return this.phraseMap.get('yesterday');\n }\n get today() {\n return this.phraseMap.get('today');\n }\n get tomorrow() {\n return this.phraseMap.get('tomorrow');\n }\n get afterTomorrow() {\n return this.phraseMap.get('afterTomorrow');\n }\n get midnight() {\n return this.phraseMap.get('midnight');\n }\n get lastWeek() {\n return this.phraseMap.get('lastWeek');\n }\n get nextWeek() {\n return this.phraseMap.get('nextWeek');\n }\n get lastFortnight() {\n return this.phraseMap.get('lastFortnight');\n }\n get nextFortnight() {\n return this.phraseMap.get('nextFortnight');\n }\n}\n","import { TimeUnit } from '@autometa/phrases';\nimport { DateFactory } from './date-factory';\n\n\nexport class FmtDateFactory {\n constructor(readonly dateFactory: DateFactory) { }\n make(daysOffset: number, timeunit: TimeUnit) {\n return this.dateFactory\n .make(daysOffset, timeunit)\n .toISOString()\n .split('T')[0];\n }\n fromPhrase(phrase: string) {\n return this.dateFactory.fromPhrase(phrase)?.toISOString().split('T')[0];\n }\n}\n","import { DateFactory } from \"./date-factory\";\nimport { IsoDateFactory } from \"./iso-date-factory\";\nimport { FmtDateFactory } from \"./formatted-date-factory\";\nimport { TimeUnit } from \"@autometa/phrases\";\n\nexport class DatesObject {\n #factory: DateFactory = new DateFactory();\n #iso = new IsoDateFactory(this.#factory);\n #fmt = new FmtDateFactory(this.#factory);\n get iso() {\n return this.#iso;\n }\n\n get fmt() {\n return this.#fmt;\n }\n\n get now(){\n return this.#factory.phraseMap.get(\"now\");\n\n }\n\n get beforeYesterday() {\n return this.#factory.phraseMap.get(\"beforeYesterday\");\n }\n\n get yesterday() {\n return this.#factory.phraseMap.get(\"yesterday\");\n }\n\n get today() {\n return this.#factory.phraseMap.get(\"today\");\n }\n\n get tomorrow() {\n return this.#factory.phraseMap.get(\"tomorrow\");\n }\n\n get afterTomorrow() {\n return this.#factory.phraseMap.get(\"afterTomorrow\");\n }\n\n get midnight() {\n return this.#factory.phraseMap.get(\"midnight\");\n }\n\n get lastWeek() {\n return this.#factory.phraseMap.get(\"lastWeek\");\n }\n\n get nextWeek() {\n return this.#factory.phraseMap.get(\"nextWeek\");\n }\n\n get lastFortnight() {\n return this.#factory.phraseMap.get(\"lastFortnight\");\n }\n\n get nextFortnight() {\n return this.#factory.phraseMap.get(\"nextFortnight\");\n }\n\n fromPhrase(phrase: string) {\n return this.#factory.fromPhrase(phrase);\n }\n \n fromPhraseSafe(phrase: string) {\n return this.#factory.fromPhraseSafe(phrase);\n }\n\n make(timeOffset: number, timeUnit: TimeUnit) {\n return this.#factory.make(timeOffset, timeUnit);\n }\n}\n\nexport const Dates = new DatesObject();","import { AssertKey } from \"@autometa/asserters\";\nimport { camel, convertPhrase } from \"@autometa/phrases\";\ntype TimeDiffFn = (date1: Date, date2: Date) => number;\n\nexport class TimeDiff {\n minutes(date1: Date, date2: Date) {\n return this.millis(date1, date2) / 60000;\n }\n seconds(date1: Date, date2: Date) {\n return this.millis(date1, date2) / 1000;\n }\n millis(date1: Date, date2: Date) {\n const d1 = new Date(date1).getTime();\n const d2 = new Date(date2).getTime();\n return Math.abs(Math.round(d2 - d1));\n }\n days(date1: Date, date2: Date) {\n return this.millis(date1, date2) / 86400000;\n }\n hours(date1: Date, date2: Date) {\n return this.millis(date1, date2) / 3600000;\n }\n weeks(date1: Date, date2: Date) {\n return this.millis(date1, date2) / 604800000;\n }\n}\n\nexport class TimeObject {\n #diff = new TimeDiff();\n get diff() {\n return this.#diff;\n }\n\n fromPhrase(phrase: string): TimeDiffFn {\n const propertyKey = convertPhrase(phrase, camel);\n AssertKey(this.diff, propertyKey);\n return Time.diff[propertyKey];\n }\n}\n\nexport const Time = new TimeObject();\n"],"mappings":"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","names":["import_asserters","import_phrases"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@autometa/datetime",
3
- "version": "0.0.0",
3
+ "version": "0.1.0",
4
4
  "description": "Date and Time utilities for Autometa",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -18,22 +18,24 @@
18
18
  "@types/uuid": "^9.0.1",
19
19
  "@typescript-eslint/eslint-plugin": "^5.54.1",
20
20
  "@typescript-eslint/parser": "^5.54.1",
21
+ "@vitest/coverage-istanbul": "^0.31.0",
21
22
  "eslint": "^8.37.0",
22
- "eslint-config-custom": "0.5.1",
23
+ "eslint-config-custom": "0.6.0",
23
24
  "eslint-config-prettier": "^8.3.0",
24
25
  "rimraf": "^4.1.2",
25
26
  "tsconfig": " *",
26
- "tsup": "^6.7.0",
27
+ "tsup": "^7.2.0",
27
28
  "typescript": "^4.9.5",
28
- "vitest": "^0.29.8"
29
+ "vitest": "0.33.0"
29
30
  },
30
31
  "dependencies": {
31
- "@autometa/asserters": "^0.0.0",
32
- "@autometa/errors": "^0.0.0",
33
- "@autometa/phrases": "^0.0.0"
32
+ "@autometa/asserters": "^0.1.0",
33
+ "@autometa/errors": "^0.1.0",
34
+ "@autometa/phrases": "^0.1.0"
34
35
  },
35
36
  "scripts": {
36
37
  "test": "vitest run --passWithNoTests",
38
+ "coverage": "vitest run --coverage",
37
39
  "prettify": "prettier --config .prettierrc 'src/**/*.ts' --write",
38
40
  "lint": "eslint . --max-warnings 0",
39
41
  "lint:fix": "eslint . --fix",
package/tsup.config.ts CHANGED
@@ -2,6 +2,7 @@ import { defineConfig } from "tsup";
2
2
 
3
3
  export default defineConfig({
4
4
  clean: true, // clean up the dist folder
5
+ sourcemap:true, // generate sourcemaps
5
6
  format: ["cjs", "esm"], // generate cjs and esm files
6
7
  dts: true,
7
8
  skipNodeModulesBundle: true,