@arthurzakharov/ui-kit 1.0.5 → 1.0.6
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/components/certifications/certifications.component.js +0 -1
- package/dist/components/certifications/certifications.types.js +0 -1
- package/dist/components/certifications/index.js +0 -1
- package/dist/components/control/components/box/box.component.js +13 -14
- package/dist/components/control/components/box/box.types.js +0 -1
- package/dist/components/control/components/box/index.js +0 -1
- package/dist/components/control/components/button/button.component.js +26 -27
- package/dist/components/control/components/button/button.types.js +0 -1
- package/dist/components/control/components/button/index.js +0 -1
- package/dist/components/control/components/card-image/card-image.component.js +1 -2
- package/dist/components/control/components/card-image/card-image.types.js +0 -1
- package/dist/components/control/components/card-image/index.js +1 -2
- package/dist/components/control/components/card-text/card-text.component.js +1 -2
- package/dist/components/control/components/card-text/card-text.types.js +0 -1
- package/dist/components/control/components/card-text/index.js +1 -2
- package/dist/components/control/components/checkbox/checkbox.component.js +1 -2
- package/dist/components/control/components/checkbox/checkbox.types.js +0 -1
- package/dist/components/control/components/checkbox/index.js +1 -2
- package/dist/components/control/components/choice/choice.component.js +0 -1
- package/dist/components/control/components/choice/choice.types.js +0 -1
- package/dist/components/control/components/choice/index.js +0 -1
- package/dist/components/control/components/dropdown/dropdown.component.js +1 -2
- package/dist/components/control/components/dropdown/dropdown.types.js +0 -1
- package/dist/components/control/components/dropdown/index.js +1 -2
- package/dist/components/control/components/hidden-input/hidden-input.component.js +15 -15
- package/dist/components/control/components/hidden-input/hidden-input.types.js +0 -1
- package/dist/components/control/components/hidden-input/index.js +0 -1
- package/dist/components/control/components/input/index.js +1 -2
- package/dist/components/control/components/input/input.component.js +34 -4
- package/dist/components/control/components/input/input.types.js +0 -1
- package/dist/components/control/components/label/index.js +0 -1
- package/dist/components/control/components/label/label.component.js +0 -1
- package/dist/components/control/components/label/label.types.js +0 -1
- package/dist/components/control/components/radio/index.js +1 -2
- package/dist/components/control/components/radio/radio.component.js +1 -2
- package/dist/components/control/components/radio/radio.types.js +0 -1
- package/dist/components/control/components/radio-label/index.js +0 -1
- package/dist/components/control/components/radio-label/radio-label.component.js +0 -1
- package/dist/components/control/components/radio-label/radio-label.types.js +0 -1
- package/dist/components/control/components/radio-text/index.js +0 -1
- package/dist/components/control/components/radio-text/radio-text.component.js +0 -1
- package/dist/components/control/components/radio-text/radio-text.types.js +0 -1
- package/dist/components/control/components/text/index.js +1 -2
- package/dist/components/control/components/text/text.component.js +1 -2
- package/dist/components/control/components/text/text.types.js +0 -1
- package/dist/components/control/components/textarea/index.js +1 -2
- package/dist/components/control/components/textarea/textarea.component.js +1 -2
- package/dist/components/control/components/textarea/textarea.types.js +0 -1
- package/dist/components/control/hooks/index.js +0 -1
- package/dist/components/control/hooks/useChoice/index.js +0 -1
- package/dist/components/control/hooks/useChoice/useChoice.hook.js +0 -1
- package/dist/components/control/index.js +2 -3
- package/dist/components/control/types.js +0 -1
- package/dist/components/control/utils/index.js +0 -1
- package/dist/components/control/utils/utils.js +0 -1
- package/dist/enums.js +0 -1
- package/dist/index-DtupH5zG.js +405 -0
- package/dist/main.js +1 -2
- package/dist/types.js +0 -1
- package/dist/utils/converter/converter.js +0 -1
- package/dist/utils/converter/index.js +0 -1
- package/dist/utils/index.js +0 -1
- package/dist/utils/time/index.js +0 -1
- package/dist/utils/time/time.js +0 -1
- package/package.json +8 -31
- package/dist/components/certifications/certifications.test.d.ts +0 -1
- package/dist/components/certifications/certifications.test.js +0 -37
- package/dist/components/control/components/box/box.test.d.ts +0 -1
- package/dist/components/control/components/box/box.test.js +0 -111
- package/dist/components/control/components/button/button.test.d.ts +0 -1
- package/dist/components/control/components/button/button.test.js +0 -155
- package/dist/components/control/components/card-image/card-image.test.d.ts +0 -1
- package/dist/components/control/components/card-image/card-image.test.js +0 -118
- package/dist/components/control/components/card-text/card-text.test.d.ts +0 -1
- package/dist/components/control/components/card-text/card-text.test.js +0 -109
- package/dist/components/control/components/choice/choice.test.d.ts +0 -1
- package/dist/components/control/components/choice/choice.test.js +0 -138
- package/dist/components/control/components/hidden-input/hidden-input.test.d.ts +0 -1
- package/dist/components/control/components/hidden-input/hidden-input.test.js +0 -142
- package/dist/components/control/components/input/input.test.d.ts +0 -1
- package/dist/components/control/components/input/input.test.js +0 -104
- package/dist/components/control/components/label/label.test.d.ts +0 -1
- package/dist/components/control/components/label/label.test.js +0 -91
- package/dist/components/control/components/radio-label/radio-label.test.d.ts +0 -1
- package/dist/components/control/components/radio-label/radio-label.test.js +0 -282
- package/dist/components/control/components/radio-text/radio-text.test.d.ts +0 -1
- package/dist/components/control/components/radio-text/radio-text.test.js +0 -82
- package/dist/components/control/components/text/text.test.d.ts +0 -1
- package/dist/components/control/components/text/text.test.js +0 -146
- package/dist/components/control/components/textarea/textarea.test.d.ts +0 -1
- package/dist/components/control/components/textarea/textarea.test.js +0 -148
- package/dist/components/control/hooks/useChoice/useChoice.hook.test.d.ts +0 -1
- package/dist/components/control/hooks/useChoice/useChoice.hook.test.js +0 -35
- package/dist/components/control/utils/utils.test.d.ts +0 -1
- package/dist/components/control/utils/utils.test.js +0 -34
- package/dist/index-DZTmNCEj.js +0 -407
- package/dist/input.component-Ju0oHzs9.js +0 -38
- package/dist/magic-string.es-uPKorP4O.js +0 -664
- package/dist/react-18-1BDDKgtP.js +0 -41
- package/dist/react.esm-CZ9PjZjp.js +0 -75462
- package/dist/utils/converter/converter.test.d.ts +0 -1
- package/dist/utils/converter/converter.test.js +0 -121
- package/dist/utils/time/time.test.d.ts +0 -1
- package/dist/utils/time/time.test.js +0 -45
- package/dist/vi.2VT5v0um-CyasTEXm.js +0 -10517
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,121 +0,0 @@
|
|
|
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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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,45 +0,0 @@
|
|
|
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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
|