@thisisagile/easy 17.4.5 → 17.4.8

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.
Files changed (157) hide show
  1. package/dist/{chunk-JV3PEYHS.mjs → chunk-24WJGYH4.mjs} +2 -2
  2. package/dist/{chunk-3PPC4YMQ.mjs → chunk-2V3F4LJ5.mjs} +2 -2
  3. package/dist/{chunk-OGMTD753.mjs → chunk-3BXPK7FX.mjs} +2 -2
  4. package/dist/{chunk-QLM2AYD4.mjs → chunk-3DAZTFKD.mjs} +7 -7
  5. package/dist/{chunk-2JX2SSPQ.mjs → chunk-3EYCIHXW.mjs} +3 -3
  6. package/dist/{chunk-DS6NSJUW.mjs → chunk-4KB2NPKQ.mjs} +2 -2
  7. package/dist/chunk-4NI3O7DE.mjs +26 -0
  8. package/dist/chunk-4NI3O7DE.mjs.map +1 -0
  9. package/dist/{chunk-KA3TZADE.mjs → chunk-55B7FIAE.mjs} +2 -2
  10. package/dist/{chunk-WBEMXVO6.mjs → chunk-5GALY24M.mjs} +6 -6
  11. package/dist/{chunk-V7EJJWVX.mjs → chunk-6DL5IBFE.mjs} +3 -3
  12. package/dist/{chunk-L4T4Z7PG.mjs → chunk-6TJC3RI3.mjs} +9 -9
  13. package/dist/chunk-BKA7GVXL.mjs +29 -0
  14. package/dist/chunk-BKA7GVXL.mjs.map +1 -0
  15. package/dist/{chunk-JCINHOMG.mjs → chunk-CHNRVP7J.mjs} +2 -2
  16. package/dist/{chunk-KAYSE6PM.mjs → chunk-CLIM3GJ7.mjs} +3 -3
  17. package/dist/{chunk-4KJZ4LNQ.mjs → chunk-DEESTSMV.mjs} +3 -3
  18. package/dist/{chunk-VRLSZ2MW.mjs → chunk-FZBUEEQB.mjs} +2 -2
  19. package/dist/{chunk-EG3KSNQZ.mjs → chunk-GKDMM6XO.mjs} +3 -3
  20. package/dist/{chunk-2BTY2F3A.mjs → chunk-H6WLTQXF.mjs} +4 -4
  21. package/dist/{chunk-SRFFQJLL.mjs → chunk-H7TRIY7A.mjs} +2 -2
  22. package/dist/{chunk-3LASXEE5.mjs → chunk-HE6MAJDE.mjs} +3 -3
  23. package/dist/{chunk-PJXWZFLD.mjs → chunk-ILJV7234.mjs} +2 -2
  24. package/dist/{chunk-24OSK3DS.mjs → chunk-IXUCBTR3.mjs} +7 -7
  25. package/dist/{chunk-WI2ICJHX.mjs → chunk-JEIESGLS.mjs} +3 -3
  26. package/dist/{chunk-TNOOLHK7.mjs → chunk-KK66VUSS.mjs} +2 -2
  27. package/dist/{chunk-IVX4I3NC.mjs → chunk-L5TIL3QC.mjs} +2 -2
  28. package/dist/{chunk-X3C5CS4X.mjs → chunk-NE6FVUU7.mjs} +4 -4
  29. package/dist/{chunk-PRN25GXK.mjs → chunk-NFZZGGEV.mjs} +2 -2
  30. package/dist/{chunk-T5VZORPQ.mjs → chunk-OJW2KVY7.mjs} +2 -2
  31. package/dist/{chunk-F4XMHKOR.mjs → chunk-PWYWE7H7.mjs} +4 -4
  32. package/dist/{chunk-63OA3RR6.mjs → chunk-QKWQIRUO.mjs} +4 -4
  33. package/dist/{chunk-Q3TL43R2.mjs → chunk-R43LAFNS.mjs} +6 -2
  34. package/dist/{chunk-Q3TL43R2.mjs.map → chunk-R43LAFNS.mjs.map} +1 -1
  35. package/dist/{chunk-5M76X6J5.mjs → chunk-SJJ4E4HD.mjs} +8 -2
  36. package/dist/chunk-SJJ4E4HD.mjs.map +1 -0
  37. package/dist/{chunk-RSOPHC7S.mjs → chunk-STPFSN7K.mjs} +2 -2
  38. package/dist/{chunk-YK65IKP2.mjs → chunk-VVWELITO.mjs} +2 -2
  39. package/dist/{chunk-ZDBXA2D4.mjs → chunk-XQ4KXG5O.mjs} +2 -2
  40. package/dist/{chunk-QB3ZLR7S.mjs → chunk-Y4RD46AM.mjs} +5 -5
  41. package/dist/{chunk-IX2TMY6X.mjs → chunk-YNOOWA75.mjs} +2 -2
  42. package/dist/{chunk-GVJWRPOP.mjs → chunk-YUFKMTUP.mjs} +2 -2
  43. package/dist/{chunk-INO2742F.mjs → chunk-Z7CGMLOT.mjs} +4 -4
  44. package/dist/data/Condition.mjs +3 -3
  45. package/dist/data/Database.mjs +4 -4
  46. package/dist/data/Field.mjs +3 -3
  47. package/dist/data/InMemoryGateway.mjs +11 -11
  48. package/dist/domain/Audit.mjs +15 -14
  49. package/dist/domain/Child.mjs +12 -12
  50. package/dist/domain/DateTime.d.ts +1 -0
  51. package/dist/domain/DateTime.mjs +11 -10
  52. package/dist/domain/Entity.mjs +15 -14
  53. package/dist/domain/Entity.mjs.map +1 -1
  54. package/dist/domain/Repo.mjs +11 -11
  55. package/dist/domain/Struct.mjs +11 -11
  56. package/dist/domain/Typo.mjs +10 -10
  57. package/dist/http/CacheControl.mjs +11 -11
  58. package/dist/http/ContentType.mjs +4 -4
  59. package/dist/http/HttpStatus.mjs +4 -4
  60. package/dist/http/HttpVerb.mjs +4 -4
  61. package/dist/http/LocalRequestStore.mjs +3 -3
  62. package/dist/http/RequestOptions.mjs +7 -7
  63. package/dist/http/RestResult.mjs +11 -11
  64. package/dist/http/toResponse.mjs +12 -12
  65. package/dist/index.js +49 -26
  66. package/dist/index.js.map +1 -1
  67. package/dist/process/App.mjs +5 -5
  68. package/dist/process/Manage.mjs +11 -11
  69. package/dist/process/Scope.mjs +5 -5
  70. package/dist/process/Search.mjs +11 -11
  71. package/dist/process/UseCase.mjs +4 -4
  72. package/dist/resources/Req.mjs +10 -10
  73. package/dist/services/Api.mjs +19 -19
  74. package/dist/services/ApiGateway.mjs +22 -22
  75. package/dist/services/AxiosProvider.mjs +17 -17
  76. package/dist/services/MappedRouteGateway.mjs +25 -25
  77. package/dist/services/RouteGateway.mjs +23 -23
  78. package/dist/services/ViewRouteGateway.mjs +27 -27
  79. package/dist/sql/Column.mjs +10 -10
  80. package/dist/sql/Table.mjs +13 -13
  81. package/dist/sql/TableGateway.mjs +11 -11
  82. package/dist/types/Cache.mjs +2 -2
  83. package/dist/types/CacheAge.mjs +11 -11
  84. package/dist/types/Case.mjs +9 -9
  85. package/dist/types/Context.mjs +3 -3
  86. package/dist/types/Enum.mjs +3 -3
  87. package/dist/types/Environment.mjs +3 -3
  88. package/dist/types/Exception.mjs +5 -5
  89. package/dist/types/Gateway.mjs +6 -6
  90. package/dist/types/IsEqual.mjs +10 -10
  91. package/dist/types/Json.mjs +2 -2
  92. package/dist/types/Meta.mjs +2 -2
  93. package/dist/types/Number.mjs +10 -10
  94. package/dist/types/Object.d.ts +3 -0
  95. package/dist/types/Object.mjs +3 -1
  96. package/dist/types/PageList.mjs +10 -10
  97. package/dist/types/Parser.mjs +9 -9
  98. package/dist/types/Repository.mjs +6 -6
  99. package/dist/types/Result.mjs +4 -4
  100. package/dist/types/Results.mjs +5 -5
  101. package/dist/types/Tag.mjs +2 -2
  102. package/dist/types/Template.mjs +2 -2
  103. package/dist/types/Try.mjs +9 -9
  104. package/dist/types/Uri.mjs +9 -9
  105. package/dist/utils/Mapper.mjs +4 -4
  106. package/dist/utils/Seconds.mjs +4 -25
  107. package/dist/utils/Seconds.mjs.map +1 -1
  108. package/dist/utils/Sentence.mjs +2 -2
  109. package/dist/utils/Traverse.d.ts +3 -0
  110. package/dist/utils/Traverse.mjs +7 -3
  111. package/dist/utils/View.mjs +14 -14
  112. package/dist/validation/Contraints.mjs +10 -10
  113. package/dist/validation/Validate.mjs +9 -9
  114. package/dist/validation/When.mjs +9 -9
  115. package/package.json +2 -2
  116. package/src/domain/DateTime.ts +5 -0
  117. package/src/types/Object.ts +4 -0
  118. package/src/utils/Seconds.ts +2 -7
  119. package/src/utils/Traverse.ts +21 -0
  120. package/dist/chunk-5M76X6J5.mjs.map +0 -1
  121. package/dist/chunk-DICMUQFL.mjs +0 -11
  122. package/dist/chunk-DICMUQFL.mjs.map +0 -1
  123. /package/dist/{chunk-JV3PEYHS.mjs.map → chunk-24WJGYH4.mjs.map} +0 -0
  124. /package/dist/{chunk-3PPC4YMQ.mjs.map → chunk-2V3F4LJ5.mjs.map} +0 -0
  125. /package/dist/{chunk-OGMTD753.mjs.map → chunk-3BXPK7FX.mjs.map} +0 -0
  126. /package/dist/{chunk-QLM2AYD4.mjs.map → chunk-3DAZTFKD.mjs.map} +0 -0
  127. /package/dist/{chunk-2JX2SSPQ.mjs.map → chunk-3EYCIHXW.mjs.map} +0 -0
  128. /package/dist/{chunk-DS6NSJUW.mjs.map → chunk-4KB2NPKQ.mjs.map} +0 -0
  129. /package/dist/{chunk-KA3TZADE.mjs.map → chunk-55B7FIAE.mjs.map} +0 -0
  130. /package/dist/{chunk-WBEMXVO6.mjs.map → chunk-5GALY24M.mjs.map} +0 -0
  131. /package/dist/{chunk-V7EJJWVX.mjs.map → chunk-6DL5IBFE.mjs.map} +0 -0
  132. /package/dist/{chunk-L4T4Z7PG.mjs.map → chunk-6TJC3RI3.mjs.map} +0 -0
  133. /package/dist/{chunk-JCINHOMG.mjs.map → chunk-CHNRVP7J.mjs.map} +0 -0
  134. /package/dist/{chunk-KAYSE6PM.mjs.map → chunk-CLIM3GJ7.mjs.map} +0 -0
  135. /package/dist/{chunk-4KJZ4LNQ.mjs.map → chunk-DEESTSMV.mjs.map} +0 -0
  136. /package/dist/{chunk-VRLSZ2MW.mjs.map → chunk-FZBUEEQB.mjs.map} +0 -0
  137. /package/dist/{chunk-EG3KSNQZ.mjs.map → chunk-GKDMM6XO.mjs.map} +0 -0
  138. /package/dist/{chunk-2BTY2F3A.mjs.map → chunk-H6WLTQXF.mjs.map} +0 -0
  139. /package/dist/{chunk-SRFFQJLL.mjs.map → chunk-H7TRIY7A.mjs.map} +0 -0
  140. /package/dist/{chunk-3LASXEE5.mjs.map → chunk-HE6MAJDE.mjs.map} +0 -0
  141. /package/dist/{chunk-PJXWZFLD.mjs.map → chunk-ILJV7234.mjs.map} +0 -0
  142. /package/dist/{chunk-24OSK3DS.mjs.map → chunk-IXUCBTR3.mjs.map} +0 -0
  143. /package/dist/{chunk-WI2ICJHX.mjs.map → chunk-JEIESGLS.mjs.map} +0 -0
  144. /package/dist/{chunk-TNOOLHK7.mjs.map → chunk-KK66VUSS.mjs.map} +0 -0
  145. /package/dist/{chunk-IVX4I3NC.mjs.map → chunk-L5TIL3QC.mjs.map} +0 -0
  146. /package/dist/{chunk-X3C5CS4X.mjs.map → chunk-NE6FVUU7.mjs.map} +0 -0
  147. /package/dist/{chunk-PRN25GXK.mjs.map → chunk-NFZZGGEV.mjs.map} +0 -0
  148. /package/dist/{chunk-T5VZORPQ.mjs.map → chunk-OJW2KVY7.mjs.map} +0 -0
  149. /package/dist/{chunk-F4XMHKOR.mjs.map → chunk-PWYWE7H7.mjs.map} +0 -0
  150. /package/dist/{chunk-63OA3RR6.mjs.map → chunk-QKWQIRUO.mjs.map} +0 -0
  151. /package/dist/{chunk-RSOPHC7S.mjs.map → chunk-STPFSN7K.mjs.map} +0 -0
  152. /package/dist/{chunk-YK65IKP2.mjs.map → chunk-VVWELITO.mjs.map} +0 -0
  153. /package/dist/{chunk-ZDBXA2D4.mjs.map → chunk-XQ4KXG5O.mjs.map} +0 -0
  154. /package/dist/{chunk-QB3ZLR7S.mjs.map → chunk-Y4RD46AM.mjs.map} +0 -0
  155. /package/dist/{chunk-IX2TMY6X.mjs.map → chunk-YNOOWA75.mjs.map} +0 -0
  156. /package/dist/{chunk-GVJWRPOP.mjs.map → chunk-YUFKMTUP.mjs.map} +0 -0
  157. /package/dist/{chunk-INO2742F.mjs.map → chunk-Z7CGMLOT.mjs.map} +0 -0
