@acorex/core 7.22.0 → 7.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{dateTime → date-time}/README.md +2 -2
- package/{dateTime → date-time}/lib/datetime.class.d.ts +1 -0
- package/{dateTime → date-time}/lib/formatters/datetime-formatter.d.ts +1 -1
- package/{dateTime → date-time}/lib/formatters/timeleft-formatter.d.ts +1 -1
- package/esm2022/acorex-core.mjs +1 -1
- package/esm2022/config/lib/configs.mjs +1 -1
- package/esm2022/config/lib/configs.service.mjs +3 -3
- package/esm2022/date-time/acorex-core-date-time.mjs +5 -0
- package/esm2022/date-time/index.mjs +11 -0
- package/esm2022/date-time/lib/calendar.service.mjs +100 -0
- package/esm2022/date-time/lib/dateTime.config.mjs +50 -0
- package/esm2022/date-time/lib/datetime.class.mjs +337 -0
- package/esm2022/date-time/lib/datetime.module.mjs +27 -0
- package/esm2022/date-time/lib/datetime.pipe.mjs +29 -0
- package/esm2022/date-time/lib/formatters/datetime-formatter.mjs +32 -0
- package/esm2022/date-time/lib/formatters/timeleft-formatter.mjs +91 -0
- package/esm2022/date-time/lib/georgian.calendar.mjs +203 -0
- package/esm2022/date-time/lib/holidays.loader.mjs +13 -0
- package/esm2022/date-time/lib/jalali.calendar.mjs +440 -0
- package/esm2022/events/lib/event.service.mjs +4 -4
- package/esm2022/events/lib/event.type.mjs +1 -1
- package/esm2022/file/lib/file-download-ref.class.mjs +1 -1
- package/esm2022/file/lib/file-size-formatter.mjs +4 -4
- package/esm2022/file/lib/file-upload-ref.class.mjs +1 -1
- package/esm2022/file/lib/file.module.mjs +6 -6
- package/esm2022/file/lib/file.service.mjs +5 -5
- package/esm2022/format/lib/format.config.mjs +1 -1
- package/esm2022/format/lib/format.module.mjs +13 -16
- package/esm2022/format/lib/format.pipe.mjs +10 -6
- package/esm2022/format/lib/format.service.mjs +19 -16
- package/esm2022/format/lib/format.types.mjs +1 -1
- package/esm2022/format/lib/formatters/number-formatter.mjs +6 -7
- package/esm2022/format/lib/formatters/string-formatter.mjs +1 -1
- package/esm2022/image/lib/image.service.mjs +4 -4
- package/esm2022/index.mjs +2 -2
- package/esm2022/lib/core.component.mjs +12 -0
- package/esm2022/memorize/lib/memorize.decorator.mjs +1 -1
- package/esm2022/pipes/lib/safe/safe.pipe.mjs +4 -4
- package/esm2022/platform/lib/platform.service.mjs +47 -42
- package/esm2022/storage/cookie-storage.service.mjs +15 -8
- package/esm2022/storage/local-storage.service.mjs +46 -10
- package/esm2022/storage/session-storage.service.mjs +3 -3
- package/esm2022/translation/lib/translation-scope.resolver.mjs +4 -4
- package/esm2022/translation/lib/translation.config.mjs +2 -2
- package/esm2022/translation/lib/translation.loader.mjs +3 -3
- package/esm2022/translation/lib/translation.module.mjs +10 -10
- package/esm2022/translation/lib/translation.service.mjs +19 -11
- package/esm2022/translation/lib/translation.types.mjs +1 -1
- package/esm2022/translation/lib/translator.directive.mjs +5 -5
- package/esm2022/translation/lib/translator.pipe.mjs +4 -4
- package/esm2022/utils/lib/auto-unsubscribe.mjs +4 -4
- package/esm2022/utils/lib/color-util.mjs +4 -2
- package/esm2022/utils/lib/drawing-util.mjs +6 -3
- package/esm2022/utils/lib/html-util.mjs +17 -3
- package/esm2022/utils/lib/string-util.mjs +1 -1
- package/esm2022/validation/lib/rules/between-rule.mjs +7 -7
- package/esm2022/validation/lib/rules/callback-rule.mjs +10 -7
- package/esm2022/validation/lib/rules/equal-rule.mjs +7 -7
- package/esm2022/validation/lib/rules/greater-than.mjs +12 -8
- package/esm2022/validation/lib/rules/length-rule.mjs +10 -7
- package/esm2022/validation/lib/rules/less-than-rule.mjs +12 -8
- package/esm2022/validation/lib/rules/maxlength-rule.mjs +12 -9
- package/esm2022/validation/lib/rules/minlength-rule.mjs +12 -9
- package/esm2022/validation/lib/rules/regex-rule.mjs +15 -12
- package/esm2022/validation/lib/rules/required-rule.mjs +14 -14
- package/esm2022/validation/lib/validation.config.mjs +3 -3
- package/esm2022/validation/lib/validation.module.mjs +15 -19
- package/esm2022/validation/lib/validation.service.mjs +19 -16
- package/esm2022/validation/lib/validation.types.mjs +1 -1
- package/fesm2022/acorex-core-config.mjs +3 -3
- package/fesm2022/acorex-core-config.mjs.map +1 -1
- package/fesm2022/{acorex-core-dateTime.mjs → acorex-core-date-time.mjs} +96 -45
- package/fesm2022/acorex-core-date-time.mjs.map +1 -0
- package/fesm2022/acorex-core-events.mjs +3 -3
- package/fesm2022/acorex-core-events.mjs.map +1 -1
- package/fesm2022/acorex-core-file.mjs +12 -12
- package/fesm2022/acorex-core-file.mjs.map +1 -1
- package/fesm2022/acorex-core-format.mjs +43 -40
- package/fesm2022/acorex-core-format.mjs.map +1 -1
- package/fesm2022/acorex-core-image.mjs +3 -3
- package/fesm2022/acorex-core-image.mjs.map +1 -1
- package/fesm2022/acorex-core-memorize.mjs.map +1 -1
- package/fesm2022/acorex-core-pipes.mjs +3 -3
- package/fesm2022/acorex-core-pipes.mjs.map +1 -1
- package/fesm2022/acorex-core-platform.mjs +46 -41
- package/fesm2022/acorex-core-platform.mjs.map +1 -1
- package/fesm2022/acorex-core-storage.mjs +63 -20
- package/fesm2022/acorex-core-storage.mjs.map +1 -1
- package/fesm2022/acorex-core-translation.mjs +31 -23
- package/fesm2022/acorex-core-translation.mjs.map +1 -1
- package/fesm2022/acorex-core-utils.mjs +27 -8
- package/fesm2022/acorex-core-utils.mjs.map +1 -1
- package/fesm2022/acorex-core-validation.mjs +110 -88
- package/fesm2022/acorex-core-validation.mjs.map +1 -1
- package/fesm2022/acorex-core.mjs +14 -1
- package/fesm2022/acorex-core.mjs.map +1 -1
- package/file/lib/file-size-formatter.d.ts +1 -1
- package/format/lib/format.config.d.ts +1 -1
- package/format/lib/format.service.d.ts +5 -5
- package/format/lib/formatters/number-formatter.d.ts +1 -1
- package/format/lib/formatters/string-formatter.d.ts +1 -1
- package/index.d.ts +1 -2
- package/lib/core.component.d.ts +5 -0
- package/package.json +15 -15
- package/storage/local-storage.service.d.ts +6 -0
- package/translation/lib/translation-scope.resolver.d.ts +1 -1
- package/translation/lib/translation.config.d.ts +2 -2
- package/translation/lib/translation.loader.d.ts +3 -3
- package/validation/lib/rules/between-rule.d.ts +2 -2
- package/validation/lib/rules/callback-rule.d.ts +2 -2
- package/validation/lib/rules/equal-rule.d.ts +2 -2
- package/validation/lib/rules/greater-than.d.ts +2 -2
- package/validation/lib/rules/length-rule.d.ts +2 -2
- package/validation/lib/rules/less-than-rule.d.ts +2 -2
- package/validation/lib/rules/maxlength-rule.d.ts +2 -2
- package/validation/lib/rules/minlength-rule.d.ts +2 -2
- package/validation/lib/rules/regex-rule.d.ts +2 -2
- package/validation/lib/rules/required-rule.d.ts +2 -2
- package/validation/lib/validation.service.d.ts +4 -4
- package/esm2022/dateTime/acorex-core-dateTime.mjs +0 -5
- package/esm2022/dateTime/index.mjs +0 -11
- package/esm2022/dateTime/lib/calendar.service.mjs +0 -91
- package/esm2022/dateTime/lib/dateTime.config.mjs +0 -50
- package/esm2022/dateTime/lib/datetime.class.mjs +0 -325
- package/esm2022/dateTime/lib/datetime.module.mjs +0 -21
- package/esm2022/dateTime/lib/datetime.pipe.mjs +0 -29
- package/esm2022/dateTime/lib/formatters/datetime-formatter.mjs +0 -30
- package/esm2022/dateTime/lib/formatters/timeleft-formatter.mjs +0 -91
- package/esm2022/dateTime/lib/georgian.calendar.mjs +0 -198
- package/esm2022/dateTime/lib/holidays.loader.mjs +0 -13
- package/esm2022/dateTime/lib/jalali.calendar.mjs +0 -423
- package/fesm2022/acorex-core-dateTime.mjs.map +0 -1
- /package/{dateTime → date-time}/index.d.ts +0 -0
- /package/{dateTime → date-time}/lib/calendar.service.d.ts +0 -0
- /package/{dateTime → date-time}/lib/dateTime.config.d.ts +0 -0
- /package/{dateTime → date-time}/lib/datetime.module.d.ts +0 -0
- /package/{dateTime → date-time}/lib/datetime.pipe.d.ts +0 -0
- /package/{dateTime → date-time}/lib/georgian.calendar.d.ts +0 -0
- /package/{dateTime → date-time}/lib/holidays.loader.d.ts +0 -0
- /package/{dateTime → date-time}/lib/jalali.calendar.d.ts +0 -0
@@ -1,325 +0,0 @@
|
|
1
|
-
import { translateSync } from '@acorex/core/translation';
|
2
|
-
import { defaults, orderBy } from 'lodash-es';
|
3
|
-
export class AXCalendar {
|
4
|
-
/**
|
5
|
-
* @ignore
|
6
|
-
*/
|
7
|
-
constructor(config) {
|
8
|
-
this._config = config;
|
9
|
-
}
|
10
|
-
get weekend() {
|
11
|
-
return this._config.weekend;
|
12
|
-
}
|
13
|
-
get formats() {
|
14
|
-
return this._config.formats;
|
15
|
-
}
|
16
|
-
get weekdays() {
|
17
|
-
return this._config.weekdays;
|
18
|
-
}
|
19
|
-
}
|
20
|
-
export class AXDateTime {
|
21
|
-
get date() {
|
22
|
-
return this._date;
|
23
|
-
}
|
24
|
-
get calendar() {
|
25
|
-
return this._calendar;
|
26
|
-
}
|
27
|
-
constructor(value, calendar) {
|
28
|
-
//TODO: remove unused items
|
29
|
-
this._formatKeys = {
|
30
|
-
ss: () => this.pad(this.date.getSeconds(), 2),
|
31
|
-
s: () => this.date.getSeconds().toString(),
|
32
|
-
//
|
33
|
-
dd: () => this.pad(this.calendar.dayOfMonth(this.date), 2),
|
34
|
-
DD: () => this.pad(this.calendar.dayOfMonth(this.date), 2),
|
35
|
-
d: () => this.calendar.dayOfMonth(this.date).toString(),
|
36
|
-
//
|
37
|
-
mm: () => this.pad(this.date.getMinutes(), 2),
|
38
|
-
m: () => this.date.getMinutes().toString(),
|
39
|
-
//
|
40
|
-
MMMM: () => translateSync(`dateTime.months.${this.calendar.name()}.long.${this.calendar.monthOfYear(this.date) - 1}`),
|
41
|
-
MMM: () => translateSync(`dateTime.months.${this.calendar.name()}.short.${this.calendar.monthOfYear(this.date) - 1}`),
|
42
|
-
MM: () => this.pad(this.calendar.monthOfYear(this.date), 2),
|
43
|
-
M: () => this.calendar.monthOfYear(this.date),
|
44
|
-
//
|
45
|
-
E: () => translateSync(`dateTime.weekdays.long.${this.calendar.weekdays[this.calendar.dayOfWeek(this.date) - 1]}`),
|
46
|
-
DDD: () => translateSync(`dateTime.weekdays.short.${this.calendar.weekdays[this.calendar.dayOfWeek(this.date) - 1]}`),
|
47
|
-
DDDD: () => this._formatKeys['E'](),
|
48
|
-
//
|
49
|
-
yyyy: () => this.pad(this.calendar.year(this.date), 4),
|
50
|
-
YYYY: () => this.pad(this.calendar.year(this.date), 4),
|
51
|
-
yy: () => this.pad(this.calendar.year(this.date), 4).substring(2),
|
52
|
-
YY: () => this.pad(this.calendar.year(this.date), 4).substring(2),
|
53
|
-
//
|
54
|
-
HH: () => this.pad(this.date.getHours(), 2),
|
55
|
-
H: () => this.date.getHours().toString(),
|
56
|
-
//
|
57
|
-
hh: () => this.pad(this.date.getHours() % 12 || 12, 2),
|
58
|
-
h: () => (this.date.getHours() % 12 || 12).toString(),
|
59
|
-
//
|
60
|
-
A: () => (this.date.getHours() < 12 ? 'am' : 'pm'),
|
61
|
-
a: () => (this.date.getHours() < 12 ? 'am' : 'pm'),
|
62
|
-
date: (options) => this.format(this.getDateTimeFormatByLocale(options.locale, 'shortDate')),
|
63
|
-
shortDate: (options) => this.format(this.getDateTimeFormatByLocale(options.locale, 'shortDate')),
|
64
|
-
longDate: (options) => this.format(this.getDateTimeFormatByLocale(options.locale, 'longDate')),
|
65
|
-
//
|
66
|
-
shortTime: (options) => this.format(this.getDateTimeFormatByLocale(options.locale, 'shortTime')),
|
67
|
-
time: (options) => this.format(this.getDateTimeFormatByLocale(options.locale, 'shortTime')),
|
68
|
-
longTime: (options) => this.format(this.getDateTimeFormatByLocale(options.locale, 'longTime')),
|
69
|
-
//
|
70
|
-
datetime: (options) => this.format('date time', { locale: options.locale }),
|
71
|
-
};
|
72
|
-
this._calendar = calendar;
|
73
|
-
this._date = value;
|
74
|
-
}
|
75
|
-
clone() {
|
76
|
-
return new AXDateTime(this.date, this.calendar);
|
77
|
-
}
|
78
|
-
get dayOfMonth() {
|
79
|
-
return this._calendar.dayOfMonth(this.date);
|
80
|
-
}
|
81
|
-
get dayOfYear() {
|
82
|
-
return this._calendar.dayOfYear(this.date);
|
83
|
-
}
|
84
|
-
get dayOfWeek() {
|
85
|
-
return this._calendar.dayOfWeek(this.date);
|
86
|
-
}
|
87
|
-
get hour() {
|
88
|
-
return this._date.getHours();
|
89
|
-
}
|
90
|
-
get minute() {
|
91
|
-
return this._date.getMinutes();
|
92
|
-
}
|
93
|
-
get second() {
|
94
|
-
return this._date.getSeconds();
|
95
|
-
}
|
96
|
-
get year() {
|
97
|
-
return this._calendar.year(this.date);
|
98
|
-
}
|
99
|
-
get monthOfYear() {
|
100
|
-
return this._calendar.monthOfYear(this.date);
|
101
|
-
}
|
102
|
-
get weekOfYear() {
|
103
|
-
return this._calendar.weekOfYear(this.date);
|
104
|
-
}
|
105
|
-
get month() {
|
106
|
-
return new AXCalendarMonth(this);
|
107
|
-
}
|
108
|
-
add(unit, amount) {
|
109
|
-
return this._calendar.add(this.date, unit, amount);
|
110
|
-
}
|
111
|
-
set(unit = 'day', value) {
|
112
|
-
return this._calendar.set(this.date, unit, value);
|
113
|
-
}
|
114
|
-
duration(end) {
|
115
|
-
const date = end instanceof AXDateTime ? end.date : end;
|
116
|
-
const val = new AXDateTime(date, this.calendar);
|
117
|
-
const range = new AXDateTimeRange(this, val);
|
118
|
-
return range.duration();
|
119
|
-
}
|
120
|
-
startOf(unit = 'day') {
|
121
|
-
return this._calendar.startOf(this.date, unit);
|
122
|
-
}
|
123
|
-
endOf(unit = 'day') {
|
124
|
-
return this._calendar.endOf(this.date, unit);
|
125
|
-
}
|
126
|
-
format(format = this.getDateTimeFormatByLocale(navigator.language, 'shortDate'), options) {
|
127
|
-
const effectiveOptions = defaults({}, options, {
|
128
|
-
locale: navigator.language,
|
129
|
-
});
|
130
|
-
const re = new RegExp(orderBy(Object.keys(this._formatKeys), (c) => c.length, ['desc']).join('|'), 'gi');
|
131
|
-
return format.replace(re, (matched) => {
|
132
|
-
const f = this._formatKeys[matched];
|
133
|
-
const r = f(effectiveOptions);
|
134
|
-
return r;
|
135
|
-
});
|
136
|
-
}
|
137
|
-
getDateTimeFormatByLocale(locale, style) {
|
138
|
-
let options = {};
|
139
|
-
switch (style) {
|
140
|
-
case 'shortDate': // Year, Month, Day
|
141
|
-
options = { year: 'numeric', month: '2-digit', day: '2-digit' };
|
142
|
-
break;
|
143
|
-
case 'longDate': // Weekday, Month name, Day, Year
|
144
|
-
options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
|
145
|
-
break;
|
146
|
-
case 'shortTime': // Hour, Minute
|
147
|
-
options = { hour: '2-digit', minute: '2-digit', hour12: false };
|
148
|
-
break;
|
149
|
-
case 'longTime': // Hour, Minute, Second
|
150
|
-
options = { hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false };
|
151
|
-
break;
|
152
|
-
}
|
153
|
-
const formatter = new Intl.DateTimeFormat(locale, options);
|
154
|
-
// Get parts of the date and/or time
|
155
|
-
const parts = formatter.formatToParts(new Date());
|
156
|
-
// Map parts to their respective format
|
157
|
-
const formatMap = {
|
158
|
-
day: 'dd',
|
159
|
-
month: style == 'longDate' ? 'MMMM' : 'MM',
|
160
|
-
year: 'yyyy',
|
161
|
-
hour: 'HH',
|
162
|
-
minute: 'mm',
|
163
|
-
second: 'ss',
|
164
|
-
weekday: 'E',
|
165
|
-
literal: '',
|
166
|
-
};
|
167
|
-
// Construct the date and/or time format string
|
168
|
-
return parts
|
169
|
-
.map((part) => {
|
170
|
-
if (part.type === 'literal') {
|
171
|
-
// Use the literal part directly as separator
|
172
|
-
return part.value;
|
173
|
-
}
|
174
|
-
else {
|
175
|
-
return formatMap[part.type] || part.value;
|
176
|
-
}
|
177
|
-
})
|
178
|
-
.join('');
|
179
|
-
}
|
180
|
-
pad(n, width, z = '0') {
|
181
|
-
n = n + '';
|
182
|
-
return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
|
183
|
-
}
|
184
|
-
equal(value, unit = 'day') {
|
185
|
-
return this.compare(value, unit) == 0;
|
186
|
-
}
|
187
|
-
compare(value, unit = 'day') {
|
188
|
-
const date = value instanceof AXDateTime ? value.date : value;
|
189
|
-
const val = new AXDateTime(date, this.calendar);
|
190
|
-
const func = (v1, v2) => {
|
191
|
-
if (v1 == v2) {
|
192
|
-
return 0;
|
193
|
-
}
|
194
|
-
else if (v1 > v2) {
|
195
|
-
return 1;
|
196
|
-
}
|
197
|
-
else {
|
198
|
-
return -1;
|
199
|
-
}
|
200
|
-
};
|
201
|
-
let p = 0;
|
202
|
-
switch (unit) {
|
203
|
-
case 'year':
|
204
|
-
return func(this.year, val.year);
|
205
|
-
case 'week':
|
206
|
-
p = this.compare(val, 'year');
|
207
|
-
return p == 0 ? func(this.weekOfYear, val.weekOfYear) : p;
|
208
|
-
case 'month':
|
209
|
-
p = this.compare(val, 'year');
|
210
|
-
return p == 0 ? func(this.monthOfYear, val.monthOfYear) : p;
|
211
|
-
case 'day':
|
212
|
-
p = this.compare(val, 'year');
|
213
|
-
return p == 0 ? func(this.dayOfYear, val.dayOfYear) : p;
|
214
|
-
case 'hour':
|
215
|
-
p = this.compare(val, 'day');
|
216
|
-
return p == 0 ? func(this.hour, val.hour) : p;
|
217
|
-
case 'minute':
|
218
|
-
p = this.compare(val, 'hour');
|
219
|
-
return p == 0 ? func(this.minute, val.minute) : p;
|
220
|
-
case 'second':
|
221
|
-
p = this.compare(val, 'minute');
|
222
|
-
return p == 0 ? func(this.second, val.second) : p;
|
223
|
-
default:
|
224
|
-
return func(this.date.getTime(), val.date.getTime());
|
225
|
-
}
|
226
|
-
}
|
227
|
-
}
|
228
|
-
export class AXCalendarMonth {
|
229
|
-
get range() {
|
230
|
-
return this._range;
|
231
|
-
}
|
232
|
-
set range(v) {
|
233
|
-
this._range = v;
|
234
|
-
}
|
235
|
-
get totalDays() {
|
236
|
-
return this.range.endTime.dayOfMonth;
|
237
|
-
}
|
238
|
-
constructor(date) {
|
239
|
-
this.index = date.date.getMonth();
|
240
|
-
this.name = date.format('MMMM');
|
241
|
-
this.range = new AXDateTimeRange(new AXDateTime(date.startOf('month').date, date.calendar), new AXDateTime(date.endOf('month').date, date.calendar));
|
242
|
-
}
|
243
|
-
}
|
244
|
-
export class AXDateTimeRange {
|
245
|
-
get startTime() {
|
246
|
-
return this._startTime;
|
247
|
-
}
|
248
|
-
get endTime() {
|
249
|
-
return this._endTime;
|
250
|
-
}
|
251
|
-
constructor(startTime, endTime) {
|
252
|
-
this._startTime = startTime;
|
253
|
-
this._endTime = endTime;
|
254
|
-
}
|
255
|
-
duration() {
|
256
|
-
const result = {
|
257
|
-
miliseconds: 0,
|
258
|
-
seconds: 0,
|
259
|
-
minutes: 0,
|
260
|
-
hours: 0,
|
261
|
-
days: 0,
|
262
|
-
months: 0,
|
263
|
-
years: 0,
|
264
|
-
total: {
|
265
|
-
miliseconds: 0,
|
266
|
-
seconds: 0,
|
267
|
-
minutes: 0,
|
268
|
-
hours: 0,
|
269
|
-
days: 0,
|
270
|
-
weeks: 0,
|
271
|
-
months: 0,
|
272
|
-
years: 0,
|
273
|
-
},
|
274
|
-
};
|
275
|
-
const one_second = 1000;
|
276
|
-
const one_min = one_second * 60;
|
277
|
-
const one_hour = one_min * 60;
|
278
|
-
const one_day = one_hour * 24;
|
279
|
-
const one_week = one_day * 7;
|
280
|
-
const one_year = 365.25 * one_day;
|
281
|
-
const one_month = one_year / 12;
|
282
|
-
const startTime = this._startTime.date.getTime();
|
283
|
-
const endTime = this._endTime.date.getTime();
|
284
|
-
const diff = Math.abs(endTime - startTime);
|
285
|
-
//
|
286
|
-
result.total.miliseconds = diff;
|
287
|
-
result.total.seconds = Number((diff / one_second).toFixed(2));
|
288
|
-
result.total.minutes = Number((diff / one_min).toFixed(2));
|
289
|
-
result.total.hours = Number((diff / one_hour).toFixed(2));
|
290
|
-
result.total.days = Number((diff / one_day).toFixed(2));
|
291
|
-
result.total.weeks = Number((diff / one_week).toFixed(2));
|
292
|
-
//
|
293
|
-
// let months = (this.endTime.year - this.startTime.year) * 12;
|
294
|
-
// months += this.endTime.monthOfYear - this.startTime.monthOfYear + 1;
|
295
|
-
// if (this.endTime.dayOfYear < this.startTime.dayOfYear) {
|
296
|
-
// months--;
|
297
|
-
// }
|
298
|
-
// result.total.months = Math.abs(months);
|
299
|
-
// TODO: review
|
300
|
-
result.total.months = Number((diff / one_month).toFixed(2));
|
301
|
-
result.total.years = Number((diff / one_year).toFixed(2));
|
302
|
-
//
|
303
|
-
result.miliseconds = result.total.miliseconds % 1000;
|
304
|
-
result.seconds = Number((result.total.seconds % 60).toFixed(0));
|
305
|
-
result.minutes = Number((result.total.minutes % 60).toFixed(0));
|
306
|
-
result.hours = Number((result.total.hours % 24).toFixed(0));
|
307
|
-
// TODO: review
|
308
|
-
result.days = Number((result.total.days % 30.4).toFixed(0));
|
309
|
-
result.months = Number((result.total.months % 12).toFixed(0));
|
310
|
-
result.years = Number(result.total.years.toFixed(0));
|
311
|
-
return result;
|
312
|
-
}
|
313
|
-
enumurate(unit = 'day', amount = 1) {
|
314
|
-
const result = [];
|
315
|
-
let item = this._startTime.clone();
|
316
|
-
while (item.compare(this._endTime, unit) < 1) {
|
317
|
-
if (!result.some((c) => c.equal(item, unit))) {
|
318
|
-
result.push(item);
|
319
|
-
}
|
320
|
-
item = item.add(unit, amount);
|
321
|
-
}
|
322
|
-
return result;
|
323
|
-
}
|
324
|
-
}
|
325
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvZGF0ZVRpbWUvc3JjL2xpYi9kYXRldGltZS5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFrRDlDLE1BQU0sT0FBZ0IsVUFBVTtJQUc5Qjs7T0FFRztJQUNILFlBQVksTUFBd0I7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDL0IsQ0FBQztDQTJCRjtBQUVELE1BQU0sT0FBTyxVQUFVO0lBR3JCLElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBR0QsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxZQUFZLEtBQVcsRUFBRSxRQUFvQjtRQXdFN0MsMkJBQTJCO1FBQ25CLGdCQUFXLEdBQUc7WUFDcEIsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDN0MsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFO1lBQzFDLEVBQUU7WUFDRixFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzFELEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDMUQsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUU7WUFDdkQsRUFBRTtZQUNGLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzdDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsRUFBRTtZQUMxQyxFQUFFO1lBQ0YsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUNULGFBQWEsQ0FDWCxtQkFBbUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQzNGO1lBQ0gsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUNSLGFBQWEsQ0FDWCxtQkFBbUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQzVGO1lBQ0gsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzRCxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUM3QyxFQUFFO1lBQ0YsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUNOLGFBQWEsQ0FDWCwwQkFBMEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQzNGO1lBQ0gsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUNSLGFBQWEsQ0FDWCwyQkFBMkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQzVGO1lBQ0gsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbkMsRUFBRTtZQUNGLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdEQsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN0RCxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUNqRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUNqRSxFQUFFO1lBQ0YsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDM0MsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO1lBQ3hDLEVBQUU7WUFDRixFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RELENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRTtZQUNyRCxFQUFFO1lBQ0YsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ2xELENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNsRCxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHlCQUF5QixD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Q0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RCxNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQWlCLEtBQUssRUFBRSxNQUFNLEdBQUcsQ0FBQztRQUMxQyxNQUFNLE1BQU0sR0FBaUIsRUFBRSxDQUFDO1FBQ2hDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO2dCQUM1QyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ25CO1lBQ0QsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQy9CO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHJhbnNsYXRlU3luYyB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBkZWZhdWx0cywgb3JkZXJCeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmV4cG9ydCB0eXBlIFRpbWVVbml0ID0gJ21zJyB8ICdzZWNvbmQnIHwgJ21pbnV0ZScgfCAnaG91cicgfCAnZGF5JyB8ICdtb250aCcgfCAneWVhcicgfCAnd2Vlayc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhEYXRlVmFsdWUge1xuICB5ZWFyOiBudW1iZXI7XG4gIG1vbnRoOiBudW1iZXI7XG4gIGRhdGU6IG51bWJlcjtcbiAgaG91cnM/OiBudW1iZXI7XG4gIG1pbnV0ZXM/OiBudW1iZXI7XG4gIHNlY29uZHM/OiBudW1iZXI7XG4gIG1zPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYRGF0ZVRpbWVEaXNwbGF5Rm9ybWF0cyB7XG4gIGRhdGVJbnB1dDogc3RyaW5nO1xuICB0aW1lSW5wdXQ6IHN0cmluZztcbiAgZGF0ZVRpbWVJbnB1dDogc3RyaW5nO1xuICBkYXRlRGlzcGxheTogc3RyaW5nO1xuICB0aW1lRGlzcGxheTogc3RyaW5nO1xuICBkYXRlVGltZURpc3BsYXk6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgQVhEYXRlVGltZVVuaXROYW1lcyA9IHsgbG9uZzogc3RyaW5nOyBzaG9ydDogc3RyaW5nOyBsZXR0ZXI6IHN0cmluZyB9W107XG5cbmV4cG9ydCB0eXBlIEFYRGF0ZVRpbWVQYXJ0ID0ge1xuICBrZXk6IHN0cmluZztcbiAgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgcGxhY2Vob2xkZXJzOiBzdHJpbmdbXTtcbiAgdHlwZWRWYWx1ZT86IHN0cmluZyB8IG51bGw7XG4gIGRlZmF1bHQ6IG51bWJlcjtcbiAgZW5hYmxlZDogYm9vbGVhbjtcbiAgcmVhbFZhbHVlOiAoKSA9PiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBBWERhdGVUaW1lUGFydHMgPSB7XG4gIHllYXI6IEFYRGF0ZVRpbWVQYXJ0O1xuICBtb250aDogQVhEYXRlVGltZVBhcnQ7XG4gIGRheTogQVhEYXRlVGltZVBhcnQ7XG4gIGhvdXI6IEFYRGF0ZVRpbWVQYXJ0O1xuICBtaW51dGU6IEFYRGF0ZVRpbWVQYXJ0O1xuICBzZWNvbmQ6IEFYRGF0ZVRpbWVQYXJ0O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBBWENhbGVuZGFyQ29uZmlnIHtcbiAgd2Vla2RheXM6IG51bWJlcltdO1xuICB3ZWVrZW5kOiBudW1iZXJbXTtcbiAgZm9ybWF0czogQVhEYXRlVGltZURpc3BsYXlGb3JtYXRzO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhDYWxlbmRhciB7XG4gIHByaXZhdGUgX2NvbmZpZzogQVhDYWxlbmRhckNvbmZpZztcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY29uc3RydWN0b3IoY29uZmlnOiBBWENhbGVuZGFyQ29uZmlnKSB7XG4gICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICB9XG5cbiAgcHVibGljIGdldCB3ZWVrZW5kKCk6IG51bWJlcltdIHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnLndlZWtlbmQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZvcm1hdHMoKTogQVhEYXRlVGltZURpc3BsYXlGb3JtYXRzIHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnLmZvcm1hdHM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHdlZWtkYXlzKCk6IG51bWJlcltdIHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnLndlZWtkYXlzO1xuICB9XG5cbiAgYWJzdHJhY3QgbmFtZSgpOiBzdHJpbmc7XG5cbiAgYWJzdHJhY3QgZGF5T2ZNb250aChkYXRlOiBEYXRlKTogbnVtYmVyO1xuXG4gIGFic3RyYWN0IGRheU9mWWVhcihkYXRlOiBEYXRlKTogbnVtYmVyO1xuXG4gIGFic3RyYWN0IGRheU9mV2VlayhkYXRlOiBEYXRlKTogbnVtYmVyO1xuXG4gIGFic3RyYWN0IG1vbnRoT2ZZZWFyKGRhdGU6IERhdGUpOiBudW1iZXI7XG5cbiAgYWJzdHJhY3Qgd2Vla09mWWVhcihkYXRlOiBEYXRlKTogbnVtYmVyO1xuXG4gIGFic3RyYWN0IHllYXIoZGF0ZTogRGF0ZSk6IG51bWJlcjtcblxuICBhYnN0cmFjdCBhZGQoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQsIGFtb3VudDogbnVtYmVyKTogQVhEYXRlVGltZTtcblxuICBhYnN0cmFjdCBzZXQoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQsIHZhbHVlOiBudW1iZXIpOiBBWERhdGVUaW1lO1xuXG4gIGFic3RyYWN0IHN0YXJ0T2YoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQpOiBBWERhdGVUaW1lO1xuXG4gIGFic3RyYWN0IGVuZE9mKGRhdGU6IERhdGUsIHVuaXQ6IFRpbWVVbml0KTogQVhEYXRlVGltZTtcblxuICBhYnN0cmFjdCBjcmVhdGUodmFsdWU6IEFYRGF0ZVZhbHVlKTogQVhEYXRlVGltZTtcblxuICBhYnN0cmFjdCBwYXJzZSh2YWx1ZTogc3RyaW5nKTogQVhEYXRlVGltZTtcbn1cblxuZXhwb3J0IGNsYXNzIEFYRGF0ZVRpbWUge1xuICBwcml2YXRlIF9kYXRlOiBEYXRlO1xuXG4gIGdldCBkYXRlKCk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLl9kYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2FsZW5kYXI6IEFYQ2FsZW5kYXI7XG4gIGdldCBjYWxlbmRhcigpOiBBWENhbGVuZGFyIHtcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXI7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcih2YWx1ZTogRGF0ZSwgY2FsZW5kYXI6IEFYQ2FsZW5kYXIpIHtcbiAgICB0aGlzLl9jYWxlbmRhciA9IGNhbGVuZGFyO1xuICAgIHRoaXMuX2RhdGUgPSB2YWx1ZTtcbiAgfVxuXG4gIGNsb25lKCk6IEFYRGF0ZVRpbWUge1xuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZSh0aGlzLmRhdGUsIHRoaXMuY2FsZW5kYXIpO1xuICB9XG5cbiAgZ2V0IGRheU9mTW9udGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIuZGF5T2ZNb250aCh0aGlzLmRhdGUpO1xuICB9XG5cbiAgZ2V0IGRheU9mWWVhcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5kYXlPZlllYXIodGhpcy5kYXRlKTtcbiAgfVxuXG4gIGdldCBkYXlPZldlZWsoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIuZGF5T2ZXZWVrKHRoaXMuZGF0ZSk7XG4gIH1cblxuICBnZXQgaG91cigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9kYXRlLmdldEhvdXJzKCk7XG4gIH1cblxuICBnZXQgbWludXRlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGUuZ2V0TWludXRlcygpO1xuICB9XG5cbiAgZ2V0IHNlY29uZCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9kYXRlLmdldFNlY29uZHMoKTtcbiAgfVxuXG4gIGdldCB5ZWFyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLnllYXIodGhpcy5kYXRlKTtcbiAgfVxuXG4gIGdldCBtb250aE9mWWVhcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5tb250aE9mWWVhcih0aGlzLmRhdGUpO1xuICB9XG5cbiAgZ2V0IHdlZWtPZlllYXIoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIud2Vla09mWWVhcih0aGlzLmRhdGUpO1xuICB9XG5cbiAgZ2V0IG1vbnRoKCk6IEFYQ2FsZW5kYXJNb250aCB7XG4gICAgcmV0dXJuIG5ldyBBWENhbGVuZGFyTW9udGgodGhpcyk7XG4gIH1cblxuICBhZGQodW5pdDogVGltZVVuaXQsIGFtb3VudDogbnVtYmVyKTogQVhEYXRlVGltZSB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLmFkZCh0aGlzLmRhdGUsIHVuaXQsIGFtb3VudCk7XG4gIH1cblxuICBzZXQodW5pdDogVGltZVVuaXQgPSAnZGF5JywgdmFsdWU6IG51bWJlcik6IEFYRGF0ZVRpbWUge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5zZXQodGhpcy5kYXRlLCB1bml0LCB2YWx1ZSk7XG4gIH1cblxuICBkdXJhdGlvbihlbmQ6IERhdGUgfCBBWERhdGVUaW1lKTogQVhUaW1lU3BhbiB7XG4gICAgY29uc3QgZGF0ZSA9IGVuZCBpbnN0YW5jZW9mIEFYRGF0ZVRpbWUgPyBlbmQuZGF0ZSA6IChlbmQgYXMgRGF0ZSk7XG4gICAgY29uc3QgdmFsID0gbmV3IEFYRGF0ZVRpbWUoZGF0ZSwgdGhpcy5jYWxlbmRhcik7XG4gICAgY29uc3QgcmFuZ2UgPSBuZXcgQVhEYXRlVGltZVJhbmdlKHRoaXMsIHZhbCk7XG4gICAgcmV0dXJuIHJhbmdlLmR1cmF0aW9uKCk7XG4gIH1cblxuICBzdGFydE9mKHVuaXQ6IFRpbWVVbml0ID0gJ2RheScpOiBBWERhdGVUaW1lIHtcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIuc3RhcnRPZih0aGlzLmRhdGUsIHVuaXQpO1xuICB9XG5cbiAgZW5kT2YodW5pdDogVGltZVVuaXQgPSAnZGF5Jyk6IEFYRGF0ZVRpbWUge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5lbmRPZih0aGlzLmRhdGUsIHVuaXQpO1xuICB9XG5cbiAgLy9UT0RPOiByZW1vdmUgdW51c2VkIGl0ZW1zXG4gIHByaXZhdGUgX2Zvcm1hdEtleXMgPSB7XG4gICAgc3M6ICgpID0+IHRoaXMucGFkKHRoaXMuZGF0ZS5nZXRTZWNvbmRzKCksIDIpLFxuICAgIHM6ICgpID0+IHRoaXMuZGF0ZS5nZXRTZWNvbmRzKCkudG9TdHJpbmcoKSxcbiAgICAvL1xuICAgIGRkOiAoKSA9PiB0aGlzLnBhZCh0aGlzLmNhbGVuZGFyLmRheU9mTW9udGgodGhpcy5kYXRlKSwgMiksXG4gICAgREQ6ICgpID0+IHRoaXMucGFkKHRoaXMuY2FsZW5kYXIuZGF5T2ZNb250aCh0aGlzLmRhdGUpLCAyKSxcbiAgICBkOiAoKSA9PiB0aGlzLmNhbGVuZGFyLmRheU9mTW9udGgodGhpcy5kYXRlKS50b1N0cmluZygpLFxuICAgIC8vXG4gICAgbW06ICgpID0+IHRoaXMucGFkKHRoaXMuZGF0ZS5nZXRNaW51dGVzKCksIDIpLFxuICAgIG06ICgpID0+IHRoaXMuZGF0ZS5nZXRNaW51dGVzKCkudG9TdHJpbmcoKSxcbiAgICAvL1xuICAgIE1NTU06ICgpID0+XG4gICAgICB0cmFuc2xhdGVTeW5jKFxuICAgICAgICBgZGF0ZVRpbWUubW9udGhzLiR7dGhpcy5jYWxlbmRhci5uYW1lKCl9LmxvbmcuJHt0aGlzLmNhbGVuZGFyLm1vbnRoT2ZZZWFyKHRoaXMuZGF0ZSkgLSAxfWAsXG4gICAgICApLFxuICAgIE1NTTogKCkgPT5cbiAgICAgIHRyYW5zbGF0ZVN5bmMoXG4gICAgICAgIGBkYXRlVGltZS5tb250aHMuJHt0aGlzLmNhbGVuZGFyLm5hbWUoKX0uc2hvcnQuJHt0aGlzLmNhbGVuZGFyLm1vbnRoT2ZZZWFyKHRoaXMuZGF0ZSkgLSAxfWAsXG4gICAgICApLFxuICAgIE1NOiAoKSA9PiB0aGlzLnBhZCh0aGlzLmNhbGVuZGFyLm1vbnRoT2ZZZWFyKHRoaXMuZGF0ZSksIDIpLFxuICAgIE06ICgpID0+IHRoaXMuY2FsZW5kYXIubW9udGhPZlllYXIodGhpcy5kYXRlKSxcbiAgICAvL1xuICAgIEU6ICgpID0+XG4gICAgICB0cmFuc2xhdGVTeW5jKFxuICAgICAgICBgZGF0ZVRpbWUud2Vla2RheXMubG9uZy4ke3RoaXMuY2FsZW5kYXIud2Vla2RheXNbdGhpcy5jYWxlbmRhci5kYXlPZldlZWsodGhpcy5kYXRlKSAtIDFdfWAsXG4gICAgICApLFxuICAgIERERDogKCkgPT5cbiAgICAgIHRyYW5zbGF0ZVN5bmMoXG4gICAgICAgIGBkYXRlVGltZS53ZWVrZGF5cy5zaG9ydC4ke3RoaXMuY2FsZW5kYXIud2Vla2RheXNbdGhpcy5jYWxlbmRhci5kYXlPZldlZWsodGhpcy5kYXRlKSAtIDFdfWAsXG4gICAgICApLFxuICAgIEREREQ6ICgpID0+IHRoaXMuX2Zvcm1hdEtleXNbJ0UnXSgpLFxuICAgIC8vXG4gICAgeXl5eTogKCkgPT4gdGhpcy5wYWQodGhpcy5jYWxlbmRhci55ZWFyKHRoaXMuZGF0ZSksIDQpLFxuICAgIFlZWVk6ICgpID0+IHRoaXMucGFkKHRoaXMuY2FsZW5kYXIueWVhcih0aGlzLmRhdGUpLCA0KSxcbiAgICB5eTogKCkgPT4gdGhpcy5wYWQodGhpcy5jYWxlbmRhci55ZWFyKHRoaXMuZGF0ZSksIDQpLnN1YnN0cmluZygyKSxcbiAgICBZWTogKCkgPT4gdGhpcy5wYWQodGhpcy5jYWxlbmRhci55ZWFyKHRoaXMuZGF0ZSksIDQpLnN1YnN0cmluZygyKSxcbiAgICAvL1xuICAgIEhIOiAoKSA9PiB0aGlzLnBhZCh0aGlzLmRhdGUuZ2V0SG91cnMoKSwgMiksXG4gICAgSDogKCkgPT4gdGhpcy5kYXRlLmdldEhvdXJzKCkudG9TdHJpbmcoKSxcbiAgICAvL1xuICAgIGhoOiAoKSA9PiB0aGlzLnBhZCh0aGlzLmRhdGUuZ2V0SG91cnMoKSAlIDEyIHx8IDEyLCAyKSxcbiAgICBoOiAoKSA9PiAodGhpcy5kYXRlLmdldEhvdXJzKCkgJSAxMiB8fCAxMikudG9TdHJpbmcoKSxcbiAgICAvL1xuICAgIEE6ICgpID0+ICh0aGlzLmRhdGUuZ2V0SG91cnMoKSA8IDEyID8gJ2FtJyA6ICdwbScpLFxuICAgIGE6ICgpID0+ICh0aGlzLmRhdGUuZ2V0SG91cnMoKSA8IDEyID8gJ2FtJyA6ICdwbScpLFxuICAgIGRhdGU6IChvcHRpb25zKSA9PiB0aGlzLmZvcm1hdCh0aGlzLmdldERhdGVUaW1lRm9ybWF0QnlMb2NhbGUob3B0aW9ucy5sb2NhbGUsICdzaG9ydERhdGUnKSksXG4gICAgc2hvcnREYXRlOiAob3B0aW9ucykgPT4gdGhpcy5mb3JtYXQodGhpcy5nZXREYXRlVGltZUZvcm1hdEJ5TG9jYWxlKG9wdGlvbnMubG9jYWxlLCAnc2hvcnREYXRlJykpLFxuICAgIGxvbmdEYXRlOiAob3B0aW9ucykgPT4gdGhpcy5mb3JtYXQodGhpcy5nZXREYXRlVGltZUZvcm1hdEJ5TG9jYWxlKG9wdGlvbnMubG9jYWxlLCAnbG9uZ0RhdGUnKSksXG4gICAgLy9cbiAgICBzaG9ydFRpbWU6IChvcHRpb25zKSA9PiB0aGlzLmZvcm1hdCh0aGlzLmdldERhdGVUaW1lRm9ybWF0QnlMb2NhbGUob3B0aW9ucy5sb2NhbGUsICdzaG9ydFRpbWUnKSksXG4gICAgdGltZTogKG9wdGlvbnMpID0+IHRoaXMuZm9ybWF0KHRoaXMuZ2V0RGF0ZVRpbWVGb3JtYXRCeUxvY2FsZShvcHRpb25zLmxvY2FsZSwgJ3Nob3J0VGltZScpKSxcbiAgICBsb25nVGltZTogKG9wdGlvbnMpID0+IHRoaXMuZm9ybWF0KHRoaXMuZ2V0RGF0ZVRpbWVGb3JtYXRCeUxvY2FsZShvcHRpb25zLmxvY2FsZSwgJ2xvbmdUaW1lJykpLFxuICAgIC8vXG4gICAgZGF0ZXRpbWU6IChvcHRpb25zKSA9PiB0aGlzLmZvcm1hdCgnZGF0ZSB0aW1lJywgeyBsb2NhbGU6IG9wdGlvbnMubG9jYWxlIH0pLFxuICB9O1xuXG4gIGZvcm1hdChcbiAgICBmb3JtYXQ6IHN0cmluZyA9IHRoaXMuZ2V0RGF0ZVRpbWVGb3JtYXRCeUxvY2FsZShuYXZpZ2F0b3IubGFuZ3VhZ2UsICdzaG9ydERhdGUnKSxcbiAgICBvcHRpb25zPzogeyBsb2NhbGU/OiBzdHJpbmcgfSxcbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBlZmZlY3RpdmVPcHRpb25zID0gZGVmYXVsdHMoe30sIG9wdGlvbnMsIHtcbiAgICAgIGxvY2FsZTogbmF2aWdhdG9yLmxhbmd1YWdlLFxuICAgIH0pO1xuICAgIGNvbnN0IHJlID0gbmV3IFJlZ0V4cChvcmRlckJ5KE9iamVjdC5rZXlzKHRoaXMuX2Zvcm1hdEtleXMpLCAoYykgPT4gYy5sZW5ndGgsIFsnZGVzYyddKS5qb2luKCd8JyksICdnaScpO1xuICAgIHJldHVybiBmb3JtYXQucmVwbGFjZShyZSwgKG1hdGNoZWQpID0+IHtcbiAgICAgIGNvbnN0IGYgPSB0aGlzLl9mb3JtYXRLZXlzW21hdGNoZWRdO1xuICAgICAgY29uc3QgciA9IGYoZWZmZWN0aXZlT3B0aW9ucyk7XG4gICAgICByZXR1cm4gcjtcbiAgICB9KTtcbiAgfVxuXG4gIGdldERhdGVUaW1lRm9ybWF0QnlMb2NhbGUoXG4gICAgbG9jYWxlOiBzdHJpbmcsXG4gICAgc3R5bGU6ICdzaG9ydERhdGUnIHwgJ2xvbmdEYXRlJyB8ICdzaG9ydFRpbWUnIHwgJ2xvbmdUaW1lJyxcbiAgKTogc3RyaW5nIHtcbiAgICBsZXQgb3B0aW9uczogSW50bC5EYXRlVGltZUZvcm1hdE9wdGlvbnMgPSB7fTtcbiAgICBzd2l0Y2ggKHN0eWxlKSB7XG4gICAgICBjYXNlICdzaG9ydERhdGUnOiAvLyBZZWFyLCBNb250aCwgRGF5XG4gICAgICAgIG9wdGlvbnMgPSB7IHllYXI6ICdudW1lcmljJywgbW9udGg6ICcyLWRpZ2l0JywgZGF5OiAnMi1kaWdpdCcgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdsb25nRGF0ZSc6IC8vIFdlZWtkYXksIE1vbnRoIG5hbWUsIERheSwgWWVhclxuICAgICAgICBvcHRpb25zID0geyB3ZWVrZGF5OiAnbG9uZycsIHllYXI6ICdudW1lcmljJywgbW9udGg6ICdsb25nJywgZGF5OiAnbnVtZXJpYycgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzaG9ydFRpbWUnOiAvLyBIb3VyLCBNaW51dGVcbiAgICAgICAgb3B0aW9ucyA9IHsgaG91cjogJzItZGlnaXQnLCBtaW51dGU6ICcyLWRpZ2l0JywgaG91cjEyOiBmYWxzZSB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2xvbmdUaW1lJzogLy8gSG91ciwgTWludXRlLCBTZWNvbmRcbiAgICAgICAgb3B0aW9ucyA9IHsgaG91cjogJzItZGlnaXQnLCBtaW51dGU6ICcyLWRpZ2l0Jywgc2Vjb25kOiAnMi1kaWdpdCcsIGhvdXIxMjogZmFsc2UgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCBvcHRpb25zKTtcblxuICAgIC8vIEdldCBwYXJ0cyBvZiB0aGUgZGF0ZSBhbmQvb3IgdGltZVxuICAgIGNvbnN0IHBhcnRzID0gZm9ybWF0dGVyLmZvcm1hdFRvUGFydHMobmV3IERhdGUoKSk7XG5cbiAgICAvLyBNYXAgcGFydHMgdG8gdGhlaXIgcmVzcGVjdGl2ZSBmb3JtYXRcbiAgICBjb25zdCBmb3JtYXRNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICBkYXk6ICdkZCcsXG4gICAgICBtb250aDogc3R5bGUgPT0gJ2xvbmdEYXRlJyA/ICdNTU1NJyA6ICdNTScsXG4gICAgICB5ZWFyOiAneXl5eScsXG4gICAgICBob3VyOiAnSEgnLFxuICAgICAgbWludXRlOiAnbW0nLFxuICAgICAgc2Vjb25kOiAnc3MnLFxuICAgICAgd2Vla2RheTogJ0UnLFxuICAgICAgbGl0ZXJhbDogJycsXG4gICAgfTtcblxuICAgIC8vIENvbnN0cnVjdCB0aGUgZGF0ZSBhbmQvb3IgdGltZSBmb3JtYXQgc3RyaW5nXG4gICAgcmV0dXJuIHBhcnRzXG4gICAgICAubWFwKChwYXJ0KSA9PiB7XG4gICAgICAgIGlmIChwYXJ0LnR5cGUgPT09ICdsaXRlcmFsJykge1xuICAgICAgICAgIC8vIFVzZSB0aGUgbGl0ZXJhbCBwYXJ0IGRpcmVjdGx5IGFzIHNlcGFyYXRvclxuICAgICAgICAgIHJldHVybiBwYXJ0LnZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBmb3JtYXRNYXBbcGFydC50eXBlXSB8fCBwYXJ0LnZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmpvaW4oJycpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYWQobiwgd2lkdGgsIHogPSAnMCcpIHtcbiAgICBuID0gbiArICcnO1xuICAgIHJldHVybiBuLmxlbmd0aCA+PSB3aWR0aCA/IG4gOiBuZXcgQXJyYXkod2lkdGggLSBuLmxlbmd0aCArIDEpLmpvaW4oeikgKyBuO1xuICB9XG5cbiAgZXF1YWwodmFsdWU6IERhdGUgfCBBWERhdGVUaW1lLCB1bml0OiBUaW1lVW5pdCA9ICdkYXknKSB7XG4gICAgcmV0dXJuIHRoaXMuY29tcGFyZSh2YWx1ZSwgdW5pdCkgPT0gMDtcbiAgfVxuXG4gIGNvbXBhcmUodmFsdWU6IERhdGUgfCBBWERhdGVUaW1lLCB1bml0OiBUaW1lVW5pdCA9ICdkYXknKSB7XG4gICAgY29uc3QgZGF0ZSA9IHZhbHVlIGluc3RhbmNlb2YgQVhEYXRlVGltZSA/IHZhbHVlLmRhdGUgOiAodmFsdWUgYXMgRGF0ZSk7XG4gICAgY29uc3QgdmFsID0gbmV3IEFYRGF0ZVRpbWUoZGF0ZSwgdGhpcy5jYWxlbmRhcik7XG4gICAgY29uc3QgZnVuYyA9ICh2MTogbnVtYmVyLCB2MjogbnVtYmVyKSA9PiB7XG4gICAgICBpZiAodjEgPT0gdjIpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9IGVsc2UgaWYgKHYxID4gdjIpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgfTtcbiAgICBsZXQgcCA9IDA7XG4gICAgc3dpdGNoICh1bml0KSB7XG4gICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgcmV0dXJuIGZ1bmModGhpcy55ZWFyLCB2YWwueWVhcik7XG4gICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgcCA9IHRoaXMuY29tcGFyZSh2YWwsICd5ZWFyJyk7XG4gICAgICAgIHJldHVybiBwID09IDAgPyBmdW5jKHRoaXMud2Vla09mWWVhciwgdmFsLndlZWtPZlllYXIpIDogcDtcbiAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgcCA9IHRoaXMuY29tcGFyZSh2YWwsICd5ZWFyJyk7XG4gICAgICAgIHJldHVybiBwID09IDAgPyBmdW5jKHRoaXMubW9udGhPZlllYXIsIHZhbC5tb250aE9mWWVhcikgOiBwO1xuICAgICAgY2FzZSAnZGF5JzpcbiAgICAgICAgcCA9IHRoaXMuY29tcGFyZSh2YWwsICd5ZWFyJyk7XG4gICAgICAgIHJldHVybiBwID09IDAgPyBmdW5jKHRoaXMuZGF5T2ZZZWFyLCB2YWwuZGF5T2ZZZWFyKSA6IHA7XG4gICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgcCA9IHRoaXMuY29tcGFyZSh2YWwsICdkYXknKTtcbiAgICAgICAgcmV0dXJuIHAgPT0gMCA/IGZ1bmModGhpcy5ob3VyLCB2YWwuaG91cikgOiBwO1xuICAgICAgY2FzZSAnbWludXRlJzpcbiAgICAgICAgcCA9IHRoaXMuY29tcGFyZSh2YWwsICdob3VyJyk7XG4gICAgICAgIHJldHVybiBwID09IDAgPyBmdW5jKHRoaXMubWludXRlLCB2YWwubWludXRlKSA6IHA7XG4gICAgICBjYXNlICdzZWNvbmQnOlxuICAgICAgICBwID0gdGhpcy5jb21wYXJlKHZhbCwgJ21pbnV0ZScpO1xuICAgICAgICByZXR1cm4gcCA9PSAwID8gZnVuYyh0aGlzLnNlY29uZCwgdmFsLnNlY29uZCkgOiBwO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZ1bmModGhpcy5kYXRlLmdldFRpbWUoKSwgdmFsLmRhdGUuZ2V0VGltZSgpKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFYQ2FsZW5kYXJNb250aCB7XG4gIHByaXZhdGUgX3JhbmdlOiBBWERhdGVUaW1lUmFuZ2U7XG4gIHB1YmxpYyBnZXQgcmFuZ2UoKTogQVhEYXRlVGltZVJhbmdlIHtcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2U7XG4gIH1cbiAgcHVibGljIHNldCByYW5nZSh2OiBBWERhdGVUaW1lUmFuZ2UpIHtcbiAgICB0aGlzLl9yYW5nZSA9IHY7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRvdGFsRGF5cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnJhbmdlLmVuZFRpbWUuZGF5T2ZNb250aDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGRhdGU6IEFYRGF0ZVRpbWUpIHtcbiAgICB0aGlzLmluZGV4ID0gZGF0ZS5kYXRlLmdldE1vbnRoKCk7XG4gICAgdGhpcy5uYW1lID0gZGF0ZS5mb3JtYXQoJ01NTU0nKTtcbiAgICB0aGlzLnJhbmdlID0gbmV3IEFYRGF0ZVRpbWVSYW5nZShcbiAgICAgIG5ldyBBWERhdGVUaW1lKGRhdGUuc3RhcnRPZignbW9udGgnKS5kYXRlLCBkYXRlLmNhbGVuZGFyKSxcbiAgICAgIG5ldyBBWERhdGVUaW1lKGRhdGUuZW5kT2YoJ21vbnRoJykuZGF0ZSwgZGF0ZS5jYWxlbmRhciksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5kZXg6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBuYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhUaW1lU3BhblRvdGFsIHtcbiAgbWlsaXNlY29uZHM6IG51bWJlcjtcbiAgc2Vjb25kczogbnVtYmVyO1xuICBtaW51dGVzOiBudW1iZXI7XG4gIGhvdXJzOiBudW1iZXI7XG4gIGRheXM6IG51bWJlcjtcbiAgd2Vla3M6IG51bWJlcjtcbiAgbW9udGhzOiBudW1iZXI7XG4gIHllYXJzOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhUaW1lU3BhbiB7XG4gIG1pbGlzZWNvbmRzOiBudW1iZXI7XG4gIHNlY29uZHM6IG51bWJlcjtcbiAgbWludXRlczogbnVtYmVyO1xuICBob3VyczogbnVtYmVyO1xuICBkYXlzOiBudW1iZXI7XG4gIG1vbnRoczogbnVtYmVyO1xuICB5ZWFyczogbnVtYmVyO1xuICB0b3RhbDogQVhUaW1lU3BhblRvdGFsO1xufVxuXG5leHBvcnQgY2xhc3MgQVhEYXRlVGltZVJhbmdlIHtcbiAgcHJpdmF0ZSBfc3RhcnRUaW1lOiBBWERhdGVUaW1lO1xuICBwcml2YXRlIF9lbmRUaW1lOiBBWERhdGVUaW1lO1xuXG4gIHB1YmxpYyBnZXQgc3RhcnRUaW1lKCk6IEFYRGF0ZVRpbWUge1xuICAgIHJldHVybiB0aGlzLl9zdGFydFRpbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVuZFRpbWUoKTogQVhEYXRlVGltZSB7XG4gICAgcmV0dXJuIHRoaXMuX2VuZFRpbWU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihzdGFydFRpbWU6IEFYRGF0ZVRpbWUsIGVuZFRpbWU6IEFYRGF0ZVRpbWUpIHtcbiAgICB0aGlzLl9zdGFydFRpbWUgPSBzdGFydFRpbWU7XG4gICAgdGhpcy5fZW5kVGltZSA9IGVuZFRpbWU7XG4gIH1cblxuICBkdXJhdGlvbigpOiBBWFRpbWVTcGFuIHtcbiAgICBjb25zdCByZXN1bHQ6IEFYVGltZVNwYW4gPSB7XG4gICAgICBtaWxpc2Vjb25kczogMCxcbiAgICAgIHNlY29uZHM6IDAsXG4gICAgICBtaW51dGVzOiAwLFxuICAgICAgaG91cnM6IDAsXG4gICAgICBkYXlzOiAwLFxuICAgICAgbW9udGhzOiAwLFxuICAgICAgeWVhcnM6IDAsXG4gICAgICB0b3RhbDoge1xuICAgICAgICBtaWxpc2Vjb25kczogMCxcbiAgICAgICAgc2Vjb25kczogMCxcbiAgICAgICAgbWludXRlczogMCxcbiAgICAgICAgaG91cnM6IDAsXG4gICAgICAgIGRheXM6IDAsXG4gICAgICAgIHdlZWtzOiAwLFxuICAgICAgICBtb250aHM6IDAsXG4gICAgICAgIHllYXJzOiAwLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3Qgb25lX3NlY29uZCA9IDEwMDA7XG4gICAgY29uc3Qgb25lX21pbiA9IG9uZV9zZWNvbmQgKiA2MDtcbiAgICBjb25zdCBvbmVfaG91ciA9IG9uZV9taW4gKiA2MDtcbiAgICBjb25zdCBvbmVfZGF5ID0gb25lX2hvdXIgKiAyNDtcbiAgICBjb25zdCBvbmVfd2VlayA9IG9uZV9kYXkgKiA3O1xuICAgIGNvbnN0IG9uZV95ZWFyID0gMzY1LjI1ICogb25lX2RheTtcbiAgICBjb25zdCBvbmVfbW9udGggPSBvbmVfeWVhciAvIDEyO1xuICAgIGNvbnN0IHN0YXJ0VGltZSA9IHRoaXMuX3N0YXJ0VGltZS5kYXRlLmdldFRpbWUoKTtcbiAgICBjb25zdCBlbmRUaW1lID0gdGhpcy5fZW5kVGltZS5kYXRlLmdldFRpbWUoKTtcbiAgICBjb25zdCBkaWZmID0gTWF0aC5hYnMoZW5kVGltZSAtIHN0YXJ0VGltZSk7XG4gICAgLy9cbiAgICByZXN1bHQudG90YWwubWlsaXNlY29uZHMgPSBkaWZmO1xuICAgIHJlc3VsdC50b3RhbC5zZWNvbmRzID0gTnVtYmVyKChkaWZmIC8gb25lX3NlY29uZCkudG9GaXhlZCgyKSk7XG4gICAgcmVzdWx0LnRvdGFsLm1pbnV0ZXMgPSBOdW1iZXIoKGRpZmYgLyBvbmVfbWluKS50b0ZpeGVkKDIpKTtcbiAgICByZXN1bHQudG90YWwuaG91cnMgPSBOdW1iZXIoKGRpZmYgLyBvbmVfaG91cikudG9GaXhlZCgyKSk7XG4gICAgcmVzdWx0LnRvdGFsLmRheXMgPSBOdW1iZXIoKGRpZmYgLyBvbmVfZGF5KS50b0ZpeGVkKDIpKTtcbiAgICByZXN1bHQudG90YWwud2Vla3MgPSBOdW1iZXIoKGRpZmYgLyBvbmVfd2VlaykudG9GaXhlZCgyKSk7XG4gICAgLy9cbiAgICAvLyBsZXQgbW9udGhzID0gKHRoaXMuZW5kVGltZS55ZWFyIC0gdGhpcy5zdGFydFRpbWUueWVhcikgKiAxMjtcbiAgICAvLyBtb250aHMgKz0gdGhpcy5lbmRUaW1lLm1vbnRoT2ZZZWFyIC0gdGhpcy5zdGFydFRpbWUubW9udGhPZlllYXIgKyAxO1xuICAgIC8vIGlmICh0aGlzLmVuZFRpbWUuZGF5T2ZZZWFyIDwgdGhpcy5zdGFydFRpbWUuZGF5T2ZZZWFyKSB7XG4gICAgLy8gICAgIG1vbnRocy0tO1xuICAgIC8vIH1cbiAgICAvLyByZXN1bHQudG90YWwubW9udGhzID0gTWF0aC5hYnMobW9udGhzKTtcbiAgICAvLyBUT0RPOiByZXZpZXdcbiAgICByZXN1bHQudG90YWwubW9udGhzID0gTnVtYmVyKChkaWZmIC8gb25lX21vbnRoKS50b0ZpeGVkKDIpKTtcbiAgICByZXN1bHQudG90YWwueWVhcnMgPSBOdW1iZXIoKGRpZmYgLyBvbmVfeWVhcikudG9GaXhlZCgyKSk7XG4gICAgLy9cbiAgICByZXN1bHQubWlsaXNlY29uZHMgPSByZXN1bHQudG90YWwubWlsaXNlY29uZHMgJSAxMDAwO1xuICAgIHJlc3VsdC5zZWNvbmRzID0gTnVtYmVyKChyZXN1bHQudG90YWwuc2Vjb25kcyAlIDYwKS50b0ZpeGVkKDApKTtcbiAgICByZXN1bHQubWludXRlcyA9IE51bWJlcigocmVzdWx0LnRvdGFsLm1pbnV0ZXMgJSA2MCkudG9GaXhlZCgwKSk7XG4gICAgcmVzdWx0LmhvdXJzID0gTnVtYmVyKChyZXN1bHQudG90YWwuaG91cnMgJSAyNCkudG9GaXhlZCgwKSk7XG4gICAgLy8gVE9ETzogcmV2aWV3XG4gICAgcmVzdWx0LmRheXMgPSBOdW1iZXIoKHJlc3VsdC50b3RhbC5kYXlzICUgMzAuNCkudG9GaXhlZCgwKSk7XG4gICAgcmVzdWx0Lm1vbnRocyA9IE51bWJlcigocmVzdWx0LnRvdGFsLm1vbnRocyAlIDEyKS50b0ZpeGVkKDApKTtcbiAgICByZXN1bHQueWVhcnMgPSBOdW1iZXIocmVzdWx0LnRvdGFsLnllYXJzLnRvRml4ZWQoMCkpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBlbnVtdXJhdGUodW5pdDogVGltZVVuaXQgPSAnZGF5JywgYW1vdW50ID0gMSk6IEFYRGF0ZVRpbWVbXSB7XG4gICAgY29uc3QgcmVzdWx0OiBBWERhdGVUaW1lW10gPSBbXTtcbiAgICBsZXQgaXRlbSA9IHRoaXMuX3N0YXJ0VGltZS5jbG9uZSgpO1xuICAgIHdoaWxlIChpdGVtLmNvbXBhcmUodGhpcy5fZW5kVGltZSwgdW5pdCkgPCAxKSB7XG4gICAgICBpZiAoIXJlc3VsdC5zb21lKChjKSA9PiBjLmVxdWFsKGl0ZW0sIHVuaXQpKSkge1xuICAgICAgICByZXN1bHQucHVzaChpdGVtKTtcbiAgICAgIH1cbiAgICAgIGl0ZW0gPSBpdGVtLmFkZCh1bml0LCBhbW91bnQpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=
|
@@ -1,21 +0,0 @@
|
|
1
|
-
import { AXFormatModule } from '@acorex/core/format';
|
2
|
-
import { NgModule } from '@angular/core';
|
3
|
-
import { AXDateTimeFormatter } from './formatters/datetime-formatter';
|
4
|
-
import { AXTimeLeftFormatter } from './formatters/timeleft-formatter';
|
5
|
-
import { AXDateTimePipe } from './datetime.pipe';
|
6
|
-
import * as i0 from "@angular/core";
|
7
|
-
import * as i1 from "@acorex/core/format";
|
8
|
-
export class AXDateTimeModule {
|
9
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AXDateTimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
10
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.3", ngImport: i0, type: AXDateTimeModule, declarations: [AXDateTimePipe], imports: [i1.AXFormatModule], exports: [AXDateTimePipe] }); }
|
11
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AXDateTimeModule, imports: [AXFormatModule.forChild({ formatters: [AXDateTimeFormatter, AXTimeLeftFormatter] })] }); }
|
12
|
-
}
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AXDateTimeModule, decorators: [{
|
14
|
-
type: NgModule,
|
15
|
-
args: [{
|
16
|
-
imports: [AXFormatModule.forChild({ formatters: [AXDateTimeFormatter, AXTimeLeftFormatter] })],
|
17
|
-
exports: [AXDateTimePipe],
|
18
|
-
declarations: [AXDateTimePipe],
|
19
|
-
}]
|
20
|
-
}] });
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL2RhdGVUaW1lL3NyYy9saWIvZGF0ZXRpbWUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBT2pELE1BQU0sT0FBTyxnQkFBZ0I7OEdBQWhCLGdCQUFnQjsrR0FBaEIsZ0JBQWdCLGlCQUZaLGNBQWMsMkNBRG5CLGNBQWM7K0dBR2IsZ0JBQWdCLFlBSmpCLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7OzJGQUlsRixnQkFBZ0I7a0JBTDVCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLG1CQUFtQixFQUFFLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUM5RixPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7b0JBQ3pCLFlBQVksRUFBRSxDQUFDLGNBQWMsQ0FBQztpQkFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEZvcm1hdE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYRGF0ZVRpbWVGb3JtYXR0ZXIgfSBmcm9tICcuL2Zvcm1hdHRlcnMvZGF0ZXRpbWUtZm9ybWF0dGVyJztcbmltcG9ydCB7IEFYVGltZUxlZnRGb3JtYXR0ZXIgfSBmcm9tICcuL2Zvcm1hdHRlcnMvdGltZWxlZnQtZm9ybWF0dGVyJztcbmltcG9ydCB7IEFYRGF0ZVRpbWVQaXBlIH0gZnJvbSAnLi9kYXRldGltZS5waXBlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0FYRm9ybWF0TW9kdWxlLmZvckNoaWxkKHsgZm9ybWF0dGVyczogW0FYRGF0ZVRpbWVGb3JtYXR0ZXIsIEFYVGltZUxlZnRGb3JtYXR0ZXJdIH0pXSxcbiAgZXhwb3J0czogW0FYRGF0ZVRpbWVQaXBlXSxcbiAgZGVjbGFyYXRpb25zOiBbQVhEYXRlVGltZVBpcGVdLFxufSlcbmV4cG9ydCBjbGFzcyBBWERhdGVUaW1lTW9kdWxlIHt9XG4iXX0=
|
@@ -1,29 +0,0 @@
|
|
1
|
-
import { Pipe, inject } from '@angular/core';
|
2
|
-
import { AXCalendarService } from './calendar.service';
|
3
|
-
import * as i0 from "@angular/core";
|
4
|
-
/**
|
5
|
-
* @deprecated The pipe should not be used, use format instead
|
6
|
-
*/
|
7
|
-
export class AXDateTimePipe {
|
8
|
-
constructor() {
|
9
|
-
this._calendarService = inject(AXCalendarService);
|
10
|
-
}
|
11
|
-
transform(value, format, calendarName) {
|
12
|
-
if (value == null) {
|
13
|
-
return '';
|
14
|
-
}
|
15
|
-
let calendar = this._calendarService.calendar;
|
16
|
-
if (calendarName) {
|
17
|
-
calendar = this._calendarService.resolveCalendar(calendarName);
|
18
|
-
}
|
19
|
-
const val = this._calendarService.convert(value, calendar.name());
|
20
|
-
return val.format(format);
|
21
|
-
}
|
22
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AXDateTimePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
23
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.3", ngImport: i0, type: AXDateTimePipe, name: "axDate" }); }
|
24
|
-
}
|
25
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AXDateTimePipe, decorators: [{
|
26
|
-
type: Pipe,
|
27
|
-
args: [{ name: 'axDate' }]
|
28
|
-
}] });
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9kYXRlVGltZS9zcmMvbGliL2RhdGV0aW1lLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQUd2RDs7R0FFRztBQUVILE1BQU0sT0FBTyxjQUFjO0lBRDNCO1FBRVUscUJBQWdCLEdBQXNCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0tBYXpFO0lBWEMsU0FBUyxDQUFDLEtBQWlDLEVBQUUsTUFBZSxFQUFFLFlBQXFCO1FBQ2pGLElBQUksS0FBSyxJQUFJLElBQUksRUFBRTtZQUNqQixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztRQUM5QyxJQUFJLFlBQVksRUFBRTtZQUNoQixRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNoRTtRQUNELE1BQU0sR0FBRyxHQUFlLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzlFLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QixDQUFDOzhHQWJVLGNBQWM7NEdBQWQsY0FBYzs7MkZBQWQsY0FBYztrQkFEMUIsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYQ2FsZW5kYXJTZXJ2aWNlIH0gZnJvbSAnLi9jYWxlbmRhci5zZXJ2aWNlJztcbmltcG9ydCB7IEFYRGF0ZVRpbWUgfSBmcm9tICcuL2RhdGV0aW1lLmNsYXNzJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBUaGUgcGlwZSBzaG91bGQgbm90IGJlIHVzZWQsIHVzZSBmb3JtYXQgaW5zdGVhZFxuICovXG5AUGlwZSh7IG5hbWU6ICdheERhdGUnIH0pXG5leHBvcnQgY2xhc3MgQVhEYXRlVGltZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHJpdmF0ZSBfY2FsZW5kYXJTZXJ2aWNlOiBBWENhbGVuZGFyU2VydmljZSA9IGluamVjdChBWENhbGVuZGFyU2VydmljZSk7XG5cbiAgdHJhbnNmb3JtKHZhbHVlOiBEYXRlIHwgQVhEYXRlVGltZSB8IHN0cmluZywgZm9ybWF0Pzogc3RyaW5nLCBjYWxlbmRhck5hbWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGxldCBjYWxlbmRhciA9IHRoaXMuX2NhbGVuZGFyU2VydmljZS5jYWxlbmRhcjtcbiAgICBpZiAoY2FsZW5kYXJOYW1lKSB7XG4gICAgICBjYWxlbmRhciA9IHRoaXMuX2NhbGVuZGFyU2VydmljZS5yZXNvbHZlQ2FsZW5kYXIoY2FsZW5kYXJOYW1lKTtcbiAgICB9XG4gICAgY29uc3QgdmFsOiBBWERhdGVUaW1lID0gdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLmNvbnZlcnQodmFsdWUsIGNhbGVuZGFyLm5hbWUoKSk7XG4gICAgcmV0dXJuIHZhbC5mb3JtYXQoZm9ybWF0KTtcbiAgfVxufVxuIl19
|
@@ -1,30 +0,0 @@
|
|
1
|
-
import { Injectable, inject } from '@angular/core';
|
2
|
-
import { AXCalendarService } from '../calendar.service';
|
3
|
-
import * as i0 from "@angular/core";
|
4
|
-
export class AXDateTimeFormatter {
|
5
|
-
constructor() {
|
6
|
-
this.calendarService = inject(AXCalendarService);
|
7
|
-
}
|
8
|
-
get name() {
|
9
|
-
return 'datetime';
|
10
|
-
}
|
11
|
-
format(value, options) {
|
12
|
-
const effectiveOptions = typeof options == 'object' ? {
|
13
|
-
format: options.format ?? 'date',
|
14
|
-
locale: options.locale,
|
15
|
-
calendar: options.calendar ?? this.calendarService.calendar.name()
|
16
|
-
} : {
|
17
|
-
format: options,
|
18
|
-
calendar: this.calendarService.calendar.name()
|
19
|
-
};
|
20
|
-
return this.calendarService
|
21
|
-
.create(value, effectiveOptions.calendar)
|
22
|
-
.format(effectiveOptions.format, { locale: effectiveOptions.locale });
|
23
|
-
}
|
24
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AXDateTimeFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
25
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AXDateTimeFormatter }); }
|
26
|
-
}
|
27
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AXDateTimeFormatter, decorators: [{
|
28
|
-
type: Injectable
|
29
|
-
}] });
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL2RhdGVUaW1lL3NyYy9saWIvZm9ybWF0dGVycy9kYXRldGltZS1mb3JtYXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBaUJ4RCxNQUFNLE9BQU8sbUJBQW1CO0lBRGhDO1FBRVUsb0JBQWUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztLQW9CckQ7SUFsQkMsSUFBSSxJQUFJO1FBQ04sT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFjLEVBQUUsT0FBNkM7UUFDbEUsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLE9BQU8sSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3BELE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxJQUFJLE1BQU07WUFDaEMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1lBQ3RCLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRTtTQUNuRSxDQUFDLENBQUMsQ0FBQztZQUNGLE1BQU0sRUFBRSxPQUFPO1lBQ2YsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRTtTQUMvQyxDQUFBO1FBRUQsT0FBTyxJQUFJLENBQUMsZUFBZTthQUN4QixNQUFNLENBQUMsS0FBYSxFQUFFLGdCQUFnQixDQUFDLFFBQWtCLENBQUM7YUFDMUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLENBQUM7OEdBcEJVLG1CQUFtQjtrSEFBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhGb3JtYXRPcHRpb25zLCBBWEZvcm1hdHRlciB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWENhbGVuZGFyU2VydmljZSB9IGZyb20gJy4uL2NhbGVuZGFyLnNlcnZpY2UnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhEYXRlVGltZUZvcm1hdHRlck9wdGlvbnMgZXh0ZW5kcyBBWEZvcm1hdE9wdGlvbnMge1xuICBmb3JtYXQ/OiBzdHJpbmc7XG4gIGNhbGVuZGFyPzogc3RyaW5nO1xuICBsb2NhbGU/OiBzdHJpbmc7XG59XG5cbmRlY2xhcmUgbW9kdWxlICdAYWNvcmV4L2NvcmUvZm9ybWF0JyB7XG4gIGludGVyZmFjZSBBWEZvcm1hdE9wdGlvbnNNYXAge1xuICAgICdkYXRldGltZSc6IEFYRGF0ZVRpbWVGb3JtYXR0ZXJPcHRpb25zO1xuICB9XG59XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYRGF0ZVRpbWVGb3JtYXR0ZXIgaW1wbGVtZW50cyBBWEZvcm1hdHRlciB7XG4gIHByaXZhdGUgY2FsZW5kYXJTZXJ2aWNlID0gaW5qZWN0KEFYQ2FsZW5kYXJTZXJ2aWNlKTtcblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnZGF0ZXRpbWUnO1xuICB9XG5cbiAgZm9ybWF0KHZhbHVlOiB1bmtub3duLCBvcHRpb25zPzogQVhEYXRlVGltZUZvcm1hdHRlck9wdGlvbnMgfCBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGVmZmVjdGl2ZU9wdGlvbnMgPSB0eXBlb2Ygb3B0aW9ucyA9PSAnb2JqZWN0JyA/IHtcbiAgICAgIGZvcm1hdDogb3B0aW9ucy5mb3JtYXQgPz8gJ2RhdGUnLFxuICAgICAgbG9jYWxlOiBvcHRpb25zLmxvY2FsZSxcbiAgICAgIGNhbGVuZGFyOiBvcHRpb25zLmNhbGVuZGFyID8/IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNhbGVuZGFyLm5hbWUoKVxuICAgIH0gOiB7XG4gICAgICBmb3JtYXQ6IG9wdGlvbnMsXG4gICAgICBjYWxlbmRhcjogdGhpcy5jYWxlbmRhclNlcnZpY2UuY2FsZW5kYXIubmFtZSgpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY2FsZW5kYXJTZXJ2aWNlXG4gICAgICAuY3JlYXRlKHZhbHVlIGFzIERhdGUsIGVmZmVjdGl2ZU9wdGlvbnMuY2FsZW5kYXIgYXMgc3RyaW5nKVxuICAgICAgLmZvcm1hdChlZmZlY3RpdmVPcHRpb25zLmZvcm1hdCwgeyBsb2NhbGU6IGVmZmVjdGl2ZU9wdGlvbnMubG9jYWxlIH0pO1xuICB9XG59XG5cblxuIl19
|
@@ -1,91 +0,0 @@
|
|
1
|
-
import { Injectable } from "@angular/core";
|
2
|
-
import { isNil } from "lodash-es";
|
3
|
-
import * as i0 from "@angular/core";
|
4
|
-
export class AXTimeLeftFormatter {
|
5
|
-
get name() {
|
6
|
-
return 'timeleft';
|
7
|
-
}
|
8
|
-
format(value, options) {
|
9
|
-
const milliseconds = Number(value);
|
10
|
-
if (milliseconds === null || isNaN(milliseconds)) {
|
11
|
-
return "Calculating...";
|
12
|
-
}
|
13
|
-
const durationInSeconds = Math.round(milliseconds / 1000);
|
14
|
-
let format = options?.format;
|
15
|
-
// Determine the best format if format is null
|
16
|
-
if (isNil(format)) {
|
17
|
-
if (durationInSeconds < 45)
|
18
|
-
format = 's';
|
19
|
-
else if (durationInSeconds < 60 * 45)
|
20
|
-
format = 'm';
|
21
|
-
else if (durationInSeconds < 60 * 60 * 22)
|
22
|
-
format = 'h';
|
23
|
-
else if (durationInSeconds < 60 * 60 * 24 * 26)
|
24
|
-
format = 'd';
|
25
|
-
else if (durationInSeconds < 60 * 60 * 24 * 320)
|
26
|
-
format = 'M';
|
27
|
-
else
|
28
|
-
format = 'y';
|
29
|
-
}
|
30
|
-
// Helper function for zero-padding
|
31
|
-
const pad = (num) => num.toString().padStart(2, '0');
|
32
|
-
switch (format) {
|
33
|
-
case 's':
|
34
|
-
return `${durationInSeconds} seconds left`;
|
35
|
-
case 'ss':
|
36
|
-
return `${pad(durationInSeconds)} seconds left`;
|
37
|
-
case 'm':
|
38
|
-
return `${Math.round(durationInSeconds / 60)} minute${durationInSeconds >= 120 ? 's' : ''} left`;
|
39
|
-
case 'mm':
|
40
|
-
return `${pad(Math.round(durationInSeconds / 60))} minutes left`;
|
41
|
-
case 'h':
|
42
|
-
case 'H':
|
43
|
-
if (durationInSeconds < 60 * 89)
|
44
|
-
return 'an hour left';
|
45
|
-
return `${Math.round(durationInSeconds / 3600)} hour${durationInSeconds >= 60 * 180 ? 's' : ''} left`;
|
46
|
-
case 'hh':
|
47
|
-
case 'HH':
|
48
|
-
if (durationInSeconds < 60 * 89)
|
49
|
-
return '01 hour left';
|
50
|
-
return `${pad(Math.round(durationInSeconds / 3600))} hours left`;
|
51
|
-
case 'd':
|
52
|
-
case 'D':
|
53
|
-
if (durationInSeconds < 60 * 60 * 35)
|
54
|
-
return 'a day left';
|
55
|
-
return `${Math.round(durationInSeconds / (3600 * 24))} day${durationInSeconds >= 60 * 60 * 70 ? 's' : ''} left`;
|
56
|
-
case 'dd':
|
57
|
-
case 'DD':
|
58
|
-
if (durationInSeconds < 60 * 60 * 35)
|
59
|
-
return '01 day left';
|
60
|
-
return `${pad(Math.round(durationInSeconds / (3600 * 24)))} days left`;
|
61
|
-
case 'M':
|
62
|
-
if (durationInSeconds < 60 * 60 * 24 * 45)
|
63
|
-
return 'a month left';
|
64
|
-
return `${Math.round(durationInSeconds / (3600 * 24 * 30))} month${durationInSeconds >= 60 * 60 * 24 * 90 ? 's' : ''} left`;
|
65
|
-
case 'MM':
|
66
|
-
if (durationInSeconds < 60 * 60 * 24 * 45)
|
67
|
-
return '01 month left';
|
68
|
-
return `${pad(Math.round(durationInSeconds / (3600 * 24 * 30)))} months left`;
|
69
|
-
case 'y':
|
70
|
-
case 'Y':
|
71
|
-
if (durationInSeconds < 60 * 60 * 24 * 547)
|
72
|
-
return 'a year left';
|
73
|
-
return `${Math.round(durationInSeconds / (3600 * 24 * 365))} year${durationInSeconds >= 60 * 60 * 24 * 730 ? 's' : ''} left`;
|
74
|
-
case 'yy':
|
75
|
-
case 'YY':
|
76
|
-
case 'yyyy':
|
77
|
-
case 'YYYY':
|
78
|
-
if (durationInSeconds < 60 * 60 * 24 * 547)
|
79
|
-
return '01 year left';
|
80
|
-
return `${pad(Math.round(durationInSeconds / (3600 * 24 * 365)))} years left`;
|
81
|
-
default:
|
82
|
-
return 'Invalid format';
|
83
|
-
}
|
84
|
-
}
|
85
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AXTimeLeftFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
86
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AXTimeLeftFormatter }); }
|
87
|
-
}
|
88
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AXTimeLeftFormatter, decorators: [{
|
89
|
-
type: Injectable
|
90
|
-
}] });
|
91
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxlZnQtZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL2RhdGVUaW1lL3NyYy9saWIvZm9ybWF0dGVycy90aW1lbGVmdC1mb3JtYXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQWVsQyxNQUFNLE9BQU8sbUJBQW1CO0lBRTVCLElBQUksSUFBSTtRQUNKLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBc0IsRUFBRSxPQUFvQztRQUMvRCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDbEMsSUFBSSxZQUFZLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUM5QyxPQUFPLGdCQUFnQixDQUFDO1NBQzNCO1FBQ0QsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsQ0FBQztRQUMxRCxJQUFJLE1BQU0sR0FBRyxPQUFPLEVBQUUsTUFBTSxDQUFDO1FBQzdCLDhDQUE4QztRQUM5QyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNmLElBQUksaUJBQWlCLEdBQUcsRUFBRTtnQkFBRSxNQUFNLEdBQUcsR0FBRyxDQUFDO2lCQUNwQyxJQUFJLGlCQUFpQixHQUFHLEVBQUUsR0FBRyxFQUFFO2dCQUFFLE1BQU0sR0FBRyxHQUFHLENBQUM7aUJBQzlDLElBQUksaUJBQWlCLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO2dCQUFFLE1BQU0sR0FBRyxHQUFHLENBQUM7aUJBQ25ELElBQUksaUJBQWlCLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFB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O2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IEFYRm9ybWF0T3B0aW9ucywgQVhGb3JtYXR0ZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcblxuZXhwb3J0IGludGVyZmFjZSBBWFRpbWVMZWZ0Rm9ybWF0dGVyT3B0aW9ucyBleHRlbmRzIEFYRm9ybWF0T3B0aW9ucyB7XG4gICAgZm9ybWF0OiBzdHJpbmc7XG59XG5cbmRlY2xhcmUgbW9kdWxlICdAYWNvcmV4L2NvcmUvZm9ybWF0JyB7XG4gICAgaW50ZXJmYWNlIEFYRm9ybWF0T3B0aW9uc01hcCB7XG4gICAgICAgICd0aW1lbGVmdCc6IEFYVGltZUxlZnRGb3JtYXR0ZXJPcHRpb25zO1xuICAgIH1cbn1cblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhUaW1lTGVmdEZvcm1hdHRlciBpbXBsZW1lbnRzIEFYRm9ybWF0dGVyIHtcblxuICAgIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAndGltZWxlZnQnO1xuICAgIH1cblxuICAgIGZvcm1hdCh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nLCBvcHRpb25zPzogQVhUaW1lTGVmdEZvcm1hdHRlck9wdGlvbnMpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBtaWxsaXNlY29uZHMgPSBOdW1iZXIodmFsdWUpXG4gICAgICAgIGlmIChtaWxsaXNlY29uZHMgPT09IG51bGwgfHwgaXNOYU4obWlsbGlzZWNvbmRzKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiQ2FsY3VsYXRpbmcuLi5cIjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkdXJhdGlvbkluU2Vjb25kcyA9IE1hdGgucm91bmQobWlsbGlzZWNvbmRzIC8gMTAwMCk7XG4gICAgICAgIGxldCBmb3JtYXQgPSBvcHRpb25zPy5mb3JtYXQ7XG4gICAgICAgIC8vIERldGVybWluZSB0aGUgYmVzdCBmb3JtYXQgaWYgZm9ybWF0IGlzIG51bGxcbiAgICAgICAgaWYgKGlzTmlsKGZvcm1hdCkpIHtcbiAgICAgICAgICAgIGlmIChkdXJhdGlvbkluU2Vjb25kcyA8IDQ1KSBmb3JtYXQgPSAncyc7XG4gICAgICAgICAgICBlbHNlIGlmIChkdXJhdGlvbkluU2Vjb25kcyA8IDYwICogNDUpIGZvcm1hdCA9ICdtJztcbiAgICAgICAgICAgIGVsc2UgaWYgKGR1cmF0aW9uSW5TZWNvbmRzIDwgNjAgKiA2MCAqIDIyKSBmb3JtYXQgPSAnaCc7XG4gICAgICAgICAgICBlbHNlIGlmIChkdXJhdGlvbkluU2Vjb25kcyA8IDYwICogNjAgKiAyNCAqIDI2KSBmb3JtYXQgPSAnZCc7XG4gICAgICAgICAgICBlbHNlIGlmIChkdXJhdGlvbkluU2Vjb25kcyA8IDYwICogNjAgKiAyNCAqIDMyMCkgZm9ybWF0ID0gJ00nO1xuICAgICAgICAgICAgZWxzZSBmb3JtYXQgPSAneSc7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gZm9yIHplcm8tcGFkZGluZ1xuICAgICAgICBjb25zdCBwYWQgPSAobnVtOiBudW1iZXIpID0+IG51bS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG5cbiAgICAgICAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICAgICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtkdXJhdGlvbkluU2Vjb25kc30gc2Vjb25kcyBsZWZ0YDtcbiAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7cGFkKGR1cmF0aW9uSW5TZWNvbmRzKX0gc2Vjb25kcyBsZWZ0YDtcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtNYXRoLnJvdW5kKGR1cmF0aW9uSW5TZWNvbmRzIC8gNjApfSBtaW51dGUke2R1cmF0aW9uSW5TZWNvbmRzID49IDEyMCA/ICdzJyA6ICcnfSBsZWZ0YDtcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7cGFkKE1hdGgucm91bmQoZHVyYXRpb25JblNlY29uZHMgLyA2MCkpfSBtaW51dGVzIGxlZnRgO1xuICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICBjYXNlICdIJzpcbiAgICAgICAgICAgICAgICBpZiAoZHVyYXRpb25JblNlY29uZHMgPCA2MCAqIDg5KSByZXR1cm4gJ2FuIGhvdXIgbGVmdCc7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke01hdGgucm91bmQoZHVyYXRpb25JblNlY29uZHMgLyAzNjAwKX0gaG91ciR7ZHVyYXRpb25JblNlY29uZHMgPj0gNjAgKiAxODAgPyAncycgOiAnJ30gbGVmdGA7XG4gICAgICAgICAgICBjYXNlICdoaCc6XG4gICAgICAgICAgICBjYXNlICdISCc6XG4gICAgICAgICAgICAgICAgaWYgKGR1cmF0aW9uSW5TZWNvbmRzIDwgNjAgKiA4OSkgcmV0dXJuICcwMSBob3VyIGxlZnQnO1xuICAgICAgICAgICAgICAgIHJldHVybiBgJHtwYWQoTWF0aC5yb3VuZChkdXJhdGlvbkluU2Vjb25kcyAvIDM2MDApKX0gaG91cnMgbGVmdGA7XG4gICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgIGlmIChkdXJhdGlvbkluU2Vjb25kcyA8IDYwICogNjAgKiAzNSkgcmV0dXJuICdhIGRheSBsZWZ0JztcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7TWF0aC5yb3VuZChkdXJhdGlvbkluU2Vjb25kcyAvICgzNjAwICogMjQpKX0gZGF5JHtkdXJhdGlvbkluU2Vjb25kcyA+PSA2MCAqIDYwICogNzAgPyAncycgOiAnJ30gbGVmdGA7XG4gICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICBjYXNlICdERCc6XG4gICAgICAgICAgICAgICAgaWYgKGR1cmF0aW9uSW5TZWNvbmRzIDwgNjAgKiA2MCAqIDM1KSByZXR1cm4gJzAxIGRheSBsZWZ0JztcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7cGFkKE1hdGgucm91bmQoZHVyYXRpb25JblNlY29uZHMgLyAoMzYwMCAqIDI0KSkpfSBkYXlzIGxlZnRgO1xuICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgaWYgKGR1cmF0aW9uSW5TZWNvbmRzIDwgNjAgKiA2MCAqIDI0ICogNDUpIHJldHVybiAnYSBtb250aCBsZWZ0JztcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7TWF0aC5yb3VuZChkdXJhdGlvbkluU2Vjb25kcyAvICgzNjAwICogMjQgKiAzMCkpfSBtb250aCR7ZHVyYXRpb25JblNlY29uZHMgPj0gNjAgKiA2MCAqIDI0ICogOTAgPyAncycgOiAnJ30gbGVmdGA7XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgaWYgKGR1cmF0aW9uSW5TZWNvbmRzIDwgNjAgKiA2MCAqIDI0ICogNDUpIHJldHVybiAnMDEgbW9udGggbGVmdCc7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3BhZChNYXRoLnJvdW5kKGR1cmF0aW9uSW5TZWNvbmRzIC8gKDM2MDAgKiAyNCAqIDMwKSkpfSBtb250aHMgbGVmdGA7XG4gICAgICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgIGNhc2UgJ1knOlxuICAgICAgICAgICAgICAgIGlmIChkdXJhdGlvbkluU2Vjb25kcyA8IDYwICogNjAgKiAyNCAqIDU0NykgcmV0dXJuICdhIHllYXIgbGVmdCc7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke01hdGgucm91bmQoZHVyYXRpb25JblNlY29uZHMgLyAoMzYwMCAqIDI0ICogMzY1KSl9IHllYXIke2R1cmF0aW9uSW5TZWNvbmRzID49IDYwICogNjAgKiAyNCAqIDczMCA/ICdzJyA6ICcnfSBsZWZ0YDtcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgIGNhc2UgJ1lZJzpcbiAgICAgICAgICAgIGNhc2UgJ3l5eXknOlxuICAgICAgICAgICAgY2FzZSAnWVlZWSc6XG4gICAgICAgICAgICAgICAgaWYgKGR1cmF0aW9uSW5TZWNvbmRzIDwgNjAgKiA2MCAqIDI0ICogNTQ3KSByZXR1cm4gJzAxIHllYXIgbGVmdCc7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3BhZChNYXRoLnJvdW5kKGR1cmF0aW9uSW5TZWNvbmRzIC8gKDM2MDAgKiAyNCAqIDM2NSkpKX0geWVhcnMgbGVmdGA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAnSW52YWxpZCBmb3JtYXQnO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|