@thisisagile/easy 17.14.0 → 17.14.1
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/dist/{chunk-DNWG66S7.mjs → chunk-DV7QIJRF.mjs} +2 -2
- package/dist/{chunk-BISRC54F.mjs → chunk-UR544PJT.mjs} +16 -8
- package/dist/chunk-UR544PJT.mjs.map +1 -0
- package/dist/domain/Audit.mjs +2 -2
- package/dist/domain/DateTime.d.ts +1 -0
- package/dist/domain/DateTime.mjs +1 -1
- package/dist/domain/Entity.mjs +2 -2
- package/dist/index.js +10 -6
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/domain/DateTime.ts +17 -8
- package/dist/chunk-BISRC54F.mjs.map +0 -1
- /package/dist/{chunk-DNWG66S7.mjs.map → chunk-DV7QIJRF.mjs.map} +0 -0
package/package.json
CHANGED
package/src/domain/DateTime.ts
CHANGED
|
@@ -8,6 +8,8 @@ import { isA } from '../types/IsA';
|
|
|
8
8
|
import { ifDefined } from '../utils/If';
|
|
9
9
|
import { JsonValue } from '../types/Json';
|
|
10
10
|
import { seconds } from '../utils/Seconds';
|
|
11
|
+
import { tryTo } from '../types/Try';
|
|
12
|
+
import { use } from '../types/Constructor';
|
|
11
13
|
|
|
12
14
|
Settings.defaultZone = 'utc';
|
|
13
15
|
|
|
@@ -61,13 +63,15 @@ export class DateTime extends Value<Optional<string>> {
|
|
|
61
63
|
from(locale?: string): string;
|
|
62
64
|
from(date?: DateTime, locale?: string): string;
|
|
63
65
|
from(dateOrLocale?: string | DateTime, maybeLocale?: string): string {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
66
|
+
return (
|
|
67
|
+
use((isString(dateOrLocale) ? dateOrLocale : maybeLocale) ?? 'en', locale =>
|
|
68
|
+
ifDefined(
|
|
69
|
+
isA<DateTime>(dateOrLocale) ? dateOrLocale : undefined,
|
|
70
|
+
d => this.utc.setLocale(locale).toRelative({ base: d.utc }),
|
|
71
|
+
() => this.utc.setLocale(locale).toRelative()
|
|
72
|
+
)
|
|
73
|
+
) ?? ''
|
|
74
|
+
);
|
|
71
75
|
}
|
|
72
76
|
|
|
73
77
|
isAfter(dt: DateTime): boolean {
|
|
@@ -145,9 +149,14 @@ export class DateTime extends Value<Optional<string>> {
|
|
|
145
149
|
ago(end: DateTime = DateTime.now): string {
|
|
146
150
|
return seconds.toText(end.diff(this, 'second'));
|
|
147
151
|
}
|
|
152
|
+
|
|
153
|
+
withClock(clock: DateTime): DateTime {
|
|
154
|
+
return tryTo(() => [this.toDate() as Date, clock.toDate() as Date])
|
|
155
|
+
.map(([td, cd]) => new Date(td.getFullYear(), td.getMonth(), td.getDate(), cd.getHours(), cd.getMinutes(), cd.getSeconds()))
|
|
156
|
+
.map(d => new DateTime(d)).value;
|
|
157
|
+
}
|
|
148
158
|
}
|
|
149
159
|
|
|
150
160
|
export const isDateTime = (dt?: unknown): dt is DateTime => isDefined(dt) && dt instanceof DateTime;
|
|
151
161
|
|
|
152
162
|
export const dt = (dt?: DatetimeInput): DateTime => new DateTime(dt);
|
|
153
|
-
|
|
@@ -1 +0,0 @@
|
|
|
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';\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 const date: Optional<DateTime> = isA<DateTime>(dateOrLocale) ? dateOrLocale : undefined;\n const locale: string = (isString(dateOrLocale) ? dateOrLocale : undefined) ?? maybeLocale ?? 'en';\n return ifDefined(\n date,\n d => this.utc.setLocale(locale).toRelative({ base: d.utc }),\n () => this.utc.setLocale(locale).toRelative()\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\nexport const isDateTime = (dt?: unknown): dt is DateTime => isDefined(dt) && dt instanceof DateTime;\n\nexport const dt = (dt?: DatetimeInput): DateTime => new DateTime(dt);\n\n"],"mappings":"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","names":["dt"]}
|
|
File without changes
|