@@ -3,18 +3,18 @@ import {
3
3
  isValid,
4
4
  validate,
5
5
  validateReject
6
- } from "../chunk-QLM2AYD4.mjs";
6
+ } from "../chunk-3DAZTFKD.mjs";
7
7
  import "../chunk-OFGI5FLG.mjs";
8
- import "../chunk-YK65IKP2.mjs";
9
- import "../chunk-VRLSZ2MW.mjs";
8
+ import "../chunk-VVWELITO.mjs";
9
+ import "../chunk-FZBUEEQB.mjs";
10
10
  import "../chunk-ISLR7BKT.mjs";
11
- import "../chunk-KAYSE6PM.mjs";
11
+ import "../chunk-CLIM3GJ7.mjs";
12
12
  import "../chunk-CAHTK3AT.mjs";
13
- import "../chunk-TNOOLHK7.mjs";
14
- import "../chunk-KA3TZADE.mjs";
15
- import "../chunk-SRFFQJLL.mjs";
16
- import "../chunk-IVX4I3NC.mjs";
17
- import "../chunk-Q3TL43R2.mjs";
13
+ import "../chunk-KK66VUSS.mjs";
14
+ import "../chunk-55B7FIAE.mjs";
15
+ import "../chunk-H7TRIY7A.mjs";
16
+ import "../chunk-L5TIL3QC.mjs";
17
+ import "../chunk-R43LAFNS.mjs";
18
18
  import "../chunk-EX7OK25Y.mjs";
