@thisisagile/easy 17.14.0 → 17.15.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.
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-RBQOVMPC.mjs";
5
5
  import {
6
6
  DateTime
7
- } from "./chunk-BISRC54F.mjs";
7
+ } from "./chunk-UR544PJT.mjs";
8
8
  import {
9
9
  Struct
10
10
  } from "./chunk-TZYSQJ2N.mjs";
@@ -47,4 +47,4 @@ __decorateClass([
47
47
  export {
48
48
  Audit
49
49
  };
50
- //# sourceMappingURL=chunk-DNWG66S7.mjs.map
50
+ //# sourceMappingURL=chunk-DV7QIJRF.mjs.map
@@ -5,7 +5,8 @@ import {
5
5
  isDate
6
6
  } from "./chunk-ADJAEGCT.mjs";
7
7
  import {
8
- choose
8
+ choose,
9
+ tryTo
9
10
  } from "./chunk-2KZ5UP6A.mjs";
10
11
  import {
11
12
  Value
@@ -16,6 +17,9 @@ import {
16
17
  import {
17
18
  isA
18
19
  } from "./chunk-ZHXKBOK2.mjs";
20
+ import {
21
+ use
22
+ } from "./chunk-ZPNFXK7Y.mjs";
19
23
  import {
20
24
  isDefined,
21
25
  isNumber,
@@ -48,12 +52,13 @@ var DateTime = class _DateTime extends Value {
48
52
  return this.luxon.setZone("utc");
49
53
  }
50
54
  from(dateOrLocale, maybeLocale) {
51
- const date = isA(dateOrLocale) ? dateOrLocale : void 0;
52
- const locale = (isString(dateOrLocale) ? dateOrLocale : void 0) ?? maybeLocale ?? "en";
53
- return ifDefined(
54
- date,
55
- (d) => this.utc.setLocale(locale).toRelative({ base: d.utc }),
56
- () => this.utc.setLocale(locale).toRelative()
55
+ return use(
56
+ (isString(dateOrLocale) ? dateOrLocale : maybeLocale) ?? "en",
57
+ (locale) => ifDefined(
58
+ isA(dateOrLocale) ? dateOrLocale : void 0,
59
+ (d) => this.utc.setLocale(locale).toRelative({ base: d.utc }),
60
+ () => this.utc.setLocale(locale).toRelative()
61
+ )
57
62
  ) ?? "";
58
63
  }
59
64
  isAfter(dt2) {
@@ -110,6 +115,9 @@ var DateTime = class _DateTime extends Value {
110
115
  ago(end = _DateTime.now) {
111
116
  return seconds.toText(end.diff(this, "second"));
112
117
  }
118
+ withClock(clock) {
119
+ return tryTo(() => [this.toDate(), clock.toDate()]).map(([td, cd]) => new Date(td.getFullYear(), td.getMonth(), td.getDate(), cd.getHours(), cd.getMinutes(), cd.getSeconds())).map((d) => new _DateTime(d)).value;
120
+ }
113
121
  };
114
122
  var isDateTime = (dt2) => isDefined(dt2) && dt2 instanceof DateTime;
115
123
  var dt = (dt2) => new DateTime(dt2);
@@ -119,4 +127,4 @@ export {
119
127
  isDateTime,
120
128
  dt
121
129
  };
122
- //# sourceMappingURL=chunk-BISRC54F.mjs.map
130
+ //# sourceMappingURL=chunk-UR544PJT.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/domain/DateTime.ts"],"sourcesContent":["import { DateTime as LuxonDateTime, DateTimeUnit as LuxonDateTimeUnit, DurationUnit as LuxonDurationUnit, Settings } from 'luxon';\nimport { Value } from '../types/Value';\nimport { Optional } from '../types/Types';\nimport { choose } from '../types/Case';\nimport { isDefined, isNumber, isString } from '../types/Is';\nimport { isDate } from '../types/IsDate';\nimport { isA } from '../types/IsA';\nimport { ifDefined } from '../utils/If';\nimport { JsonValue } from '../types/Json';\nimport { seconds } from '../utils/Seconds';\nimport { tryTo } from '../types/Try';\nimport { use } from '../types/Constructor';\n\nSettings.defaultZone = 'utc';\n\nexport type DateTimeUnit = LuxonDateTimeUnit;\nexport type DurationUnit = LuxonDurationUnit;\nexport type Duration = Partial<Record<DurationUnit, number>>;\n\nexport type DiffOptions = {\n rounding: 'floor' | 'ceil' | 'round';\n};\n\ntype DatetimeInput = string | number | Date | DateTime | null;\n\nexport class DateTime extends Value<Optional<string>> {\n protected readonly luxon: LuxonDateTime;\n\n constructor(value?: DatetimeInput);\n constructor(value?: string, format?: string);\n constructor(value?: DatetimeInput, format?: string) {\n const luxon = choose(value)\n .type(isString, v => (format ? LuxonDateTime.fromFormat(v, format, { setZone: true }) : LuxonDateTime.fromISO(v, { setZone: true })))\n .type(isNumber, v => LuxonDateTime.fromMillis(v))\n .type(isDate, v => LuxonDateTime.fromJSDate(v))\n .type(isDateTime, v => v.luxon)\n // Allow constructing with LuxonDateTime without exposing types\n .else(value instanceof LuxonDateTime ? value : LuxonDateTime.fromISO(undefined as any));\n\n super(luxon.toISO() ?? undefined);\n this.luxon = luxon;\n }\n\n static get now(): DateTime {\n return new DateTime(LuxonDateTime.utc() as any);\n }\n\n get isValid(): boolean {\n return isDefined(this.value) && this.utc.isValid;\n }\n\n /**\n * @deprecated Deprecated in favor for DateTime.from as that also accepts locales and another DateTime\n */\n get fromNow(): string {\n return this.from();\n }\n\n protected get utc(): LuxonDateTime {\n return this.luxon.setZone('utc');\n }\n\n from(locale?: string): string;\n from(date?: DateTime, locale?: string): string;\n from(dateOrLocale?: string | DateTime, maybeLocale?: string): string {\n return (\n use((isString(dateOrLocale) ? dateOrLocale : maybeLocale) ?? 'en', locale =>\n ifDefined(\n isA<DateTime>(dateOrLocale) ? dateOrLocale : undefined,\n d => this.utc.setLocale(locale).toRelative({ base: d.utc }),\n () => this.utc.setLocale(locale).toRelative()\n )\n ) ?? ''\n );\n }\n\n isAfter(dt: DateTime): boolean {\n return this.utc > dt.utc;\n }\n\n isBefore(dt: DateTime): boolean {\n return this.utc < dt.utc;\n }\n\n equals(dt: DateTime): boolean {\n return this.utc.hasSame(dt.utc, 'millisecond');\n }\n\n add(n: number, unit?: DurationUnit): DateTime;\n add(duration: Duration): DateTime;\n add(n: number | Duration, unit: DurationUnit = 'day'): DateTime {\n return new DateTime(this.luxon.plus(isNumber(n) ? { [unit]: n } : n) as any);\n }\n\n subtract(n: number, unit?: DurationUnit): DateTime;\n subtract(duration: Duration): DateTime;\n subtract(n: number | Duration, unit: DurationUnit = 'day'): DateTime {\n return new DateTime(this.luxon.minus(isNumber(n) ? { [unit]: n } : n) as any);\n }\n\n diff(other: DateTime, unit: DateTimeUnit = 'day', opts?: DiffOptions): number {\n return Math[opts?.rounding ?? 'floor'](this.utc.diff(other.utc).as(unit));\n }\n\n startOf(unit: DateTimeUnit = 'day'): DateTime {\n return new DateTime(this.luxon.startOf(unit) as any);\n }\n\n endOf(unit: DateTimeUnit = 'day'): DateTime {\n return new DateTime(this.luxon.endOf(unit) as any);\n }\n\n isWeekend(): boolean {\n return this.luxon.isWeekend;\n }\n\n withZone(zone: string): DateTime {\n return new DateTime(this.luxon.setZone(zone) as any);\n }\n\n toString(): string {\n return this.value ?? '';\n }\n\n toJSON(): JsonValue {\n return this.utc.toISO();\n }\n\n toFormat(format: string): string {\n return this.luxon.toFormat(format);\n }\n\n toLocale(locale = 'nl-NL', format = 'D'): string {\n return this.luxon.setLocale(locale).toFormat(format);\n }\n\n toFull(locale?: string): string {\n return this.toLocale(locale, 'DDD');\n }\n\n toDate(): Optional<Date> {\n return this.isValid ? this.utc.toJSDate() : undefined;\n }\n\n toEpoch(): number {\n return this.luxon.toMillis();\n }\n\n ago(end: DateTime = DateTime.now): string {\n return seconds.toText(end.diff(this, 'second'));\n }\n\n withClock(clock: DateTime): DateTime {\n return tryTo(() => [this.toDate() as Date, clock.toDate() as Date])\n .map(([td, cd]) => new Date(td.getFullYear(), td.getMonth(), td.getDate(), cd.getHours(), cd.getMinutes(), cd.getSeconds()))\n .map(d => new DateTime(d)).value;\n }\n}\n\nexport const isDateTime = (dt?: unknown): dt is DateTime => isDefined(dt) && dt instanceof DateTime;\n\nexport const dt = (dt?: DatetimeInput): DateTime => new DateTime(dt);\n"],"mappings":"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","names":["dt"]}
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  Audit
3
- } from "../chunk-DNWG66S7.mjs";
3
+ } from "../chunk-DV7QIJRF.mjs";
4
4
  import "../chunk-RBQOVMPC.mjs";
5
- import "../chunk-BISRC54F.mjs";
5
+ import "../chunk-UR544PJT.mjs";
6
6
  import "../chunk-JQQGQCYH.mjs";
7
7
  import "../chunk-ADJAEGCT.mjs";
8
8
  import "../chunk-TZYSQJ2N.mjs";
@@ -39,6 +39,7 @@ export declare class DateTime extends Value<Optional<string>> {
39
39
  toDate(): Optional<Date>;
40
40
  toEpoch(): number;
41
41
  ago(end?: DateTime): string;
42
+ withClock(clock: DateTime): DateTime;
42
43
  }
43
44
  export declare const isDateTime: (dt?: unknown) => dt is DateTime;
44
45
  export declare const dt: (dt?: DatetimeInput) => DateTime;
@@ -2,7 +2,7 @@ import {
2
2
  DateTime,
3
3
  dt,
4
4
  isDateTime
5
- } from "../chunk-BISRC54F.mjs";
5
+ } from "../chunk-UR544PJT.mjs";
6
6
  import "../chunk-JQQGQCYH.mjs";
7
7
  import "../chunk-ADJAEGCT.mjs";
8
8
  import "../chunk-2KZ5UP6A.mjs";
@@ -4,11 +4,11 @@ import {
4
4
  import "../chunk-LXQQ5N6S.mjs";
5
5
  import {
6
6
  Audit
7
- } from "../chunk-DNWG66S7.mjs";
7
+ } from "../chunk-DV7QIJRF.mjs";
8
8
  import {
9
9
  required
10
10
  } from "../chunk-RBQOVMPC.mjs";
11
- import "../chunk-BISRC54F.mjs";
11
+ import "../chunk-UR544PJT.mjs";
12
12
  import "../chunk-JQQGQCYH.mjs";
13
13
  import "../chunk-ADJAEGCT.mjs";
14
14
  import {
package/dist/index.js CHANGED
@@ -1716,12 +1716,13 @@ var DateTime = class _DateTime extends Value {
1716
1716
  return this.luxon.setZone("utc");
1717
1717
  }
1718
1718
  from(dateOrLocale, maybeLocale) {
1719
- const date = isA(dateOrLocale) ? dateOrLocale : void 0;
1720
- const locale = (isString(dateOrLocale) ? dateOrLocale : void 0) ?? maybeLocale ?? "en";
1721
- return ifDefined(
1722
- date,
1723
- (d) => this.utc.setLocale(locale).toRelative({ base: d.utc }),
1724
- () => this.utc.setLocale(locale).toRelative()
1719
+ return use(
1720
+ (isString(dateOrLocale) ? dateOrLocale : maybeLocale) ?? "en",
1721
+ (locale) => ifDefined(
1722
+ isA(dateOrLocale) ? dateOrLocale : void 0,
1723
+ (d) => this.utc.setLocale(locale).toRelative({ base: d.utc }),
1724
+ () => this.utc.setLocale(locale).toRelative()
1725
+ )
1725
1726
  ) ?? "";
1726
1727
  }
1727
1728
  isAfter(dt2) {
@@ -1778,6 +1779,9 @@ var DateTime = class _DateTime extends Value {
1778
1779
  ago(end = _DateTime.now) {
1779
1780
  return seconds.toText(end.diff(this, "second"));
1780
1781
  }
1782
+ withClock(clock) {
1783
+ return tryTo(() => [this.toDate(), clock.toDate()]).map(([td, cd]) => new Date(td.getFullYear(), td.getMonth(), td.getDate(), cd.getHours(), cd.getMinutes(), cd.getSeconds())).map((d) => new _DateTime(d)).value;
1784
+ }
1781
1785
  };
1782
1786
  var isDateTime = (dt2) => isDefined(dt2) && dt2 instanceof DateTime;
1783
1787
  var dt = (dt2) => new DateTime(dt2);