@osovitny/anatoly 3.17.4 → 3.17.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/core/converts/dateConvert.mjs +1 -25
- package/esm2022/lib/core/is.mjs +2 -1
- package/esm2022/lib/core/localization/localization.service.mjs +3 -3
- package/esm2022/lib/core/localization/tz/tzParseTimezone.mjs +122 -0
- package/esm2022/lib/core/localization/tz/tzTokenizeDate.mjs +101 -0
- package/esm2022/lib/core/localization/tz/utcToZonedTime.mjs +32 -0
- package/fesm2022/osovitny-anatoly.mjs +253 -25
- package/fesm2022/osovitny-anatoly.mjs.map +1 -1
- package/lib/core/converts/dateConvert.d.ts +0 -4
- package/lib/core/localization/tz/tzParseTimezone.d.ts +1 -0
- package/lib/core/localization/tz/tzTokenizeDate.d.ts +5 -0
- package/lib/core/localization/tz/utcToZonedTime.d.ts +1 -0
- package/package.json +1 -2
|
@@ -30,29 +30,5 @@ export class DateConvert {
|
|
|
30
30
|
return new Date(NaN);
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
-
static localToUtcDate(value) {
|
|
34
|
-
if (value) {
|
|
35
|
-
return new Date(value.getUTCFullYear(), value.getUTCMonth(), value.getUTCDate());
|
|
36
|
-
}
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
|
-
static localToUtcDateTime(value) {
|
|
40
|
-
if (value) {
|
|
41
|
-
return new Date(value.getUTCFullYear(), value.getUTCMonth(), value.getUTCDate(), value.getUTCHours(), value.getUTCMinutes(), value.getUTCSeconds(), value.getUTCMilliseconds());
|
|
42
|
-
}
|
|
43
|
-
return null;
|
|
44
|
-
}
|
|
45
|
-
static utcToLocalDate(value) {
|
|
46
|
-
if (value) {
|
|
47
|
-
return new Date(Date.UTC(value.getFullYear(), value.getMonth(), value.getDate()));
|
|
48
|
-
}
|
|
49
|
-
return null;
|
|
50
|
-
}
|
|
51
|
-
static utcToLocalDateTime(value) {
|
|
52
|
-
if (value) {
|
|
53
|
-
return new Date(Date.UTC(value.getFullYear(), value.getMonth(), value.getDate(), value.getHours(), value.getMinutes(), value.getSeconds(), value.getMilliseconds()));
|
|
54
|
-
}
|
|
55
|
-
return null;
|
|
56
|
-
}
|
|
57
33
|
}
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZUNvbnZlcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS9jb252ZXJ0cy9kYXRlQ29udmVydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQkU7QUFFRixNQUFNLE9BQU8sV0FBVztJQUNmLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBZ0M7UUFDbkQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXhELElBQUksUUFBUSxZQUFZLElBQUksSUFBSSxDQUFDLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxNQUFNLEtBQUssZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUM3RixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO2FBQ0ksSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksTUFBTSxLQUFLLGlCQUFpQjtZQUM1RCxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksTUFBTSxLQUFLLGlCQUFpQixFQUFFLENBQUM7WUFDdEUsT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixDQUFDO2FBQ0ksQ0FBQztZQUNKLE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7Q0F5Q0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltQG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5QG9zb3ZpdG55LmNvbVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMDkgRmViIDIwMjRcclxuXHJcbiAgU291cmNlOlxyXG4gICAgaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFpbi9zcmMvdG9EYXRlL2luZGV4LnRzXHJcblxyXG4gIENvcHlyaWdodCAoYykgMjAxNi0yMDIyIE9zb3ZpdG55IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuPC9maWxlPlxyXG4qL1xyXG5cclxuZXhwb3J0IGNsYXNzIERhdGVDb252ZXJ0IHtcclxuICBwdWJsaWMgc3RhdGljIHRvRGF0ZShhcmd1bWVudDogRGF0ZSB8IG51bWJlciB8IHN0cmluZyk6IERhdGUge1xyXG4gICAgY29uc3QgYXJnU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KTtcclxuXHJcbiAgICBpZiAoYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8ICh0eXBlb2YgYXJndW1lbnQgPT09IFwib2JqZWN0XCIgJiYgYXJnU3RyID09PSBcIltvYmplY3QgRGF0ZV1cIikpIHtcclxuICAgICAgcmV0dXJuIGFyZ3VtZW50O1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodHlwZW9mIGFyZ3VtZW50ID09PSBcIm51bWJlclwiIHx8IGFyZ1N0ciA9PT0gXCJbb2JqZWN0IE51bWJlcl1cIiB8fFxyXG4gICAgICAgICAgICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiIHx8IGFyZ1N0ciA9PT0gXCJbb2JqZWN0IFN0cmluZ11cIikge1xyXG4gICAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLypcclxuICBWYWRpbU9TOiBBbmF0b2x5IHBsZWFzZSBoYXZlIGEgbG9va1xyXG5cclxuICBwdWJsaWMgc3RhdGljIGxvY2FsVG9VdGNEYXRlKHZhbHVlOiBEYXRlKTogRGF0ZSB8IG51bGwge1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZS5nZXRVVENGdWxsWWVhcigpLCB2YWx1ZS5nZXRVVENNb250aCgpLCB2YWx1ZS5nZXRVVENEYXRlKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBsb2NhbFRvVXRjRGF0ZVRpbWUodmFsdWU6IERhdGUpOiBEYXRlIHwgbnVsbCB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlLmdldFVUQ0Z1bGxZZWFyKCksIHZhbHVlLmdldFVUQ01vbnRoKCksIHZhbHVlLmdldFVUQ0RhdGUoKSxcclxuICAgICAgICAgIHZhbHVlLmdldFVUQ0hvdXJzKCksIHZhbHVlLmdldFVUQ01pbnV0ZXMoKSwgdmFsdWUuZ2V0VVRDU2Vjb25kcygpLCB2YWx1ZS5nZXRVVENNaWxsaXNlY29uZHMoKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyB1dGNUb0xvY2FsRGF0ZSh2YWx1ZTogRGF0ZSk6IERhdGUgfCBudWxsIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICByZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEModmFsdWUuZ2V0RnVsbFllYXIoKSwgdmFsdWUuZ2V0TW9udGgoKSwgdmFsdWUuZ2V0RGF0ZSgpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIHV0Y1RvTG9jYWxEYXRlVGltZSh2YWx1ZTogRGF0ZSk6IERhdGUgfCBudWxsIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICByZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEModmFsdWUuZ2V0RnVsbFllYXIoKSwgdmFsdWUuZ2V0TW9udGgoKSwgdmFsdWUuZ2V0RGF0ZSgpLFxyXG4gICAgICAgICAgdmFsdWUuZ2V0SG91cnMoKSwgdmFsdWUuZ2V0TWludXRlcygpLCB2YWx1ZS5nZXRTZWNvbmRzKCksIHZhbHVlLmdldE1pbGxpc2Vjb25kcygpKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuICAqL1xyXG59XHJcbiJdfQ==
|
package/esm2022/lib/core/is.mjs
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
09 Feb 2024
|
|
12
12
|
|
|
13
13
|
Sources:
|
|
14
|
+
https://playcode.io/javascript
|
|
14
15
|
https://github.com/date-fns/date-fns/blob/main/src/isDate/index.ts
|
|
15
16
|
https://github.com/date-fns/date-fns/blob/main/src/isValid/index.ts
|
|
16
17
|
|
|
@@ -95,4 +96,4 @@ is = {
|
|
|
95
96
|
link: function (obj) { return (is.element(obj) && (obj.tagName == 'A')); }
|
|
96
97
|
};
|
|
97
98
|
*/
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS9pcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW1CRTtBQUVGLE1BQU0sT0FBTyxFQUFFO0lBQ2I7OztNQUdFO0lBQ0ssTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLO1FBQ3RCLE9BQU8sQ0FDTCxLQUFLLFlBQVksSUFBSTtZQUNyQixDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssZUFBZSxDQUFDLENBQ3pGLENBQUM7SUFDSixDQUFDO0lBRUQ7OztNQUdFO0lBQ0ssTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJO1FBQzFCLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQy9DLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSTtRQUM1QixPQUFPLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU0sTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUc7UUFDakMsT0FBTyxDQUFDLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSztRQUN4QixPQUFPLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssWUFBWSxNQUFNLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU0sTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLO1FBQzdCLE9BQU8sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTSxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUs7UUFDaEMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSztRQUN4QixPQUFPLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSztRQUN6QixPQUFPLENBQUMsT0FBTyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSztRQUN2QixPQUFPLENBQUMsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTSxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUs7UUFDNUIsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVNLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSztRQUMvQixPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU0sTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLO1FBQzNCLE9BQU8sQ0FBQyxPQUFPLEtBQUssS0FBSyxXQUFXLENBQUMsQ0FBQztJQUN4QyxDQUFDO0NBQ0Y7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF1QkUiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltQG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5QG9zb3ZpdG55LmNvbVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMDkgRmViIDIwMjRcclxuXHJcbiAgU291cmNlczpcclxuICAgIGh0dHBzOi8vcGxheWNvZGUuaW8vamF2YXNjcmlwdFxyXG4gICAgaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFpbi9zcmMvaXNEYXRlL2luZGV4LnRzXHJcbiAgICBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYWluL3NyYy9pc1ZhbGlkL2luZGV4LnRzXHJcblxyXG4gIENvcHlyaWdodCAoYykgMjAxNi0yMDIyIE9zb3ZpdG55IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuPC9maWxlPlxyXG4qL1xyXG5cclxuZXhwb3J0IGNsYXNzIGlzIHtcclxuICAvKipcclxuICAgKiBAbmFtZSBpc0RhdGVcclxuICAgKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gdmFsdWUgYSBkYXRlP1xyXG4gICovXHJcbiAgcHVibGljIHN0YXRpYyBkYXRlKHZhbHVlKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgfHxcclxuICAgICAgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpID09PSBcIltvYmplY3QgRGF0ZV1cIilcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAbmFtZSBpc0RhdGVWYWxpZFxyXG4gICAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIHZhbGlkP1xyXG4gICovXHJcbiAgcHVibGljIHN0YXRpYyBkYXRlVmFsaWQoZGF0ZSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFpcy5kYXRlKGRhdGUpICYmIHR5cGVvZiBkYXRlICE9PSBcIm51bWJlclwiKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgZCA9IG5ldyBEYXRlKGRhdGUpO1xyXG4gICAgcmV0dXJuICFpc05hTihOdW1iZXIoZCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBkYXRlSW52YWxpZChkYXRlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIWlzLmRhdGVWYWxpZChkYXRlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgb2JqZWN0TnVsbE9yRW1wdHkob2JqKSB7XHJcbiAgICByZXR1cm4gIW9iaiB8fCBPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA9PSAwO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBzdHJpbmcodmFsdWUpIHtcclxuICAgIHJldHVybiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB2YWx1ZSBpbnN0YW5jZW9mIFN0cmluZyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGVtcHR5U3RyaW5nKHZhbHVlKSB7XHJcbiAgICByZXR1cm4gKGlzLnN0cmluZyh2YWx1ZSkgJiYgKHZhbHVlLmxlbmd0aCA9PSAwKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIG5vdEVtcHR5U3RyaW5nKHZhbHVlKSB7XHJcbiAgICByZXR1cm4gKGlzLnN0cmluZyh2YWx1ZSkgJiYgKHZhbHVlLmxlbmd0aCA+IDApKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgbnVtYmVyKHZhbHVlKSB7XHJcbiAgICByZXR1cm4gKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBib29sZWFuKHZhbHVlKSB7XHJcbiAgICByZXR1cm4gKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgYXJyYXkodmFsdWUpIHtcclxuICAgIHJldHVybiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGVtcHR5QXJyYXkodmFsdWUpIHtcclxuICAgIHJldHVybiAoaXMuYXJyYXkodmFsdWUpICYmICh2YWx1ZS5sZW5ndGggPT0gMCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBub3RFbXB0eUFycmF5KHZhbHVlKSB7XHJcbiAgICByZXR1cm4gKGlzLmFycmF5KHZhbHVlKSAmJiAodmFsdWUubGVuZ3RoID4gMCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyB1bmRlZmluZWQodmFsdWUpIHtcclxuICAgIHJldHVybiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyk7XHJcbiAgfVxyXG59XHJcblxyXG4vKlxyXG5pcyA9IHtcclxuICBET05FIHN0cmluZzogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKTsgfSxcclxuICBET05FIGVtcHR5U3RyaW5nOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiAoaXMuc3RyaW5nKG9iaikgJiYgKG9iai5sZW5ndGggPT0gMCkpOyB9LFxyXG4gIERPTkUgbm9uRW1wdHlTdHJpbmc6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIChpcy5zdHJpbmcob2JqKSAmJiAob2JqLmxlbmd0aCA+IDApKTsgfSxcclxuICBET05FIG51bWJlcjogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gKHR5cGVvZiBvYmogPT09ICdudW1iZXInKTsgfSxcclxuICBET05FIGJvb2w6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuICh0eXBlb2Ygb2JqID09PSAnYm9vbGVhbicpOyB9LFxyXG4gIERPTkUgYXJyYXk6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIChvYmogaW5zdGFuY2VvZiBBcnJheSk7IH0sXHJcbiAgRE9ORSBlbXB0eUFycmF5OiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiAoaXMuYXJyYXkob2JqKSAmJiAob2JqLmxlbmd0aCA9PSAwKSk7IH0sXHJcbiAgRE9ORSBub3RFbXB0eUFycmF5OiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiAoaXMuYXJyYXkob2JqKSAmJiAob2JqLmxlbmd0aCA+IDApKTsgfSxcclxuICBET05FIHVuZGVmaW5lZDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gKHR5cGVvZiBvYmogPT09ICd1bmRlZmluZWQnKTsgfSxcclxuXHJcbiAgJ251bGwnOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiAob2JqID09PSBudWxsKTsgfSxcclxuICBub3ROdWxsOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiAob2JqICE9PSBudWxsKTsgfSxcclxuICBpbnZhbGlkOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiAoaXNbJ251bGwnXShvYmopIHx8IGlzLnVuZGVmaW5lZChvYmopKTsgfSxcclxuICB2YWxpZDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gKCFpc1snbnVsbCddKG9iaikgJiYgIWlzLnVuZGVmaW5lZChvYmopKTsgfSxcclxuXHJcbiAgZG9jdW1lbnQ6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIChvYmogPT09IGRvY3VtZW50KTsgfSxcclxuICB3aW5kb3c6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIChvYmogPT09IHdpbmRvdyk7IH0sXHJcbiAgZWxlbWVudDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gKG9iaiBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KTsgfSxcclxuICBldmVudDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gKG9iaiBpbnN0YW5jZW9mIEV2ZW50KTsgfSxcclxuICBsaW5rOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiAoaXMuZWxlbWVudChvYmopICYmIChvYmoudGFnTmFtZSA9PSAnQScpKTsgfVxyXG59O1xyXG4qL1xyXG4iXX0=
|
|
@@ -21,8 +21,7 @@
|
|
|
21
21
|
import { Injectable, Output, EventEmitter } from '@angular/core';
|
|
22
22
|
//date-fns
|
|
23
23
|
import { format, formatDistanceToNow, formatDistance } from 'date-fns';
|
|
24
|
-
|
|
25
|
-
// VadimOS: IE11-fix. DON'T change next imports!
|
|
24
|
+
// VadimOS: DON'T change next imports!
|
|
26
25
|
// Reason: https://github.com/date-fns/date-fns/issues/666
|
|
27
26
|
import enUS from 'date-fns/locale/en-US';
|
|
28
27
|
//App
|
|
@@ -30,6 +29,7 @@ import { Subs } from '../subs';
|
|
|
30
29
|
import { dateFormats, dateTimeFormats } from '../consts/settings';
|
|
31
30
|
import { DateConvert } from '../converts/dateConvert';
|
|
32
31
|
import { is } from '../is';
|
|
32
|
+
import { utcToZonedTime } from './tz/utcToZonedTime';
|
|
33
33
|
import * as i0 from "@angular/core";
|
|
34
34
|
import * as i1 from "@ngx-translate/core";
|
|
35
35
|
export class LocalizationService {
|
|
@@ -187,4 +187,4 @@ export class LocalizationService {
|
|
|
187
187
|
}], () => [{ type: i1.TranslateService }], { langchange: [{
|
|
188
188
|
type: Output
|
|
189
189
|
}] }); })();
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS9sb2NhbGl6YXRpb24vbG9jYWxpemF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWtCRTtBQUVGLE1BQU07QUFDTixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFHNUUsVUFBVTtBQUNWLE9BQU8sRUFBRSxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFN0MsZ0RBQWdEO0FBQ2hELDBEQUEwRDtBQUMxRCxPQUFPLElBQUksTUFBTSx1QkFBdUIsQ0FBQztBQUV6QyxLQUFLO0FBQ0wsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMvQixPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sT0FBTyxDQUFDOzs7QUFLM0IsTUFBTSxPQUFPLG1CQUFtQjtJQVc5QixZQUFvQixTQUEyQjtRQUEzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQVZ2QyxTQUFJLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUdoQyxNQUFNO1FBQ0UsdUJBQWtCLEdBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdDLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBRS9CLFNBQVM7UUFDQyxlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFHM0QsSUFB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LE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBQ0QsOEVBQThFO0lBRTlFLGdGQUFnRjtJQUNoRiwyQkFBMkIsQ0FBQyxZQUFvQixFQUFFLGNBQXNCO1FBQ3RFLElBQUksU0FBUyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakQsSUFBSSxXQUFXLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVyRCxJQUFJLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQzdELE9BQU8sY0FBYyxDQUFDO1FBQ3hCLENBQUM7UUFFRCxPQUFPLGNBQWMsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsZ0NBQWdDLENBQUMsS0FBYTtRQUM1QyxJQUFJLElBQUksR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sY0FBYyxDQUFDO1FBQ3hCLENBQUM7UUFFRCxPQUFPLG1CQUFtQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdkQsQ0FBQztvRkF2TFUsbUJBQW1CO3VFQUFuQixtQkFBbUIsV0FBbkIsbUJBQW1CLG1CQUZsQixNQUFNOztpRkFFUCxtQkFBbUI7Y0FIL0IsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CO2lEQVVXLFVBQVU7a0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltQG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5QG9zb3ZpdG55LmNvbVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMDUgTWF5IDIwMjBcclxuXHJcbiAgU291cmNlOlxyXG4gICAgaHR0cHM6Ly9kYXRlLWZucy5vcmcvdjMuMy4xL2RvY3MvZm9ybWF0RGlzdGFuY2VcclxuICAgIGh0dHBzOi8vZGF0ZS1mbnMub3JnL3YzLjMuMS9kb2NzL2Zvcm1hdERpc3RhbmNlVG9Ob3dcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG4vL05vZGVcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlLCBMYW5nQ2hhbmdlRXZlbnQgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuXHJcbi8vZGF0ZS1mbnNcclxuaW1wb3J0IHsgZm9ybWF0LCBmb3JtYXREaXN0YW5jZVRvTm93LCBmb3JtYXREaXN0YW5jZSB9IGZyb20gJ2RhdGUtZm5zJztcclxuaW1wb3J0IHsgdXRjVG9ab25lZFRpbWUgfSBmcm9tICdkYXRlLWZucy10eic7XHJcblxyXG4vLyBWYWRpbU9TOiBJRTExLWZpeC4gRE9OJ1QgY2hhbmdlIG5leHQgaW1wb3J0cyFcclxuLy8gUmVhc29uOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvaXNzdWVzLzY2NlxyXG5pbXBvcnQgZW5VUyBmcm9tICdkYXRlLWZucy9sb2NhbGUvZW4tVVMnO1xyXG5cclxuLy9BcHBcclxuaW1wb3J0IHsgU3VicyB9IGZyb20gJy4uL3N1YnMnO1xyXG5pbXBvcnQgeyBkYXRlRm9ybWF0cywgZGF0ZVRpbWVGb3JtYXRzIH0gZnJvbSAnLi4vY29uc3RzL3NldHRpbmdzJztcclxuaW1wb3J0IHsgRGF0ZUNvbnZlcnQgfSBmcm9tICcuLi9jb252ZXJ0cy9kYXRlQ29udmVydCc7XHJcbmltcG9ydCB7IGlzIH0gZnJvbSAnLi4vaXMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9jYWxpemF0aW9uU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBzdWJzOiBTdWJzID0gbmV3IFN1YnMoKTtcclxuICBwcml2YXRlIGRhdGVGbnNMb2NhbGU6IGFueTtcclxuXHJcbiAgLy9pMTBuXHJcbiAgcHJpdmF0ZSBzdXBwb3J0ZWRMYW5ndWFnZXM6IGFueSA9IFsnZW4nLCAncnUnLCAnZXMnXTtcclxuICBwcml2YXRlIGRlZmF1bHRMYW5ndWFnZSA9ICdlbic7XHJcblxyXG4gIC8vT3V0cHV0c1xyXG4gIEBPdXRwdXQoKSBsYW5nY2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcclxuICAgIHRoaXMuc2V0U3VwcG9ydGVkTGFuZ3VhZ2VzKHRoaXMuc3VwcG9ydGVkTGFuZ3VhZ2VzKTtcclxuICAgIHRoaXMuc2V0RGVmYXVsdExhbmd1YWdlKHRoaXMuZGVmYXVsdExhbmd1YWdlKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5zdWJzLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdChzdHI6IHN0cmluZywgYXJncykge1xyXG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC97KFxcZCspfS9nLCBmdW5jdGlvbiAobWF0Y2gsIG51bWJlcikge1xyXG4gICAgICByZXR1cm4gdHlwZW9mIGFyZ3NbbnVtYmVyXSAhPSAndW5kZWZpbmVkJ1xyXG4gICAgICAgID8gYXJnc1tudW1iZXJdXHJcbiAgICAgICAgOiBtYXRjaFxyXG4gICAgICAgIDtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIGNvbmZpZ3VyZVNldHRpbmdzKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSk6IHN0cmluZyB7XHJcbiAgICAvL2kxMG5cclxuICAgIGNvbnN0IGJyb3dzZXJMYW5nID0gdHJhbnNsYXRlLmdldEJyb3dzZXJMYW5nKCk7XHJcbiAgICBjb25zdCBsYW5nID0gYnJvd3NlckxhbmcubWF0Y2goL2VufHJ1fGVzLykgPyBicm93c2VyTGFuZyA6IHRoaXMuZGVmYXVsdExhbmd1YWdlO1xyXG5cclxuICAgIC8vZGF0ZXNcclxuICAgIHRoaXMuZGF0ZUZuc0xvY2FsZSA9IHsgbG9jYWxlOiBlblVTIH07XHJcblxyXG4gICAgdGhpcy5zdWJzLnNpbmsgPSB0aGlzLnRyYW5zbGF0ZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudDogTGFuZ0NoYW5nZUV2ZW50KSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdMYW5ndWFnZSBDaGFuZ2VkJyk7XHJcbiAgICAgIHRoaXMubGFuZ2NoYW5nZS5lbWl0KGV2ZW50LmxhbmcpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGxhbmc7XHJcbiAgfVxyXG5cclxuICAvL0xhbmd1YWdlc1xyXG4gIHNldFN1cHBvcnRlZExhbmd1YWdlcyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5hZGRMYW5ncyhsYW5ndWFnZXMpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdExhbmd1YWdlKGxhbmc6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy50cmFuc2xhdGUuc2V0RGVmYXVsdExhbmcobGFuZyk7XHJcbiAgfVxyXG5cclxuICBzZXRMYW5ndWFnZShsYW5ndWFnZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS51c2UobGFuZ3VhZ2UpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QnJvd3Nlckxhbmd1YWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuZ2V0QnJvd3NlckxhbmcoKTtcclxuICB9XHJcblxyXG4gIC8vRGF0ZXNcclxuICBnZXREYXRlZm5zTG9jYWxlKCk6IGFueSB7XHJcbiAgICBsZXQgZGZuTG9jYWxlOiBhbnk7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLmdldEJyb3dzZXJMYW5ndWFnZSgpKSB7XHJcbiAgICAgIGNhc2UgJ2VuJzpcclxuICAgICAgICBkZm5Mb2NhbGUgPSB7IGxvY2FsZTogZW5VUyB9O1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBkZm5Mb2NhbGUgPSB7IGxvY2FsZTogZW5VUyB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkZm5Mb2NhbGU7XHJcbiAgfVxyXG5cclxuICAvL2dldExvY2FsaXplZFxyXG4gIGdldExvY2FsaXplZFZhbHVlKGtleTogc3RyaW5nLCBwYXJhbXM/OiBhbnlbXSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoa2V5KTtcclxuXHJcbiAgICBpZiAoIXBhcmFtcyB8fCBwYXJhbXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5mb3JtYXQodmFsdWUsIHBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBnZXRMb2NhbGl6ZWREYXRlKHZhbHVlKTogc3RyaW5nIHtcclxuICAgIGxldCBkYXRlID0gRGF0ZUNvbnZlcnQudG9EYXRlKHZhbHVlKTtcclxuICAgIGlmIChpcy5kYXRlSW52YWxpZChkYXRlKSkge1xyXG4gICAgICByZXR1cm4gXCJJbnZhbGlkIERhdGVcIjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZm9ybWF0KGRhdGUsIGRhdGVGb3JtYXRzLm1lZGl1bSwgdGhpcy5kYXRlRm5zTG9jYWxlKTtcclxuICB9XHJcblxyXG4gIGdldExvY2FsaXplZERhdGVUaW1lKHZhbHVlKTogc3RyaW5nIHtcclxuICAgIGxldCBkYXRlID0gRGF0ZUNvbnZlcnQudG9EYXRlKHZhbHVlKTtcclxuICAgIGlmIChpcy5kYXRlSW52YWxpZChkYXRlKSkge1xyXG4gICAgICByZXR1cm4gXCJJbnZhbGlkIERhdGVcIjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZm9ybWF0KGRhdGUsIGRhdGVUaW1lRm9ybWF0cy5tZWRpdW0sIHRoaXMuZGF0ZUZuc0xvY2FsZSk7XHJcbiAgfVxyXG5cclxuICAvL1VUQyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1CRUdJTlxyXG4gIGdldFVUQ1RvTG9jYWxpemVkRGF0ZSh2YWx1ZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2FmZVV0Y1RvWm9uZWRUaW1lKHZhbHVlLCBkYXRlRm9ybWF0cy5tZWRpdW0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0VVRDVG9Mb2NhbGl6ZWREYXRlVGltZSh2YWx1ZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2FmZVV0Y1RvWm9uZWRUaW1lKHZhbHVlLCBkYXRlVGltZUZvcm1hdHMubWVkaXVtKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2FmZVV0Y1RvWm9uZWRUaW1lKGRhdGUsIGNvbnZlcnNpb25Gb3JtYXQgPSBudWxsKTogc3RyaW5nIHtcclxuICAgIGlmICghZGF0ZSl7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCByZXN1bHQgPSBkYXRlO1xyXG5cclxuICAgIHRyeVxyXG4gICAge1xyXG4gICAgICBpZiAodHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgaWYgKGRhdGUuaW5kZXhPZihcIlRcIikgPiAtMSkge1xyXG4gICAgICAgICAgZGF0ZSA9IGRhdGUucmVwbGFjZShcIlRcIiwgXCIgXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGRhdGUuaW5kZXhPZihcIlpcIikgPT0gLTEpIHtcclxuICAgICAgICAgIGRhdGUgPSBkYXRlICsgXCJaXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgYnJvd3NlclRpbWVab25lID0gSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lO1xyXG5cclxuICAgICAgaWYgKGJyb3dzZXJUaW1lWm9uZSkge1xyXG4gICAgICAgIGlmIChjb252ZXJzaW9uRm9ybWF0KSB7XHJcbiAgICAgICAgICByZXN1bHQgPSB1dGNUb1pvbmVkVGltZShkYXRlLCBicm93c2VyVGltZVpvbmUpO1xyXG4gICAgICAgICAgcmVzdWx0ID0gZm9ybWF0KHJlc3VsdCwgY29udmVyc2lvbkZvcm1hdCwgdGhpcy5kYXRlRm5zTG9jYWxlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICByZXN1bHQgPSB1dGNUb1pvbmVkVGltZShkYXRlLCBicm93c2VyVGltZVpvbmUpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChjb252ZXJzaW9uRm9ybWF0KSB7XHJcbiAgICAgICAgICByZXN1bHQgPSBmb3JtYXQobmV3IERhdGUoZGF0ZSksIGNvbnZlcnNpb25Gb3JtYXQsIHRoaXMuZGF0ZUZuc0xvY2FsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgcmVzdWx0ID0gbmV3IERhdGUoZGF0ZSkudG9TdHJpbmcoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoXHJcbiAgICB7XHJcbiAgICAgIHJlc3VsdCA9IFwiSW52YWxpZCBEYXRlXCI7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbiAgLy9VVEMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tRU5EXHJcblxyXG4gIC8vRGlzdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUJFR0lOXHJcbiAgZ2V0TG9jYWxpemVkRGlzdGFuY2VJbldvcmRzKGVuZGVkRGF0ZVN0cjogc3RyaW5nLCBzdGFydGVkRGF0ZVN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCBlbmRlZERhdGUgPSBEYXRlQ29udmVydC50b0RhdGUoZW5kZWREYXRlU3RyKTtcclxuICAgIGxldCBzdGFydGVkRGF0ZSA9IERhdGVDb252ZXJ0LnRvRGF0ZShzdGFydGVkRGF0ZVN0cik7XHJcblxyXG4gICAgaWYgKGlzLmRhdGVJbnZhbGlkKGVuZGVkRGF0ZSkgfHwgaXMuZGF0ZUludmFsaWQoc3RhcnRlZERhdGUpKSB7XHJcbiAgICAgIHJldHVybiBcIkludmFsaWQgRGF0ZVwiO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmb3JtYXREaXN0YW5jZShlbmRlZERhdGUsIHN0YXJ0ZWREYXRlLCB0aGlzLmRhdGVGbnNMb2NhbGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TG9jYWxpemVkRGlzdGFuY2VUb05vd0luV29yZHModmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgZGF0ZSA9IERhdGVDb252ZXJ0LnRvRGF0ZSh2YWx1ZSk7XHJcbiAgICBpZiAoaXMuZGF0ZUludmFsaWQoZGF0ZSkpIHtcclxuICAgICAgcmV0dXJuIFwiSW52YWxpZCBEYXRlXCI7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZvcm1hdERpc3RhbmNlVG9Ob3coZGF0ZSwgdGhpcy5kYXRlRm5zTG9jYWxlKTtcclxuICB9XHJcbiAgLy9EaXN0YW5jZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tRU5EXHJcbn1cclxuXHJcbiJdfQ==
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS9sb2NhbGl6YXRpb24vbG9jYWxpemF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWtCRTtBQUVGLE1BQU07QUFDTixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFHNUUsVUFBVTtBQUNWLE9BQU8sRUFBRSxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXZFLHNDQUFzQztBQUN0QywwREFBMEQ7QUFDMUQsT0FBTyxJQUFJLE1BQU0sdUJBQXVCLENBQUM7QUFFekMsS0FBSztBQUNMLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDL0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMzQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQUtyRCxNQUFNLE9BQU8sbUJBQW1CO0lBVzlCLFlBQW9CLFNBQTJCO1FBQTNCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBVnZDLFNBQUksR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO1FBR2hDLE1BQU07UUFDRSx1QkFBa0IsR0FBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0Msb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFFL0IsU0FBUztRQUNDLGVBQVUsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUczRCxJ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QU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFDRCw4RUFBOEU7SUFFOUUsZ0ZBQWdGO0lBQ2hGLDJCQUEyQixDQUFDLFlBQW9CLEVBQUUsY0FBc0I7UUFDdEUsSUFBSSxTQUFTLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNqRCxJQUFJLFdBQVcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRXJELElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDN0QsT0FBTyxjQUFjLENBQUM7UUFDeEIsQ0FBQztRQUVELE9BQU8sY0FBYyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxnQ0FBZ0MsQ0FBQyxLQUFhO1FBQzVDLElBQUksSUFBSSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDekIsT0FBTyxjQUFjLENBQUM7UUFDeEIsQ0FBQztRQUVELE9BQU8sbUJBQW1CLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN2RCxDQUFDO29GQXZMVSxtQkFBbUI7dUVBQW5CLG1CQUFtQixXQUFuQixtQkFBbUIsbUJBRmxCLE1BQU07O2lGQUVQLG1CQUFtQjtjQUgvQixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7aURBVVcsVUFBVTtrQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbjxmaWxlPlxyXG4gIFByb2plY3Q6XHJcbiAgICBAb3Nvdml0bnkvYW5hdG9seVxyXG5cclxuICBBdXRob3JzOlxyXG4gICAgVmFkaW0gT3Nvdml0bnkgdmFkaW1Ab3Nvdml0bnkuY29tXHJcbiAgICBBbmF0b2x5IE9zb3ZpdG55IGFuYXRvbHlAb3Nvdml0bnkuY29tXHJcblxyXG4gIENyZWF0ZWQ6XHJcbiAgICAwNSBNYXkgMjAyMFxyXG5cclxuICBTb3VyY2U6XHJcbiAgICBodHRwczovL2RhdGUtZm5zLm9yZy92My4zLjEvZG9jcy9mb3JtYXREaXN0YW5jZVxyXG4gICAgaHR0cHM6Ly9kYXRlLWZucy5vcmcvdjMuMy4xL2RvY3MvZm9ybWF0RGlzdGFuY2VUb05vd1xyXG5cclxuICBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMiBPc292aXRueSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbjwvZmlsZT5cclxuKi9cclxuXHJcbi8vTm9kZVxyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UsIExhbmdDaGFuZ2VFdmVudCB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5cclxuLy9kYXRlLWZuc1xyXG5pbXBvcnQgeyBmb3JtYXQsIGZvcm1hdERpc3RhbmNlVG9Ob3csIGZvcm1hdERpc3RhbmNlIH0gZnJvbSAnZGF0ZS1mbnMnO1xyXG5cclxuLy8gVmFkaW1PUzogRE9OJ1QgY2hhbmdlIG5leHQgaW1wb3J0cyFcclxuLy8gUmVhc29uOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvaXNzdWVzLzY2NlxyXG5pbXBvcnQgZW5VUyBmcm9tICdkYXRlLWZucy9sb2NhbGUvZW4tVVMnO1xyXG5cclxuLy9BcHBcclxuaW1wb3J0IHsgU3VicyB9IGZyb20gJy4uL3N1YnMnO1xyXG5pbXBvcnQgeyBkYXRlRm9ybWF0cywgZGF0ZVRpbWVGb3JtYXRzIH0gZnJvbSAnLi4vY29uc3RzL3NldHRpbmdzJztcclxuaW1wb3J0IHsgRGF0ZUNvbnZlcnQgfSBmcm9tICcuLi9jb252ZXJ0cy9kYXRlQ29udmVydCc7XHJcbmltcG9ydCB7IGlzIH0gZnJvbSAnLi4vaXMnO1xyXG5pbXBvcnQgeyB1dGNUb1pvbmVkVGltZSB9IGZyb20gJy4vdHovdXRjVG9ab25lZFRpbWUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9jYWxpemF0aW9uU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBzdWJzOiBTdWJzID0gbmV3IFN1YnMoKTtcclxuICBwcml2YXRlIGRhdGVGbnNMb2NhbGU6IGFueTtcclxuXHJcbiAgLy9pMTBuXHJcbiAgcHJpdmF0ZSBzdXBwb3J0ZWRMYW5ndWFnZXM6IGFueSA9IFsnZW4nLCAncnUnLCAnZXMnXTtcclxuICBwcml2YXRlIGRlZmF1bHRMYW5ndWFnZSA9ICdlbic7XHJcblxyXG4gIC8vT3V0cHV0c1xyXG4gIEBPdXRwdXQoKSBsYW5nY2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcclxuICAgIHRoaXMuc2V0U3VwcG9ydGVkTGFuZ3VhZ2VzKHRoaXMuc3VwcG9ydGVkTGFuZ3VhZ2VzKTtcclxuICAgIHRoaXMuc2V0RGVmYXVsdExhbmd1YWdlKHRoaXMuZGVmYXVsdExhbmd1YWdlKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5zdWJzLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdChzdHI6IHN0cmluZywgYXJncykge1xyXG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC97KFxcZCspfS9nLCBmdW5jdGlvbiAobWF0Y2gsIG51bWJlcikge1xyXG4gICAgICByZXR1cm4gdHlwZW9mIGFyZ3NbbnVtYmVyXSAhPSAndW5kZWZpbmVkJ1xyXG4gICAgICAgID8gYXJnc1tudW1iZXJdXHJcbiAgICAgICAgOiBtYXRjaFxyXG4gICAgICAgIDtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIGNvbmZpZ3VyZVNldHRpbmdzKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSk6IHN0cmluZyB7XHJcbiAgICAvL2kxMG5cclxuICAgIGNvbnN0IGJyb3dzZXJMYW5nID0gdHJhbnNsYXRlLmdldEJyb3dzZXJMYW5nKCk7XHJcbiAgICBjb25zdCBsYW5nID0gYnJvd3NlckxhbmcubWF0Y2goL2VufHJ1fGVzLykgPyBicm93c2VyTGFuZyA6IHRoaXMuZGVmYXVsdExhbmd1YWdlO1xyXG5cclxuICAgIC8vZGF0ZXNcclxuICAgIHRoaXMuZGF0ZUZuc0xvY2FsZSA9IHsgbG9jYWxlOiBlblVTIH07XHJcblxyXG4gICAgdGhpcy5zdWJzLnNpbmsgPSB0aGlzLnRyYW5zbGF0ZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudDogTGFuZ0NoYW5nZUV2ZW50KSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdMYW5ndWFnZSBDaGFuZ2VkJyk7XHJcbiAgICAgIHRoaXMubGFuZ2NoYW5nZS5lbWl0KGV2ZW50LmxhbmcpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGxhbmc7XHJcbiAgfVxyXG5cclxuICAvL0xhbmd1YWdlc1xyXG4gIHNldFN1cHBvcnRlZExhbmd1YWdlcyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5hZGRMYW5ncyhsYW5ndWFnZXMpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdExhbmd1YWdlKGxhbmc6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy50cmFuc2xhdGUuc2V0RGVmYXVsdExhbmcobGFuZyk7XHJcbiAgfVxyXG5cclxuICBzZXRMYW5ndWFnZShsYW5ndWFnZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS51c2UobGFuZ3VhZ2UpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QnJvd3Nlckxhbmd1YWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuZ2V0QnJvd3NlckxhbmcoKTtcclxuICB9XHJcblxyXG4gIC8vRGF0ZXNcclxuICBnZXREYXRlZm5zTG9jYWxlKCk6IGFueSB7XHJcbiAgICBsZXQgZGZuTG9jYWxlOiBhbnk7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLmdldEJyb3dzZXJMYW5ndWFnZSgpKSB7XHJcbiAgICAgIGNhc2UgJ2VuJzpcclxuICAgICAgICBkZm5Mb2NhbGUgPSB7IGxvY2FsZTogZW5VUyB9O1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBkZm5Mb2NhbGUgPSB7IGxvY2FsZTogZW5VUyB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkZm5Mb2NhbGU7XHJcbiAgfVxyXG5cclxuICAvL2dldExvY2FsaXplZFxyXG4gIGdldExvY2FsaXplZFZhbHVlKGtleTogc3RyaW5nLCBwYXJhbXM/OiBhbnlbXSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoa2V5KTtcclxuXHJcbiAgICBpZiAoIXBhcmFtcyB8fCBwYXJhbXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5mb3JtYXQodmFsdWUsIHBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBnZXRMb2NhbGl6ZWREYXRlKHZhbHVlKTogc3RyaW5nIHtcclxuICAgIGxldCBkYXRlID0gRGF0ZUNvbnZlcnQudG9EYXRlKHZhbHVlKTtcclxuICAgIGlmIChpcy5kYXRlSW52YWxpZChkYXRlKSkge1xyXG4gICAgICByZXR1cm4gXCJJbnZhbGlkIERhdGVcIjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZm9ybWF0KGRhdGUsIGRhdGVGb3JtYXRzLm1lZGl1bSwgdGhpcy5kYXRlRm5zTG9jYWxlKTtcclxuICB9XHJcblxyXG4gIGdldExvY2FsaXplZERhdGVUaW1lKHZhbHVlKTogc3RyaW5nIHtcclxuICAgIGxldCBkYXRlID0gRGF0ZUNvbnZlcnQudG9EYXRlKHZhbHVlKTtcclxuICAgIGlmIChpcy5kYXRlSW52YWxpZChkYXRlKSkge1xyXG4gICAgICByZXR1cm4gXCJJbnZhbGlkIERhdGVcIjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZm9ybWF0KGRhdGUsIGRhdGVUaW1lRm9ybWF0cy5tZWRpdW0sIHRoaXMuZGF0ZUZuc0xvY2FsZSk7XHJcbiAgfVxyXG5cclxuICAvL1VUQyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1CRUdJTlxyXG4gIGdldFVUQ1RvTG9jYWxpemVkRGF0ZSh2YWx1ZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2FmZVV0Y1RvWm9uZWRUaW1lKHZhbHVlLCBkYXRlRm9ybWF0cy5tZWRpdW0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0VVRDVG9Mb2NhbGl6ZWREYXRlVGltZSh2YWx1ZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2FmZVV0Y1RvWm9uZWRUaW1lKHZhbHVlLCBkYXRlVGltZUZvcm1hdHMubWVkaXVtKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2FmZVV0Y1RvWm9uZWRUaW1lKGRhdGUsIGNvbnZlcnNpb25Gb3JtYXQgPSBudWxsKTogc3RyaW5nIHtcclxuICAgIGlmICghZGF0ZSl7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCByZXN1bHQgPSBkYXRlO1xyXG5cclxuICAgIHRyeVxyXG4gICAge1xyXG4gICAgICBpZiAodHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgaWYgKGRhdGUuaW5kZXhPZihcIlRcIikgPiAtMSkge1xyXG4gICAgICAgICAgZGF0ZSA9IGRhdGUucmVwbGFjZShcIlRcIiwgXCIgXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGRhdGUuaW5kZXhPZihcIlpcIikgPT0gLTEpIHtcclxuICAgICAgICAgIGRhdGUgPSBkYXRlICsgXCJaXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgYnJvd3NlclRpbWVab25lID0gSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lO1xyXG5cclxuICAgICAgaWYgKGJyb3dzZXJUaW1lWm9uZSkge1xyXG4gICAgICAgIGlmIChjb252ZXJzaW9uRm9ybWF0KSB7XHJcbiAgICAgICAgICByZXN1bHQgPSB1dGNUb1pvbmVkVGltZShkYXRlLCBicm93c2VyVGltZVpvbmUpO1xyXG4gICAgICAgICAgcmVzdWx0ID0gZm9ybWF0KHJlc3VsdCwgY29udmVyc2lvbkZvcm1hdCwgdGhpcy5kYXRlRm5zTG9jYWxlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICByZXN1bHQgPSB1dGNUb1pvbmVkVGltZShkYXRlLCBicm93c2VyVGltZVpvbmUpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChjb252ZXJzaW9uRm9ybWF0KSB7XHJcbiAgICAgICAgICByZXN1bHQgPSBmb3JtYXQobmV3IERhdGUoZGF0ZSksIGNvbnZlcnNpb25Gb3JtYXQsIHRoaXMuZGF0ZUZuc0xvY2FsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgcmVzdWx0ID0gbmV3IERhdGUoZGF0ZSkudG9TdHJpbmcoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoXHJcbiAgICB7XHJcbiAgICAgIHJlc3VsdCA9IFwiSW52YWxpZCBEYXRlXCI7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbiAgLy9VVEMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tRU5EXHJcblxyXG4gIC8vRGlzdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUJFR0lOXHJcbiAgZ2V0TG9jYWxpemVkRGlzdGFuY2VJbldvcmRzKGVuZGVkRGF0ZVN0cjogc3RyaW5nLCBzdGFydGVkRGF0ZVN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCBlbmRlZERhdGUgPSBEYXRlQ29udmVydC50b0RhdGUoZW5kZWREYXRlU3RyKTtcclxuICAgIGxldCBzdGFydGVkRGF0ZSA9IERhdGVDb252ZXJ0LnRvRGF0ZShzdGFydGVkRGF0ZVN0cik7XHJcblxyXG4gICAgaWYgKGlzLmRhdGVJbnZhbGlkKGVuZGVkRGF0ZSkgfHwgaXMuZGF0ZUludmFsaWQoc3RhcnRlZERhdGUpKSB7XHJcbiAgICAgIHJldHVybiBcIkludmFsaWQgRGF0ZVwiO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmb3JtYXREaXN0YW5jZShlbmRlZERhdGUsIHN0YXJ0ZWREYXRlLCB0aGlzLmRhdGVGbnNMb2NhbGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TG9jYWxpemVkRGlzdGFuY2VUb05vd0luV29yZHModmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgZGF0ZSA9IERhdGVDb252ZXJ0LnRvRGF0ZSh2YWx1ZSk7XHJcbiAgICBpZiAoaXMuZGF0ZUludmFsaWQoZGF0ZSkpIHtcclxuICAgICAgcmV0dXJuIFwiSW52YWxpZCBEYXRlXCI7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZvcm1hdERpc3RhbmNlVG9Ob3coZGF0ZSwgdGhpcy5kYXRlRm5zTG9jYWxlKTtcclxuICB9XHJcbiAgLy9EaXN0YW5jZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tRU5EXHJcbn1cclxuXHJcbiJdfQ==
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/*
|
|
2
|
+
<file>
|
|
3
|
+
Project:
|
|
4
|
+
@osovitny/anatoly
|
|
5
|
+
|
|
6
|
+
Authors:
|
|
7
|
+
Vadim Osovitny vadim@osovitny.com
|
|
8
|
+
Anatoly Osovitny anatoly@osovitny.com
|
|
9
|
+
|
|
10
|
+
Created:
|
|
11
|
+
10 Feb 2024
|
|
12
|
+
|
|
13
|
+
Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
|
|
14
|
+
</file>
|
|
15
|
+
*/
|
|
16
|
+
import { tzTokenizeDate } from "./tzTokenizeDate";
|
|
17
|
+
export function tzParseTimezone(timezoneString, date, isUtcDate) {
|
|
18
|
+
var token;
|
|
19
|
+
var absoluteOffset;
|
|
20
|
+
// Empty string
|
|
21
|
+
if (!timezoneString) {
|
|
22
|
+
return 0;
|
|
23
|
+
}
|
|
24
|
+
// Z
|
|
25
|
+
token = patterns.timezoneZ.exec(timezoneString);
|
|
26
|
+
if (token) {
|
|
27
|
+
return 0;
|
|
28
|
+
}
|
|
29
|
+
var hours;
|
|
30
|
+
// ±hh
|
|
31
|
+
token = patterns.timezoneHH.exec(timezoneString);
|
|
32
|
+
if (token) {
|
|
33
|
+
hours = parseInt(token[1], 10);
|
|
34
|
+
if (!validateTimezone(hours)) {
|
|
35
|
+
return NaN;
|
|
36
|
+
}
|
|
37
|
+
return -(hours * MILLISECONDS_IN_HOUR);
|
|
38
|
+
}
|
|
39
|
+
// ±hh:mm or ±hhmm
|
|
40
|
+
token = patterns.timezoneHHMM.exec(timezoneString);
|
|
41
|
+
if (token) {
|
|
42
|
+
hours = parseInt(token[1], 10);
|
|
43
|
+
var minutes = parseInt(token[2], 10);
|
|
44
|
+
if (!validateTimezone(hours, minutes)) {
|
|
45
|
+
return NaN;
|
|
46
|
+
}
|
|
47
|
+
absoluteOffset = Math.abs(hours) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE;
|
|
48
|
+
return hours > 0 ? -absoluteOffset : absoluteOffset;
|
|
49
|
+
}
|
|
50
|
+
// IANA time zone
|
|
51
|
+
if (isValidTimezoneIANAString(timezoneString)) {
|
|
52
|
+
date = new Date(date || Date.now());
|
|
53
|
+
var utcDate = isUtcDate ? date : toUtcDate(date);
|
|
54
|
+
var offset = calcOffset(utcDate, timezoneString);
|
|
55
|
+
var fixedOffset = isUtcDate ? offset : fixOffset(date, offset, timezoneString);
|
|
56
|
+
return -fixedOffset;
|
|
57
|
+
}
|
|
58
|
+
return NaN;
|
|
59
|
+
}
|
|
60
|
+
var MILLISECONDS_IN_HOUR = 3600000;
|
|
61
|
+
var MILLISECONDS_IN_MINUTE = 60000;
|
|
62
|
+
var patterns = {
|
|
63
|
+
timezone: /([Z+-].*)$/,
|
|
64
|
+
timezoneZ: /^(Z)$/,
|
|
65
|
+
timezoneHH: /^([+-]\d{2})$/,
|
|
66
|
+
timezoneHHMM: /^([+-]\d{2}):?(\d{2})$/,
|
|
67
|
+
};
|
|
68
|
+
function newDateUTC(fullYear, month, day, hour, minute, second, millisecond) {
|
|
69
|
+
var utcDate = new Date(0);
|
|
70
|
+
utcDate.setUTCFullYear(fullYear, month, day);
|
|
71
|
+
utcDate.setUTCHours(hour, minute, second, millisecond);
|
|
72
|
+
return utcDate;
|
|
73
|
+
}
|
|
74
|
+
function toUtcDate(date) {
|
|
75
|
+
return newDateUTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());
|
|
76
|
+
}
|
|
77
|
+
function calcOffset(date, timezoneString) {
|
|
78
|
+
var tokens = tzTokenizeDate(date, timezoneString);
|
|
79
|
+
// ms dropped because it's not provided by tzTokenizeDate
|
|
80
|
+
var asUTC = newDateUTC(tokens[0], tokens[1] - 1, tokens[2], tokens[3] % 24, tokens[4], tokens[5], 0).getTime();
|
|
81
|
+
var asTS = date.getTime();
|
|
82
|
+
var over = asTS % 1000;
|
|
83
|
+
asTS -= over >= 0 ? over : 1000 + over;
|
|
84
|
+
return asUTC - asTS;
|
|
85
|
+
}
|
|
86
|
+
function fixOffset(date, offset, timezoneString) {
|
|
87
|
+
var localTS = date.getTime();
|
|
88
|
+
// Our UTC time is just a guess because our offset is just a guess
|
|
89
|
+
var utcGuess = localTS - offset;
|
|
90
|
+
// Test whether the zone matches the offset for this ts
|
|
91
|
+
var o2 = calcOffset(new Date(utcGuess), timezoneString);
|
|
92
|
+
// If so, offset didn't change, and we're done
|
|
93
|
+
if (offset === o2) {
|
|
94
|
+
return offset;
|
|
95
|
+
}
|
|
96
|
+
// If not, change the ts by the difference in the offset
|
|
97
|
+
utcGuess -= o2 - offset;
|
|
98
|
+
// If that gives us the local time we want, we're done
|
|
99
|
+
var o3 = calcOffset(new Date(utcGuess), timezoneString);
|
|
100
|
+
if (o2 === o3) {
|
|
101
|
+
return o2;
|
|
102
|
+
}
|
|
103
|
+
// If it's different, we're in a hole time. The offset has changed, but we don't adjust the time
|
|
104
|
+
return Math.max(o2, o3);
|
|
105
|
+
}
|
|
106
|
+
function validateTimezone(hours, minutes = null) {
|
|
107
|
+
return -23 <= hours && hours <= 23 && (minutes == null || (0 <= minutes && minutes <= 59));
|
|
108
|
+
}
|
|
109
|
+
var validIANATimezoneCache = {};
|
|
110
|
+
function isValidTimezoneIANAString(timeZoneString) {
|
|
111
|
+
if (validIANATimezoneCache[timeZoneString])
|
|
112
|
+
return true;
|
|
113
|
+
try {
|
|
114
|
+
new Intl.DateTimeFormat(undefined, { timeZone: timeZoneString });
|
|
115
|
+
validIANATimezoneCache[timeZoneString] = true;
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHpQYXJzZVRpbWV6b25lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5hdG9seS9zcmMvbGliL2NvcmUvbG9jYWxpemF0aW9uL3R6L3R6UGFyc2VUaW1lem9uZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUVqRCxNQUFNLFVBQVUsZUFBZSxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsU0FBUztJQUM3RCxJQUFJLEtBQUssQ0FBQTtJQUNULElBQUksY0FBYyxDQUFBO0lBRWxCLGVBQWU7SUFDZixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEIsT0FBTyxDQUFDLENBQUE7SUFDVixDQUFDO0lBRUQsSUFBSTtJQUNKLEtBQUssR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUMvQyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ1YsT0FBTyxDQUFDLENBQUE7SUFDVixDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUE7SUFFVCxNQUFNO0lBQ04sS0FBSyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ2hELElBQUksS0FBSyxFQUFFLENBQUM7UUFDVixLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUU5QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3QixPQUFPLEdBQUcsQ0FBQTtRQUNaLENBQUM7UUFFRCxPQUFPLENBQUMsQ0FBQyxLQUFLLEdBQUcsb0JBQW9CLENBQUMsQ0FBQTtJQUN4QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLEtBQUssR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFD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LElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0FBQ3pCLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLEtBQUssRUFBRSxPQUFPLEdBQUcsSUFBSTtJQUM3QyxPQUFPLENBQUMsRUFBRSxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxPQUFPLElBQUksT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFDNUYsQ0FBQztBQUVELElBQUksc0JBQXNCLEdBQUcsRUFBRSxDQUFBO0FBQy9CLFNBQVMseUJBQXlCLENBQUMsY0FBYztJQUMvQyxJQUFJLHNCQUFzQixDQUFDLGNBQWMsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFBO0lBQ3ZELElBQUksQ0FBQztRQUNILElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQTtRQUNoRSxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsR0FBRyxJQUFJLENBQUE7UUFDN0MsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltQG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5QG9zb3ZpdG55LmNvbVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMTAgRmViIDIwMjRcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG5pbXBvcnQgeyB0elRva2VuaXplRGF0ZSB9IGZyb20gXCIuL3R6VG9rZW5pemVEYXRlXCJcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB0elBhcnNlVGltZXpvbmUodGltZXpvbmVTdHJpbmcsIGRhdGUsIGlzVXRjRGF0ZSkge1xyXG4gIHZhciB0b2tlblxyXG4gIHZhciBhYnNvbHV0ZU9mZnNldFxyXG5cclxuICAvLyBFbXB0eSBzdHJpbmdcclxuICBpZiAoIXRpbWV6b25lU3RyaW5nKSB7XHJcbiAgICByZXR1cm4gMFxyXG4gIH1cclxuXHJcbiAgLy8gWlxyXG4gIHRva2VuID0gcGF0dGVybnMudGltZXpvbmVaLmV4ZWModGltZXpvbmVTdHJpbmcpXHJcbiAgaWYgKHRva2VuKSB7XHJcbiAgICByZXR1cm4gMFxyXG4gIH1cclxuXHJcbiAgdmFyIGhvdXJzXHJcblxyXG4gIC8vIMKxaGhcclxuICB0b2tlbiA9IHBhdHRlcm5zLnRpbWV6b25lSEguZXhlYyh0aW1lem9uZVN0cmluZylcclxuICBpZiAodG9rZW4pIHtcclxuICAgIGhvdXJzID0gcGFyc2VJbnQodG9rZW5bMV0sIDEwKVxyXG5cclxuICAgIGlmICghdmFsaWRhdGVUaW1lem9uZShob3VycykpIHtcclxuICAgICAgcmV0dXJuIE5hTlxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAtKGhvdXJzICogTUlMTElTRUNPTkRTX0lOX0hPVVIpXHJcbiAgfVxyXG5cclxuICAvLyDCsWhoOm1tIG9yIMKxaGhtbVxyXG4gIHRva2VuID0gcGF0dGVybnMudGltZXpvbmVISE1NLmV4ZWModGltZXpvbmVTdHJpbmcpXHJcbiAgaWYgKHRva2VuKSB7XHJcbiAgICBob3VycyA9IHBhcnNlSW50KHRva2VuWzFdLCAxMClcclxuICAgIHZhciBtaW51dGVzID0gcGFyc2VJbnQodG9rZW5bMl0sIDEwKVxyXG5cclxuICAgIGlmICghdmFsaWRhdGVUaW1lem9uZShob3VycywgbWludXRlcykpIHtcclxuICAgICAgcmV0dXJuIE5hTlxyXG4gICAgfVxyXG5cclxuICAgIGFic29sdXRlT2Zmc2V0ID0gTWF0aC5hYnMoaG91cnMpICogTUlMTElTRUNPTkRTX0lOX0hPVVIgKyBtaW51dGVzICogTUlMTElTRUNPTkRTX0lOX01JTlVURVxyXG4gICAgcmV0dXJuIGhvdXJzID4gMCA/IC1hYnNvbHV0ZU9mZnNldCA6IGFic29sdXRlT2Zmc2V0XHJcbiAgfVxyXG5cclxuICAvLyBJQU5BIHRpbWUgem9uZVxyXG4gIGlmIChpc1ZhbGlkVGltZXpvbmVJQU5BU3RyaW5nKHRpbWV6b25lU3RyaW5nKSkge1xyXG4gICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUgfHwgRGF0ZS5ub3coKSlcclxuICAgIHZhciB1dGNEYXRlID0gaXNVdGNEYXRlID8gZGF0ZSA6IHRvVXRjRGF0ZShkYXRlKTtcclxuICAgIHZhciBvZmZzZXQgPSBjYWxjT2Zmc2V0KHV0Y0RhdGUsIHRpbWV6b25lU3RyaW5nKTtcclxuICAgIHZhciBmaXhlZE9mZnNldCA9IGlzVXRjRGF0ZSA/IG9mZnNldCA6IGZpeE9mZnNldChkYXRlLCBvZmZzZXQsIHRpbWV6b25lU3RyaW5nKVxyXG5cclxuICAgIHJldHVybiAtZml4ZWRPZmZzZXRcclxuICB9XHJcblxyXG4gIHJldHVybiBOYU5cclxufVxyXG5cclxuXHJcbnZhciBNSUxMSVNFQ09ORFNfSU5fSE9VUiA9IDM2MDAwMDBcclxudmFyIE1JTExJU0VDT05EU19JTl9NSU5VVEUgPSA2MDAwMFxyXG5cclxudmFyIHBhdHRlcm5zID0ge1xyXG4gIHRpbWV6b25lOiAvKFtaKy1dLiopJC8sXHJcbiAgdGltZXpvbmVaOiAvXihaKSQvLFxyXG4gIHRpbWV6b25lSEg6IC9eKFsrLV1cXGR7Mn0pJC8sXHJcbiAgdGltZXpvbmVISE1NOiAvXihbKy1dXFxkezJ9KTo/KFxcZHsyfSkkLyxcclxufVxyXG5cclxuZnVuY3Rpb24gbmV3RGF0ZVVUQyhmdWxsWWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kKSB7XHJcbiAgdmFyIHV0Y0RhdGUgPSBuZXcgRGF0ZSgwKVxyXG4gIHV0Y0RhdGUuc2V0VVRDRnVsbFllYXIoZnVsbFllYXIsIG1vbnRoLCBkYXkpXHJcbiAgdXRjRGF0ZS5zZXRVVENIb3Vycyhob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmQpXHJcbiAgcmV0dXJuIHV0Y0RhdGVcclxufVxyXG5cclxuZnVuY3Rpb24gdG9VdGNEYXRlKGRhdGUpIHtcclxuICByZXR1cm4gbmV3RGF0ZVVUQyhcclxuICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcclxuICAgIGRhdGUuZ2V0TW9udGgoKSxcclxuICAgIGRhdGUuZ2V0RGF0ZSgpLFxyXG4gICAgZGF0ZS5nZXRIb3VycygpLFxyXG4gICAgZGF0ZS5nZXRNaW51dGVzKCksXHJcbiAgICBkYXRlLmdldFNlY29uZHMoKSxcclxuICAgIGRhdGUuZ2V0TWlsbGlzZWNvbmRzKClcclxuICApXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNhbGNPZmZzZXQoZGF0ZSwgdGltZXpvbmVTdHJpbmcpIHtcclxuICB2YXIgdG9rZW5zID0gdHpUb2tlbml6ZURhdGUoZGF0ZSwgdGltZXpvbmVTdHJpbmcpXHJcblxyXG4gIC8vIG1zIGRyb3BwZWQgYmVjYXVzZSBpdCdzIG5vdCBwcm92aWRlZCBieSB0elRva2VuaXplRGF0ZVxyXG4gIHZhciBhc1VUQyA9IG5ld0RhdGVVVEMoXHJcbiAgICB0b2tlbnNbMF0sXHJcbiAgICB0b2tlbnNbMV0gLSAxLFxyXG4gICAgdG9rZW5zWzJdLFxyXG4gICAgdG9rZW5zWzNdICUgMjQsXHJcbiAgICB0b2tlbnNbNF0sXHJcbiAgICB0b2tlbnNbNV0sXHJcbiAgICAwXHJcbiAgKS5nZXRUaW1lKClcclxuXHJcbiAgdmFyIGFzVFMgPSBkYXRlLmdldFRpbWUoKVxyXG4gIHZhciBvdmVyID0gYXNUUyAlIDEwMDBcclxuICBhc1RTIC09IG92ZXIgPj0gMCA/IG92ZXIgOiAxMDAwICsgb3ZlclxyXG4gIHJldHVybiBhc1VUQyAtIGFzVFNcclxufVxyXG5cclxuZnVuY3Rpb24gZml4T2Zmc2V0KGRhdGUsIG9mZnNldCwgdGltZXpvbmVTdHJpbmcpIHtcclxuICB2YXIgbG9jYWxUUyA9IGRhdGUuZ2V0VGltZSgpXHJcblxyXG4gIC8vIE91ciBVVEMgdGltZSBpcyBqdXN0IGEgZ3Vlc3MgYmVjYXVzZSBvdXIgb2Zmc2V0IGlzIGp1c3QgYSBndWVzc1xyXG4gIHZhciB1dGNHdWVzcyA9IGxvY2FsVFMgLSBvZmZzZXRcclxuXHJcbiAgLy8gVGVzdCB3aGV0aGVyIHRoZSB6b25lIG1hdGNoZXMgdGhlIG9mZnNldCBmb3IgdGhpcyB0c1xyXG4gIHZhciBvMiA9IGNhbGNPZmZzZXQobmV3IERhdGUodXRjR3Vlc3MpLCB0aW1lem9uZVN0cmluZylcclxuXHJcbiAgLy8gSWYgc28sIG9mZnNldCBkaWRuJ3QgY2hhbmdlLCBhbmQgd2UncmUgZG9uZVxyXG4gIGlmIChvZmZzZXQgPT09IG8yKSB7XHJcbiAgICByZXR1cm4gb2Zmc2V0XHJcbiAgfVxyXG5cclxuICAvLyBJZiBub3QsIGNoYW5nZSB0aGUgdHMgYnkgdGhlIGRpZmZlcmVuY2UgaW4gdGhlIG9mZnNldFxyXG4gIHV0Y0d1ZXNzIC09IG8yIC0gb2Zmc2V0XHJcblxyXG4gIC8vIElmIHRoYXQgZ2l2ZXMgdXMgdGhlIGxvY2FsIHRpbWUgd2Ugd2FudCwgd2UncmUgZG9uZVxyXG4gIHZhciBvMyA9IGNhbGNPZmZzZXQobmV3IERhdGUodXRjR3Vlc3MpLCB0aW1lem9uZVN0cmluZylcclxuICBpZiAobzIgPT09IG8zKSB7XHJcbiAgICByZXR1cm4gbzJcclxuICB9XHJcblxyXG4gIC8vIElmIGl0J3MgZGlmZmVyZW50LCB3ZSdyZSBpbiBhIGhvbGUgdGltZS4gVGhlIG9mZnNldCBoYXMgY2hhbmdlZCwgYnV0IHdlIGRvbid0IGFkanVzdCB0aGUgdGltZVxyXG4gIHJldHVybiBNYXRoLm1heChvMiwgbzMpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHZhbGlkYXRlVGltZXpvbmUoaG91cnMsIG1pbnV0ZXMgPSBudWxsKSB7XHJcbiAgcmV0dXJuIC0yMyA8PSBob3VycyAmJiBob3VycyA8PSAyMyAmJiAobWludXRlcyA9PSBudWxsIHx8ICgwIDw9IG1pbnV0ZXMgJiYgbWludXRlcyA8PSA1OSkpXHJcbn1cclxuXHJcbnZhciB2YWxpZElBTkFUaW1lem9uZUNhY2hlID0ge31cclxuZnVuY3Rpb24gaXNWYWxpZFRpbWV6b25lSUFOQVN0cmluZyh0aW1lWm9uZVN0cmluZykge1xyXG4gIGlmICh2YWxpZElBTkFUaW1lem9uZUNhY2hlW3RpbWVab25lU3RyaW5nXSkgcmV0dXJuIHRydWVcclxuICB0cnkge1xyXG4gICAgbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodW5kZWZpbmVkLCB7IHRpbWVab25lOiB0aW1lWm9uZVN0cmluZyB9KVxyXG4gICAgdmFsaWRJQU5BVGltZXpvbmVDYWNoZVt0aW1lWm9uZVN0cmluZ10gPSB0cnVlXHJcbiAgICByZXR1cm4gdHJ1ZVxyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/*
|
|
2
|
+
<file>
|
|
3
|
+
Project:
|
|
4
|
+
@osovitny/anatoly
|
|
5
|
+
|
|
6
|
+
Authors:
|
|
7
|
+
Vadim Osovitny vadim@osovitny.com
|
|
8
|
+
Anatoly Osovitny anatoly@osovitny.com
|
|
9
|
+
|
|
10
|
+
Created:
|
|
11
|
+
10 Feb 2024
|
|
12
|
+
|
|
13
|
+
Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
|
|
14
|
+
</file>
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Returns the [year, month, day, hour, minute, seconds] tokens of the provided
|
|
18
|
+
* `date` as it will be rendered in the `timeZone`.
|
|
19
|
+
*/
|
|
20
|
+
export function tzTokenizeDate(date, timeZone) {
|
|
21
|
+
var dtf = getDateTimeFormat(timeZone);
|
|
22
|
+
return dtf.formatToParts ? partsOffset(dtf, date) : hackyOffset(dtf, date);
|
|
23
|
+
}
|
|
24
|
+
var typeToPos = {
|
|
25
|
+
year: 0,
|
|
26
|
+
month: 1,
|
|
27
|
+
day: 2,
|
|
28
|
+
hour: 3,
|
|
29
|
+
minute: 4,
|
|
30
|
+
second: 5,
|
|
31
|
+
};
|
|
32
|
+
function partsOffset(dtf, date) {
|
|
33
|
+
try {
|
|
34
|
+
var formatted = dtf.formatToParts(date);
|
|
35
|
+
var filled = [];
|
|
36
|
+
for (var i = 0; i < formatted.length; i++) {
|
|
37
|
+
var pos = typeToPos[formatted[i].type];
|
|
38
|
+
if (pos >= 0) {
|
|
39
|
+
filled[pos] = parseInt(formatted[i].value, 10);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return filled;
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
if (error instanceof RangeError) {
|
|
46
|
+
return [NaN];
|
|
47
|
+
}
|
|
48
|
+
throw error;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function hackyOffset(dtf, date) {
|
|
52
|
+
var formatted = dtf.format(date).replace(/\u200E/g, '');
|
|
53
|
+
var parsed = /(\d+)\/(\d+)\/(\d+),? (\d+):(\d+):(\d+)/.exec(formatted);
|
|
54
|
+
// var [, fMonth, fDay, fYear, fHour, fMinute, fSecond] = parsed
|
|
55
|
+
// return [fYear, fMonth, fDay, fHour, fMinute, fSecond]
|
|
56
|
+
return [parsed[3], parsed[1], parsed[2], parsed[4], parsed[5], parsed[6]];
|
|
57
|
+
}
|
|
58
|
+
// Get a cached Intl.DateTimeFormat instance for the IANA `timeZone`. This can be used
|
|
59
|
+
// to get deterministic local date/time output according to the `en-US` locale which
|
|
60
|
+
// can be used to extract local time parts as necessary.
|
|
61
|
+
var dtfCache = {};
|
|
62
|
+
function getDateTimeFormat(timeZone) {
|
|
63
|
+
if (!dtfCache[timeZone]) {
|
|
64
|
+
// New browsers use `hourCycle`, IE and Chrome <73 does not support it and uses `hour12`
|
|
65
|
+
var testDateFormatted = new Intl.DateTimeFormat('en-US', {
|
|
66
|
+
hour12: false,
|
|
67
|
+
timeZone: 'America/New_York',
|
|
68
|
+
year: 'numeric',
|
|
69
|
+
month: 'numeric',
|
|
70
|
+
day: '2-digit',
|
|
71
|
+
hour: '2-digit',
|
|
72
|
+
minute: '2-digit',
|
|
73
|
+
second: '2-digit',
|
|
74
|
+
}).format(new Date('2014-06-25T04:00:00.123Z'));
|
|
75
|
+
var hourCycleSupported = testDateFormatted === '06/25/2014, 00:00:00' ||
|
|
76
|
+
testDateFormatted === '06/25/2014 00:00:00';
|
|
77
|
+
dtfCache[timeZone] = hourCycleSupported
|
|
78
|
+
? new Intl.DateTimeFormat('en-US', {
|
|
79
|
+
hour12: false,
|
|
80
|
+
timeZone: timeZone,
|
|
81
|
+
year: 'numeric',
|
|
82
|
+
month: 'numeric',
|
|
83
|
+
day: '2-digit',
|
|
84
|
+
hour: '2-digit',
|
|
85
|
+
minute: '2-digit',
|
|
86
|
+
second: '2-digit',
|
|
87
|
+
})
|
|
88
|
+
: new Intl.DateTimeFormat('en-US', {
|
|
89
|
+
hourCycle: 'h23',
|
|
90
|
+
timeZone: timeZone,
|
|
91
|
+
year: 'numeric',
|
|
92
|
+
month: 'numeric',
|
|
93
|
+
day: '2-digit',
|
|
94
|
+
hour: '2-digit',
|
|
95
|
+
minute: '2-digit',
|
|
96
|
+
second: '2-digit',
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
return dtfCache[timeZone];
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHpUb2tlbml6ZURhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS9sb2NhbGl6YXRpb24vdHovdHpUb2tlbml6ZURhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRO0lBQzNDLElBQUksR0FBRyxHQUFHLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3JDLE9BQU8sR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQTtBQUM1RSxDQUFDO0FBRUQsSUFBSSxTQUFTLEdBQUc7SUFDZCxJQUFJLEVBQUUsQ0FBQztJQUNQLEtBQUssRUFBRSxDQUFDO0lBQ1IsR0FBRyxFQUFFLENBQUM7SUFDTixJQUFJLEVBQUUsQ0FBQztJQUNQLE1BQU0sRUFBRSxDQUFDO0lBQ1QsTUFBTSxFQUFFLENBQUM7Q0FDVixDQUFBO0FBRUQsU0FBUyxXQUFXLENBQUMsR0FBRyxFQUFFLElBQUk7SUFDNUIsSUFBSSxDQUFDO1FBQ0gsSUFBSSxTQUFTLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN2QyxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUE7UUFDZixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzFDLElBQUksR0FBRyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUE7WUFFdEMsSUFBSSxHQUFHLElBQUksQ0FB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ZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltQG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5QG9zb3ZpdG55LmNvbVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMTAgRmViIDIwMjRcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG4vKipcclxuICogUmV0dXJucyB0aGUgW3llYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kc10gdG9rZW5zIG9mIHRoZSBwcm92aWRlZFxyXG4gKiBgZGF0ZWAgYXMgaXQgd2lsbCBiZSByZW5kZXJlZCBpbiB0aGUgYHRpbWVab25lYC5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiB0elRva2VuaXplRGF0ZShkYXRlLCB0aW1lWm9uZSkge1xyXG4gIHZhciBkdGYgPSBnZXREYXRlVGltZUZvcm1hdCh0aW1lWm9uZSlcclxuICByZXR1cm4gZHRmLmZvcm1hdFRvUGFydHMgPyBwYXJ0c09mZnNldChkdGYsIGRhdGUpIDogaGFja3lPZmZzZXQoZHRmLCBkYXRlKVxyXG59XHJcblxyXG52YXIgdHlwZVRvUG9zID0ge1xyXG4gIHllYXI6IDAsXHJcbiAgbW9udGg6IDEsXHJcbiAgZGF5OiAyLFxyXG4gIGhvdXI6IDMsXHJcbiAgbWludXRlOiA0LFxyXG4gIHNlY29uZDogNSxcclxufVxyXG5cclxuZnVuY3Rpb24gcGFydHNPZmZzZXQoZHRmLCBkYXRlKSB7XHJcbiAgdHJ5IHtcclxuICAgIHZhciBmb3JtYXR0ZWQgPSBkdGYuZm9ybWF0VG9QYXJ0cyhkYXRlKVxyXG4gICAgdmFyIGZpbGxlZCA9IFtdXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZvcm1hdHRlZC5sZW5ndGg7IGkrKykge1xyXG4gICAgICB2YXIgcG9zID0gdHlwZVRvUG9zW2Zvcm1hdHRlZFtpXS50eXBlXVxyXG5cclxuICAgICAgaWYgKHBvcyA+PSAwKSB7XHJcbiAgICAgICAgZmlsbGVkW3Bvc10gPSBwYXJzZUludChmb3JtYXR0ZWRbaV0udmFsdWUsIDEwKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmlsbGVkXHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFJhbmdlRXJyb3IpIHtcclxuICAgICAgcmV0dXJuIFtOYU5dXHJcbiAgICB9XHJcbiAgICB0aHJvdyBlcnJvclxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gaGFja3lPZmZzZXQoZHRmLCBkYXRlKSB7XHJcbiAgdmFyIGZvcm1hdHRlZCA9IGR0Zi5mb3JtYXQoZGF0ZSkucmVwbGFjZSgvXFx1MjAwRS9nLCAnJylcclxuICB2YXIgcGFyc2VkID0gLyhcXGQrKVxcLyhcXGQrKVxcLyhcXGQrKSw/IChcXGQrKTooXFxkKyk6KFxcZCspLy5leGVjKGZvcm1hdHRlZClcclxuICAvLyB2YXIgWywgZk1vbnRoLCBmRGF5LCBmWWVhciwgZkhvdXIsIGZNaW51dGUsIGZTZWNvbmRdID0gcGFyc2VkXHJcbiAgLy8gcmV0dXJuIFtmWWVhciwgZk1vbnRoLCBmRGF5LCBmSG91ciwgZk1pbnV0ZSwgZlNlY29uZF1cclxuICByZXR1cm4gW3BhcnNlZFszXSwgcGFyc2VkWzFdLCBwYXJzZWRbMl0sIHBhcnNlZFs0XSwgcGFyc2VkWzVdLCBwYXJzZWRbNl1dXHJcbn1cclxuXHJcbi8vIEdldCBhIGNhY2hlZCBJbnRsLkRhdGVUaW1lRm9ybWF0IGluc3RhbmNlIGZvciB0aGUgSUFOQSBgdGltZVpvbmVgLiBUaGlzIGNhbiBiZSB1c2VkXHJcbi8vIHRvIGdldCBkZXRlcm1pbmlzdGljIGxvY2FsIGRhdGUvdGltZSBvdXRwdXQgYWNjb3JkaW5nIHRvIHRoZSBgZW4tVVNgIGxvY2FsZSB3aGljaFxyXG4vLyBjYW4gYmUgdXNlZCB0byBleHRyYWN0IGxvY2FsIHRpbWUgcGFydHMgYXMgbmVjZXNzYXJ5LlxyXG52YXIgZHRmQ2FjaGUgPSB7fVxyXG5mdW5jdGlvbiBnZXREYXRlVGltZUZvcm1hdCh0aW1lWm9uZSkge1xyXG4gIGlmICghZHRmQ2FjaGVbdGltZVpvbmVdKSB7XHJcbiAgICAvLyBOZXcgYnJvd3NlcnMgdXNlIGBob3VyQ3ljbGVgLCBJRSBhbmQgQ2hyb21lIDw3MyBkb2VzIG5vdCBzdXBwb3J0IGl0IGFuZCB1c2VzIGBob3VyMTJgXHJcbiAgICB2YXIgdGVzdERhdGVGb3JtYXR0ZWQgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgnZW4tVVMnLCB7XHJcbiAgICAgIGhvdXIxMjogZmFsc2UsXHJcbiAgICAgIHRpbWVab25lOiAnQW1lcmljYS9OZXdfWW9yaycsXHJcbiAgICAgIHllYXI6ICdudW1lcmljJyxcclxuICAgICAgbW9udGg6ICdudW1lcmljJyxcclxuICAgICAgZGF5OiAnMi1kaWdpdCcsXHJcbiAgICAgIGhvdXI6ICcyLWRpZ2l0JyxcclxuICAgICAgbWludXRlOiAnMi1kaWdpdCcsXHJcbiAgICAgIHNlY29uZDogJzItZGlnaXQnLFxyXG4gICAgfSkuZm9ybWF0KG5ldyBEYXRlKCcyMDE0LTA2LTI1VDA0OjAwOjAwLjEyM1onKSlcclxuXHJcbiAgICB2YXIgaG91ckN5Y2xlU3VwcG9ydGVkID1cclxuICAgIHRlc3REYXRlRm9ybWF0dGVkID09PSAnMDYvMjUvMjAxNCwgMDA6MDA6MDAnIHx8XHJcbiAgICB0ZXN0RGF0ZUZvcm1hdHRlZCA9PT0gJzA2LzI1LzIwMTQgMDA6MDA6MDAnXHJcblxyXG4gICAgZHRmQ2FjaGVbdGltZVpvbmVdID0gaG91ckN5Y2xlU3VwcG9ydGVkXHJcbiAgICAgID8gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoJ2VuLVVTJywge1xyXG4gICAgICAgICAgaG91cjEyOiBmYWxzZSxcclxuICAgICAgICAgIHRpbWVab25lOiB0aW1lWm9uZSxcclxuICAgICAgICAgIHllYXI6ICdudW1lcmljJyxcclxuICAgICAgICAgIG1vbnRoOiAnbnVtZXJpYycsXHJcbiAgICAgICAgICBkYXk6ICcyLWRpZ2l0JyxcclxuICAgICAgICAgIGhvdXI6ICcyLWRpZ2l0JyxcclxuICAgICAgICAgIG1pbnV0ZTogJzItZGlnaXQnLFxyXG4gICAgICAgICAgc2Vjb25kOiAnMi1kaWdpdCcsXHJcbiAgICAgICAgfSlcclxuICAgICAgOiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgnZW4tVVMnLCB7XHJcbiAgICAgICAgICBob3VyQ3ljbGU6ICdoMjMnLFxyXG4gICAgICAgICAgdGltZVpvbmU6IHRpbWVab25lLFxyXG4gICAgICAgICAgeWVhcjogJ251bWVyaWMnLFxyXG4gICAgICAgICAgbW9udGg6ICdudW1lcmljJyxcclxuICAgICAgICAgIGRheTogJzItZGlnaXQnLFxyXG4gICAgICAgICAgaG91cjogJzItZGlnaXQnLFxyXG4gICAgICAgICAgbWludXRlOiAnMi1kaWdpdCcsXHJcbiAgICAgICAgICBzZWNvbmQ6ICcyLWRpZ2l0JyxcclxuICAgICAgICB9KVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGR0ZkNhY2hlW3RpbWVab25lXVxyXG59XHJcblxyXG5cclxuIl19
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/*
|
|
2
|
+
<file>
|
|
3
|
+
Project:
|
|
4
|
+
@osovitny/anatoly
|
|
5
|
+
|
|
6
|
+
Authors:
|
|
7
|
+
Vadim Osovitny vadim@osovitny.com
|
|
8
|
+
Anatoly Osovitny anatoly@osovitny.com
|
|
9
|
+
|
|
10
|
+
Created:
|
|
11
|
+
10 Feb 2024
|
|
12
|
+
|
|
13
|
+
Source:
|
|
14
|
+
https://www.npmjs.com/package/date-fns-tz
|
|
15
|
+
https://github.com/marnusw/date-fns-tz/blob/master/src/utcToZonedTime/index.js
|
|
16
|
+
https://github.com/marnusw/date-fns-tz/blob/master/src/_lib/tzParseTimezone/index.js
|
|
17
|
+
|
|
18
|
+
Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
|
|
19
|
+
</file>
|
|
20
|
+
*/
|
|
21
|
+
import { DateConvert } from "../../converts/dateConvert";
|
|
22
|
+
import { tzParseTimezone } from "./tzParseTimezone";
|
|
23
|
+
export function utcToZonedTime(dirtyDate, timeZone) {
|
|
24
|
+
let date = DateConvert.toDate(dirtyDate);
|
|
25
|
+
let offsetMilliseconds = tzParseTimezone(timeZone, date, true);
|
|
26
|
+
let d = new Date(date.getTime() - offsetMilliseconds);
|
|
27
|
+
let resultDate = new Date(0);
|
|
28
|
+
resultDate.setFullYear(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate());
|
|
29
|
+
resultDate.setHours(d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds());
|
|
30
|
+
return resultDate;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRjVG9ab25lZFRpbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS9sb2NhbGl6YXRpb24vdHovdXRjVG9ab25lZFRpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFtQkU7QUFFRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXBELE1BQU0sVUFBVSxjQUFjLENBQUMsU0FBUyxFQUFFLFFBQVE7SUFDaEQsSUFBSSxJQUFJLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6QyxJQUFJLGtCQUFrQixHQUFHLGVBQWUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBRTlELElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3RELElBQUksVUFBVSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTdCLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUM1RSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7SUFFbkcsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbjxmaWxlPlxyXG4gIFByb2plY3Q6XHJcbiAgICBAb3Nvdml0bnkvYW5hdG9seVxyXG5cclxuICBBdXRob3JzOlxyXG4gICAgVmFkaW0gT3Nvdml0bnkgdmFkaW1Ab3Nvdml0bnkuY29tXHJcbiAgICBBbmF0b2x5IE9zb3ZpdG55IGFuYXRvbHlAb3Nvdml0bnkuY29tXHJcblxyXG4gIENyZWF0ZWQ6XHJcbiAgICAxMCBGZWIgMjAyNFxyXG5cclxuICBTb3VyY2U6XHJcbiAgICBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9kYXRlLWZucy10elxyXG4gICAgaHR0cHM6Ly9naXRodWIuY29tL21hcm51c3cvZGF0ZS1mbnMtdHovYmxvYi9tYXN0ZXIvc3JjL3V0Y1RvWm9uZWRUaW1lL2luZGV4LmpzXHJcbiAgICBodHRwczovL2dpdGh1Yi5jb20vbWFybnVzdy9kYXRlLWZucy10ei9ibG9iL21hc3Rlci9zcmMvX2xpYi90elBhcnNlVGltZXpvbmUvaW5kZXguanNcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG5pbXBvcnQgeyBEYXRlQ29udmVydCB9IGZyb20gXCIuLi8uLi9jb252ZXJ0cy9kYXRlQ29udmVydFwiO1xyXG5pbXBvcnQgeyB0elBhcnNlVGltZXpvbmUgfSBmcm9tIFwiLi90elBhcnNlVGltZXpvbmVcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB1dGNUb1pvbmVkVGltZShkaXJ0eURhdGUsIHRpbWVab25lKSB7XHJcbiAgbGV0IGRhdGUgPSBEYXRlQ29udmVydC50b0RhdGUoZGlydHlEYXRlKTtcclxuICBsZXQgb2Zmc2V0TWlsbGlzZWNvbmRzID0gdHpQYXJzZVRpbWV6b25lKHRpbWVab25lLCBkYXRlLCB0cnVlKVxyXG5cclxuICBsZXQgZCA9IG5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpIC0gb2Zmc2V0TWlsbGlzZWNvbmRzKTtcclxuICBsZXQgcmVzdWx0RGF0ZSA9IG5ldyBEYXRlKDApO1xyXG5cclxuICByZXN1bHREYXRlLnNldEZ1bGxZZWFyKGQuZ2V0VVRDRnVsbFllYXIoKSwgZC5nZXRVVENNb250aCgpLCBkLmdldFVUQ0RhdGUoKSk7XHJcbiAgcmVzdWx0RGF0ZS5zZXRIb3VycyhkLmdldFVUQ0hvdXJzKCksIGQuZ2V0VVRDTWludXRlcygpLCBkLmdldFVUQ1NlY29uZHMoKSwgZC5nZXRVVENNaWxsaXNlY29uZHMoKSk7XHJcblxyXG4gIHJldHVybiByZXN1bHREYXRlO1xyXG59XHJcblxyXG5cclxuIl19
|