19
19
  import "../chunk-JSON7A4X.mjs";
20
20
  import "../chunk-X7FZPY3P.mjs";
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  When,
3
3
  when
4
- } from "../chunk-QLM2AYD4.mjs";
4
+ } from "../chunk-3DAZTFKD.mjs";
5
5
  import "../chunk-OFGI5FLG.mjs";
6
- import "../chunk-YK65IKP2.mjs";
7
- import "../chunk-VRLSZ2MW.mjs";
6
+ import "../chunk-VVWELITO.mjs";
7
+ import "../chunk-FZBUEEQB.mjs";
8
8
  import "../chunk-ISLR7BKT.mjs";
9
- import "../chunk-KAYSE6PM.mjs";
9
+ import "../chunk-CLIM3GJ7.mjs";
10
10
  import "../chunk-CAHTK3AT.mjs";
11
- import "../chunk-TNOOLHK7.mjs";
12
- import "../chunk-KA3TZADE.mjs";
13
- import "../chunk-SRFFQJLL.mjs";
14
- import "../chunk-IVX4I3NC.mjs";
15
- import "../chunk-Q3TL43R2.mjs";
11
+ import "../chunk-KK66VUSS.mjs";
12
+ import "../chunk-55B7FIAE.mjs";
13
+ import "../chunk-H7TRIY7A.mjs";
14
+ import "../chunk-L5TIL3QC.mjs";
15
+ import "../chunk-R43LAFNS.mjs";
16
16
  import "../chunk-EX7OK25Y.mjs";
