@arthurzakharov/ui-kit 1.0.2 → 1.0.5

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 (179) hide show
  1. package/dist/assets/box-b_yPaNPs.css +1 -0
  2. package/dist/assets/button-XGvsKGqH.css +1 -0
  3. package/dist/assets/certifications-tJ3i72S_.css +1 -0
  4. package/dist/assets/choice-BEXd0fh0.css +1 -0
  5. package/dist/assets/hidden-input-DHJQHUKd.css +1 -0
  6. package/dist/assets/index-CqamBlbE.css +1 -0
  7. package/dist/assets/input-DTN-3ZET.css +1 -0
  8. package/dist/assets/label-DF2VBeUr.css +1 -0
  9. package/dist/assets/main-C0tWHTEq.css +1 -0
  10. package/dist/assets/radio-label-Bd5UiESO.css +1 -0
  11. package/dist/assets/radio-text-DAsITkgm.css +1 -0
  12. package/dist/components/certifications/certifications.component.d.ts +1 -5
  13. package/dist/components/certifications/certifications.component.js +8 -8
  14. package/dist/components/certifications/certifications.test.d.ts +1 -0
  15. package/dist/components/certifications/certifications.test.js +37 -0
  16. package/dist/components/certifications/certifications.types.d.ts +5 -0
  17. package/dist/components/certifications/certifications.types.js +2 -0
  18. package/dist/components/certifications/index.d.ts +1 -0
  19. package/dist/components/certifications/index.js +5 -0
  20. package/dist/components/control/components/box/box.component.d.ts +2 -0
  21. package/dist/components/control/components/box/box.component.js +33 -0
  22. package/dist/components/control/components/box/box.test.d.ts +1 -0
  23. package/dist/components/control/components/box/box.test.js +111 -0
  24. package/dist/components/control/components/box/box.types.d.ts +9 -0
  25. package/dist/components/control/components/box/box.types.js +2 -0
  26. package/dist/components/control/components/box/index.d.ts +1 -0
  27. package/dist/components/control/components/box/index.js +5 -0
  28. package/dist/components/control/components/button/button.component.d.ts +2 -0
  29. package/dist/components/control/components/button/button.component.js +54 -0
  30. package/dist/components/control/components/button/button.test.d.ts +1 -0
  31. package/dist/components/control/components/button/button.test.js +155 -0
  32. package/dist/components/control/components/button/button.types.d.ts +16 -0
  33. package/dist/components/control/components/button/button.types.js +2 -0
  34. package/dist/components/control/components/button/index.d.ts +1 -0
  35. package/dist/components/control/components/button/index.js +5 -0
  36. package/dist/components/control/components/card-image/card-image.component.d.ts +2 -0
  37. package/dist/components/control/components/card-image/card-image.component.js +8 -0
  38. package/dist/components/control/components/card-image/card-image.test.d.ts +1 -0
  39. package/dist/components/control/components/card-image/card-image.test.js +118 -0
  40. package/dist/components/control/components/card-image/card-image.types.d.ts +6 -0
  41. package/dist/components/control/components/card-image/card-image.types.js +2 -0
  42. package/dist/components/control/components/card-image/index.d.ts +1 -0
  43. package/dist/components/control/components/card-image/index.js +5 -0
  44. package/dist/components/control/components/card-text/card-text.component.d.ts +2 -0
  45. package/dist/components/control/components/card-text/card-text.component.js +8 -0
  46. package/dist/components/control/components/card-text/card-text.test.d.ts +1 -0
  47. package/dist/components/control/components/card-text/card-text.test.js +109 -0
  48. package/dist/components/control/components/card-text/card-text.types.d.ts +5 -0
  49. package/dist/components/control/components/card-text/card-text.types.js +2 -0
  50. package/dist/components/control/components/card-text/index.d.ts +1 -0
  51. package/dist/components/control/components/card-text/index.js +5 -0
  52. package/dist/components/control/components/checkbox/checkbox.component.d.ts +2 -0
  53. package/dist/components/control/components/checkbox/checkbox.component.js +8 -0
  54. package/dist/components/control/components/checkbox/checkbox.types.d.ts +5 -0
  55. package/dist/components/control/components/checkbox/checkbox.types.js +2 -0
  56. package/dist/components/control/components/checkbox/index.d.ts +1 -0
  57. package/dist/components/control/components/checkbox/index.js +5 -0
  58. package/dist/components/control/components/choice/choice.component.d.ts +2 -0
  59. package/dist/components/control/components/choice/choice.component.js +43 -0
  60. package/dist/components/control/components/choice/choice.test.d.ts +1 -0
  61. package/dist/components/control/components/choice/choice.test.js +138 -0
  62. package/dist/components/control/components/choice/choice.types.d.ts +8 -0
  63. package/dist/components/control/components/choice/choice.types.js +2 -0
  64. package/dist/components/control/components/choice/index.d.ts +1 -0
  65. package/dist/components/control/components/choice/index.js +5 -0
  66. package/dist/components/control/components/dropdown/dropdown.component.d.ts +2 -0
  67. package/dist/components/control/components/dropdown/dropdown.component.js +12 -0
  68. package/dist/components/control/components/dropdown/dropdown.types.d.ts +14 -0
  69. package/dist/components/control/components/dropdown/dropdown.types.js +2 -0
  70. package/dist/components/control/components/dropdown/index.d.ts +1 -0
  71. package/dist/components/control/components/dropdown/index.js +5 -0
  72. package/dist/components/control/components/hidden-input/hidden-input.component.d.ts +2 -0
  73. package/dist/components/control/components/hidden-input/hidden-input.component.js +26 -0
  74. package/dist/components/control/components/hidden-input/hidden-input.test.d.ts +1 -0
  75. package/dist/components/control/components/hidden-input/hidden-input.test.js +142 -0
  76. package/dist/components/control/components/hidden-input/hidden-input.types.d.ts +11 -0
  77. package/dist/components/control/components/hidden-input/hidden-input.types.js +2 -0
  78. package/dist/components/control/components/hidden-input/index.d.ts +1 -0
  79. package/dist/components/control/components/hidden-input/index.js +5 -0
  80. package/dist/components/control/components/input/index.d.ts +1 -0
  81. package/dist/components/control/components/input/index.js +5 -0
  82. package/dist/components/control/components/input/input.component.d.ts +2 -0
  83. package/dist/components/control/components/input/input.component.js +6 -0
  84. package/dist/components/control/components/input/input.test.d.ts +1 -0
  85. package/dist/components/control/components/input/input.test.js +104 -0
  86. package/dist/components/control/components/input/input.types.d.ts +7 -0
  87. package/dist/components/control/components/input/input.types.js +2 -0
  88. package/dist/components/control/components/label/index.d.ts +1 -0
  89. package/dist/components/control/components/label/index.js +5 -0
  90. package/dist/components/control/components/label/label.component.d.ts +2 -0
  91. package/dist/components/control/components/label/label.component.js +29 -0
  92. package/dist/components/control/components/label/label.test.d.ts +1 -0
  93. package/dist/components/control/components/label/label.test.js +91 -0
  94. package/dist/components/control/components/label/label.types.d.ts +8 -0
  95. package/dist/components/control/components/label/label.types.js +2 -0
  96. package/dist/components/control/components/radio/index.d.ts +1 -0
  97. package/dist/components/control/components/radio/index.js +5 -0
  98. package/dist/components/control/components/radio/radio.component.d.ts +2 -0
  99. package/dist/components/control/components/radio/radio.component.js +8 -0
  100. package/dist/components/control/components/radio/radio.types.d.ts +6 -0
  101. package/dist/components/control/components/radio/radio.types.js +2 -0
  102. package/dist/components/control/components/radio-label/index.d.ts +1 -0
  103. package/dist/components/control/components/radio-label/index.js +5 -0
  104. package/dist/components/control/components/radio-label/radio-label.component.d.ts +3 -0
  105. package/dist/components/control/components/radio-label/radio-label.component.js +38 -0
  106. package/dist/components/control/components/radio-label/radio-label.test.d.ts +1 -0
  107. package/dist/components/control/components/radio-label/radio-label.test.js +282 -0
  108. package/dist/components/control/components/radio-label/radio-label.types.d.ts +17 -0
  109. package/dist/components/control/components/radio-label/radio-label.types.js +2 -0
  110. package/dist/components/control/components/radio-text/index.d.ts +1 -0
  111. package/dist/components/control/components/radio-text/index.js +5 -0
  112. package/dist/components/control/components/radio-text/radio-text.component.d.ts +2 -0
  113. package/dist/components/control/components/radio-text/radio-text.component.js +34 -0
  114. package/dist/components/control/components/radio-text/radio-text.test.d.ts +1 -0
  115. package/dist/components/control/components/radio-text/radio-text.test.js +82 -0
  116. package/dist/components/control/components/radio-text/radio-text.types.d.ts +6 -0
  117. package/dist/components/control/components/radio-text/radio-text.types.js +2 -0
  118. package/dist/components/control/components/text/index.d.ts +1 -0
  119. package/dist/components/control/components/text/index.js +5 -0
  120. package/dist/components/control/components/text/text.component.d.ts +2 -0
  121. package/dist/components/control/components/text/text.component.js +8 -0
  122. package/dist/components/control/components/text/text.test.d.ts +1 -0
  123. package/dist/components/control/components/text/text.test.js +146 -0
  124. package/dist/components/control/components/text/text.types.d.ts +6 -0
  125. package/dist/components/control/components/text/text.types.js +2 -0
  126. package/dist/components/control/components/textarea/index.d.ts +1 -0
  127. package/dist/components/control/components/textarea/index.js +5 -0
  128. package/dist/components/control/components/textarea/textarea.component.d.ts +2 -0
  129. package/dist/components/control/components/textarea/textarea.component.js +7 -0
  130. package/dist/components/control/components/textarea/textarea.test.d.ts +1 -0
  131. package/dist/components/control/components/textarea/textarea.test.js +148 -0
  132. package/dist/components/control/components/textarea/textarea.types.d.ts +8 -0
  133. package/dist/components/control/components/textarea/textarea.types.js +2 -0
  134. package/dist/components/control/hooks/index.d.ts +1 -0
  135. package/dist/components/control/hooks/index.js +5 -0
  136. package/dist/components/control/hooks/useChoice/index.d.ts +1 -0
  137. package/dist/components/control/hooks/useChoice/index.js +5 -0
  138. package/dist/components/control/hooks/useChoice/useChoice.hook.d.ts +5 -0
  139. package/dist/components/control/hooks/useChoice/useChoice.hook.js +10 -0
  140. package/dist/components/control/hooks/useChoice/useChoice.hook.test.d.ts +1 -0
  141. package/dist/components/control/hooks/useChoice/useChoice.hook.test.js +35 -0
  142. package/dist/components/control/index.d.ts +17 -0
  143. package/dist/components/control/index.js +13 -0
  144. package/dist/components/control/types.d.ts +35 -0
  145. package/dist/components/control/types.js +2 -0
  146. package/dist/components/control/utils/index.d.ts +1 -0
  147. package/dist/components/control/utils/index.js +7 -0
  148. package/dist/components/control/utils/utils.d.ts +4 -0
  149. package/dist/components/control/utils/utils.js +7 -0
  150. package/dist/components/control/utils/utils.test.d.ts +1 -0
  151. package/dist/components/control/utils/utils.test.js +34 -0
  152. package/dist/enums.d.ts +14 -0
  153. package/dist/enums.js +5 -0
  154. package/dist/index-DZTmNCEj.js +407 -0
  155. package/dist/input.component-Ju0oHzs9.js +38 -0
  156. package/dist/magic-string.es-uPKorP4O.js +664 -0
  157. package/dist/main.d.ts +2 -1
  158. package/dist/main.js +6 -4
  159. package/dist/react-18-1BDDKgtP.js +41 -0
  160. package/dist/react.esm-CZ9PjZjp.js +75462 -0
  161. package/dist/types.d.ts +3 -0
  162. package/dist/types.js +2 -0
  163. package/dist/utils/converter/converter.d.ts +37 -0
  164. package/dist/utils/converter/converter.js +140 -0
  165. package/dist/utils/converter/converter.test.d.ts +1 -0
  166. package/dist/utils/converter/converter.test.js +121 -0
  167. package/dist/utils/converter/index.d.ts +1 -0
  168. package/dist/utils/converter/index.js +5 -0
  169. package/dist/utils/index.d.ts +2 -0
  170. package/dist/utils/index.js +7 -0
  171. package/dist/utils/time/index.d.ts +1 -0
  172. package/dist/utils/time/index.js +5 -0
  173. package/dist/utils/time/time.d.ts +7 -0
  174. package/dist/utils/time/time.js +34 -0
  175. package/dist/utils/time/time.test.d.ts +1 -0
  176. package/dist/utils/time/time.test.js +45 -0
  177. package/dist/vi.2VT5v0um-CyasTEXm.js +10517 -0
  178. package/package.json +17 -5
  179. package/dist/assets/certifications-CHPUtPfO.css +0 -1
