@thisisagile/easy 15.15.4 → 15.16.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/dist/domain/values/DateTime.d.ts +2 -1
- package/dist/domain/values/DateTime.js +4 -1
- package/dist/domain/values/DateTime.js.map +1 -1
- package/dist/domain/values/DateTime.mjs +4 -1
- package/dist/domain/values/DateTime.mjs.map +1 -1
- package/dist/process/Scope.js.map +1 -1
- package/dist/process/Scope.mjs.map +1 -1
- package/dist/process/UseCase.js +3 -1
- package/dist/process/UseCase.js.map +1 -1
- package/dist/process/UseCase.mjs +3 -1
- package/dist/process/UseCase.mjs.map +1 -1
- package/dist/types/Identity.js.map +1 -1
- package/package.json +4 -4
- package/src/domain/values/DateTime.ts +11 -5
- package/src/process/Scope.ts +4 -2
- package/src/process/UseCase.ts +5 -1
- package/src/types/Identity.ts +1 -1
|
@@ -7,7 +7,7 @@ export type DiffOptions = {
|
|
|
7
7
|
rounding: 'floor' | 'ceil' | 'round';
|
|
8
8
|
};
|
|
9
9
|
export declare class DateTime extends Value<Optional<string>> {
|
|
10
|
-
constructor(value?: string | number | Date, format?: string);
|
|
10
|
+
constructor(value?: string | number | Date | DateTime | null, format?: string);
|
|
11
11
|
static get now(): DateTime;
|
|
12
12
|
get isValid(): boolean;
|
|
13
13
|
get fromNow(): string;
|
|
@@ -28,6 +28,7 @@ export declare class DateTime extends Value<Optional<string>> {
|
|
|
28
28
|
diff(other: DateTime, unit?: DateTimeUnit, opts?: DiffOptions): number;
|
|
29
29
|
startOf(unit?: DateTimeUnit): DateTime;
|
|
30
30
|
endOf(unit?: DateTimeUnit): DateTime;
|
|
31
|
+
isWeekend(): boolean;
|
|
31
32
|
withZone(zone: string): DateTime;
|
|
32
33
|
toString(): string;
|
|
33
34
|
toJSON(): JsonValue;
|
|
@@ -30,7 +30,7 @@ import_luxon.Settings.defaultZone = "utc";
|
|
|
30
30
|
class DateTime extends import_types.Value {
|
|
31
31
|
constructor(value, format) {
|
|
32
32
|
super(
|
|
33
|
-
(0, import_types.choose)(value).type(import_types.isString, (v) =>
|
|
33
|
+
(0, import_types.choose)(value).type(import_types.isString, (v) => format ? import_luxon.DateTime.fromFormat(v, format, { setZone: true }) : import_luxon.DateTime.fromISO(v, { setZone: true })).type(import_types.isNumber, (v) => import_luxon.DateTime.fromMillis(v)).type(import_types.isDate, (v) => import_luxon.DateTime.fromJSDate(v)).type(isDateTime, (v) => import_luxon.DateTime.fromISO(v.toString())).else(void 0)?.toISO()
|
|
34
34
|
);
|
|
35
35
|
}
|
|
36
36
|
static get now() {
|
|
@@ -84,6 +84,9 @@ class DateTime extends import_types.Value {
|
|
|
84
84
|
endOf(unit = "day") {
|
|
85
85
|
return new DateTime(this.luxon.endOf(unit).toISO());
|
|
86
86
|
}
|
|
87
|
+
isWeekend() {
|
|
88
|
+
return this.luxon.isWeekend;
|
|
89
|
+
}
|
|
87
90
|
withZone(zone) {
|
|
88
91
|
return new DateTime(this.utc.setZone(zone).toISO());
|
|
89
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/domain/values/DateTime.ts"],"sourcesContent":["import { choose, isA, isDate, isDefined, isNumber, isString, JsonValue, Optional, Value } from '../../types';\nimport { DateTime as LuxonDateTime, DateTimeUnit as LuxonDateTimeUnit, DurationUnit as LuxonDurationUnit, Settings } from 'luxon';\nimport { ifDefined } from '../../utils';\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\nexport class DateTime extends Value<Optional<string>> {\n constructor(value?: string | number | Date, format?: string) {\n super(\n choose(value)\n .type(isString, v => (format ? LuxonDateTime.fromFormat(v, format, { setZone: true }) : LuxonDateTime.fromISO(v, { setZone: true }))
|
|
1
|
+
{"version":3,"sources":["../../../src/domain/values/DateTime.ts"],"sourcesContent":["import { choose, isA, isDate, isDefined, isNumber, isString, JsonValue, Optional, Value } from '../../types';\nimport { DateTime as LuxonDateTime, DateTimeUnit as LuxonDateTimeUnit, DurationUnit as LuxonDurationUnit, Settings } from 'luxon';\nimport { ifDefined } from '../../utils';\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\nexport class DateTime extends Value<Optional<string>> {\n constructor(value?: string | number | Date | DateTime | null, format?: string) {\n super(\n 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 => LuxonDateTime.fromISO(v.toString()))\n .else(undefined as unknown as LuxonDateTime)\n ?.toISO() as unknown as string\n );\n }\n\n static get now(): DateTime {\n return new DateTime(LuxonDateTime.utc().toISO());\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 protected get luxon(): LuxonDateTime {\n return LuxonDateTime.fromISO(this.value as string, { setZone: true });\n }\n\n from(date?: DateTime): string;\n\n from(locale?: string): string;\n\n from(date?: DateTime, locale?: string): string;\n\n from(param?: string | DateTime, other?: string): string {\n const date: Optional<DateTime> = isA<DateTime>(param) ? param : undefined;\n const locale: string = (isString(param) ? param : undefined) ?? other ?? 'en';\n return ifDefined(\n date,\n d => this.utc.setLocale(locale).toRelative({ base: d.utc }),\n () => this.utc.setLocale(locale).toRelative()\n ) as string;\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): DateTime;\n add(n: number, unit: DurationUnit): DateTime;\n add(duration: Duration): DateTime;\n add(n: number | Duration, unit?: DurationUnit): DateTime {\n return new DateTime(this.luxon.plus(isNumber(n) ? { [unit ?? ('day' as string)]: n } : n).toISO());\n }\n\n subtract(n: number): DateTime;\n subtract(n: number, unit: DurationUnit): DateTime;\n subtract(duration: Duration): DateTime;\n subtract(n: number | Duration, unit?: DurationUnit): DateTime {\n return new DateTime(this.luxon.minus(isNumber(n) ? { [unit ?? ('day' as string)]: n } : n).toISO());\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).toISO());\n }\n\n endOf(unit: DateTimeUnit = 'day'): DateTime {\n return new DateTime(this.luxon.endOf(unit).toISO());\n }\n\n isWeekend(): boolean {\n return this.luxon.isWeekend;\n }\n\n withZone(zone: string): DateTime {\n return new DateTime(this.utc.setZone(zone).toISO());\n }\n\n toString(): string {\n return this.value ?? '';\n }\n\n toJSON(): JsonValue {\n return this.utc.toISO() as unknown as JsonValue;\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\nexport const isDateTime = (dt?: unknown): dt is DateTime => isDefined(dt) && dt instanceof DateTime;\n\nexport const dt = (dt?: unknown): DateTime => (isString(dt) || isNumber(dt) || dt instanceof Date ? new DateTime(dt) : new DateTime());\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA+F;AAC/F,mBAA0H;AAC1H,mBAA0B;AAE1B,sBAAS,cAAc;AAUhB,MAAM,iBAAiB,mBAAwB;AAAA,EACpD,YAAY,OAAkD,QAAiB;AAC7E;AAAA,UACE,qBAAO,KAAK,EACT,KAAK,uBAAU,OAAM,SAAS,aAAAA,SAAc,WAAW,GAAG,QAAQ,EAAE,SAAS,KAAK,CAAC,IAAI,aAAAA,SAAc,QAAQ,GAAG,EAAE,SAAS,KAAK,CAAC,CAAE,EACnI,KAAK,uBAAU,OAAK,aAAAA,SAAc,WAAW,CAAC,CAAC,EAC/C,KAAK,qBAAQ,OAAK,aAAAA,SAAc,WAAW,CAAC,CAAC,EAC7C,KAAK,YAAY,OAAK,aAAAA,SAAc,QAAQ,EAAE,SAAS,CAAC,CAAC,EACzD,KAAK,MAAqC,GACzC,MAAM;AAAA,IACZ;AAAA,EACF;AAAA,EAEA,WAAW,MAAgB;AACzB,WAAO,IAAI,SAAS,aAAAA,SAAc,IAAI,EAAE,MAAM,CAAC;AAAA,EACjD;AAAA,EAEA,IAAI,UAAmB;AACrB,eAAO,wBAAU,KAAK,KAAK,KAAK,KAAK,IAAI;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,UAAkB;AACpB,WAAO,KAAK,KAAK;AAAA,EACnB;AAAA,EAEA,IAAc,MAAqB;AACjC,WAAO,KAAK,MAAM,QAAQ,KAAK;AAAA,EACjC;AAAA,EAEA,IAAc,QAAuB;AACnC,WAAO,aAAAA,SAAc,QAAQ,KAAK,OAAiB,EAAE,SAAS,KAAK,CAAC;AAAA,EACtE;AAAA,EAQA,KAAK,OAA2B,OAAwB;AACtD,UAAM,WAA2B,kBAAc,KAAK,IAAI,QAAQ;AAChE,UAAM,cAAkB,uBAAS,KAAK,IAAI,QAAQ,WAAc,SAAS;AACzE,eAAO;AAAA,MACL;AAAA,MACA,OAAK,KAAK,IAAI,UAAU,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC;AAAA,MAC1D,MAAM,KAAK,IAAI,UAAU,MAAM,EAAE,WAAW;AAAA,IAC9C;AAAA,EACF;AAAA,EAEA,QAAQC,KAAuB;AAC7B,WAAO,KAAK,MAAMA,IAAG;AAAA,EACvB;AAAA,EAEA,SAASA,KAAuB;AAC9B,WAAO,KAAK,MAAMA,IAAG;AAAA,EACvB;AAAA,EAEA,OAAOA,KAAuB;AAC5B,WAAO,KAAK,IAAI,QAAQA,IAAG,KAAK,aAAa;AAAA,EAC/C;AAAA,EAKA,IAAI,GAAsB,MAA+B;AACvD,WAAO,IAAI,SAAS,KAAK,MAAM,SAAK,uBAAS,CAAC,IAAI,EAAE,CAAC,QAAS,KAAgB,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC;AAAA,EACnG;AAAA,EAKA,SAAS,GAAsB,MAA+B;AAC5D,WAAO,IAAI,SAAS,KAAK,MAAM,UAAM,uBAAS,CAAC,IAAI,EAAE,CAAC,QAAS,KAAgB,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC;AAAA,EACpG;AAAA,EAEA,KAAK,OAAiB,OAAqB,OAAO,MAA4B;AAC5E,WAAO,KAAK,MAAM,YAAY,OAAO,EAAE,KAAK,IAAI,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC;AAAA,EAC1E;AAAA,EAEA,QAAQ,OAAqB,OAAiB;AAC5C,WAAO,IAAI,SAAS,KAAK,MAAM,QAAQ,IAAI,EAAE,MAAM,CAAC;AAAA,EACtD;AAAA,EAEA,MAAM,OAAqB,OAAiB;AAC1C,WAAO,IAAI,SAAS,KAAK,MAAM,MAAM,IAAI,EAAE,MAAM,CAAC;AAAA,EACpD;AAAA,EAEA,YAAqB;AACnB,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA,EAEA,SAAS,MAAwB;AAC/B,WAAO,IAAI,SAAS,KAAK,IAAI,QAAQ,IAAI,EAAE,MAAM,CAAC;AAAA,EACpD;AAAA,EAEA,WAAmB;AACjB,WAAO,KAAK,SAAS;AAAA,EACvB;AAAA,EAEA,SAAoB;AAClB,WAAO,KAAK,IAAI,MAAM;AAAA,EACxB;AAAA,EAEA,SAAS,QAAwB;AAC/B,WAAO,KAAK,MAAM,SAAS,MAAM;AAAA,EACnC;AAAA,EAEA,SAAS,SAAS,SAAS,SAAS,KAAa;AAC/C,WAAO,KAAK,MAAM,UAAU,MAAM,EAAE,SAAS,MAAM;AAAA,EACrD;AAAA,EAEA,OAAO,QAAyB;AAC9B,WAAO,KAAK,SAAS,QAAQ,KAAK;AAAA,EACpC;AAAA,EAEA,SAAyB;AACvB,WAAO,KAAK,UAAU,KAAK,IAAI,SAAS,IAAI;AAAA,EAC9C;AACF;AAEO,MAAM,aAAa,CAACA,YAAiC,wBAAUA,GAAE,KAAKA,eAAc;AAEpF,MAAM,KAAK,CAACA,YAA4B,uBAASA,GAAE,SAAK,uBAASA,GAAE,KAAKA,eAAc,OAAO,IAAI,SAASA,GAAE,IAAI,IAAI,SAAS;","names":["LuxonDateTime","dt"]}
|
|
@@ -6,7 +6,7 @@ Settings.defaultZone = "utc";
|
|
|
6
6
|
class DateTime extends Value {
|
|
7
7
|
constructor(value, format) {
|
|
8
8
|
super(
|
|
9
|
-
choose(value).type(isString, (v) =>
|
|
9
|
+
choose(value).type(isString, (v) => format ? LuxonDateTime.fromFormat(v, format, { setZone: true }) : LuxonDateTime.fromISO(v, { setZone: true })).type(isNumber, (v) => LuxonDateTime.fromMillis(v)).type(isDate, (v) => LuxonDateTime.fromJSDate(v)).type(isDateTime, (v) => LuxonDateTime.fromISO(v.toString())).else(void 0)?.toISO()
|
|
10
10
|
);
|
|
11
11
|
}
|
|
12
12
|
static get now() {
|
|
@@ -60,6 +60,9 @@ class DateTime extends Value {
|
|
|
60
60
|
endOf(unit = "day") {
|
|
61
61
|
return new DateTime(this.luxon.endOf(unit).toISO());
|
|
62
62
|
}
|
|
63
|
+
isWeekend() {
|
|
64
|
+
return this.luxon.isWeekend;
|
|
65
|
+
}
|
|
63
66
|
withZone(zone) {
|
|
64
67
|
return new DateTime(this.utc.setZone(zone).toISO());
|
|
65
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/domain/values/DateTime.ts"],"sourcesContent":["import { choose, isA, isDate, isDefined, isNumber, isString, JsonValue, Optional, Value } from '../../types';\nimport { DateTime as LuxonDateTime, DateTimeUnit as LuxonDateTimeUnit, DurationUnit as LuxonDurationUnit, Settings } from 'luxon';\nimport { ifDefined } from '../../utils';\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\nexport class DateTime extends Value<Optional<string>> {\n constructor(value?: string | number | Date, format?: string) {\n super(\n choose(value)\n .type(isString, v => (format ? LuxonDateTime.fromFormat(v, format, { setZone: true }) : LuxonDateTime.fromISO(v, { setZone: true }))
|
|
1
|
+
{"version":3,"sources":["../../../src/domain/values/DateTime.ts"],"sourcesContent":["import { choose, isA, isDate, isDefined, isNumber, isString, JsonValue, Optional, Value } from '../../types';\nimport { DateTime as LuxonDateTime, DateTimeUnit as LuxonDateTimeUnit, DurationUnit as LuxonDurationUnit, Settings } from 'luxon';\nimport { ifDefined } from '../../utils';\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\nexport class DateTime extends Value<Optional<string>> {\n constructor(value?: string | number | Date | DateTime | null, format?: string) {\n super(\n 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 => LuxonDateTime.fromISO(v.toString()))\n .else(undefined as unknown as LuxonDateTime)\n ?.toISO() as unknown as string\n );\n }\n\n static get now(): DateTime {\n return new DateTime(LuxonDateTime.utc().toISO());\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 protected get luxon(): LuxonDateTime {\n return LuxonDateTime.fromISO(this.value as string, { setZone: true });\n }\n\n from(date?: DateTime): string;\n\n from(locale?: string): string;\n\n from(date?: DateTime, locale?: string): string;\n\n from(param?: string | DateTime, other?: string): string {\n const date: Optional<DateTime> = isA<DateTime>(param) ? param : undefined;\n const locale: string = (isString(param) ? param : undefined) ?? other ?? 'en';\n return ifDefined(\n date,\n d => this.utc.setLocale(locale).toRelative({ base: d.utc }),\n () => this.utc.setLocale(locale).toRelative()\n ) as string;\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): DateTime;\n add(n: number, unit: DurationUnit): DateTime;\n add(duration: Duration): DateTime;\n add(n: number | Duration, unit?: DurationUnit): DateTime {\n return new DateTime(this.luxon.plus(isNumber(n) ? { [unit ?? ('day' as string)]: n } : n).toISO());\n }\n\n subtract(n: number): DateTime;\n subtract(n: number, unit: DurationUnit): DateTime;\n subtract(duration: Duration): DateTime;\n subtract(n: number | Duration, unit?: DurationUnit): DateTime {\n return new DateTime(this.luxon.minus(isNumber(n) ? { [unit ?? ('day' as string)]: n } : n).toISO());\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).toISO());\n }\n\n endOf(unit: DateTimeUnit = 'day'): DateTime {\n return new DateTime(this.luxon.endOf(unit).toISO());\n }\n\n isWeekend(): boolean {\n return this.luxon.isWeekend;\n }\n\n withZone(zone: string): DateTime {\n return new DateTime(this.utc.setZone(zone).toISO());\n }\n\n toString(): string {\n return this.value ?? '';\n }\n\n toJSON(): JsonValue {\n return this.utc.toISO() as unknown as JsonValue;\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\nexport const isDateTime = (dt?: unknown): dt is DateTime => isDefined(dt) && dt instanceof DateTime;\n\nexport const dt = (dt?: unknown): DateTime => (isString(dt) || isNumber(dt) || dt instanceof Date ? new DateTime(dt) : new DateTime());\n"],"mappings":"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","names":["dt"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/process/Scope.ts"],"sourcesContent":["import { Enum, IdName, isString, kebab, List, Text, text, toList } from '../types';\n\nexport class Scope extends Enum {\n
|
|
1
|
+
{"version":3,"sources":["../../src/process/Scope.ts"],"sourcesContent":["import { Enum, IdName, isString, kebab, List, Text, text, toList } from '../types';\n\nexport class Scope extends Enum {\n protected constructor(readonly name: string, id: Text = text(name).kebab, readonly subs: List<Scope> = toList()) {\n super(name, id.toString());\n }\n\n for(item: string | IdName): Scope {\n return new Scope(`${this.name} ${isString(item) ? text(item).title : item.name}`, kebab(`${this.id} ${isString(item) ? item : item.id}`));\n }\n\n combines(...scopes: Scope[]): this {\n this.subs.add(scopes);\n return this;\n }\n\n expand(): List<Scope> {\n return this.subs\n .flatMap(s => s.expand())\n .add(this)\n .distinct();\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAwE;AAEjE,MAAM,cAAc,kBAAK;AAAA,EACpB,YAAqB,MAAc,SAAW,mBAAK,IAAI,EAAE,OAAgB,WAAoB,qBAAO,GAAG;AAC/G,UAAM,MAAM,GAAG,SAAS,CAAC;AADI;AAAoD;AAAA,EAEnF;AAAA,EAEA,IAAI,MAA8B;AAChC,WAAO,IAAI,MAAM,GAAG,KAAK,IAAI,QAAI,uBAAS,IAAI,QAAI,mBAAK,IAAI,EAAE,QAAQ,KAAK,IAAI,QAAI,oBAAM,GAAG,KAAK,EAAE,QAAI,uBAAS,IAAI,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;AAAA,EAC1I;AAAA,EAEA,YAAY,QAAuB;AACjC,SAAK,KAAK,IAAI,MAAM;AACpB,WAAO;AAAA,EACT;AAAA,EAEA,SAAsB;AACpB,WAAO,KAAK,KACT,QAAQ,OAAK,EAAE,OAAO,CAAC,EACvB,IAAI,IAAI,EACR,SAAS;AAAA,EACd;AACF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/process/Scope.ts"],"sourcesContent":["import { Enum, IdName, isString, kebab, List, Text, text, toList } from '../types';\n\nexport class Scope extends Enum {\n
|
|
1
|
+
{"version":3,"sources":["../../src/process/Scope.ts"],"sourcesContent":["import { Enum, IdName, isString, kebab, List, Text, text, toList } from '../types';\n\nexport class Scope extends Enum {\n protected constructor(readonly name: string, id: Text = text(name).kebab, readonly subs: List<Scope> = toList()) {\n super(name, id.toString());\n }\n\n for(item: string | IdName): Scope {\n return new Scope(`${this.name} ${isString(item) ? text(item).title : item.name}`, kebab(`${this.id} ${isString(item) ? item : item.id}`));\n }\n\n combines(...scopes: Scope[]): this {\n this.subs.add(scopes);\n return this;\n }\n\n expand(): List<Scope> {\n return this.subs\n .flatMap(s => s.expand())\n .add(this)\n .distinct();\n }\n}\n"],"mappings":";AAAA,SAAS,MAAc,UAAU,OAAmB,MAAM,cAAc;AAEjE,MAAM,cAAc,KAAK;AAAA,EACpB,YAAqB,MAAc,KAAW,KAAK,IAAI,EAAE,OAAgB,OAAoB,OAAO,GAAG;AAC/G,UAAM,MAAM,GAAG,SAAS,CAAC;AADI;AAAoD;AAAA,EAEnF;AAAA,EAEA,IAAI,MAA8B;AAChC,WAAO,IAAI,MAAM,GAAG,KAAK,IAAI,IAAI,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE,QAAQ,KAAK,IAAI,IAAI,MAAM,GAAG,KAAK,EAAE,IAAI,SAAS,IAAI,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;AAAA,EAC1I;AAAA,EAEA,YAAY,QAAuB;AACjC,SAAK,KAAK,IAAI,MAAM;AACpB,WAAO;AAAA,EACT;AAAA,EAEA,SAAsB;AACpB,WAAO,KAAK,KACT,QAAQ,OAAK,EAAE,OAAO,CAAC,EACvB,IAAI,IAAI,EACR,SAAS;AAAA,EACd;AACF;","names":[]}
|
package/dist/process/UseCase.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/process/UseCase.ts"],"sourcesContent":["import { Enum, IdName, isIn, isString, kebab, List, Text, text, toList } from '../types';\nimport { Scope } from './Scope';\nimport { App } from './App';\n\nexport class UseCase extends Enum {\n constructor(readonly app: App, name: string, id: Text = text(name).kebab, readonly scopes: List<Scope> = toList<Scope>()) {\n super(name, id.toString());\n }\n\n with(...s: Scope[]): this {\n this.scopes.add(...s);\n return this;\n }\n\n for(item: string | IdName): UseCase {\n return new UseCase(this.app, `${this.name} ${isString(item) ? item : item?.name}`, kebab(`${this.id} ${isString(item) ? item : item.id}`)).with(\n ...this.scopes.map(s => s?.for(item))\n );\n }\n\n static byScopes<U extends UseCase>(...s: Scope[]): List<U> {\n return this.filter(u => u.scopes.some(us => isIn(us, s)));\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA8E;AAIvE,MAAM,gBAAgB,kBAAK;AAAA,EAChC,YAAqB,KAAU,MAAc,SAAW,mBAAK,IAAI,EAAE,OAAgB,aAAsB,qBAAc,GAAG;AACxH,UAAM,MAAM,GAAG,SAAS,CAAC;AADN;AAA8D;AAAA,EAEnF;AAAA,EAEA,QAAQ,GAAkB;AACxB,SAAK,OAAO,
|
|
1
|
+
{"version":3,"sources":["../../src/process/UseCase.ts"],"sourcesContent":["import { Enum, IdName, isIn, isString, kebab, List, Text, text, toList } from '../types';\nimport { Scope } from './Scope';\nimport { App } from './App';\n\nexport class UseCase extends Enum {\n constructor(readonly app: App, name: string, id: Text = text(name).kebab, readonly scopes: List<Scope> = toList<Scope>()) {\n super(name, id.toString());\n }\n\n with(...s: Scope[]): this {\n this.scopes.add(\n ...toList(s)\n .flatMap(s => s.expand())\n .distinct()\n );\n return this;\n }\n\n for(item: string | IdName): UseCase {\n return new UseCase(this.app, `${this.name} ${isString(item) ? item : item?.name}`, kebab(`${this.id} ${isString(item) ? item : item.id}`)).with(\n ...this.scopes.map(s => s?.for(item))\n );\n }\n\n static byScopes<U extends UseCase>(...s: Scope[]): List<U> {\n return this.filter(u => u.scopes.some(us => isIn(us, s)));\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA8E;AAIvE,MAAM,gBAAgB,kBAAK;AAAA,EAChC,YAAqB,KAAU,MAAc,SAAW,mBAAK,IAAI,EAAE,OAAgB,aAAsB,qBAAc,GAAG;AACxH,UAAM,MAAM,GAAG,SAAS,CAAC;AADN;AAA8D;AAAA,EAEnF;AAAA,EAEA,QAAQ,GAAkB;AACxB,SAAK,OAAO;AAAA,MACV,OAAG,qBAAO,CAAC,EACR,QAAQ,CAAAA,OAAKA,GAAE,OAAO,CAAC,EACvB,SAAS;AAAA,IACd;AACA,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,MAAgC;AAClC,WAAO,IAAI,QAAQ,KAAK,KAAK,GAAG,KAAK,IAAI,QAAI,uBAAS,IAAI,IAAI,OAAO,MAAM,IAAI,QAAI,oBAAM,GAAG,KAAK,EAAE,QAAI,uBAAS,IAAI,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC,EAAE;AAAA,MACzI,GAAG,KAAK,OAAO,IAAI,OAAK,GAAG,IAAI,IAAI,CAAC;AAAA,IACtC;AAAA,EACF;AAAA,EAEA,OAAO,YAA+B,GAAqB;AACzD,WAAO,KAAK,OAAO,OAAK,EAAE,OAAO,KAAK,YAAM,mBAAK,IAAI,CAAC,CAAC,CAAC;AAAA,EAC1D;AACF;","names":["s"]}
|
package/dist/process/UseCase.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/process/UseCase.ts"],"sourcesContent":["import { Enum, IdName, isIn, isString, kebab, List, Text, text, toList } from '../types';\nimport { Scope } from './Scope';\nimport { App } from './App';\n\nexport class UseCase extends Enum {\n constructor(readonly app: App, name: string, id: Text = text(name).kebab, readonly scopes: List<Scope> = toList<Scope>()) {\n super(name, id.toString());\n }\n\n with(...s: Scope[]): this {\n this.scopes.add(...s);\n return this;\n }\n\n for(item: string | IdName): UseCase {\n return new UseCase(this.app, `${this.name} ${isString(item) ? item : item?.name}`, kebab(`${this.id} ${isString(item) ? item : item.id}`)).with(\n ...this.scopes.map(s => s?.for(item))\n );\n }\n\n static byScopes<U extends UseCase>(...s: Scope[]): List<U> {\n return this.filter(u => u.scopes.some(us => isIn(us, s)));\n }\n}\n"],"mappings":";AAAA,SAAS,MAAc,MAAM,UAAU,OAAmB,MAAM,cAAc;AAIvE,MAAM,gBAAgB,KAAK;AAAA,EAChC,YAAqB,KAAU,MAAc,KAAW,KAAK,IAAI,EAAE,OAAgB,SAAsB,OAAc,GAAG;AACxH,UAAM,MAAM,GAAG,SAAS,CAAC;AADN;AAA8D;AAAA,EAEnF;AAAA,EAEA,QAAQ,GAAkB;AACxB,SAAK,OAAO,
|
|
1
|
+
{"version":3,"sources":["../../src/process/UseCase.ts"],"sourcesContent":["import { Enum, IdName, isIn, isString, kebab, List, Text, text, toList } from '../types';\nimport { Scope } from './Scope';\nimport { App } from './App';\n\nexport class UseCase extends Enum {\n constructor(readonly app: App, name: string, id: Text = text(name).kebab, readonly scopes: List<Scope> = toList<Scope>()) {\n super(name, id.toString());\n }\n\n with(...s: Scope[]): this {\n this.scopes.add(\n ...toList(s)\n .flatMap(s => s.expand())\n .distinct()\n );\n return this;\n }\n\n for(item: string | IdName): UseCase {\n return new UseCase(this.app, `${this.name} ${isString(item) ? item : item?.name}`, kebab(`${this.id} ${isString(item) ? item : item.id}`)).with(\n ...this.scopes.map(s => s?.for(item))\n );\n }\n\n static byScopes<U extends UseCase>(...s: Scope[]): List<U> {\n return this.filter(u => u.scopes.some(us => isIn(us, s)));\n }\n}\n"],"mappings":";AAAA,SAAS,MAAc,MAAM,UAAU,OAAmB,MAAM,cAAc;AAIvE,MAAM,gBAAgB,KAAK;AAAA,EAChC,YAAqB,KAAU,MAAc,KAAW,KAAK,IAAI,EAAE,OAAgB,SAAsB,OAAc,GAAG;AACxH,UAAM,MAAM,GAAG,SAAS,CAAC;AADN;AAA8D;AAAA,EAEnF;AAAA,EAEA,QAAQ,GAAkB;AACxB,SAAK,OAAO;AAAA,MACV,GAAG,OAAO,CAAC,EACR,QAAQ,CAAAA,OAAKA,GAAE,OAAO,CAAC,EACvB,SAAS;AAAA,IACd;AACA,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,MAAgC;AAClC,WAAO,IAAI,QAAQ,KAAK,KAAK,GAAG,KAAK,IAAI,IAAI,SAAS,IAAI,IAAI,OAAO,MAAM,IAAI,IAAI,MAAM,GAAG,KAAK,EAAE,IAAI,SAAS,IAAI,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC,EAAE;AAAA,MACzI,GAAG,KAAK,OAAO,IAAI,OAAK,GAAG,IAAI,IAAI,CAAC;AAAA,IACtC;AAAA,EACF;AAAA,EAEA,OAAO,YAA+B,GAAqB;AACzD,WAAO,KAAK,OAAO,OAAK,EAAE,OAAO,KAAK,QAAM,KAAK,IAAI,CAAC,CAAC,CAAC;AAAA,EAC1D;AACF;","names":["s"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/types/Identity.ts"],"sourcesContent":["import { Id } from './Id';\n\nexport type Identity = { id: Id; user?: string };\n\nexport type IdName = { id: Id; name: string
|
|
1
|
+
{"version":3,"sources":["../../src/types/Identity.ts"],"sourcesContent":["import { Id } from './Id';\n\nexport type Identity = { id: Id; user?: string };\n\nexport type IdName = { id: Id; name: string; slug?: string };\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thisisagile/easy",
|
|
3
|
-
"version": "15.
|
|
3
|
+
"version": "15.16.0",
|
|
4
4
|
"description": "Straightforward library for building domain-driven microservice architectures",
|
|
5
5
|
"author": "Sander Hoogendoorn",
|
|
6
6
|
"license": "MIT",
|
|
@@ -33,10 +33,10 @@
|
|
|
33
33
|
"access": "public"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@thisisagile/easy-test": "15.
|
|
36
|
+
"@thisisagile/easy-test": "15.16.0",
|
|
37
37
|
"@types/form-urlencoded": "^4.4.0",
|
|
38
38
|
"@types/jsonwebtoken": "^9.0.2",
|
|
39
|
-
"@types/luxon": "3.2
|
|
39
|
+
"@types/luxon": "3.4.2",
|
|
40
40
|
"@types/validator": "^13.7.17"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"axios": "^1.3.4",
|
|
45
45
|
"form-urlencoded": "^6.1.0",
|
|
46
46
|
"jsonwebtoken": "^9.0.0",
|
|
47
|
-
"luxon": "^3.
|
|
47
|
+
"luxon": "^3.4.4",
|
|
48
48
|
"reflect-metadata": "^0.1.13",
|
|
49
49
|
"uuid": "^9.0.0",
|
|
50
50
|
"validator": "^13.9.0"
|
|
@@ -13,13 +13,15 @@ export type DiffOptions = {
|
|
|
13
13
|
};
|
|
14
14
|
|
|
15
15
|
export class DateTime extends Value<Optional<string>> {
|
|
16
|
-
constructor(value?: string | number | Date, format?: string) {
|
|
16
|
+
constructor(value?: string | number | Date | DateTime | null, format?: string) {
|
|
17
17
|
super(
|
|
18
18
|
choose(value)
|
|
19
|
-
.type(isString, v => (format ? LuxonDateTime.fromFormat(v, format, { setZone: true }) : LuxonDateTime.fromISO(v, { setZone: true }))
|
|
20
|
-
.type(isNumber, v => LuxonDateTime.fromMillis(v)
|
|
21
|
-
.type(isDate, v => LuxonDateTime.fromJSDate(v)
|
|
22
|
-
.
|
|
19
|
+
.type(isString, v => (format ? LuxonDateTime.fromFormat(v, format, { setZone: true }) : LuxonDateTime.fromISO(v, { setZone: true })))
|
|
20
|
+
.type(isNumber, v => LuxonDateTime.fromMillis(v))
|
|
21
|
+
.type(isDate, v => LuxonDateTime.fromJSDate(v))
|
|
22
|
+
.type(isDateTime, v => LuxonDateTime.fromISO(v.toString()))
|
|
23
|
+
.else(undefined as unknown as LuxonDateTime)
|
|
24
|
+
?.toISO() as unknown as string
|
|
23
25
|
);
|
|
24
26
|
}
|
|
25
27
|
|
|
@@ -100,6 +102,10 @@ export class DateTime extends Value<Optional<string>> {
|
|
|
100
102
|
return new DateTime(this.luxon.endOf(unit).toISO());
|
|
101
103
|
}
|
|
102
104
|
|
|
105
|
+
isWeekend(): boolean {
|
|
106
|
+
return this.luxon.isWeekend;
|
|
107
|
+
}
|
|
108
|
+
|
|
103
109
|
withZone(zone: string): DateTime {
|
|
104
110
|
return new DateTime(this.utc.setZone(zone).toISO());
|
|
105
111
|
}
|
package/src/process/Scope.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Enum, IdName, isString, kebab, List, Text, text, toList } from '../types';
|
|
2
2
|
|
|
3
3
|
export class Scope extends Enum {
|
|
4
|
-
|
|
5
4
|
protected constructor(readonly name: string, id: Text = text(name).kebab, readonly subs: List<Scope> = toList()) {
|
|
6
5
|
super(name, id.toString());
|
|
7
6
|
}
|
|
@@ -16,6 +15,9 @@ export class Scope extends Enum {
|
|
|
16
15
|
}
|
|
17
16
|
|
|
18
17
|
expand(): List<Scope> {
|
|
19
|
-
return this.subs
|
|
18
|
+
return this.subs
|
|
19
|
+
.flatMap(s => s.expand())
|
|
20
|
+
.add(this)
|
|
21
|
+
.distinct();
|
|
20
22
|
}
|
|
21
23
|
}
|
package/src/process/UseCase.ts
CHANGED
package/src/types/Identity.ts
CHANGED