17
17
  import "../chunk-JSON7A4X.mjs";
18
18
  import "../chunk-X7FZPY3P.mjs";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thisisagile/easy",
3
- "version": "17.4.5",
3
+ "version": "17.4.8",
4
4
  "description": "Straightforward library for building domain-driven microservice architectures",
5
5
  "author": "Sander Hoogendoorn",
6
6
  "license": "MIT",
@@ -34,7 +34,7 @@
34
34
  "access": "public"
35
35
  },
36
36
  "devDependencies": {
37
- "@thisisagile/easy-test": "17.4.5",
37
+ "@thisisagile/easy-test": "17.4.8",
38
38
  "@types/form-urlencoded": "^4.4.0",
39
39
  "@types/luxon": "3.4.2",
40
40
  "@types/validator": "^13.11.10"
@@ -7,6 +7,7 @@ import { isDate } from '../types/IsDate';
7
7
  import { isA } from '../types/IsA';
8
8
  import { ifDefined } from '../utils/If';
9
9
  import { JsonValue } from '../types/Json';
10
+ import { seconds } from '../utils/Seconds';
10
11
 
11
12
  Settings.defaultZone = 'utc';
12
13
 
@@ -139,6 +140,10 @@ export class DateTime extends Value<Optional<string>> {
139
140
  toDate(): Optional<Date> {
140
141
  return this.isValid ? this.utc.toJSDate() : undefined;
141
142
  }
143
+
144
+ ago(end: DateTime = DateTime.now): string {
145
+ return seconds.toText(end.diff(this, 'second'));
146
+ }
142
147
  }
143
148
 
144
149
  export const isDateTime = (dt?: unknown): dt is DateTime => isDefined(dt) && dt instanceof DateTime;
@@ -14,3 +14,7 @@ export function entries<T = unknown>(subject: { [p: string]: T } | ArrayLike<T>)
14
14
  export function values<T = unknown>(subject: { [p: string]: T } | ArrayLike<T>): List<T> {
15
15
  return toList([...Object.values<T>(subject), ...Object.values<T>(Object.getPrototypeOf(subject))]);
16
16
  }
17
+
18
+ export function keys<T = unknown>(subject: { [p: string]: T } | ArrayLike<T>): List<string> {
19
+ return toList([...Object.keys(subject), ...Object.keys(Object.getPrototypeOf(subject))]);
20
+ }
@@ -10,14 +10,9 @@ export const seconds = {
10
10
  return { days, hours, minutes, seconds };
11
11
  },
12
12
 
13
- toText: (s: number) => {
13
+ toText: (s: number): string => {
14
14
  const { days, hours, minutes, seconds: secs } = seconds.toDuration(s);
15
- return toList(
16
- ifTrue(days, d => `${d}d`),
17
- ifTrue(hours, h => `${h}h`),
18
- ifTrue(minutes, m => `${m}m`),
19
- ifTrue(days + hours + minutes === 0, `${secs}s`)
20
- )
15
+ return toList(ifTrue(days, `${days}d`), ifTrue(hours, `${hours}h`), ifTrue(minutes, `${minutes}m`), ifTrue(days + hours + minutes === 0, `${secs}s`))
21
16
  .mapDefined(s => s)
22
17
  .join(' ');
23
18
  },
@@ -1,5 +1,26 @@
1
+ import { AnyKey } from '../types/AnyKey';
2
+
1
3
  export const traverse = (subject: unknown = {}, property = ''): unknown => {
2
4
  const props = property.split('.');
3
5
  const p = props.shift() as string;
4
6
  return props.length === 0 ? (subject as any)[p] : traverse((subject as any)[p], props.join('.'));
5
7
  };
8
+
9
+ export const traverseSet = <T>(subject: T, property: AnyKey<T>, value: unknown): unknown => {
10
+ const props = property.split('.');
11
+ const p = props.shift() as string;
12
+ return {
13
+ ...(subject as any),
14
+ [p]: props.length === 0 ? value : traverseSet((subject as any)[p], props.join('.'), value),
15
+ } as T;
16
+ };
17
+
18
+ export const accumulate = <T>(items: T[], ...keys: AnyKey<T>[]): T[] =>
19
+ items.map((t, i, arr) => {
20
+ const acc = keys.reduce(
21
+ (acc, v) => traverseSet(acc, v, i === 0 ? traverse(t, v) : (traverse(arr[i - 1], v) as number) + (traverse(t, v) as number)) as T,
22
+ t
23
+ );
24
+ arr[i] = acc;
25
+ return acc;
26
+ });
@@ -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';\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,11 +0,0 @@
1
- // src/utils/Traverse.ts
2
- var traverse = (subject = {}, property = "") => {
3
- const props = property.split(".");
4
- const p = props.shift();
5
- return props.length === 0 ? subject[p] : traverse(subject[p], props.join("."));
6
- };
7
-
8
- export {
9
- traverse
10
- };
11
- //# sourceMappingURL=chunk-DICMUQFL.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/Traverse.ts"],"sourcesContent":["export const traverse = (subject: unknown = {}, property = ''): unknown => {\n const props = property.split('.');\n const p = props.shift() as string;\n return props.length === 0 ? (subject as any)[p] : traverse((subject as any)[p], props.join('.'));\n};\n"],"mappings":";AAAO,IAAM,WAAW,CAAC,UAAmB,CAAC,GAAG,WAAW,OAAgB;AACzE,QAAM,QAAQ,SAAS,MAAM,GAAG;AAChC,QAAM,IAAI,MAAM,MAAM;AACtB,SAAO,MAAM,WAAW,IAAK,QAAgB,CAAC,IAAI,SAAU,QAAgB,CAAC,GAAG,MAAM,KAAK,GAAG,CAAC;AACjG;","names":[]}