ect-date-formatter 1.15.0 → 1.16.1

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.
@@ -1,306 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class EctDateFormatterService {
4
- getISO8601DateFormat(date) {
5
- return this.get4DigitYear(date) + '-' + this.get2DigitMonth(date) + '-' + this.get2DigitDay(date);
6
- }
7
- getISO8601TimeFormat(date) {
8
- return this.get2Digit24Hours(date) + ':' + this.get2DigitMinutes(date) + ':' + this.get2DigitSeconds(date);
9
- }
10
- getISO8601DateAndTimeFormat(date) {
11
- return this.getISO8601DateFormat(date) + 'T' + this.getISO8601TimeFormat(date);
12
- }
13
- getFormatPartsByDivider(input) {
14
- if (input.indexOf(' ') > 0) {
15
- return {
16
- parts: input.split(' '),
17
- divider: ' '
18
- };
19
- }
20
- if (input.indexOf('/') > 0) {
21
- return {
22
- parts: input.split('/'),
23
- divider: '/'
24
- };
25
- }
26
- if (input.indexOf(':') > 0) {
27
- return {
28
- parts: input.split(':'),
29
- divider: ':'
30
- };
31
- }
32
- if (input.indexOf(';') > 0) {
33
- return {
34
- parts: input.split(';'),
35
- divider: ';'
36
- };
37
- }
38
- if (input.indexOf('.') > 0) {
39
- return {
40
- parts: input.split('.'),
41
- divider: '.'
42
- };
43
- }
44
- if (input.indexOf(',') > 0) {
45
- return {
46
- parts: input.split(','),
47
- divider: ','
48
- };
49
- }
50
- if (input.indexOf('-') > 0) {
51
- return {
52
- parts: input.split('-'),
53
- divider: '-'
54
- };
55
- }
56
- if (input.indexOf('_') > 0) {
57
- return {
58
- parts: input.split('_'),
59
- divider: '_'
60
- };
61
- }
62
- return { parts: [], divider: '' };
63
- }
64
- /*
65
- Date Formatting Rules
66
-
67
- yy/YY – two-digit year, e.g. 21
68
- yyyy/YYYY – four-digit year, e.g. 2021
69
- m/M – one-digit month for months below 10, e.g. 3
70
- mm/MM – two-digit month, e.g. 03
71
- mmm/MMM – three-letter abbreviation for month, e.g. Mar
72
- mmmm/MMMM – month spelled out in full, e.g. March
73
- d/D – one-digit day of the month for days below 10, e.g. 2
74
- dd/DD – two-digit day of the month, e.g. 02
75
- ddd/DDD – three-letter abbreviation for day of the week, e.g. Fri
76
- dddd/DDDD – day of the week spelled out in full, e.g. Friday
77
-
78
- */
79
- formatDate(date, format) {
80
- const formatPartsAndDivider = this.getFormatPartsByDivider(format);
81
- let dateValue = '';
82
- formatPartsAndDivider.parts.forEach(part => {
83
- if (dateValue !== '')
84
- dateValue += formatPartsAndDivider.divider;
85
- switch (part) {
86
- case 'yy':
87
- case 'YY':
88
- dateValue += this.get2DigitYear(date);
89
- break;
90
- case 'yyyy':
91
- case 'YYYY':
92
- dateValue += this.get4DigitYear(date);
93
- break;
94
- case 'm':
95
- case 'M':
96
- dateValue += this.get1DigitMonth(date);
97
- break;
98
- case 'mm':
99
- case 'MM':
100
- dateValue += this.get2DigitMonth(date);
101
- break;
102
- case 'mmm':
103
- case 'MMM':
104
- dateValue += this.get3DigitMonth(date);
105
- break;
106
- case 'mmmm':
107
- case 'MMMM':
108
- dateValue += this.get4DigitMonth(date);
109
- break;
110
- case 'd':
111
- case 'D':
112
- dateValue += this.get1DigitDay(date);
113
- break;
114
- case 'dd':
115
- case 'DD':
116
- dateValue += this.get2DigitDay(date);
117
- break;
118
- case 'ddd':
119
- case 'DDD':
120
- dateValue += this.get3DigitDay(date);
121
- break;
122
- case 'dddd':
123
- case 'DDDD':
124
- dateValue += this.get4DigitDay(date);
125
- break;
126
- }
127
- });
128
- return dateValue;
129
- }
130
- /*
131
- Time Formatting Rules
132
-
133
- h - hour to 1 digit on 12 hour clock - without leading 0
134
- hh - hour to 2 digits on 12 hour clock - with leading 0
135
- H - hour to 1 digit on 24 hour clock - without leading 0
136
- HH - hour to 2 digits on 24 hour clock - with leading 0
137
- m - minute to 1 digit - without leading 0
138
- mm/mi/MI - minute to 2 digits - with leading 0
139
- s/S - second to 1 digit - without leading 0
140
- ss/SS - second to 2 digits - with leading 0
141
- f/F - tenth of a second e.g. 2009-06-15T13:45:30.6170000 -> 6
142
- ff/FF - hundredths of a second e.g. 2009-06-15T13:45:30.6170000 -> 61
143
- fff/FFF - milliseconds e.g. 6/15/2009 13:45:30.617 -> 617
144
- ffff/FFFF - ten thousandths of a second e.g. 2009-06-15T13:45:30.6175000 -> 6175
145
- fffff/FFFFF - hundred thousandths of a second e.g. 2009-06-15T13:45:30.6175400 -> 61754
146
- ffffff/FFFFFF - millionths of a second e.g. 2009-06-15T13:45:30.6175420 -> 617542
147
- t/T - first character of AM/PM
148
- tt/TT - both characters of AM/PM
149
-
150
- */
151
- formatTime(date, format) {
152
- const formatPartsAndDivider = this.getFormatPartsByDivider(format);
153
- let timeValue = '';
154
- formatPartsAndDivider.parts.forEach(part => {
155
- if (timeValue !== '')
156
- timeValue += formatPartsAndDivider.divider;
157
- switch (part) {
158
- case 'h':
159
- timeValue += this.get1Digit12Hours(date);
160
- break;
161
- case 'hh':
162
- timeValue += this.get2Digit12Hours(date);
163
- break;
164
- case 'H':
165
- timeValue += this.get1Digit24Hours(date);
166
- break;
167
- case 'HH':
168
- timeValue += this.get2Digit24Hours(date);
169
- break;
170
- case 'm':
171
- timeValue += this.get1DigitMinutes(date);
172
- break;
173
- case 'mi':
174
- case 'mm':
175
- case 'MI':
176
- timeValue += this.get2DigitMinutes(date);
177
- break;
178
- case 's':
179
- case 'S':
180
- timeValue += this.get1DigitSeconds(date);
181
- break;
182
- case 'ss':
183
- case 'SS':
184
- timeValue += this.get2DigitSeconds(date);
185
- break;
186
- case 't':
187
- case 'T':
188
- timeValue += this.get1DigitAmPm(date);
189
- break;
190
- case 'tt':
191
- case 'TT':
192
- timeValue += this.get2DigitAmPm(date);
193
- break;
194
- case 'f':
195
- case 'F':
196
- timeValue += this.getXDigitMillisecond(date, 'f');
197
- break;
198
- case 'ff':
199
- case 'FF':
200
- timeValue += this.getXDigitMillisecond(date, 'fff');
201
- break;
202
- case 'fff':
203
- case 'FFF':
204
- timeValue += this.getXDigitMillisecond(date, 'fff');
205
- break;
206
- case 'ffff':
207
- case 'FFFF':
208
- timeValue += this.getXDigitMillisecond(date, 'ffff');
209
- break;
210
- case 'fffff':
211
- case 'FFFFF':
212
- timeValue += this.getXDigitMillisecond(date, 'fffff');
213
- break;
214
- case 'ffffff':
215
- case 'FFFFFF':
216
- timeValue += this.getXDigitMillisecond(date, 'ffffff');
217
- break;
218
- }
219
- });
220
- return timeValue;
221
- }
222
- get1DigitDay(date) {
223
- const day = date.getDate();
224
- return '' + day;
225
- }
226
- get2DigitDay(date) {
227
- const day = date.getDate();
228
- return this.padDateElement(day);
229
- }
230
- get3DigitDay(date) {
231
- return date.toLocaleString('default', { weekday: 'short' });
232
- }
233
- get4DigitDay(date) {
234
- return date.toLocaleString('default', { weekday: 'long' });
235
- }
236
- get1DigitMonth(date) {
237
- const month = date.getMonth() + 1;
238
- return '' + month;
239
- }
240
- get2DigitMonth(date) {
241
- const month = date.getMonth() + 1;
242
- return this.padDateElement(month);
243
- }
244
- get3DigitMonth(date) {
245
- return date.toLocaleString('default', { month: 'long' }).substring(0, 3);
246
- }
247
- get4DigitMonth(date) {
248
- return date.toLocaleString('default', { month: 'long' });
249
- }
250
- get2DigitYear(date) {
251
- const fullYear = '' + date.getFullYear();
252
- return fullYear[2];
253
- }
254
- get4DigitYear(date) {
255
- return date.getFullYear().toString();
256
- }
257
- get1Digit12Hours(date) {
258
- return date.getHours().toString();
259
- }
260
- get2Digit12Hours(date) {
261
- const hours = date.getHours();
262
- return this.padDateElement(hours);
263
- }
264
- get1Digit24Hours(date) {
265
- return date.getHours().toString();
266
- }
267
- get2Digit24Hours(date) {
268
- const hours = date.getHours();
269
- return this.padDateElement(hours);
270
- }
271
- get1DigitMinutes(date) {
272
- return date.getMinutes().toString();
273
- }
274
- get2DigitMinutes(date) {
275
- const minutes = date.getMinutes();
276
- return this.padDateElement(minutes);
277
- }
278
- get1DigitSeconds(date) {
279
- return date.getSeconds().toString();
280
- }
281
- get2DigitSeconds(date) {
282
- const seconds = date.getSeconds();
283
- return this.padDateElement(seconds);
284
- }
285
- get1DigitAmPm(date) {
286
- return date.toLocaleDateString('t');
287
- }
288
- get2DigitAmPm(date) {
289
- return date.toLocaleDateString('tt');
290
- }
291
- getXDigitMillisecond(date, format) {
292
- return date.toLocaleDateString(format);
293
- }
294
- padDateElement(value) {
295
- return (value < 10) ? '0' + value : '' + value;
296
- }
297
- }
298
- EctDateFormatterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: EctDateFormatterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
299
- EctDateFormatterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: EctDateFormatterService, providedIn: 'root' });
300
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: EctDateFormatterService, decorators: [{
301
- type: Injectable,
302
- args: [{
303
- providedIn: 'root'
304
- }]
305
- }] });
306
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWN0LWRhdGUtZm9ybWF0dGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9lY3QtZGF0ZS1mb3JtYXR0ZXIvc3JjL2xpYi9lY3QtZGF0ZS1mb3JtYXR0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQWtCM0MsTUFBTSxPQUFPLHVCQUF1QjtJQUVsQyxvQkFBb0IsQ0FBQyxJQUFVO1FBQzdCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsSUFBVTtRQUM3QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0csQ0FBQztJQUVELDJCQUEyQixDQUFDLElBQVU7UUFDcEMsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRU8sdUJBQXVCLENBQUMsS0FBYTtRQUMzQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUN2QixPQUFPLEVBQUUsR0FBRzthQUNjLENBQUM7U0FDOUI7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUN2QixPQUFPLEVBQUUsR0FBRzthQUNjLENBQUM7U0FDOUI7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUN2QixPQUFPLEVBQUUsR0FBRzthQUNjLENBQUM7U0FDOUI7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUN2QixPQUFPLEVBQUUsR0FBRzthQUNjLENBQUM7U0FDOUI7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUN2QixPQUFPLEVBQUUsR0FBRzthQUNjLENBQUM7U0FDOUI7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUN2QixPQUFPLEVBQUUsR0FBRzthQUNjLENBQUM7U0FDOUI7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUN2QixPQUFPLEVBQUUsR0FBRzthQUNjLENBQUM7U0FDOUI7UUFDRCxJ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SSxxQkFBcUIsQ0FBQyxPQUFPLENBQUM7WUFDN0MsUUFBTyxJQUFJLEVBQUU7Z0JBQ1gsS0FBSyxHQUFHO29CQUNOLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsS0FBSyxJQUFJO29CQUNQLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsS0FBSyxHQUFHO29CQUNOLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsS0FBSyxJQUFJO29CQUNQLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsS0FBSyxHQUFHO29CQUNOLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsS0FBSyxJQUFJLENBQUM7Z0JBQ1YsS0FBSyxJQUFJLENBQUM7Z0JBQ1YsS0FBSyxJQUFJO29CQUNQLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsS0FBSyxHQUFHLENBQUM7Z0JBQ1QsS0FBSyxHQUFHO29CQUNOLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsS0FBSyxJQUFJLENBQUM7Z0JBQ1YsS0FBSyxJQUFJO29CQUNQLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsS0FBSyxHQUFHLENBQUM7Z0JBQ1QsS0FBSyxHQUFHO29CQUNOLFNBQVMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN0QyxNQUFNO2dCQUNSLEtBQUssSUFBSSxDQUFDO2dC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QUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU8sYUFBYSxDQUFDLElBQVU7UUFDOUIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVPLGFBQWEsQ0FBQyxJQUFVO1FBQzlCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxJQUFVLEVBQUUsTUFBTTtRQUM3QyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU8sY0FBYyxDQUFDLEtBQWE7UUFDbEMsT0FBTyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUNqRCxDQUFDOztvSEFuVVUsdUJBQXVCO3dIQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTsyRkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElEYXRlVGltZUZvcm1hdFNlY3Rpb25zIHtcbiAgcGFydHM6IHN0cmluZ1tdO1xuICBkaXZpZGVyOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVjdERhdGVGb3JtYXR0ZXJTZXJ2aWNlIHtcbiAgZ2V0SVNPODYwMURhdGVGb3JtYXQoZGF0ZTogRGF0ZSk6IHN0cmluZztcbiAgZ2V0SVNPODYwMVRpbWVGb3JtYXQoZGF0ZTogRGF0ZSk6IHN0cmluZztcbiAgZ2V0SVNPODYwMURhdGVBbmRUaW1lRm9ybWF0KGRhdGU6IERhdGUpOiBzdHJpbmc7XG4gIGZvcm1hdERhdGUoZGF0ZTogRGF0ZSwgZm9ybWF0OiBzdHJpbmcpOiBzdHJpbmc7XG4gIGZvcm1hdFRpbWUoZGF0ZTogRGF0ZSwgZm9ybWF0OiBzdHJpbmcpOiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEVjdERhdGVGb3JtYXR0ZXJTZXJ2aWNlIGltcGxlbWVudHMgSUVjdERhdGVGb3JtYXR0ZXJTZXJ2aWNlIHtcblxuICBnZXRJU084NjAxRGF0ZUZvcm1hdChkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXQ0RGlnaXRZZWFyKGRhdGUpICsgJy0nICsgdGhpcy5nZXQyRGlnaXRNb250aChkYXRlKSArICctJyArIHRoaXMuZ2V0MkRpZ2l0RGF5KGRhdGUpO1xuICB9XG5cbiAgZ2V0SVNPODYwMVRpbWVGb3JtYXQoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0MkRpZ2l0MjRIb3VycyhkYXRlKSArICc6JyArIHRoaXMuZ2V0MkRpZ2l0TWludXRlcyhkYXRlKSArICc6JyArIHRoaXMuZ2V0MkRpZ2l0U2Vjb25kcyhkYXRlKTtcbiAgfVxuXG4gIGdldElTTzg2MDFEYXRlQW5kVGltZUZvcm1hdChkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRJU084NjAxRGF0ZUZvcm1hdChkYXRlKSArICdUJyArIHRoaXMuZ2V0SVNPODYwMVRpbWVGb3JtYXQoZGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldEZvcm1hdFBhcnRzQnlEaXZpZGVyKGlucHV0OiBzdHJpbmcpOiBJRGF0ZVRpbWVGb3JtYXRTZWN0aW9ucyB7XG4gICAgaWYgKGlucHV0LmluZGV4T2YoJyAnKSA+IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBhcnRzOiBpbnB1dC5zcGxpdCgnICcpLFxuICAgICAgICBkaXZpZGVyOiAnICdcbiAgICAgIH0gYXMgSURhdGVUaW1lRm9ybWF0U2VjdGlvbnM7XG4gICAgfVxuICAgIGlmIChpbnB1dC5pbmRleE9mKCcvJykgPiAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXJ0czogaW5wdXQuc3BsaXQoJy8nKSxcbiAgICAgICAgZGl2aWRlcjogJy8nXG4gICAgICB9IGFzIElEYXRlVGltZUZvcm1hdFNlY3Rpb25zO1xuICAgIH1cbiAgICBpZiAoaW5wdXQuaW5kZXhPZignOicpID4gMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGFydHM6IGlucHV0LnNwbGl0KCc6JyksXG4gICAgICAgIGRpdmlkZXI6ICc6J1xuICAgICAgfSBhcyBJRGF0ZVRpbWVGb3JtYXRTZWN0aW9ucztcbiAgICB9XG4gICAgaWYgKGlucHV0LmluZGV4T2YoJzsnKSA+IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBhcnRzOiBpbnB1dC5zcGxpdCgnOycpLFxuICAgICAgICBkaXZpZGVyOiAnOydcbiAgICAgIH0gYXMgSURhdGVUaW1lRm9ybWF0U2VjdGlvbnM7XG4gICAgfVxuICAgIGlmIChpbnB1dC5pbmRleE9mKCcuJykgPiAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXJ0czogaW5wdXQuc3BsaXQoJy4nKSxcbiAgICAgICAgZGl2aWRlcjogJy4nXG4gICAgICB9IGFzIElEYXRlVGltZUZvcm1hdFNlY3Rpb25zO1xuICAgIH1cbiAgICBpZiAoaW5wdXQuaW5kZXhPZignLCcpID4gMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGFydHM6IGlucHV0LnNwbGl0KCcsJyksXG4gICAgICAgIGRpdmlkZXI6ICcsJ1xuICAgICAgfSBhcyBJRGF0ZVRpbWVGb3JtYXRTZWN0aW9ucztcbiAgICB9XG4gICAgaWYgKGlucHV0LmluZGV4T2YoJy0nKSA+IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBhcnRzOiBpbnB1dC5zcGxpdCgnLScpLFxuICAgICAgICBkaXZpZGVyOiAnLSdcbiAgICAgIH0gYXMgSURhdGVUaW1lRm9ybWF0U2VjdGlvbnM7XG4gICAgfVxuICAgIGlmIChpbnB1dC5pbmRleE9mKCdfJykgPiAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXJ0czogaW5wdXQuc3BsaXQoJ18nKSxcbiAgICAgICAgZGl2aWRlcjogJ18nXG4gICAgICB9IGFzIElEYXRlVGltZUZvcm1hdFNlY3Rpb25zO1xuICAgIH1cblxuICAgIHJldHVybiB7IHBhcnRzOiBbXSwgZGl2aWRlcjogJyd9IGFzIElEYXRlVGltZUZvcm1hdFNlY3Rpb25zO1xuICB9XG5cblxuICAvKlxuICBEYXRlIEZvcm1hdHRpbmcgUnVsZXNcblxuICB5eS9ZWSDigJMgdHdvLWRpZ2l0IHllYXIsIGUuZy4gMjFcbiAgeXl5eS9ZWVlZIOKAkyBmb3VyLWRpZ2l0IHllYXIsIGUuZy4gMjAyMVxuICBtL00g4oCTIG9uZS1kaWdpdCBtb250aCBmb3IgbW9udGhzIGJlbG93IDEwLCBlLmcuIDNcbiAgbW0vTU0g4oCTIHR3by1kaWdpdCBtb250aCwgZS5nLiAwM1xuICBtbW0vTU1NIOKAkyB0aHJlZS1sZXR0ZXIgYWJicmV2aWF0aW9uIGZvciBtb250aCwgZS5nLiBNYXJcbiAgbW1tbS9NTU1NIOKAkyBtb250aCBzcGVsbGVkIG91dCBpbiBmdWxsLCBlLmcuIE1hcmNoXG4gIGQvRCDigJMgb25lLWRpZ2l0IGRheSBvZiB0aGUgbW9udGggZm9yIGRheXMgYmVsb3cgMTAsIGUuZy4gMlxuICBkZC9ERCDigJMgdHdvLWRpZ2l0IGRheSBvZiB0aGUgbW9udGgsIGUuZy4gMDJcbiAgZGRkL0RERCDigJMgdGhyZWUtbGV0dGVyIGFiYnJldmlhdGlvbiBmb3IgZGF5IG9mIHRoZSB3ZWVrLCBlLmcuIEZyaVxuICBkZGRkL0REREQg4oCTIGRheSBvZiB0aGUgd2VlayBzcGVsbGVkIG91dCBpbiBmdWxsLCBlLmcuIEZyaWRheVxuXG4gICovXG4gIGZvcm1hdERhdGUoZGF0ZTogRGF0ZSwgZm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGZvcm1hdFBhcnRzQW5kRGl2aWRlciA9IHRoaXMuZ2V0Rm9ybWF0UGFydHNCeURpdmlkZXIoZm9ybWF0KTtcbiAgICBsZXQgZGF0ZVZhbHVlID0gJyc7XG4gICAgZm9ybWF0UGFydHNBbmREaXZpZGVyLnBhcnRzLmZvckVhY2gocGFydCA9PiB7XG4gICAgICBpZiAoZGF0ZVZhbHVlICE9PSAnJylcbiAgICAgICAgZGF0ZVZhbHVlICs9IGZvcm1hdFBhcnRzQW5kRGl2aWRlci5kaXZpZGVyO1xuICAgICAgc3dpdGNoKHBhcnQpIHtcbiAgICAgICAgY2FzZSAneXknOlxuICAgICAgICBjYXNlICdZWSc6XG4gICAgICAgICAgZGF0ZVZhbHVlICs9IHRoaXMuZ2V0MkRpZ2l0WWVhcihkYXRlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAneXl5eSc6XG4gICAgICAgIGNhc2UgJ1lZWVknOlxuICAgICAgICAgIGRhdGVWYWx1ZSArPSB0aGlzLmdldDREaWdpdFllYXIoZGF0ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ20nOlxuICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICBkYXRlVmFsdWUgKz0gdGhpcy5nZXQxRGlnaXRNb250aChkYXRlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgZGF0ZVZhbHVlICs9IHRoaXMuZ2V0MkRpZ2l0TW9udGgoZGF0ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ21tbSc6XG4gICAgICAgIGNhc2UgJ01NTSc6XG4gICAgICAgICAgZGF0ZVZhbHVlICs9IHRoaXMuZ2V0M0RpZ2l0TW9udGgoZGF0ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ21tbW0nOlxuICAgICAgICBjYXNlICdNTU1NJzpcbiAgICAgICAgICBkYXRlVmFsdWUgKz0gdGhpcy5nZXQ0RGlnaXRNb250aChkYXRlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgIGRhdGVWYWx1ZSArPSB0aGlzLmdldDFEaWdpdERheShkYXRlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZGQnOlxuICAgICAgICBjYXNlICdERCc6XG4gICAgICAgICAgZGF0ZVZhbHVlICs9IHRoaXMuZ2V0MkRpZ2l0RGF5KGRhdGUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdkZGQnOlxuICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgIGRhdGVWYWx1ZSArPSB0aGlzLmdldDNEaWdpdERheShkYXRlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZGRkZCc6XG4gICAgICAgIGNhc2UgJ0REREQnOlxuICAgICAgICAgIGRhdGVWYWx1ZSArPSB0aGlzLmdldDREaWdpdERheShkYXRlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZGF0ZVZhbHVlO1xuICB9XG5cbiAgLypcbiAgVGltZSBGb3JtYXR0aW5nIFJ1bGVzXG5cbiAgaCAtIGhvdXIgdG8gMSBkaWdpdCBvbiAxMiBob3VyIGNsb2NrIC0gd2l0aG91dCBsZWFkaW5nIDBcbiAgaGggLSBob3VyIHRvIDIgZGlnaXRzIG9uIDEyIGhvdXIgY2xvY2sgLSB3aXRoIGxlYWRpbmcgMFxuICBIIC0gaG91ciB0byAxIGRpZ2l0IG9uIDI0IGhvdXIgY2xvY2sgLSB3aXRob3V0IGxlYWRpbmcgMFxuICBISCAtIGhvdXIgdG8gMiBkaWdpdHMgb24gMjQgaG91ciBjbG9jayAtIHdpdGggbGVhZGluZyAwXG4gIG0gLSBtaW51dGUgdG8gMSBkaWdpdCAtIHdpdGhvdXQgbGVhZGluZyAwXG4gIG1tL21pL01JIC0gbWludXRlIHRvIDIgZGlnaXRzIC0gd2l0aCBsZWFkaW5nIDBcbiAgcy9TIC0gc2Vjb25kIHRvIDEgZGlnaXQgLSB3aXRob3V0IGxlYWRpbmcgMFxuICBzcy9TUyAtIHNlY29uZCB0byAyIGRpZ2l0cyAtIHdpdGggbGVhZGluZyAwXG4gIGYvRiAtIHRlbnRoIG9mIGEgc2Vjb25kIGUuZy4gMjAwOS0wNi0xNVQxMzo0NTozMC42MTcwMDAwIC0+IDZcbiAgZmYvRkYgLSBodW5kcmVkdGhzIG9mIGEgc2Vjb25kIGUuZy4gMjAwOS0wNi0xNVQxMzo0NTozMC42MTcwMDAwIC0+IDYxXG4gIGZmZi9GRkYgLSBtaWxsaXNlY29uZHMgZS5nLiA2LzE1LzIwMDkgMTM6NDU6MzAuNjE3IC0+IDYxN1xuICBmZmZmL0ZGRkYgLSB0ZW4gdGhvdXNhbmR0aHMgb2YgYSBzZWNvbmQgZS5nLiAyMDA5LTA2LTE1VDEzOjQ1OjMwLjYxNzUwMDAgLT4gNjE3NVxuICBmZmZmZi9GRkZGRiAtIGh1bmRyZWQgdGhvdXNhbmR0aHMgb2YgYSBzZWNvbmQgZS5nLiAyMDA5LTA2LTE1VDEzOjQ1OjMwLjYxNzU0MDAgLT4gNjE3NTRcbiAgZmZmZmZmL0ZGRkZGRiAtIG1pbGxpb250aHMgb2YgYSBzZWNvbmQgZS5nLiAyMDA5LTA2LTE1VDEzOjQ1OjMwLjYxNzU0MjAgLT4gNjE3NTQyXG4gIHQvVCAtIGZpcnN0IGNoYXJhY3RlciBvZiBBTS9QTVxuICB0dC9UVCAtIGJvdGggY2hhcmFjdGVycyBvZiBBTS9QTVxuXG4gICovXG4gIGZvcm1hdFRpbWUoZGF0ZTogRGF0ZSwgZm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGZvcm1hdFBhcnRzQW5kRGl2aWRlciA9IHRoaXMuZ2V0Rm9ybWF0UGFydHNCeURpdmlkZXIoZm9ybWF0KTtcbiAgICBsZXQgdGltZVZhbHVlID0gJyc7XG4gICAgZm9ybWF0UGFydHNBbmREaXZpZGVyLnBhcnRzLmZvckVhY2gocGFydCA9PiB7XG4gICAgICBpZiAodGltZVZhbHVlICE9PSAnJylcbiAgICAgICAgdGltZVZhbHVlICs9IGZvcm1hdFBhcnRzQW5kRGl2aWRlci5kaXZpZGVyO1xuICAgICAgc3dpdGNoKHBhcnQpIHtcbiAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgdGltZVZhbHVlICs9IHRoaXMuZ2V0MURpZ2l0MTJIb3VycyhkYXRlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgIHRpbWVWYWx1ZSArPSB0aGlzLmdldDJEaWdpdDEySG91cnMoZGF0ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0gnOlxuICAgICAgICAgIHRpbWVWYWx1ZSArPSB0aGlzLmdldDFEaWdpdDI0SG91cnMoZGF0ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0hIJzpcbiAgICAgICAgICB0aW1lVmFsdWUgKz0gdGhpcy5nZXQyRGlnaXQyNEhvdXJzKGRhdGUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICB0aW1lVmFsdWUgKz0gdGhpcy5nZXQxRGlnaXRNaW51dGVzKGRhdGUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdtaSc6XG4gICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgY2FzZSAnTUknOlxuICAgICAgICAgIHRpbWVWYWx1ZSArPSB0aGlzLmdldDJEaWdpdE1pbnV0ZXMoZGF0ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICBjYXNlICdTJzpcbiAgICAgICAgICB0aW1lVmFsdWUgKz0gdGhpcy5nZXQxRGlnaXRTZWNvbmRzKGRhdGUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgIGNhc2UgJ1NTJzpcbiAgICAgICAgICB0aW1lVmFsdWUgKz0gdGhpcy5nZXQyRGlnaXRTZWNvbmRzKGRhdGUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd0JzpcbiAgICAgICAgY2FzZSAnVCc6XG4gICAgICAgICAgdGltZVZhbHVlICs9IHRoaXMuZ2V0MURpZ2l0QW1QbShkYXRlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndHQnOlxuICAgICAgICBjYXNlICdUVCc6XG4gICAgICAgICAgdGltZVZhbHVlICs9IHRoaXMuZ2V0MkRpZ2l0QW1QbShkYXRlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZic6XG4gICAgICAgIGNhc2UgJ0YnOlxuICAgICAgICAgIHRpbWVWYWx1ZSArPSB0aGlzLmdldFhEaWdpdE1pbGxpc2Vjb25kKGRhdGUsICdmJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2ZmJzpcbiAgICAgICAgY2FzZSAnRkYnOlxuICAgICAgICAgIHRpbWVWYWx1ZSArPSB0aGlzLmdldFhEaWdpdE1pbGxpc2Vjb25kKGRhdGUsICdmZmYnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZmZmJzpcbiAgICAgICAgY2FzZSAnRkZGJzpcbiAgICAgICAgICB0aW1lVmFsdWUgKz0gdGhpcy5nZXRYRGlnaXRNaWxsaXNlY29uZChkYXRlLCAnZmZmJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2ZmZmYnOlxuICAgICAgICBjYXNlICdGRkZGJzpcbiAgICAgICAgICB0aW1lVmFsdWUgKz0gdGhpcy5nZXRYRGlnaXRNaWxsaXNlY29uZChkYXRlLCAnZmZmZicpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdmZmZmZic6XG4gICAgICAgIGNhc2UgJ0ZGRkZGJzpcbiAgICAgICAgICB0aW1lVmFsdWUgKz0gdGhpcy5nZXRYRGlnaXRNaWxsaXNlY29uZChkYXRlLCAnZmZmZmYnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZmZmZmZmJzpcbiAgICAgICAgY2FzZSAnRkZGRkZGJzpcbiAgICAgICAgICB0aW1lVmFsdWUgKz0gdGhpcy5nZXRYRGlnaXRNaWxsaXNlY29uZChkYXRlLCAnZmZmZmZmJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHRpbWVWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0MURpZ2l0RGF5KGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRheSA9IGRhdGUuZ2V0RGF0ZSgpO1xuICAgIHJldHVybiAnJyArIGRheTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0MkRpZ2l0RGF5KGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRheSA9IGRhdGUuZ2V0RGF0ZSgpO1xuICAgIHJldHVybiB0aGlzLnBhZERhdGVFbGVtZW50KGRheSk7XG4gIH1cblxuICBwcml2YXRlIGdldDNEaWdpdERheShkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGF0ZS50b0xvY2FsZVN0cmluZygnZGVmYXVsdCcsIHsgd2Vla2RheTogJ3Nob3J0JyB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0NERpZ2l0RGF5KGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXRlLnRvTG9jYWxlU3RyaW5nKCdkZWZhdWx0JywgeyB3ZWVrZGF5OiAnbG9uZycgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldDFEaWdpdE1vbnRoKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1vbnRoID0gZGF0ZS5nZXRNb250aCgpICsgMTtcbiAgICByZXR1cm4gJycgKyBtb250aDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0MkRpZ2l0TW9udGgoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgY29uc3QgbW9udGggPSBkYXRlLmdldE1vbnRoKCkgKyAxO1xuICAgIHJldHVybiB0aGlzLnBhZERhdGVFbGVtZW50KG1vbnRoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0M0RpZ2l0TW9udGgoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVTdHJpbmcoJ2RlZmF1bHQnLCB7IG1vbnRoOiAnbG9uZycgfSkuc3Vic3RyaW5nKDAsMyk7XG4gIH1cblxuICBwcml2YXRlIGdldDREaWdpdE1vbnRoKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXRlLnRvTG9jYWxlU3RyaW5nKCdkZWZhdWx0JywgeyBtb250aDogJ2xvbmcnIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQyRGlnaXRZZWFyKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IGZ1bGxZZWFyID0gJycgKyBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgcmV0dXJuIGZ1bGxZZWFyWzJdO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQ0RGlnaXRZZWFyKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0MURpZ2l0MTJIb3VycyhkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGF0ZS5nZXRIb3VycygpLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIGdldDJEaWdpdDEySG91cnMoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgY29uc3QgaG91cnMgPSBkYXRlLmdldEhvdXJzKCk7XG4gICAgcmV0dXJuIHRoaXMucGFkRGF0ZUVsZW1lbnQoaG91cnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQxRGlnaXQyNEhvdXJzKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXRlLmdldEhvdXJzKCkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0MkRpZ2l0MjRIb3VycyhkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICBjb25zdCBob3VycyA9IGRhdGUuZ2V0SG91cnMoKTtcbiAgICByZXR1cm4gdGhpcy5wYWREYXRlRWxlbWVudChob3Vycyk7XG4gIH1cblxuICBwcml2YXRlIGdldDFEaWdpdE1pbnV0ZXMoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRhdGUuZ2V0TWludXRlcygpLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIGdldDJEaWdpdE1pbnV0ZXMoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgY29uc3QgbWludXRlcyA9IGRhdGUuZ2V0TWludXRlcygpO1xuICAgIHJldHVybiB0aGlzLnBhZERhdGVFbGVtZW50KG1pbnV0ZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQxRGlnaXRTZWNvbmRzKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXRlLmdldFNlY29uZHMoKS50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQyRGlnaXRTZWNvbmRzKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IHNlY29uZHMgPSBkYXRlLmdldFNlY29uZHMoKTtcbiAgICByZXR1cm4gdGhpcy5wYWREYXRlRWxlbWVudChzZWNvbmRzKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0MURpZ2l0QW1QbShkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcoJ3QnKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0MkRpZ2l0QW1QbShkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcoJ3R0Jyk7XG4gIH1cblxuICBwcml2YXRlIGdldFhEaWdpdE1pbGxpc2Vjb25kKGRhdGU6IERhdGUsIGZvcm1hdCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKGZvcm1hdCk7XG4gIH1cblxuICBwcml2YXRlIHBhZERhdGVFbGVtZW50KHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiAodmFsdWUgPCAxMCkgPyAnMCcgKyB2YWx1ZSA6ICcnICsgdmFsdWU7XG4gIH1cblxufVxuIl19
@@ -1 +0,0 @@
1
- {"version":3,"file":"ect-date-formatter.mjs","sources":["../../../projects/ect-date-formatter/src/lib/ect-date-formatter.service.ts","../../../projects/ect-date-formatter/src/lib/ect-date-formatter.module.ts","../../../projects/ect-date-formatter/src/public-api.ts","../../../projects/ect-date-formatter/src/ect-date-formatter.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nexport interface IDateTimeFormatSections {\n parts: string[];\n divider: string;\n}\n\nexport interface IEctDateFormatterService {\n getISO8601DateFormat(date: Date): string;\n getISO8601TimeFormat(date: Date): string;\n getISO8601DateAndTimeFormat(date: Date): string;\n formatDate(date: Date, format: string): string;\n formatTime(date: Date, format: string): string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EctDateFormatterService implements IEctDateFormatterService {\n\n getISO8601DateFormat(date: Date): string {\n return this.get4DigitYear(date) + '-' + this.get2DigitMonth(date) + '-' + this.get2DigitDay(date);\n }\n\n getISO8601TimeFormat(date: Date): string {\n return this.get2Digit24Hours(date) + ':' + this.get2DigitMinutes(date) + ':' + this.get2DigitSeconds(date);\n }\n\n getISO8601DateAndTimeFormat(date: Date): string {\n return this.getISO8601DateFormat(date) + 'T' + this.getISO8601TimeFormat(date);\n }\n\n private getFormatPartsByDivider(input: string): IDateTimeFormatSections {\n if (input.indexOf(' ') > 0) {\n return {\n parts: input.split(' '),\n divider: ' '\n } as IDateTimeFormatSections;\n }\n if (input.indexOf('/') > 0) {\n return {\n parts: input.split('/'),\n divider: '/'\n } as IDateTimeFormatSections;\n }\n if (input.indexOf(':') > 0) {\n return {\n parts: input.split(':'),\n divider: ':'\n } as IDateTimeFormatSections;\n }\n if (input.indexOf(';') > 0) {\n return {\n parts: input.split(';'),\n divider: ';'\n } as IDateTimeFormatSections;\n }\n if (input.indexOf('.') > 0) {\n return {\n parts: input.split('.'),\n divider: '.'\n } as IDateTimeFormatSections;\n }\n if (input.indexOf(',') > 0) {\n return {\n parts: input.split(','),\n divider: ','\n } as IDateTimeFormatSections;\n }\n if (input.indexOf('-') > 0) {\n return {\n parts: input.split('-'),\n divider: '-'\n } as IDateTimeFormatSections;\n }\n if (input.indexOf('_') > 0) {\n return {\n parts: input.split('_'),\n divider: '_'\n } as IDateTimeFormatSections;\n }\n\n return { parts: [], divider: ''} as IDateTimeFormatSections;\n }\n\n\n /*\n Date Formatting Rules\n\n yy/YY – two-digit year, e.g. 21\n yyyy/YYYY – four-digit year, e.g. 2021\n m/M – one-digit month for months below 10, e.g. 3\n mm/MM – two-digit month, e.g. 03\n mmm/MMM – three-letter abbreviation for month, e.g. Mar\n mmmm/MMMM – month spelled out in full, e.g. March\n d/D – one-digit day of the month for days below 10, e.g. 2\n dd/DD – two-digit day of the month, e.g. 02\n ddd/DDD – three-letter abbreviation for day of the week, e.g. Fri\n dddd/DDDD – day of the week spelled out in full, e.g. Friday\n\n */\n formatDate(date: Date, format: string): string {\n const formatPartsAndDivider = this.getFormatPartsByDivider(format);\n let dateValue = '';\n formatPartsAndDivider.parts.forEach(part => {\n if (dateValue !== '')\n dateValue += formatPartsAndDivider.divider;\n switch(part) {\n case 'yy':\n case 'YY':\n dateValue += this.get2DigitYear(date);\n break;\n case 'yyyy':\n case 'YYYY':\n dateValue += this.get4DigitYear(date);\n break;\n case 'm':\n case 'M':\n dateValue += this.get1DigitMonth(date);\n break;\n case 'mm':\n case 'MM':\n dateValue += this.get2DigitMonth(date);\n break;\n case 'mmm':\n case 'MMM':\n dateValue += this.get3DigitMonth(date);\n break;\n case 'mmmm':\n case 'MMMM':\n dateValue += this.get4DigitMonth(date);\n break;\n case 'd':\n case 'D':\n dateValue += this.get1DigitDay(date);\n break;\n case 'dd':\n case 'DD':\n dateValue += this.get2DigitDay(date);\n break;\n case 'ddd':\n case 'DDD':\n dateValue += this.get3DigitDay(date);\n break;\n case 'dddd':\n case 'DDDD':\n dateValue += this.get4DigitDay(date);\n break;\n }\n });\n return dateValue;\n }\n\n /*\n Time Formatting Rules\n\n h - hour to 1 digit on 12 hour clock - without leading 0\n hh - hour to 2 digits on 12 hour clock - with leading 0\n H - hour to 1 digit on 24 hour clock - without leading 0\n HH - hour to 2 digits on 24 hour clock - with leading 0\n m - minute to 1 digit - without leading 0\n mm/mi/MI - minute to 2 digits - with leading 0\n s/S - second to 1 digit - without leading 0\n ss/SS - second to 2 digits - with leading 0\n f/F - tenth of a second e.g. 2009-06-15T13:45:30.6170000 -> 6\n ff/FF - hundredths of a second e.g. 2009-06-15T13:45:30.6170000 -> 61\n fff/FFF - milliseconds e.g. 6/15/2009 13:45:30.617 -> 617\n ffff/FFFF - ten thousandths of a second e.g. 2009-06-15T13:45:30.6175000 -> 6175\n fffff/FFFFF - hundred thousandths of a second e.g. 2009-06-15T13:45:30.6175400 -> 61754\n ffffff/FFFFFF - millionths of a second e.g. 2009-06-15T13:45:30.6175420 -> 617542\n t/T - first character of AM/PM\n tt/TT - both characters of AM/PM\n\n */\n formatTime(date: Date, format: string): string {\n const formatPartsAndDivider = this.getFormatPartsByDivider(format);\n let timeValue = '';\n formatPartsAndDivider.parts.forEach(part => {\n if (timeValue !== '')\n timeValue += formatPartsAndDivider.divider;\n switch(part) {\n case 'h':\n timeValue += this.get1Digit12Hours(date);\n break;\n case 'hh':\n timeValue += this.get2Digit12Hours(date);\n break;\n case 'H':\n timeValue += this.get1Digit24Hours(date);\n break;\n case 'HH':\n timeValue += this.get2Digit24Hours(date);\n break;\n case 'm':\n timeValue += this.get1DigitMinutes(date);\n break;\n case 'mi':\n case 'mm':\n case 'MI':\n timeValue += this.get2DigitMinutes(date);\n break;\n case 's':\n case 'S':\n timeValue += this.get1DigitSeconds(date);\n break;\n case 'ss':\n case 'SS':\n timeValue += this.get2DigitSeconds(date);\n break;\n case 't':\n case 'T':\n timeValue += this.get1DigitAmPm(date);\n break;\n case 'tt':\n case 'TT':\n timeValue += this.get2DigitAmPm(date);\n break;\n case 'f':\n case 'F':\n timeValue += this.getXDigitMillisecond(date, 'f');\n break;\n case 'ff':\n case 'FF':\n timeValue += this.getXDigitMillisecond(date, 'fff');\n break;\n case 'fff':\n case 'FFF':\n timeValue += this.getXDigitMillisecond(date, 'fff');\n break;\n case 'ffff':\n case 'FFFF':\n timeValue += this.getXDigitMillisecond(date, 'ffff');\n break;\n case 'fffff':\n case 'FFFFF':\n timeValue += this.getXDigitMillisecond(date, 'fffff');\n break;\n case 'ffffff':\n case 'FFFFFF':\n timeValue += this.getXDigitMillisecond(date, 'ffffff');\n break;\n }\n });\n return timeValue;\n }\n\n private get1DigitDay(date: Date): string {\n const day = date.getDate();\n return '' + day;\n }\n\n private get2DigitDay(date: Date): string {\n const day = date.getDate();\n return this.padDateElement(day);\n }\n\n private get3DigitDay(date: Date): string {\n return date.toLocaleString('default', { weekday: 'short' });\n }\n\n private get4DigitDay(date: Date): string {\n return date.toLocaleString('default', { weekday: 'long' });\n }\n\n private get1DigitMonth(date: Date): string {\n const month = date.getMonth() + 1;\n return '' + month;\n }\n\n private get2DigitMonth(date: Date): string {\n const month = date.getMonth() + 1;\n return this.padDateElement(month);\n }\n\n private get3DigitMonth(date: Date): string {\n return date.toLocaleString('default', { month: 'long' }).substring(0,3);\n }\n\n private get4DigitMonth(date: Date): string {\n return date.toLocaleString('default', { month: 'long' });\n }\n\n private get2DigitYear(date: Date): string {\n const fullYear = '' + date.getFullYear();\n return fullYear[2];\n }\n\n private get4DigitYear(date: Date): string {\n return date.getFullYear().toString();\n }\n\n private get1Digit12Hours(date: Date): string {\n return date.getHours().toString();\n }\n\n private get2Digit12Hours(date: Date): string {\n const hours = date.getHours();\n return this.padDateElement(hours);\n }\n\n private get1Digit24Hours(date: Date): string {\n return date.getHours().toString();\n }\n\n private get2Digit24Hours(date: Date): string {\n const hours = date.getHours();\n return this.padDateElement(hours);\n }\n\n private get1DigitMinutes(date: Date): string {\n return date.getMinutes().toString();\n }\n\n private get2DigitMinutes(date: Date): string {\n const minutes = date.getMinutes();\n return this.padDateElement(minutes);\n }\n\n private get1DigitSeconds(date: Date): string {\n return date.getSeconds().toString();\n }\n\n private get2DigitSeconds(date: Date): string {\n const seconds = date.getSeconds();\n return this.padDateElement(seconds);\n }\n\n private get1DigitAmPm(date: Date): string {\n return date.toLocaleDateString('t');\n }\n\n private get2DigitAmPm(date: Date): string {\n return date.toLocaleDateString('tt');\n }\n\n private getXDigitMillisecond(date: Date, format): string {\n return date.toLocaleDateString(format);\n }\n\n private padDateElement(value: number): string {\n return (value < 10) ? '0' + value : '' + value;\n }\n\n}\n","import { EctDateFormatterService } from './ect-date-formatter.service';\r\nimport { HttpClientModule, HttpClient } from '@angular/common/http';\r\nimport { NgModule, LOCALE_ID } from '@angular/core';\r\n\r\n@NgModule({\r\n declarations: [ ],\r\n imports: [\r\n HttpClientModule\r\n ],\r\n exports: [ ],\r\n providers: [\r\n EctDateFormatterService,\r\n { provide: LOCALE_ID, useValue: 'en-GB' }\r\n ]\r\n})\r\nexport class EctDateFormatterModule { }\r\n","/*\n Copyright (c) 2023 Exodus Cloud Technology Solutions Ltd\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\nexport * from './lib/ect-date-formatter.service';\nexport * from './lib/ect-date-formatter.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}