@@ -0,0 +1,3 @@
1
+ export type DatePrecision = 'month' | 'day';
2
+ export type MaskExplanationKey = 'd' | 'm' | 'y';
3
+ export type MaskExplanation = [string, MaskExplanationKey, MaskExplanationKey, MaskExplanationKey?];
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -0,0 +1,37 @@
1
+ import { DatePrecision } from '../../types';
2
+ export declare abstract class Converter {
3
+ private static formatNumberWithLeadingZero;
4
+ private static maskExplanation;
5
+ static mask(precision: DatePrecision): string;
6
+ static get Boolean(): {
7
+ ToBooleanString: (val: boolean) => string;
8
+ ToBooleanNumber: (val: boolean) => number;
9
+ ToBooleanNumberString: (val: boolean) => string;
10
+ };
11
+ static get BooleanString(): {
12
+ ToBoolean: (val: string) => boolean;
13
+ ToBooleanNumberString: (val: string) => string;
14
+ };
15
+ static get BooleanNumber(): {
16
+ ToBoolean: (val: number) => boolean;
17
+ ToBooleanString: (val: number) => string;
18
+ ToBooleanNumberString: (val: number) => string;
19
+ };
20
+ static get DateSting(): {
21
+ ToDate: (dateString: string) => Date | null;
22
+ ToDateStringUSFormat: (dateString: string) => string;
23
+ ToNumber: (dateString: string) => number;
24
+ ToMonthStyle: (dateString: string) => string;
25
+ ToDayStyle: (dateString: string) => string;
26
+ };
27
+ static get DateRelative(): {
28
+ ToDate: (dateRelative: string, setFirstHoursOfDay?: boolean) => Date;
29
+ };
30
+ static get Date(): {
31
+ ToDateString: (date: Date) => string;
32
+ };
33
+ static get Answer(): {
34
+ FromMultipleToArray: (value: string) => string[];
35
+ FromArrayToMultiple: (value: string[]) => string;
36
+ };
37
+ }
@@ -0,0 +1,140 @@
1
+ import { Time as c } from "../time/time.js";
2
+ class n {
3
+ static formatNumberWithLeadingZero(t) {
4
+ return String(t).padStart(2, "0");
5
+ }
6
+ static maskExplanation() {
7
+ return ["/", "d", "m", "y"];
8
+ }
9
+ static mask(t) {
10
+ return t === "day" ? "TT/MM/JJJJ" : "MM/JJJJ";
11
+ }
12
+ static get Boolean() {
13
+ return {
14
+ ToBooleanString: (t) => t ? "true" : "false",
15
+ ToBooleanNumber: (t) => t ? 1 : 0,
16
+ ToBooleanNumberString: (t) => t ? "1" : "0"
17
+ };
18
+ }
19
+ static get BooleanString() {
20
+ const t = (e) => e.toLowerCase();
21
+ return {
22
+ ToBoolean: (e) => t(e) === "true" ? !0 : (t(e) === "false", !1),
23
+ ToBooleanNumberString: (e) => t(e) === "true" ? "1" : (t(e) === "false", "0")
24
+ };
25
+ }
26
+ static get BooleanNumber() {
27
+ return {
28
+ ToBoolean: (t) => t === 1,
29
+ ToBooleanString: (t) => t === 1 ? "true" : "false",
30
+ ToBooleanNumberString: (t) => t === 1 ? "1" : "0"
31
+ };
32
+ }
33
+ /* DD/MM/YYYY is the only allowed and expected format of date string */
34
+ static get DateSting() {
35
+ return {
36
+ ToDate: (t) => {
37
+ const [e, ...r] = n.maskExplanation(), a = t.split(e), { day: o, month: s, year: i } = r.reduce(
38
+ (u, p, l) => {
39
+ switch (p) {
40
+ case "d":
41
+ u.day = Number(a[l]) || NaN;
42
+ break;
43
+ case "m":
44
+ u.month = Number(a[l]) || NaN;
45
+ break;
46
+ case "y":
47
+ u.year = Number(a[l]) || NaN;
48
+ break;
49
+ }
50
+ return u;
51
+ },
52
+ {
53
+ day: NaN,
54
+ month: NaN,
55
+ year: NaN
56
+ }
57
+ ), m = c.date(o, s - 1, i);
58
+ return m.toLocaleDateString("en-US", {
59
+ month: "numeric",
60
+ day: "numeric",
61
+ year: "numeric"
62
+ }) === [s, o, i].join(e) ? m : null;
63
+ },
64
+ ToDateStringUSFormat: (t) => {
65
+ const [e] = n.maskExplanation(), [r, a, o] = t.split(e);
66
+ return [o, a, r].join(e);
67
+ },
68
+ ToNumber: (t) => {
69
+ const e = n.DateSting.ToDate(t);
70
+ return e ? e.getTime() : 0;
71
+ },
72
+ ToMonthStyle: (t) => {
73
+ const [e] = n.maskExplanation(), [, r, a] = t.split(e);
74
+ return r && a ? [r, a].join(e) : "";
75
+ },
76
+ ToDayStyle: (t) => {
77
+ const [e] = n.maskExplanation(), [r, a] = t.split(e);
78
+ return r && a ? ["01", r, a].join(e) : "";
79
+ }
80
+ };
81
+ }
82
+ static get DateRelative() {
83
+ return {
84
+ ToDate: (t, e = !0) => {
85
+ const r = e ? c.startOfDay(/* @__PURE__ */ new Date()) : c.endOfDay(/* @__PURE__ */ new Date());
86
+ switch (t) {
87
+ case "today":
88
+ return r;
89
+ case "no limit":
90
+ return e && r.setFullYear(r.getFullYear() - 200), e || r.setFullYear(r.getFullYear() + 200), r;
91
+ default:
92
+ if (t.includes("day")) {
93
+ const [a] = t.split(" ");
94
+ r.setDate(r.getDate() + (e ? -a : +a));
95
+ }
96
+ if (t.includes("month")) {
97
+ const [a] = t.split(" ");
98
+ r.setMonth(r.getMonth() + (e ? -a : +a));
99
+ }
100
+ if (t.includes("year")) {
101
+ const [a] = t.split(" ");
102
+ r.setFullYear(r.getFullYear() + (e ? -a : +a));
103
+ }
104
+ if (t.includes("date")) {
105
+ const [a] = t.split(" "), [o, s, i] = a.split("/");
106
+ r.setDate(Number(o)), r.setMonth(Number(s) - 1), r.setFullYear(Number(i));
107
+ }
108
+ return r;
109
+ }
110
+ }
111
+ };
112
+ }
113
+ static get Date() {
114
+ return {
115
+ ToDateString: (t) => {
116
+ const [e, ...r] = n.maskExplanation();
117
+ return r.map((a) => {
118
+ switch (a) {
119
+ case "d":
120
+ return n.formatNumberWithLeadingZero(t.getDate());
121
+ case "m":
122
+ return n.formatNumberWithLeadingZero(t.getMonth() + 1);
123
+ case "y":
124
+ return t.getFullYear();
125
+ }
126
+ }).join(e);
127
+ }
128
+ };
129
+ }
130
+ static get Answer() {
131
+ return {
132
+ FromMultipleToArray: (e) => e.split(", "),
133
+ FromArrayToMultiple: (e) => e.join(", ")
134
+ };
135
+ }
136
+ }
137
+ export {
138
+ n as Converter
139
+ };
140
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydGVyLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvY29udmVydGVyL2NvbnZlcnRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE1hc2tFeHBsYW5hdGlvbiwgRGF0ZVByZWNpc2lvbiB9IGZyb20gJ0AvdHlwZXMnO1xuaW1wb3J0IHsgVGltZSB9IGZyb20gJ0AvdXRpbHMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29udmVydGVyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgZm9ybWF0TnVtYmVyV2l0aExlYWRpbmdaZXJvKG51bWJlcjogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU3RyaW5nKG51bWJlcikucGFkU3RhcnQoMiwgJzAnKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG1hc2tFeHBsYW5hdGlvbigpOiBNYXNrRXhwbGFuYXRpb24ge1xuICAgIHJldHVybiBbJy8nLCAnZCcsICdtJywgJ3knXTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgbWFzayhwcmVjaXNpb246IERhdGVQcmVjaXNpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiBwcmVjaXNpb24gPT09ICdkYXknID8gJ1RUL01NL0pKSkonIDogJ01NL0pKSkonO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXQgQm9vbGVhbigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgVG9Cb29sZWFuU3RyaW5nOiAodmFsOiBib29sZWFuKTogc3RyaW5nID0+IHtcbiAgICAgICAgcmV0dXJuIHZhbCA/ICd0cnVlJyA6ICdmYWxzZSc7XG4gICAgICB9LFxuICAgICAgVG9Cb29sZWFuTnVtYmVyOiAodmFsOiBib29sZWFuKTogbnVtYmVyID0+IHtcbiAgICAgICAgcmV0dXJuIHZhbCA/IDEgOiAwO1xuICAgICAgfSxcbiAgICAgIFRvQm9vbGVhbk51bWJlclN0cmluZzogKHZhbDogYm9vbGVhbik6IHN0cmluZyA9PiB7XG4gICAgICAgIHJldHVybiB2YWwgPyAnMScgOiAnMCc7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldCBCb29sZWFuU3RyaW5nKCkge1xuICAgIGNvbnN0IHRvTG93ZXIgPSAodmFsOiBzdHJpbmcpOiBzdHJpbmcgPT4gdmFsLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIFRvQm9vbGVhbjogKHZhbDogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gICAgICAgIGlmICh0b0xvd2VyKHZhbCkgPT09ICd0cnVlJykgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmICh0b0xvd2VyKHZhbCkgPT09ICdmYWxzZScpIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSxcbiAgICAgIFRvQm9vbGVhbk51bWJlclN0cmluZzogKHZhbDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICAgICAgaWYgKHRvTG93ZXIodmFsKSA9PT0gJ3RydWUnKSByZXR1cm4gJzEnO1xuICAgICAgICBpZiAodG9Mb3dlcih2YWwpID09PSAnZmFsc2UnKSByZXR1cm4gJzAnO1xuICAgICAgICByZXR1cm4gJzAnO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXQgQm9vbGVhbk51bWJlcigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgVG9Cb29sZWFuOiAodmFsOiBudW1iZXIpOiBib29sZWFuID0+IHtcbiAgICAgICAgaWYgKHZhbCA9PT0gMSkgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmICh2YWwgPT09IDApIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSxcbiAgICAgIFRvQm9vbGVhblN0cmluZzogKHZhbDogbnVtYmVyKTogc3RyaW5nID0+IHtcbiAgICAgICAgaWYgKHZhbCA9PT0gMSkgcmV0dXJuICd0cnVlJztcbiAgICAgICAgaWYgKHZhbCA9PT0gMCkgcmV0dXJuICdmYWxzZSc7XG4gICAgICAgIHJldHVybiAnZmFsc2UnO1xuICAgICAgfSxcbiAgICAgIFRvQm9vbGVhbk51bWJlclN0cmluZzogKHZhbDogbnVtYmVyKTogc3RyaW5nID0+IHtcbiAgICAgICAgaWYgKHZhbCA9PT0gMSkgcmV0dXJuICcxJztcbiAgICAgICAgaWYgKHZhbCA9PT0gMCkgcmV0dXJuICcwJztcbiAgICAgICAgcmV0dXJuICcwJztcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qIEREL01NL1lZWVkgaXMgdGhlIG9ubHkgYWxsb3dlZCBhbmQgZXhwZWN0ZWQgZm9ybWF0IG9mIGRhdGUgc3RyaW5nICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IERhdGVTdGluZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgVG9EYXRlOiAoZGF0ZVN0cmluZzogc3RyaW5nKTogRGF0ZSB8IG51bGwgPT4ge1xuICAgICAgICBjb25zdCBbc2VwYXJhdG9yLCAuLi5leHBsYW5hdGlvbnNdID0gQ29udmVydGVyLm1hc2tFeHBsYW5hdGlvbigpO1xuICAgICAgICBjb25zdCBkYXRlQXJyYXkgPSBkYXRlU3RyaW5nLnNwbGl0KHNlcGFyYXRvcik7XG4gICAgICAgIGNvbnN0IHsgZGF5LCBtb250aCwgeWVhciB9ID0gZXhwbGFuYXRpb25zLnJlZHVjZShcbiAgICAgICAgICAoZGF0ZSwga2V5LCBjdXJyZW50SW5kZXgpID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGRhdGUuZGF5ID0gTnVtYmVyKGRhdGVBcnJheVtjdXJyZW50SW5kZXhdKSB8fCBOYU47XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgIGRhdGUubW9udGggPSBOdW1iZXIoZGF0ZUFycmF5W2N1cnJlbnRJbmRleF0pIHx8IE5hTjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgZGF0ZS55ZWFyID0gTnVtYmVyKGRhdGVBcnJheVtjdXJyZW50SW5kZXhdKSB8fCBOYU47XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRheTogTmFOLFxuICAgICAgICAgICAgbW9udGg6IE5hTixcbiAgICAgICAgICAgIHllYXI6IE5hTixcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGNvbnZlcnRlZERhdGUgPSBUaW1lLmRhdGUoZGF5LCBtb250aCAtIDEsIHllYXIpO1xuXG4gICAgICAgIGNvbnN0IGxvY2FsZUNvbnZlcnRlZERhdGUgPSBjb252ZXJ0ZWREYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tVVMnLCB7XG4gICAgICAgICAgbW9udGg6ICdudW1lcmljJyxcbiAgICAgICAgICBkYXk6ICdudW1lcmljJyxcbiAgICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBsb2NhbGVDb252ZXJ0ZWREYXRlID09PSBbbW9udGgsIGRheSwgeWVhcl0uam9pbihzZXBhcmF0b3IpID8gY29udmVydGVkRGF0ZSA6IG51bGw7XG4gICAgICB9LFxuICAgICAgVG9EYXRlU3RyaW5nVVNGb3JtYXQ6IChkYXRlU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgICAgICBjb25zdCBbc2VwYXJhdG9yXSA9IENvbnZlcnRlci5tYXNrRXhwbGFuYXRpb24oKTtcbiAgICAgICAgY29uc3QgW2RheSwgbW9udGgsIHllYXJdID0gZGF0ZVN0cmluZy5zcGxpdChzZXBhcmF0b3IpO1xuICAgICAgICByZXR1cm4gW3llYXIsIG1vbnRoLCBkYXldLmpvaW4oc2VwYXJhdG9yKTtcbiAgICAgIH0sXG4gICAgICBUb051bWJlcjogKGRhdGVTdHJpbmc6IHN0cmluZyk6IG51bWJlciA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBDb252ZXJ0ZXIuRGF0ZVN0aW5nLlRvRGF0ZShkYXRlU3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIGRhdGUgPyBkYXRlLmdldFRpbWUoKSA6IDA7XG4gICAgICB9LFxuICAgICAgVG9Nb250aFN0eWxlOiAoZGF0ZVN0cmluZzogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICAgICAgY29uc3QgW3NlcGFyYXRvcl0gPSBDb252ZXJ0ZXIubWFza0V4cGxhbmF0aW9uKCk7XG4gICAgICAgIGNvbnN0IFssIG1vbnRoLCB5ZWFyXSA9IGRhdGVTdHJpbmcuc3BsaXQoc2VwYXJhdG9yKTtcbiAgICAgICAgcmV0dXJuIG1vbnRoICYmIHllYXIgPyBbbW9udGgsIHllYXJdLmpvaW4oc2VwYXJhdG9yKSA6ICcnO1xuICAgICAgfSxcbiAgICAgIFRvRGF5U3R5bGU6IChkYXRlU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgICAgICBjb25zdCBbc2VwYXJhdG9yXSA9IENvbnZlcnRlci5tYXNrRXhwbGFuYXRpb24oKTtcbiAgICAgICAgY29uc3QgW21vbnRoLCB5ZWFyXSA9IGRhdGVTdHJpbmcuc3BsaXQoc2VwYXJhdG9yKTtcbiAgICAgICAgcmV0dXJuIG1vbnRoICYmIHllYXIgPyBbJzAxJywgbW9udGgsIHllYXJdLmpvaW4oc2VwYXJhdG9yKSA6ICcnO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXQgRGF0ZVJlbGF0aXZlKCkge1xuICAgIHJldHVybiB7XG4gICAgICBUb0RhdGU6IChkYXRlUmVsYXRpdmU6IHN0cmluZywgc2V0Rmlyc3RIb3Vyc09mRGF5OiBib29sZWFuID0gdHJ1ZSk6IERhdGUgPT4ge1xuICAgICAgICBjb25zdCB0b2RheSA9IHNldEZpcnN0SG91cnNPZkRheSA/IFRpbWUuc3RhcnRPZkRheShuZXcgRGF0ZSgpKSA6IFRpbWUuZW5kT2ZEYXkobmV3IERhdGUoKSk7XG4gICAgICAgIHN3aXRjaCAoZGF0ZVJlbGF0aXZlKSB7XG4gICAgICAgICAgY2FzZSAndG9kYXknOlxuICAgICAgICAgICAgcmV0dXJuIHRvZGF5O1xuICAgICAgICAgIGNhc2UgJ25vIGxpbWl0JzpcbiAgICAgICAgICAgIGlmIChzZXRGaXJzdEhvdXJzT2ZEYXkpIHRvZGF5LnNldEZ1bGxZZWFyKHRvZGF5LmdldEZ1bGxZZWFyKCkgLSAyMDApO1xuICAgICAgICAgICAgaWYgKCFzZXRGaXJzdEhvdXJzT2ZEYXkpIHRvZGF5LnNldEZ1bGxZZWFyKHRvZGF5LmdldEZ1bGxZZWFyKCkgKyAyMDApO1xuICAgICAgICAgICAgcmV0dXJuIHRvZGF5O1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBpZiAoZGF0ZVJlbGF0aXZlLmluY2x1ZGVzKCdkYXknKSkge1xuICAgICAgICAgICAgICBjb25zdCBbZGF5U2hpZnRdID0gZGF0ZVJlbGF0aXZlLnNwbGl0KCcgJyk7XG4gICAgICAgICAgICAgIHRvZGF5LnNldERhdGUodG9kYXkuZ2V0RGF0ZSgpICsgKHNldEZpcnN0SG91cnNPZkRheSA/IC1kYXlTaGlmdCA6ICtkYXlTaGlmdCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRhdGVSZWxhdGl2ZS5pbmNsdWRlcygnbW9udGgnKSkge1xuICAgICAgICAgICAgICBjb25zdCBbbW9udGhTaGlmdF0gPSBkYXRlUmVsYXRpdmUuc3BsaXQoJyAnKTtcbiAgICAgICAgICAgICAgdG9kYXkuc2V0TW9udGgodG9kYXkuZ2V0TW9udGgoKSArIChzZXRGaXJzdEhvdXJzT2ZEYXkgPyAtbW9udGhTaGlmdCA6ICttb250aFNoaWZ0KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGF0ZVJlbGF0aXZlLmluY2x1ZGVzKCd5ZWFyJykpIHtcbiAgICAgICAgICAgICAgY29uc3QgW3llYXJTaGlmdF0gPSBkYXRlUmVsYXRpdmUuc3BsaXQoJyAnKTtcbiAgICAgICAgICAgICAgdG9kYXkuc2V0RnVsbFllYXIodG9kYXkuZ2V0RnVsbFllYXIoKSArIChzZXRGaXJzdEhvdXJzT2ZEYXkgPyAteWVhclNoaWZ0IDogK3llYXJTaGlmdCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRhdGVSZWxhdGl2ZS5pbmNsdWRlcygnZGF0ZScpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IFtleGFjdERhdGVdID0gZGF0ZVJlbGF0aXZlLnNwbGl0KCcgJyk7XG4gICAgICAgICAgICAgIGNvbnN0IFtkYXksIG1vbnRoLCB5ZWFyXSA9IGV4YWN0RGF0ZS5zcGxpdCgnLycpO1xuICAgICAgICAgICAgICB0b2RheS5zZXREYXRlKE51bWJlcihkYXkpKTtcbiAgICAgICAgICAgICAgdG9kYXkuc2V0TW9udGgoTnVtYmVyKG1vbnRoKSAtIDEpO1xuICAgICAgICAgICAgICB0b2RheS5zZXRGdWxsWWVhcihOdW1iZXIoeWVhcikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRvZGF5O1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldCBEYXRlKCkge1xuICAgIHJldHVybiB7XG4gICAgICBUb0RhdGVTdHJpbmc6IChkYXRlOiBEYXRlKTogc3RyaW5nID0+IHtcbiAgICAgICAgY29uc3QgW3NlcGFyYXRvciwgLi4uZXhwbGFuYXRpb25zXSA9IENvbnZlcnRlci5tYXNrRXhwbGFuYXRpb24oKTtcbiAgICAgICAgcmV0dXJuIGV4cGxhbmF0aW9uc1xuICAgICAgICAgIC5tYXAoKGtleSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIENvbnZlcnRlci5mb3JtYXROdW1iZXJXaXRoTGVhZGluZ1plcm8oZGF0ZS5nZXREYXRlKCkpO1xuICAgICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gQ29udmVydGVyLmZvcm1hdE51bWJlcldpdGhMZWFkaW5nWmVybyhkYXRlLmdldE1vbnRoKCkgKyAxKTtcbiAgICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICAgIC5qb2luKHNlcGFyYXRvcik7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldCBBbnN3ZXIoKSB7XG4gICAgY29uc3Qgc2VwYXJhdG9yID0gJywgJztcbiAgICByZXR1cm4ge1xuICAgICAgRnJvbU11bHRpcGxlVG9BcnJheTogKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmdbXSA9PiB2YWx1ZS5zcGxpdChzZXBhcmF0b3IpLFxuICAgICAgRnJvbUFycmF5VG9NdWx0aXBsZTogKHZhbHVlOiBzdHJpbmdbXSk6IHN0cmluZyA9PiB2YWx1ZS5qb2luKHNlcGFyYXRvciksXG4gICAgfTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkNvbnZlcnRlciIsIm51bWJlciIsInByZWNpc2lvbiIsInZhbCIsInRvTG93ZXIiLCJkYXRlU3RyaW5nIiwic2VwYXJhdG9yIiwiZXhwbGFuYXRpb25zIiwiZGF0ZUFycmF5IiwiZGF5IiwibW9udGgiLCJ5ZWFyIiwiZGF0ZSIsImtleSIsImN1cnJlbnRJbmRleCIsImNvbnZlcnRlZERhdGUiLCJUaW1lIiwiZGF0ZVJlbGF0aXZlIiwic2V0Rmlyc3RIb3Vyc09mRGF5IiwidG9kYXkiLCJkYXlTaGlmdCIsIm1vbnRoU2hpZnQiLCJ5ZWFyU2hpZnQiLCJleGFjdERhdGUiLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6IjtBQUdPLE1BQWVBLEVBQVU7QUFBQSxFQUM5QixPQUFlLDRCQUE0QkMsR0FBd0I7QUFDakUsV0FBTyxPQUFPQSxDQUFNLEVBQUUsU0FBUyxHQUFHLEdBQUc7QUFBQSxFQUN2QztBQUFBLEVBRUEsT0FBZSxrQkFBbUM7QUFDaEQsV0FBTyxDQUFDLEtBQUssS0FBSyxLQUFLLEdB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
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,121 @@
1
+ import { MONTH as n } from "../../enums.js";
2
+ import { Converter as t } from "./converter.js";
3
+ import { d as r, i as o, g as e, b as B, a as s, v as u } from "../../vi.2VT5v0um-CyasTEXm.js";
4
+ r("Converter", () => {
5
+ r("mask", () => {
6
+ o("should return correct mask for day precision", () => {
7
+ e(t.mask("day")).toEqual("TT/MM/JJJJ");
8
+ }), o("should return correct mask for month precision", () => {
9
+ e(t.mask("month")).toEqual("MM/JJJJ");
10
+ });
11
+ }), r("Boolean", () => {
12
+ o("ToBooleanString", () => {
13
+ e(t.Boolean.ToBooleanString(!0)).toEqual("true"), e(t.Boolean.ToBooleanString(!1)).toEqual("false");
14
+ }), o("ToBooleanNumber", () => {
15
+ e(t.Boolean.ToBooleanNumber(!0)).toEqual(1), e(t.Boolean.ToBooleanNumber(!1)).toEqual(0);
16
+ }), o("ToBooleanNumberString", () => {
17
+ e(t.Boolean.ToBooleanNumberString(!0)).toEqual("1"), e(t.Boolean.ToBooleanNumberString(!1)).toEqual("0");
18
+ });
19
+ }), r("BooleanString", () => {
20
+ o("ToBoolean", () => {
21
+ e(t.BooleanString.ToBoolean("true")).toBe(!0), e(t.BooleanString.ToBoolean("True")).toBe(!0), e(t.BooleanString.ToBoolean("false")).toBe(!1), e(t.BooleanString.ToBoolean("False")).toBe(!1), e(t.BooleanString.ToBoolean("random")).toBe(!1), e(t.BooleanString.ToBoolean("")).toBe(!1);
22
+ }), o("ToBooleanNumberString", () => {
23
+ e(t.BooleanString.ToBooleanNumberString("true")).toBe("1"), e(t.BooleanString.ToBooleanNumberString("True")).toBe("1"), e(t.BooleanString.ToBooleanNumberString("false")).toBe("0"), e(t.BooleanString.ToBooleanNumberString("False")).toBe("0"), e(t.BooleanString.ToBooleanNumberString("random")).toBe("0"), e(t.BooleanString.ToBooleanNumberString("")).toBe("0");
24
+ });
25
+ }), r("BooleanNumber", () => {
26
+ o("ToBoolean", () => {
27
+ e(t.BooleanNumber.ToBoolean(1)).toBe(!0), e(t.BooleanNumber.ToBoolean(0)).toBe(!1), e(t.BooleanNumber.ToBoolean(5)).toBe(!1), e(t.BooleanNumber.ToBoolean(NaN)).toBe(!1);
28
+ }), o("ToBooleanString", () => {
29
+ e(t.BooleanNumber.ToBooleanString(1)).toBe("true"), e(t.BooleanNumber.ToBooleanString(0)).toBe("false"), e(t.BooleanNumber.ToBooleanString(5)).toBe("false"), e(t.BooleanNumber.ToBooleanString(NaN)).toBe("false");
30
+ }), o("ToBooleanNumberString", () => {
31
+ e(t.BooleanNumber.ToBooleanNumberString(1)).toBe("1"), e(t.BooleanNumber.ToBooleanNumberString(0)).toBe("0"), e(t.BooleanNumber.ToBooleanNumberString(5)).toBe("0"), e(t.BooleanNumber.ToBooleanNumberString(NaN)).toBe("0");
32
+ });
33
+ }), r("DateSting", () => {
34
+ r("ToDate", () => {
35
+ o("should convert valid date string to Date object", () => {
36
+ const l = t.DateSting.ToDate("15/01/2022");
37
+ e(l).toBeInstanceOf(Date), e(l?.getDate()).toEqual(15), e(l?.getMonth()).toEqual(n.JANUARY), e(l?.getFullYear()).toEqual(2022);
38
+ }), o("should return null for invalid date string", () => {
39
+ e(t.DateSting.ToDate("2022/01/15")).toBeNull(), e(t.DateSting.ToDate("01/15/2022")).toBeNull(), e(t.DateSting.ToDate("32/01/2022")).toBeNull(), e(t.DateSting.ToDate("invalid")).toBeNull();
40
+ });
41
+ }), r("ToDateStringUSFormat", () => {
42
+ o("should reformat date string", () => {
43
+ e(t.DateSting.ToDateStringUSFormat("15/01/2022")).toEqual("2022/01/15"), e(t.DateSting.ToDateStringUSFormat("33/44/2222")).toEqual("2222/44/33");
44
+ });
45
+ }), r("ToNumber", () => {
46
+ o("should return timestamp for valid date", () => {
47
+ const l = t.DateSting.ToNumber("15/01/2022");
48
+ e(l).toBeGreaterThan(0);
49
+ }), o("should return 0 for invalid date", () => {
50
+ e(t.DateSting.ToNumber("2022/01/15")).toEqual(0), e(t.DateSting.ToNumber("01/15/2022")).toEqual(0), e(t.DateSting.ToNumber("32/01/2022")).toEqual(0), e(t.DateSting.ToNumber("invalid")).toEqual(0);
51
+ });
52
+ }), r("ToMonthStyle", () => {
53
+ o("should return month and year", () => {
54
+ e(t.DateSting.ToMonthStyle("15/01/2022")).toEqual("01/2022"), e(t.DateSting.ToMonthStyle("2022/01/15")).toEqual("01/15"), e(t.DateSting.ToMonthStyle("01/15/2022")).toEqual("15/2022"), e(t.DateSting.ToMonthStyle("32/01/2022")).toEqual("01/2022");
55
+ }), o("should handle empty string", () => {
56
+ e(t.DateSting.ToMonthStyle("")).toEqual(""), e(t.DateSting.ToMonthStyle("invalid")).toEqual("");
57
+ });
58
+ }), r("ToDayStyle", () => {
59
+ o("should return first day of month", () => {
60
+ e(t.DateSting.ToDayStyle("01/2022")).toEqual("01/01/2022"), e(t.DateSting.ToDayStyle("2022/01/15")).toEqual("01/2022/01"), e(t.DateSting.ToDayStyle("01/15/2022")).toEqual("01/01/15"), e(t.DateSting.ToDayStyle("32/01/2022")).toEqual("01/32/01");
61
+ }), o("should handle empty string", () => {
62
+ e(t.DateSting.ToDayStyle("")).toBe(""), e(t.DateSting.ToDayStyle("invalid")).toBe("");
63
+ });
64
+ });
65
+ }), r("DateRelative", () => {
66
+ B(() => {
67
+ u.useFakeTimers(), u.setSystemTime(new Date(2022, n.JUNE, 15, 12, 0, 0));
68
+ }), s(() => {
69
+ u.useRealTimers();
70
+ }), o('should handle "today"', () => {
71
+ const a = t.DateRelative.ToDate("today", !0), l = t.DateRelative.ToDate("today", !1), i = t.DateRelative.ToDate("today");
72
+ e(a.getHours()).toBe(0), e(a.getDate()).toBe(15), e(l.getHours()).toBe(23), e(l.getDate()).toBe(15), e(i.getHours()).toBe(0), e(i.getDate()).toBe(15);
73
+ }), o('should handle "no limit"', () => {
74
+ const a = t.DateRelative.ToDate("no limit", !0);
75
+ e(a.getFullYear()).toEqual(1822);
76
+ const l = t.DateRelative.ToDate("no limit", !1);
77
+ e(l.getFullYear()).toEqual(2222);
78
+ }), o("should handle relative days", () => {
79
+ const a = t.DateRelative.ToDate("20 day", !0);
80
+ e(a.getDate()).toBe(26), e(a.getMonth()).toBe(n.MAY), e(a.getFullYear()).toBe(2022);
81
+ const l = t.DateRelative.ToDate("20 day", !1);
82
+ e(l.getDate()).toBe(5), e(l.getMonth()).toBe(n.JULY), e(l.getFullYear()).toBe(2022);
83
+ }), o("should handle relative month", () => {
84
+ const a = t.DateRelative.ToDate("10 month", !0);
85
+ e(a.getDate()).toBe(15), e(a.getMonth()).toBe(n.AUGUST), e(a.getFullYear()).toBe(2021);
86
+ const l = t.DateRelative.ToDate("10 month", !1);
87
+ e(l.getDate()).toBe(15), e(l.getMonth()).toBe(n.APRIL), e(l.getFullYear()).toBe(2023);
88
+ }), o("should handle relative year", () => {
89
+ const a = t.DateRelative.ToDate("10 year", !0);
90
+ e(a.getDate()).toBe(15), e(a.getMonth()).toBe(n.JUNE), e(a.getFullYear()).toBe(2012);
91
+ const l = t.DateRelative.ToDate("10 year", !1);
92
+ e(l.getDate()).toBe(15), e(l.getMonth()).toBe(n.JUNE), e(l.getFullYear()).toBe(2032);
93
+ }), o("should handle specific date", () => {
94
+ const a = t.DateRelative.ToDate("20/01/2023 date", !0);
95
+ e(a.getDate()).toBe(20), e(a.getMonth()).toBe(n.JANUARY), e(a.getFullYear()).toBe(2023);
96
+ }), o("should return today date if specific date can not be parsed", () => {
97
+ const a = t.DateRelative.ToDate("invalid");
98
+ e(a.getDate()).toBe(15), e(a.getMonth()).toBe(n.JUNE), e(a.getFullYear()).toBe(2022);
99
+ });
100
+ }), r("Date", () => {
101
+ o("ToDateString", () => {
102
+ const a = new Date(2022, n.JANUARY, 5);
103
+ e(t.Date.ToDateString(a)).toBe("05/01/2022");
104
+ });
105
+ }), r("Answer", () => {
106
+ r("FromMultipleToArray", () => {
107
+ o('should return array of elements if separator is correct (", ")', () => {
108
+ e(t.Answer.FromMultipleToArray("a, b, c")).toEqual(["a", "b", "c"]);
109
+ }), o("should return string as single array element if string has no correct separator", () => {
110
+ e(t.Answer.FromMultipleToArray("a,b,c")).toEqual(["a,b,c"]), e(t.Answer.FromMultipleToArray("abc")).toEqual(["abc"]), e(t.Answer.FromMultipleToArray("")).toEqual([""]);
111
+ });
112
+ }), r("FromArrayToMultiple", () => {
113
+ o("should return joined string from array elements", () => {
114
+ e(t.Answer.FromArrayToMultiple(["a", "b", "c"])).toBe("a, b, c");
115
+ }), o("should return empty string for empty array", () => {
116
+ e(t.Answer.FromArrayToMultiple([])).toBe("");
117
+ });
118
+ });
119
+ });
120
+ });
121
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydGVyLnRlc3QuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9jb252ZXJ0ZXIvY29udmVydGVyLnRlc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWZ0ZXJFYWNoLCBiZWZvcmVFYWNoLCBkZXNjcmliZSwgZXhwZWN0LCBpdCwgdmkgfSBmcm9tICd2aXRlc3QnO1xuaW1wb3J0IHsgTU9OVEggfSBmcm9tICdAL2VudW1zJztcbmltcG9ydCB7IENvbnZlcnRlciB9IGZyb20gJ0AvdXRpbHMnO1xuXG5kZXNjcmliZSgnQ29udmVydGVyJywgKCkgPT4ge1xuICBkZXNjcmliZSgnbWFzaycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiBjb3JyZWN0IG1hc2sgZm9yIGRheSBwcmVjaXNpb24nLCAoKSA9PiB7XG4gICAgICBleHBlY3QoQ29udmVydGVyLm1hc2soJ2RheScpKS50b0VxdWFsKCdUVC9NTS9KSkpKJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBjb3JyZWN0IG1hc2sgZm9yIG1vbnRoIHByZWNpc2lvbicsICgpID0+IHtcbiAgICAgIGV4cGVjdChDb252ZXJ0ZXIubWFzaygnbW9udGgnKSkudG9FcXVhbCgnTU0vSkpKSicpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQm9vbGVhbicsICgpID0+IHtcbiAgICBpdCgnVG9Cb29sZWFuU3RyaW5nJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KENvbnZlcnRlci5Cb29sZWFuLlRvQm9vbGVhblN0cmluZyh0cnVlKSkudG9FcXVhbCgndHJ1ZScpO1xuICAgICAgZXhwZWN0KENvbnZlcnRlci5Cb29sZWFuLlRvQm9vbGVhblN0cmluZyhmYWxzZSkpLnRvRXF1YWwoJ2ZhbHNlJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnVG9Cb29sZWFuTnVtYmVyJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KENvbnZlcnRlci5Cb29sZWFuLlRvQm9vbGVhbk51bWJlcih0cnVlKSkudG9FcXVhbCgxKTtcbiAgICAgIGV4cGVjdChDb252ZXJ0ZXIuQm9vbGVhbi5Ub0Jvb2xlYW5OdW1iZXIoZmFsc2UpKS50b0VxdWFsKDApO1xuICAgIH0pO1xuXG4gICAgaXQoJ1RvQm9vbGVhbk51bWJlclN0cmluZycsICgpID0+IHtcbiAgICAgIGV4cGVjdChDb252ZXJ0ZXIuQm9vbGVhbi5Ub0Jvb2xlYW5OdW1iZXJTdHJpbmcodHJ1ZSkpLnRvRXF1YWwoJzEnKTtcbiAgICAgIGV4cGVjdChDb252ZXJ0ZXIuQm9vbGVhbi5Ub0Jvb2xlYW5OdW1iZXJTdHJpbmcoZmFsc2UpKS50b0VxdWFsKCcwJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdCb29sZWFuU3RyaW5nJywgKCkgPT4ge1xuICAgIGl0KCdUb0Jvb2xlYW4nLCAoKSA9PiB7XG4gICAgICBleHBlY3QoQ29udmVydGVyLkJvb2xlYW5TdHJpbmcuVG9Cb29sZWFuKCd0cnVlJykpLnRvQmUodHJ1ZSk7XG4gICAgICBleHBlY3QoQ29udmVydGVyLkJvb2xlYW5TdHJpbmcuVG9Cb29sZWFuKCdUcnVlJykpLnRvQmUodHJ1ZSk7XG4gICAgICBleHBlY3QoQ29udmVydGVyLkJvb2xlYW5TdHJpbmcuVG9Cb29sZWFuKCdmYWxzZScpKS50b0JlKGZhbHNlKTtcbiAgICAgIGV4cGVjdChDb252ZXJ0ZXIuQm9vbGVhblN0cmluZy5Ub0Jvb2xlYW4oJ0ZhbHNlJykpLnRvQmUoZmFsc2UpO1xuICAgICAgZXhwZWN0KENvbnZlcnRlci5Cb29sZWFuU3RyaW5nLlRvQm9vbGVhbigncmFuZG9tJykpLnRvQmUoZmFsc2UpO1xuICAgICAgZXhwZWN0KENvbnZlcnRlci5Cb29sZWFuU3RyaW5nLlRvQm9vbGVhbignJykpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgaXQoJ1RvQm9vbGVhbk51bWJlclN0cmluZycsICgpID0+IHtcbiAgICAgIGV4cGVjdChDb252ZXJ0ZXIuQm9vbGVhblN0cmluZy5Ub0Jvb2xlYW5OdW1iZXJTdHJpbmcoJ3RydWUnKSkudG9CZSgnMScpO1xuICAgICAgZXhwZWN0KENvbnZlcnRlci5Cb29sZWFuU3RyaW5nLlRvQm9vbGVhbk51bWJlclN0cmluZygnVHJ1ZScpKS50b0JlKCcxJyk7XG4gICAgICBleHBlY3QoQ29udmVydGVyLkJvb2xlYW5TdHJpbmcuVG9Cb29sZWFuTnVtYmVyU3RyaW5nKCdmYWxzZScpKS50b0JlKCcwJyk7XG4gICAgICBleHBlY3QoQ29udmVydGVyLkJvb2xlYW5TdHJpbmcuVG9Cb29sZWFuTnVtYmVyU3RyaW5nKCdGYWxzZScpKS50b0JlKCcwJyk7XG4gICAgICBleHBlY3QoQ29udmVydGVyLkJvb2xlYW5TdHJpbmcuVG9Cb29sZWFuTnVtYmVyU3RyaW5nKCdyYW5kb20nKSkudG9CZSgnMCcpO1xuICAgICAgZXhwZWN0KENvbnZlcnRlci5Cb29sZWFuU3RyaW5nLlRvQm9vbGVhbk51bWJlclN0cmluZygnJykpLnRvQmUoJzAnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0Jvb2xlYW5OdW1iZXInLCAoKSA9PiB7XG4gICAgaXQoJ1RvQm9vbGVhbicsICgpID0+IHtcbiAgICAgIGV4cGVjdChDb252ZXJ0ZXIuQm9vbGVhbk51bWJlci5Ub0Jvb2xlYW4oMSkpLnRvQmUodHJ1ZSk7XG4gICAgICBleHBlY3QoQ29udmVydGVyLkJvb2xlYW5OdW1iZXIuVG9Cb29sZWFuKDApKS50b0JlKGZhbHNlKTtcbiAgICAgIGV4cGVjdChDb252ZXJ0ZXIuQm9vbGVhbk51bWJlci5Ub0Jvb2xlYW4oNSkpLnRvQmUoZmFsc2UpO1xuICAgICAgZXhwZWN0KENvbnZlcnRlci5Cb29sZWFuTnVtYmVyLlRvQm9vbGVhbihOYU4pKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdUb0Jvb2xlYW5TdHJpbmcnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoQ29udmVydGVyLkJvb2xlYW5OdW1iZXIuVG9Cb29sZWFuU3RyaW5nKDEpKS50b0JlKCd0cnVlJyk7XG4gICAgICBleHBlY3QoQ29udmVydGVyLkJvb2xlYW5OdW1iZXIuVG9Cb29sZWFuU3RyaW5nKDApKS50b0JlKCdmYWxzZScpO1xuICAgICAgZXhwZWN0KENvbnZlcnRlci5Cb29sZWFuTnVtYmVyLlRvQm9vbGVhblN0cmluZyg1KSkudG9CZSgnZmFsc2UnKTtcbiAgICAgIGV4cGVjdChDb252ZXJ0ZXIuQm9vbGVhbk51bWJlci5Ub0Jvb2xlYW5TdHJpbmcoTmFOKSkudG9CZSgnZmFsc2UnKTtcbiAgICB9KTtcblxuICAgIGl0KCdUb0Jvb2xlYW5OdW1iZXJTdHJpbmcnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoQ29udmVydGVyLkJvb2xlYW5OdW1iZXIuVG9Cb29sZWFuTnVtYmVyU3RyaW5nKDEpKS50b0JlKCcxJyk7XG4gICAgICBleHBlY3QoQ29udmVydGVyLkJvb2xlYW5OdW1iZXIuVG9Cb29sZWFuTnVtYmVyU3RyaW5nKDApKS50b0JlKCcwJyk7XG4gICAgICBleHBlY3QoQ29udmVydGVyLkJvb2xlYW5OdW1iZXIuVG9Cb29sZWFuTnVtYmVyU3RyaW5nKDUpKS50b0JlKCcwJyk7XG4gICAgICBleHBlY3QoQ29udmVydGVyLkJvb2xlYW5OdW1iZXIuVG9Cb29sZWFuTnVtYmVyU3RyaW5nKE5hTikpLnRvQmUoJzAnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0RhdGVTdGluZycsICgpID0+IHtcbiAgICBkZXNjcmliZSgnVG9EYXRlJywgKCkgPT4ge1xuICAgICAgaXQoJ3Nob3VsZCBjb252ZXJ0IHZhbGlkIGRhdGUgc3RyaW5nIHRvIERhdGUgb2JqZWN0JywgKCkgPT4ge1xuICAgICAgICBjb25zdCBkYXRlU3RyID0gJzE1LzAxLzIwMjInO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBDb252ZXJ0ZXIuRGF0ZVN0aW5nLlRvRGF0ZShkYXRlU3RyKTtcbiAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZUluc3RhbmNlT2YoRGF0ZSk7XG4gICAgICAgIGV4cGVjdChyZXN1bHQ/LmdldERhdGUoKSkudG9FcXVhbCgxNSk7XG4gICAgICAgIGV4cGVjdChyZXN1bHQ/LmdldE1vbnRoKCkpLnRvRXF1YWwoTU9OVEguSkFOVUFSWSk7XG4gICAgICAgIGV4cGVjdChyZXN1bHQ/LmdldEZ1bGxZZWFyKCkpLnRvRXF1YWwoMjAyMik7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gbnVsbCBmb3IgaW52YWxpZCBkYXRlIHN0cmluZycsICgpID0+IHtcbiAgICAgICAgZXhwZWN0KENvbnZlcnRlci5EYXRlU3RpbmcuVG9EYXRlKCcyMDIyLzAxLzE1JykpLnRvQmVOdWxsKCk7XG4gICAgICAgIGV4cGVjdChDb252ZXJ0ZXIuRGF0ZVN0aW5nLlRvRGF0ZSgnMDEvMTUvMjAyMicpKS50b0JlTnVsbCgpO1xuICAgICAgICBleHBlY3QoQ29udmVydGVyLkRhdGVTdGluZy5Ub0RhdGUoJzMyLzAxLzIwMjInKSkudG9CZU51bGwoKTtcbiAgICAgICAgZXhwZWN0KENvbnZlcnRlci5EYXRlU3RpbmcuVG9EYXRlKCdpbnZhbGlkJykpLnRvQmVOdWxsKCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdUb0RhdGVTdHJpbmdVU0Zvcm1hdCcsICgpID0+IHtcbiAgICAgIGl0KCdzaG91bGQgcmVmb3JtYXQgZGF0ZSBzdHJpbmcnLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdChDb252ZXJ0ZXIuRGF0ZVN0aW5nLlRvRGF0ZVN0cmluZ1VTRm9ybWF0KCcxNS8wMS8yMDIyJykpLnRvRXF1YWwoJzIwMjIvMDEvMTUnKTtcbiAgICAgICAgZXhwZWN0KENvbnZlcnRlci5EYXRlU3RpbmcuVG9EYXRlU3RyaW5nVVNGb3JtYXQoJzMzLzQ0LzIyMjInKSkudG9FcXVhbCgnMjIyMi80NC8zMycpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnVG9OdW1iZXInLCAoKSA9PiB7XG4gICAgICBpdCgnc2hvdWxkIHJldHVybiB0aW1lc3RhbXAgZm9yIHZhbGlkIGRhdGUnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGVTdHIgPSAnMTUvMDEvMjAyMic7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IENvbnZlcnRlci5EYXRlU3RpbmcuVG9OdW1iZXIoZGF0ZVN0cik7XG4gICAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmVHcmVhdGVyVGhhbigwKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHJldHVybiAwIGZvciBpbnZhbGlkIGRhdGUnLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdChDb252ZXJ0ZXIuRGF0ZVN0aW5nLlRvTnVtYmVyKCcyMDIyLzAxLzE1JykpLnRvRXF1YWwoMCk7XG4gICAgICAgIGV4cGVjdChDb252ZXJ0ZXIuRGF0ZVN0aW5nLlRvTnVtYmVyKCcwMS8xNS8yMDIyJykpLnRvRXF1YWwoMCk7XG4gICAgICAgIGV4cGVjdChDb252ZXJ0ZXIuRGF0ZVN0aW5nLlRvTnVtYmVyKCczMi8wMS8yMDIyJykpLnRvRXF1YWwoMCk7XG4gICAgICAgIGV4cGVjdChDb252ZXJ0ZXIuRGF0ZVN0aW5nLlRvTnVtYmVyKCdpbnZhbGlkJykpLnRvRXF1YWwoMCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdUb01vbnRoU3R5bGUnLCAoKSA9PiB7XG4gICAgICBpdCgnc2hvdWxkIHJldHVybiBtb250aCBhbmQgeWVhcicsICgpID0+IHtcbiAgICAgICAgZXhwZWN0KENvbnZlcnRlci5EYXRlU3RpbmcuVG9Nb250aFN0eWxlKCcxNS8wMS8yMDIyJykpLnRvRXF1YWwoJzAxLzIwMjInKTtcbiAgICAgICAgLy8gVE9ETzogTmV4dCAzIGNhc2VzIGFyZSBpbmxvZ2ljLiBUaGlzIGlzIGEgcGxhY2UgZm9yIGZ1dHVyZSB1cGRhdGVzXG4gICAgICAgIGV4cGVjdChDb252ZXJ0ZXIuRGF0ZVN0aW5nLlRvTW9udGhTdHlsZSgnMjAyMi8wMS8xNScpKS50b0VxdWFsKCcwMS8xNScpO1xuICAgICAgICBleHBlY3QoQ29udmVydGVyLkRhdGVTdGluZy5Ub01vbnRoU3R5bGUoJzAxLzE1LzIwMjInKSkudG9FcXVhbCgnMTUvMjAyMicpO1xuICAgICAgICBleHBlY3QoQ29udmVydGVyLkRhdGVTdGluZy5Ub01vbnRoU3R5bGUoJzMyLzAxLzIwMjInKSkudG9FcXVhbCgnMDEvMjAyMicpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIGhhbmRsZSBlbXB0eSBzdHJpbmcnLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdChDb252ZXJ0ZXIuRGF0ZVN0aW5nLlRvTW9udGhTdHlsZSgnJykpLnRvRXF1YWwoJycpO1xuICAgICAgICBleHBlY3QoQ29udmVydGVyLkRhdGVTdGluZy5Ub01vbnRoU3R5bGUoJ2ludmFsaWQnKSkudG9FcXVhbCgnJyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdUb0RheVN0eWxlJywgKCkgPT4ge1xuICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gZmlyc3QgZGF5IG9mIG1vbnRoJywgKCkgPT4ge1xuICAgICAgICBleHBlY3QoQ29udmVydGVyLkRhdGVTdGluZy5Ub0RheVN0eWxlKCcwMS8yMDIyJykpLnRvRXF1YWwoJzAxLzAxLzIwMjInKTtcbiAgICAgICAgLy8gVE9ETzogTmV4dCAzIGNhc2VzIGFyZSBpbmxvZ2ljLiBTYW1lIGFzIHdpdGggVG9Nb250aFN0eWxlLiBUaGlzIGlzIGEgcGxhY2UgZm9yIGZ1dHVyZSB1cGRhdGVzXG4gICAgICAgIGV4cGVjdChDb252ZXJ0ZXIuRGF0ZVN0aW5nLlRvRGF5U3R5bGUoJzIwMjIvMDEvMTUnKSkudG9FcXVhbCgnMDEvMjAyMi8wMScpO1xuICAgICAgICBleHBlY3QoQ29udmVydGVyLkRhdGVTdGluZy5Ub0RheVN0eWxlKCcwMS8xNS8yMDIyJykpLnRvRXF1YWwoJzAxLzAxLzE1Jyk7XG4gICAgICAgIGV4cGVjdChDb252ZXJ0ZXIuRGF0ZVN0aW5nLlRvRGF5U3R5bGUoJzMyLzAxLzIwMjInKSkudG9FcXVhbCgnMDEvMzIvMDEnKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBoYW5kbGUgZW1wdHkgc3RyaW5nJywgKCkgPT4ge1xuICAgICAgICBleHBlY3QoQ29udmVydGVyLkRhdGVTdGluZy5Ub0RheVN0eWxlKCcnKSkudG9CZSgnJyk7XG4gICAgICAgIGV4cGVjdChDb252ZXJ0ZXIuRGF0ZVN0aW5nLlRvRGF5U3R5bGUoJ2ludmFsaWQnKSkudG9CZSgnJyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0RhdGVSZWxhdGl2ZScsICgpID0+IHtcbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgIHZpLnVzZUZha2VUaW1lcnMoKTtcbiAgICAgIHZpLnNldFN5c3RlbVRpbWUobmV3IERhdGUoMjAyMiwgTU9OVEguSlVORSwgMTUsIDEyLCAwLCAwKSk7XG4gICAgfSk7XG5cbiAgICBhZnRlckVhY2goKCkgPT4ge1xuICAgICAgdmkudXNlUmVhbFRpbWVycygpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgXCJ0b2RheVwiJywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0U3RhcnQgPSBDb252ZXJ0ZXIuRGF0ZVJlbGF0aXZlLlRvRGF0ZSgndG9kYXknLCB0cnVlKTtcbiAgICAgIGNvbnN0IHJlc3VsdEVuZCA9IENvbnZlcnRlci5EYXRlUmVsYXRpdmUuVG9EYXRlKCd0b2RheScsIGZhbHNlKTtcbiAgICAgIGNvbnN0IHJlc3VsdERlZmF1bHQgPSBDb252ZXJ0ZXIuRGF0ZVJlbGF0aXZlLlRvRGF0ZSgndG9kYXknKTtcbiAgICAgIGV4cGVjdChyZXN1bHRTdGFydC5nZXRIb3VycygpKS50b0JlKDApO1xuICAgICAgZXhwZWN0KHJlc3VsdFN0YXJ0LmdldERhdGUoKSkudG9CZSgxNSk7XG4gICAgICBleHBlY3QocmVzdWx0RW5kLmdldEhvdXJzKCkpLnRvQmUoMjMpO1xuICAgICAgZXhwZWN0KHJlc3VsdEVuZC5nZXREYXRlKCkpLnRvQmUoMTUpO1xuICAgICAgZXhwZWN0KHJlc3VsdERlZmF1bHQuZ2V0SG91cnMoKSkudG9CZSgwKTtcbiAgICAgIGV4cGVjdChyZXN1bHREZWZhdWx0LmdldERhdGUoKSkudG9CZSgxNSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBcIm5vIGxpbWl0XCInLCAoKSA9PiB7XG4gICAgICBjb25zdCBzdGFydCA9IENvbnZlcnRlci5EYXRlUmVsYXRpdmUuVG9EYXRlKCdubyBsaW1pdCcsIHRydWUpO1xuICAgICAgZXhwZWN0KHN0YXJ0LmdldEZ1bGxZZWFyKCkpLnRvRXF1YWwoMTgyMik7XG5cbiAgICAgIGNvbnN0IGVuZCA9IENvbnZlcnRlci5EYXRlUmVsYXRpdmUuVG9EYXRlKCdubyBsaW1pdCcsIGZhbHNlKTtcbiAgICAgIGV4cGVjdChlbmQuZ2V0RnVsbFllYXIoKSkudG9FcXVhbCgyMjIyKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIHJlbGF0aXZlIGRheXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzdGFydCA9IENvbnZlcnRlci5EYXRlUmVsYXRpdmUuVG9EYXRlKCcyMCBkYXknLCB0cnVlKTtcbiAgICAgIGV4cGVjdChzdGFydC5nZXREYXRlKCkpLnRvQmUoMjYpO1xuICAgICAgZXhwZWN0KHN0YXJ0LmdldE1vbnRoKCkpLnRvQmUoTU9OVEguTUFZKTtcbiAgICAgIGV4cGVjdChzdGFydC5nZXRGdWxsWWVhcigpKS50b0JlKDIwMjIpO1xuXG4gICAgICBjb25zdCBlbmQgPSBDb252ZXJ0ZXIuRGF0ZVJlbGF0aXZlLlRvRGF0ZSgnMjAgZGF5JywgZmFsc2UpO1xuICAgICAgZXhwZWN0KGVuZC5nZXREYXRlKCkpLnRvQmUoNSk7XG4gICAgICBleHBlY3QoZW5kLmdldE1vbnRoKCkpLnRvQmUoTU9OVEguSlVMWSk7XG4gICAgICBleHBlY3QoZW5kLmdldEZ1bGxZZWFyKCkpLnRvQmUoMjAyMik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSByZWxhdGl2ZSBtb250aCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gQ29udmVydGVyLkRhdGVSZWxhdGl2ZS5Ub0RhdGUoJzEwIG1vbnRoJywgdHJ1ZSk7XG4gICAgICBleHBlY3Qoc3RhcnQuZ2V0RGF0ZSgpKS50b0JlKDE1KTtcbiAgICAgIGV4cGVjdChzdGFydC5nZXRNb250aCgpKS50b0JlKE1PTlRILkFVR1VTVCk7XG4gICAgICBleHBlY3Qoc3RhcnQuZ2V0RnVsbFllYXIoKSkudG9CZSgyMDIxKTtcblxuICAgICAgY29uc3QgZW5kID0gQ29udmVydGVyLkRhdGVSZWxhdGl2ZS5Ub0RhdGUoJzEwIG1vbnRoJywgZmFsc2UpO1xuICAgICAgZXhwZWN0KGVuZC5nZXREYXRlKCkpLnRvQmUoMTUpO1xuICAgICAgZXhwZWN0KGVuZC5nZXRNb250aCgpKS50b0JlKE1PTlRILkFQUklMKTtcbiAgICAgIGV4cGVjdChlbmQuZ2V0RnVsbFllYXIoKSkudG9CZSgyMDIzKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIHJlbGF0aXZlIHllYXInLCAoKSA9PiB7XG4gICAgICBjb25zdCBzdGFydCA9IENvbnZlcnRlci5EYXRlUmVsYXRpdmUuVG9EYXRlKCcxMCB5ZWFyJywgdHJ1ZSk7XG4gICAgICBleHBlY3Qoc3RhcnQuZ2V0RGF0ZSgpKS50b0JlKDE1KTtcbiAgICAgIGV4cGVjdChzdGFydC5nZXRNb250aCgpKS50b0JlKE1PTlRILkpVTkUpO1xuICAgICAgZXhwZWN0KHN0YXJ0LmdldEZ1bGxZZWFyKCkpLnRvQmUoMjAxMik7XG5cbiAgICAgIGNvbnN0IGVuZCA9IENvbnZlcnRlci5EYXRlUmVsYXRpdmUuVG9EYXRlKCcxMCB5ZWFyJywgZmFsc2UpO1xuICAgICAgZXhwZWN0KGVuZC5nZXREYXRlKCkpLnRvQmUoMTUpO1xuICAgICAgZXhwZWN0KGVuZC5nZXRNb250aCgpKS50b0JlKE1PTlRILkpVTkUpO1xuICAgICAgZXhwZWN0KGVuZC5nZXRGdWxsWWVhcigpKS50b0JlKDIwMzIpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgc3BlY2lmaWMgZGF0ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IENvbnZlcnRlci5EYXRlUmVsYXRpdmUuVG9EYXRlKCcyMC8wMS8yMDIzIGRhdGUnLCB0cnVlKTtcbiAgICAgIGV4cGVjdChyZXN1bHQuZ2V0RGF0ZSgpKS50b0JlKDIwKTtcbiAgICAgIGV4cGVjdChyZXN1bHQuZ2V0TW9udGgoKSkudG9CZShNT05USC5KQU5VQVJZKTtcbiAgICAgIGV4cGVjdChyZXN1bHQuZ2V0RnVsbFllYXIoKSkudG9CZSgyMDIzKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRvZGF5IGRhdGUgaWYgc3BlY2lmaWMgZGF0ZSBjYW4gbm90IGJlIHBhcnNlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IENvbnZlcnRlci5EYXRlUmVsYXRpdmUuVG9EYXRlKCdpbnZhbGlkJyk7XG4gICAgICBleHBlY3QocmVzdWx0LmdldERhdGUoKSkudG9CZSgxNSk7XG4gICAgICBleHBlY3QocmVzdWx0LmdldE1vbnRoKCkpLnRvQmUoTU9OVEguSlVORSk7XG4gICAgICBleHBlY3QocmVzdWx0LmdldEZ1bGxZZWFyKCkpLnRvQmUoMjAyMik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdEYXRlJywgKCkgPT4ge1xuICAgIGl0KCdUb0RhdGVTdHJpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoMjAyMiwgTU9OVEguSkFOVUFSWSwgNSk7XG4gICAgICBleHBlY3QoQ29udmVydGVyLkRhdGUuVG9EYXRlU3RyaW5nKGRhdGUpKS50b0JlKCcwNS8wMS8yMDIyJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdBbnN3ZXInLCAoKSA9PiB7XG4gICAgZGVzY3JpYmUoJ0Zyb21NdWx0aXBsZVRvQXJyYXknLCAoKSA9PiB7XG4gICAgICBpdCgnc2hvdWxkIHJldHVybiBhcnJheSBvZiBlbGVtZW50cyBpZiBzZXBhcmF0b3IgaXMgY29ycmVjdCAoXCIsIFwiKScsICgpID0+IHtcbiAgICAgICAgZXhwZWN0KENvbnZlcnRlci5BbnN3ZXIuRnJvbU11bHRpcGxlVG9BcnJheSgnYSwgYiwgYycpKS50b0VxdWFsKFsnYScsICdiJywgJ2MnXSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gc3RyaW5nIGFzIHNpbmdsZSBhcnJheSBlbGVtZW50IGlmIHN0cmluZyBoYXMgbm8gY29ycmVjdCBzZXBhcmF0b3InLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdChDb252ZXJ0ZXIuQW5zd2VyLkZyb21NdWx0aXBsZVRvQXJyYXkoJ2EsYixjJykpLnRvRXF1YWwoWydhLGIsYyddKTtcbiAgICAgICAgZXhwZWN0KENvbnZlcnRlci5BbnN3ZXIuRnJvbU11bHRpcGxlVG9BcnJheSgnYWJjJykpLnRvRXF1YWwoWydhYmMnXSk7XG4gICAgICAgIGV4cGVjdChDb252ZXJ0ZXIuQW5zd2VyLkZyb21NdWx0aXBsZVRvQXJyYXkoJycpKS50b0VxdWFsKFsnJ10pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnRnJvbUFycmF5VG9NdWx0aXBsZScsICgpID0+IHtcbiAgICAgIGl0KCdzaG91bGQgcmV0dXJuIGpvaW5lZCBzdHJpbmcgZnJvbSBhcnJheSBlbGVtZW50cycsICgpID0+IHtcbiAgICAgICAgZXhwZWN0KENvbnZlcnRlci5BbnN3ZXIuRnJvbUFycmF5VG9NdWx0aXBsZShbJ2EnLCAnYicsICdjJ10pKS50b0JlKCdhLCBiLCBjJyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gZW1wdHkgc3RyaW5nIGZvciBlbXB0eSBhcnJheScsICgpID0+IHtcbiAgICAgICAgZXhwZWN0KENvbnZlcnRlci5BbnN3ZXIuRnJvbUFycmF5VG9NdWx0aXBsZShbXSkpLnRvQmUoJycpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibmFtZXMiOlsiZGVzY3JpYmUiLCJpdCIsImV4cGVjdCIsIkNvbnZlcnRlciIsInJlc3VsdCIsIk1PTlRIIiwiYmVmb3JlRWFjaCIsInZpIiwiYWZ0ZXJFYWNoIiwicmVzdWx0U3RhcnQiLCJyZXN1bHRFbmQiLCJyZXN1bHREZWZhdWx0Iiwic3RhcnQiLCJlbmQiLCJkYXRlIl0sIm1hcHBpbmdzIjoiOzs7QUFJQUEsRUFBUyxhQUFhLE1BQU07QUFDMUIsRUFBQUEsRUFBUyxRQUFRLE1BQU07QUFDckIsSUFBQUMsRUFBRyxnREFBZ0QsTUFBTTtBQUN2REMsTUFBQUEsRUFBT0MsRUFBVSxLQUFLLEtBQUssQ0FBQyxFQUFFLFFBQVEsWUFBWTtBQUFBLElBQ3BELENBQUMsR0FFREYsRUFBRyxrREFBa0QsTUFBTTtBQUN6REMsTUFBQUEsRUFBT0MsRUFBVSxLQUFLLE9BQU8sQ0FBQyxFQUFFLFFBQVEsU0FBUztBQUFBLElBQ25ELENBQUM7QUFBQSxFQUNILENBQUMsR0FFREgsRUFBUyxXQUFXLE1BQU07QUFDeEIsSUFBQUMsRUFBRyxtQkFBbUIsTUFBTTtBQUMxQkMsTUFBQUEsRUFBT0MsRUFBVSxRQUFRLGdCQUFnQixFQUFJLENBQUMsRUFBRSxRQUFRLE1BQU0sR0FDOURELEVBQU9DLEVBQVUsUUFBUSxnQkFBZ0IsRUFBSyxDQUFDLEVBQUUsUUFBUSxPQUFPO0FBQUEsSUFDbEUsQ0FBQyxHQUVERixFQUFHLG1CQUFtQixNQUFNO0FBQzFCQyxNQUFBQSxFQUFPQyxFQUFVLFFBQVEsZ0JBQWdCLEVBQUksQ0FBQyxFQUFFLFFBQVEsQ0FBQyxHQUN6REQsRUFBT0MsRUFBVSxRQUFRLGdCQUFnQixFQUFLLENBQUMsRUFBRSxRQUFRLENBQUM7QUFBQSxJQUM1RCxDQUFDLEdBRURGLEVBQUcseUJBQXlCLE1BQU07QUFDaENDLE1BQUFBLEVBQU9DLEVBQVUsUUFBUSxzQkFBc0IsRUFBSSxDQUFDLEVBQUUsUUFBUSxHQUFHLEdBQ2pFRCxFQUFPQyxFQUFVLFFBQVEsc0JBQXNCLEVBQUssQ0FBQyxFQUFFLFFBQVEsR0FBRztBQUFBLElBQ3BFLENBQUM7QUFBQSxFQUNILENBQUMs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
@@ -0,0 +1 @@
1
+ export { Converter } from './converter';
@@ -0,0 +1,5 @@
1
+ import { Converter as o } from "./converter.js";
2
+ export {
3
+ o as Converter
4
+ };
5
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOyJ9
@@ -0,0 +1,2 @@
1
+ export { Converter } from './converter';
2
+ export { Time } from './time';
@@ -0,0 +1,7 @@
1
+ import { Converter as o } from "./converter/converter.js";
2
+ import { Time as t } from "./time/time.js";
3
+ export {
4
+ o as Converter,
5
+ t as Time
6
+ };
7
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzsifQ==
@@ -0,0 +1 @@
1
+ export { Time } from './time';
@@ -0,0 +1,5 @@
1
+ import { Time as o } from "./time.js";
2
+ export {
3
+ o as Time
4
+ };
5
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOyJ9
@@ -0,0 +1,7 @@
1
+ type TimeFormat = 'utc' | 'local';
2
+ export declare abstract class Time {
3
+ static date(day: number, month: number, year: number, endDayTime?: boolean): Date;
4
+ static startOfDay(date: Date, timeFormat?: TimeFormat): Date;
5
+ static endOfDay(date: Date, timeFormat?: TimeFormat): Date;
6
+ }
7
+ export {};
@@ -0,0 +1,34 @@
1
+ class c {
2
+ static date(e, a, t, r = !1) {
3
+ const s = /* @__PURE__ */ new Date();
4
+ return s.setUTCFullYear(t), s.setUTCMonth(a), s.setUTCDate(e), r ? c.endOfDay(s, "utc") : c.startOfDay(s, "utc");
5
+ }
6
+ static startOfDay(e, a = "local") {
7
+ const t = new Date(e);
8
+ switch (a) {
9
+ case "utc":
10
+ t.setUTCHours(0, 0, 0, 0);
11
+ break;
12
+ case "local":
13
+ t.setHours(0, 0, 0, 0);
14
+ break;
15
+ }
16
+ return t;
17
+ }
18
+ static endOfDay(e, a = "local") {
19
+ const t = new Date(e);
20
+ switch (a) {
21
+ case "utc":
22
+ t.setUTCHours(23, 59, 59, 0);
23
+ break;
24
+ case "local":
25
+ t.setHours(23, 59, 59, 0);
26
+ break;
27
+ }
28
+ return t;
29
+ }
30
+ }
31
+ export {
32
+ c as Time
33
+ };
34
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL3RpbWUvdGltZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJ0eXBlIFRpbWVGb3JtYXQgPSAndXRjJyB8ICdsb2NhbCc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUaW1lIHtcbiAgcHVibGljIHN0YXRpYyBkYXRlKGRheTogbnVtYmVyLCBtb250aDogbnVtYmVyLCB5ZWFyOiBudW1iZXIsIGVuZERheVRpbWU6IGJvb2xlYW4gPSBmYWxzZSk6IERhdGUge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoeWVhcik7XG4gICAgZGF0ZS5zZXRVVENNb250aChtb250aCk7XG4gICAgZGF0ZS5zZXRVVENEYXRlKGRheSk7XG4gICAgcmV0dXJuIGVuZERheVRpbWUgPyBUaW1lLmVuZE9mRGF5KGRhdGUsICd1dGMnKSA6IFRpbWUuc3RhcnRPZkRheShkYXRlLCAndXRjJyk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHN0YXJ0T2ZEYXkoZGF0ZTogRGF0ZSwgdGltZUZvcm1hdDogVGltZUZvcm1hdCA9ICdsb2NhbCcpOiBEYXRlIHtcbiAgICBjb25zdCB0ZW1wRGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xuICAgIHN3aXRjaCAodGltZUZvcm1hdCkge1xuICAgICAgY2FzZSAndXRjJzpcbiAgICAgICAgdGVtcERhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbG9jYWwnOlxuICAgICAgICB0ZW1wRGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiB0ZW1wRGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZW5kT2ZEYXkoZGF0ZTogRGF0ZSwgdGltZUZvcm1hdDogVGltZUZvcm1hdCA9ICdsb2NhbCcpOiBEYXRlIHtcbiAgICBjb25zdCB0ZW1wRGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xuICAgIHN3aXRjaCAodGltZUZvcm1hdCkge1xuICAgICAgY2FzZSAndXRjJzpcbiAgICAgICAgdGVtcERhdGUuc2V0VVRDSG91cnMoMjMsIDU5LCA1OSwgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbG9jYWwnOlxuICAgICAgICB0ZW1wRGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiB0ZW1wRGF0ZTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIlRpbWUiLCJkYXkiLCJtb250aCIsInllYXIiLCJlbmREYXlUaW1lIiwiZGF0ZSIsInRpbWVGb3JtYXQiLCJ0ZW1wRGF0ZSJdLCJtYXBwaW5ncyI6IkFBRU8sTUFBZUEsRUFBSztBQUFBLEVBQ3pCLE9BQWMsS0FBS0MsR0FBYUMsR0FBZUMsR0FBY0MsSUFBc0IsSUFBYTtBQUM5RixVQUFNQyx3QkFBVyxLQUFBO0FBQ2pCLFdBQUFBLEVBQUssZUFBZUYsQ0FBSSxHQUN4QkUsRUFBSyxZQUFZSCxDQUFLLEdBQ3RCRyxFQUFLLFdBQVdKLENBQUcsR0FDWkcsSUFBYUosRUFBSyxTQUFTSyxHQUFNLEtBQUssSUFBSUwsRUFBSyxXQUFXSyxHQUFNLEtBQUs7QUFBQSxFQUM5RTtBQUFBLEVBRUEsT0FBYyxXQUFXQSxHQUFZQyxJQUF5QixTQUFlO0FBQzNFLFVBQU1DLElBQVcsSUFBSSxLQUFLRixDQUFJO0FBQzlCLFlBQVFDLEdBQUE7QUFBQSxNQUNOLEtBQUs7QUFDSCxRQUFBQyxFQUFTLFlBQVksR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUMvQjtBQUFBLE1BQ0YsS0FBSztBQUNILFFBQUFBLEVBQVMsU0FBUyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQzVCO0FBQUEsSUFBQTtBQUVKLFdBQU9BO0FBQUEsRUFDVDtBQUFBLEVBRUEsT0FBYyxTQUFTRixHQUFZQyxJQUF5QixTQUFlO0FBQ3pFLFVBQU1DLElBQVcsSUFBSSxLQUFLRixDQUFJO0FBQzlCLFlBQVFDLEdBQUE7QUFBQSxNQUNOLEtBQUs7QUFDSCxRQUFBQyxFQUFTLFlBQVksSUFBSSxJQUFJLElBQUksQ0FBQztBQUNsQztBQUFBLE1BQ0YsS0FBSztBQUNILFFBQUFBLEVBQVMsU0FBUyxJQUFJLElBQUksSUFBSSxDQUFDO0FBQy9CO0FBQUEsSUFBQTtBQUVKLFdBQU9BO0FBQUEsRUFDVDtBQUNGOyJ9
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,45 @@
1
+ import { MONTH as l } from "../../enums.js";
2
+ import { Time as n } from "./time.js";
3
+ import { d as r, i, g as t } from "../../vi.2VT5v0um-CyasTEXm.js";
4
+ r("Time", () => {
5
+ r("date", () => {
6
+ i("should create a date object at the start of the day (UTC) when endDayTime is false or not provided", () => {
7
+ const e = l.JANUARY, s = 2022, a = n.date(10, e, s), d = n.date(10, e, s, !1);
8
+ t([a.getUTCDate(), d.getUTCDate()]).toEqual([10, 10]), t([a.getUTCMonth(), d.getUTCMonth()]).toEqual([e, e]), t([a.getUTCFullYear(), d.getUTCFullYear()]).toEqual([s, s]), t([a.getUTCHours(), d.getUTCHours()]).toEqual([0, 0]), t([a.getUTCMinutes(), d.getUTCMinutes()]).toEqual([0, 0]), t([a.getUTCSeconds(), d.getUTCSeconds()]).toEqual([0, 0]), t([a.getUTCMilliseconds(), d.getUTCMilliseconds()]).toEqual([0, 0]);
9
+ }), i("should create a date object at the end of the day (UTC) when endDayTime is true", () => {
10
+ const e = l.JANUARY, s = 2022, a = n.date(10, e, s, !0);
11
+ t(a.getUTCDate()).toBe(10), t(a.getUTCMonth()).toBe(e), t(a.getUTCFullYear()).toBe(s), t(a.getUTCHours()).toBe(23), t(a.getUTCMinutes()).toBe(59), t(a.getUTCSeconds()).toBe(59), t(a.getUTCMilliseconds()).toBe(0);
12
+ });
13
+ }), r("startOfDay", () => {
14
+ i('should return the start of the day in UTC time when timeFormat is "utc" or not provided', () => {
15
+ const o = /* @__PURE__ */ new Date();
16
+ o.setUTCHours(12, 30, 30, 500);
17
+ const e = n.startOfDay(o, "utc");
18
+ t(e.getUTCHours()).toBe(0), t(e.getUTCMinutes()).toBe(0), t(e.getUTCMinutes()).toBe(0), t(e.getUTCMilliseconds()).toBe(0);
19
+ }), i('should return the start of the day in local time when timeFormat is "local" or not provided', () => {
20
+ const o = /* @__PURE__ */ new Date();
21
+ o.setUTCHours(12, 30, 30, 500);
22
+ const e = n.startOfDay(o, "local"), s = n.startOfDay(o);
23
+ t([e.getHours(), s.getHours()]).toEqual([0, 0]), t([e.getMinutes(), s.getMinutes()]).toEqual([0, 0]), t([e.getSeconds(), s.getSeconds()]).toEqual([0, 0]), t([e.getMilliseconds(), s.getMilliseconds()]).toEqual([0, 0]);
24
+ }), i("should not modify the original date object", () => {
25
+ const o = /* @__PURE__ */ new Date(), e = o.getTime();
26
+ n.startOfDay(o), t(o.getTime()).toBe(e);
27
+ });
28
+ }), r("endOfDay", () => {
29
+ i('should return the end of the day in UTC time when timeFormat is "utc" or not provided', () => {
30
+ const o = /* @__PURE__ */ new Date();
31
+ o.setUTCHours(12, 30, 30, 500);
32
+ const e = n.endOfDay(o, "utc");
33
+ t(e.getUTCHours()).toBe(23), t(e.getUTCMinutes()).toBe(59), t(e.getUTCMinutes()).toBe(59), t(e.getUTCMilliseconds()).toBe(0);
34
+ }), i('should return the end of the day in local time when timeFormat is "local" or not provided', () => {
35
+ const o = /* @__PURE__ */ new Date();
36
+ o.setUTCHours(12, 30, 30, 500);
37
+ const e = n.endOfDay(o, "local"), s = n.endOfDay(o);
38
+ t([e.getHours(), s.getHours()]).toEqual([23, 23]), t([e.getMinutes(), s.getMinutes()]).toEqual([59, 59]), t([e.getSeconds(), s.getSeconds()]).toEqual([59, 59]), t([e.getMilliseconds(), s.getMilliseconds()]).toEqual([0, 0]);
39
+ }), i("should not modify the original date object", () => {
40
+ const o = /* @__PURE__ */ new Date(), e = o.getTime();
41
+ n.endOfDay(o), t(o.getTime()).toBe(e);
42
+ });
43
+ });
44
+ });
45
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS50ZXN0LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvdGltZS90aW1lLnRlc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVzY3JpYmUsIGV4cGVjdCwgaXQgfSBmcm9tICd2aXRlc3QnO1xuaW1wb3J0IHsgTU9OVEggfSBmcm9tICdAL2VudW1zJztcbmltcG9ydCB7IFRpbWUgfSBmcm9tICdAL3V0aWxzJztcblxuZGVzY3JpYmUoJ1RpbWUnLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCdkYXRlJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgY3JlYXRlIGEgZGF0ZSBvYmplY3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBkYXkgKFVUQykgd2hlbiBlbmREYXlUaW1lIGlzIGZhbHNlIG9yIG5vdCBwcm92aWRlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGRheSA9IDEwO1xuICAgICAgY29uc3QgbW9udGggPSBNT05USC5KQU5VQVJZO1xuICAgICAgY29uc3QgeWVhciA9IDIwMjI7XG4gICAgICBjb25zdCBkYXRlMSA9IFRpbWUuZGF0ZShkYXksIG1vbnRoLCB5ZWFyKTtcbiAgICAgIGNvbnN0IGRhdGUyID0gVGltZS5kYXRlKGRheSwgbW9udGgsIHllYXIsIGZhbHNlKTtcblxuICAgICAgZXhwZWN0KFtkYXRlMS5nZXRVVENEYXRlKCksIGRhdGUyLmdldFVUQ0RhdGUoKV0pLnRvRXF1YWwoW2RheSwgZGF5XSk7XG4gICAgICBleHBlY3QoW2RhdGUxLmdldFVUQ01vbnRoKCksIGRhdGUyLmdldFVUQ01vbnRoKCldKS50b0VxdWFsKFttb250aCwgbW9udGhdKTtcbiAgICAgIGV4cGVjdChbZGF0ZTEuZ2V0VVRDRnVsbFllYXIoKSwgZGF0ZTIuZ2V0VVRDRnVsbFllYXIoKV0pLnRvRXF1YWwoW3llYXIsIHllYXJdKTtcbiAgICAgIGV4cGVjdChbZGF0ZTEuZ2V0VVRDSG91cnMoKSwgZGF0ZTIuZ2V0VVRDSG91cnMoKV0pLnRvRXF1YWwoWzAsIDBdKTtcbiAgICAgIGV4cGVjdChbZGF0ZTEuZ2V0VVRDTWludXRlcygpLCBkYXRlMi5nZXRVVENNaW51dGVzKCldKS50b0VxdWFsKFswLCAwXSk7XG4gICAgICBleHBlY3QoW2RhdGUxLmdldFVUQ1NlY29uZHMoKSwgZGF0ZTIuZ2V0VVRDU2Vjb25kcygpXSkudG9FcXVhbChbMCwgMF0pO1xuICAgICAgZXhwZWN0KFtkYXRlMS5nZXRVVENNaWxsaXNlY29uZHMoKSwgZGF0ZTIuZ2V0VVRDTWlsbGlzZWNvbmRzKCldKS50b0VxdWFsKFswLCAwXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNyZWF0ZSBhIGRhdGUgb2JqZWN0IGF0IHRoZSBlbmQgb2YgdGhlIGRheSAoVVRDKSB3aGVuIGVuZERheVRpbWUgaXMgdHJ1ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IGRheSA9IDEwO1xuICAgICAgY29uc3QgbW9udGggPSBNT05USC5KQU5VQVJZO1xuICAgICAgY29uc3QgeWVhciA9IDIwMjI7XG4gICAgICBjb25zdCBkYXRlID0gVGltZS5kYXRlKGRheSwgbW9udGgsIHllYXIsIHRydWUpO1xuXG4gICAgICBleHBlY3QoZGF0ZS5nZXRVVENEYXRlKCkpLnRvQmUoZGF5KTtcbiAgICAgIGV4cGVjdChkYXRlLmdldFVUQ01vbnRoKCkpLnRvQmUobW9udGgpO1xuICAgICAgZXhwZWN0KGRhdGUuZ2V0VVRDRnVsbFllYXIoKSkudG9CZSh5ZWFyKTtcbiAgICAgIGV4cGVjdChkYXRlLmdldFVUQ0hvdXJzKCkpLnRvQmUoMjMpO1xuICAgICAgZXhwZWN0KGRhdGUuZ2V0VVRDTWludXRlcygpKS50b0JlKDU5KTtcbiAgICAgIGV4cGVjdChkYXRlLmdldFVUQ1NlY29uZHMoKSkudG9CZSg1OSk7XG4gICAgICBleHBlY3QoZGF0ZS5nZXRVVENNaWxsaXNlY29uZHMoKSkudG9CZSgwKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3N0YXJ0T2ZEYXknLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIHN0YXJ0IG9mIHRoZSBkYXkgaW4gVVRDIHRpbWUgd2hlbiB0aW1lRm9ybWF0IGlzIFwidXRjXCIgb3Igbm90IHByb3ZpZGVkJywgKCkgPT4ge1xuICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICAgIG5vdy5zZXRVVENIb3VycygxMiwgMzAsIDMwLCA1MDApO1xuICAgICAgY29uc3Qgc3RhcnQgPSBUaW1lLnN0YXJ0T2ZEYXkobm93LCAndXRjJyk7XG5cbiAgICAgIGV4cGVjdChzdGFydC5nZXRVVENIb3VycygpKS50b0JlKDApO1xuICAgICAgZXhwZWN0KHN0YXJ0LmdldFVUQ01pbnV0ZXMoKSkudG9CZSgwKTtcbiAgICAgIGV4cGVjdChzdGFydC5nZXRVVENNaW51dGVzKCkpLnRvQmUoMCk7XG4gICAgICBleHBlY3Qoc3RhcnQuZ2V0VVRDTWlsbGlzZWNvbmRzKCkpLnRvQmUoMCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgc3RhcnQgb2YgdGhlIGRheSBpbiBsb2NhbCB0aW1lIHdoZW4gdGltZUZvcm1hdCBpcyBcImxvY2FsXCIgb3Igbm90IHByb3ZpZGVkJywgKCkgPT4ge1xuICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICAgIG5vdy5zZXRVVENIb3VycygxMiwgMzAsIDMwLCA1MDApO1xuICAgICAgY29uc3Qgc3RhcnQxID0gVGltZS5zdGFydE9mRGF5KG5vdywgJ2xvY2FsJyk7XG4gICAgICBjb25zdCBzdGFydDIgPSBUaW1lLnN0YXJ0T2ZEYXkobm93KTtcblxuICAgICAgZXhwZWN0KFtzdGFydDEuZ2V0SG91cnMoKSwgc3RhcnQyLmdldEhvdXJzKCldKS50b0VxdWFsKFswLCAwXSk7XG4gICAgICBleHBlY3QoW3N0YXJ0MS5nZXRNaW51dGVzKCksIHN0YXJ0Mi5nZXRNaW51dGVzKCldKS50b0VxdWFsKFswLCAwXSk7XG4gICAgICBleHBlY3QoW3N0YXJ0MS5nZXRTZWNvbmRzKCksIHN0YXJ0Mi5nZXRTZWNvbmRzKCldKS50b0VxdWFsKFswLCAwXSk7XG4gICAgICBleHBlY3QoW3N0YXJ0MS5nZXRNaWxsaXNlY29uZHMoKSwgc3RhcnQyLmdldE1pbGxpc2Vjb25kcygpXSkudG9FcXVhbChbMCwgMF0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBub3QgbW9kaWZ5IHRoZSBvcmlnaW5hbCBkYXRlIG9iamVjdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgICBjb25zdCBvcmlnaW5hbFRpbWUgPSBub3cuZ2V0VGltZSgpO1xuICAgICAgVGltZS5zdGFydE9mRGF5KG5vdyk7XG4gICAgICBleHBlY3Qobm93LmdldFRpbWUoKSkudG9CZShvcmlnaW5hbFRpbWUpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZW5kT2ZEYXknLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIGVuZCBvZiB0aGUgZGF5IGluIFVUQyB0aW1lIHdoZW4gdGltZUZvcm1hdCBpcyBcInV0Y1wiIG9yIG5vdCBwcm92aWRlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgICBub3cuc2V0VVRDSG91cnMoMTIsIDMwLCAzMCwgNTAwKTtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gVGltZS5lbmRPZkRheShub3csICd1dGMnKTtcblxuICAgICAgZXhwZWN0KHN0YXJ0LmdldFVUQ0hvdXJzKCkpLnRvQmUoMjMpO1xuICAgICAgZXhwZWN0KHN0YXJ0LmdldFVUQ01pbnV0ZXMoKSkudG9CZSg1OSk7XG4gICAgICBleHBlY3Qoc3RhcnQuZ2V0VVRDTWludXRlcygpKS50b0JlKDU5KTtcbiAgICAgIGV4cGVjdChzdGFydC5nZXRVVENNaWxsaXNlY29uZHMoKSkudG9CZSgwKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBlbmQgb2YgdGhlIGRheSBpbiBsb2NhbCB0aW1lIHdoZW4gdGltZUZvcm1hdCBpcyBcImxvY2FsXCIgb3Igbm90IHByb3ZpZGVkJywgKCkgPT4ge1xuICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICAgIG5vdy5zZXRVVENIb3VycygxMiwgMzAsIDMwLCA1MDApO1xuICAgICAgY29uc3Qgc3RhcnQxID0gVGltZS5lbmRPZkRheShub3csICdsb2NhbCcpO1xuICAgICAgY29uc3Qgc3RhcnQyID0gVGltZS5lbmRPZkRheShub3cpO1xuXG4gICAgICBleHBlY3QoW3N0YXJ0MS5nZXRIb3VycygpLCBzdGFydDIuZ2V0SG91cnMoKV0pLnRvRXF1YWwoWzIzLCAyM10pO1xuICAgICAgZXhwZWN0KFtzdGFydDEuZ2V0TWludXRlcygpLCBzdGFydDIuZ2V0TWludXRlcygpXSkudG9FcXVhbChbNTksIDU5XSk7XG4gICAgICBleHBlY3QoW3N0YXJ0MS5nZXRTZWNvbmRzKCksIHN0YXJ0Mi5nZXRTZWNvbmRzKCldKS50b0VxdWFsKFs1OSwgNTldKTtcbiAgICAgIGV4cGVjdChbc3RhcnQxLmdldE1pbGxpc2Vjb25kcygpLCBzdGFydDIuZ2V0TWlsbGlzZWNvbmRzKCldKS50b0VxdWFsKFswLCAwXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIG5vdCBtb2RpZnkgdGhlIG9yaWdpbmFsIGRhdGUgb2JqZWN0JywgKCkgPT4ge1xuICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICAgIGNvbnN0IG9yaWdpbmFsVGltZSA9IG5vdy5nZXRUaW1lKCk7XG4gICAgICBUaW1lLmVuZE9mRGF5KG5vdyk7XG4gICAgICBleHBlY3Qobm93LmdldFRpbWUoKSkudG9CZShvcmlnaW5hbFRpbWUpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwiaXQiLCJtb250aCIsIk1PTlRIIiwieWVhciIsImRhdGUxIiwiVGltZSIsImRhdGUyIiwiZXhwZWN0IiwiZGF0ZSIsIm5vdyIsInN0YXJ0Iiwic3RhcnQxIiwic3RhcnQyIiwib3JpZ2luYWxUaW1lIl0sIm1hcHBpbmdzIjoiOzs7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