@osovitny/anatoly 3.17.7 → 3.17.9
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/consts/settings.mjs +3 -1
- package/esm2022/lib/core/converts/dateConvert.mjs +28 -1
- package/esm2022/lib/core/converts/tz/tzParseTimezone.mjs +122 -0
- package/esm2022/lib/core/converts/tz/tzTokenizeDate.mjs +101 -0
- package/esm2022/lib/core/localization/localization.service.mjs +2 -11
- package/esm2022/lib/ui/components/base/components/component.mjs +4 -4
- package/fesm2022/osovitny-anatoly.mjs +254 -268
- package/fesm2022/osovitny-anatoly.mjs.map +1 -1
- package/lib/core/consts/settings.d.ts +1 -0
- package/lib/core/converts/dateConvert.d.ts +1 -0
- package/package.json +1 -1
- package/esm2022/lib/core/localization/tz/tzParseTimezone.mjs +0 -122
- package/esm2022/lib/core/localization/tz/tzTokenizeDate.mjs +0 -101
- package/esm2022/lib/core/localization/tz/utcToLocal.mjs +0 -36
- package/lib/core/localization/tz/utcToLocal.d.ts +0 -1
- /package/lib/core/{localization → converts}/tz/tzParseTimezone.d.ts +0 -0
- /package/lib/core/{localization → converts}/tz/tzTokenizeDate.d.ts +0 -0
|
@@ -3,6 +3,7 @@ export declare function getAppSettingsByName(name: any): any;
|
|
|
3
3
|
export declare const AppCoreSettings: any;
|
|
4
4
|
export declare const L10NUrl: string;
|
|
5
5
|
export declare const AppVersion: string;
|
|
6
|
+
export declare const IsDevMode: boolean;
|
|
6
7
|
export declare const ApiUrl: string;
|
|
7
8
|
export declare const ClientApps: any;
|
|
8
9
|
export declare const AppName: string;
|
package/package.json
CHANGED
|
@@ -1,122 +0,0 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHpQYXJzZVRpbWV6b25lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5hdG9seS9zcmMvbGliL2NvcmUvbG9jYWxpemF0aW9uL3R6L3R6UGFyc2VUaW1lem9uZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUVqRCxNQUFNLFVBQVUsZUFBZSxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsU0FBUztJQUM3RCxJQUFJLEtBQUssQ0FBQTtJQUNULElBQUksY0FBYyxDQUFBO0lBRWxCLGVBQWU7SUFDZixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEIsT0FBTyxDQUFDLENBQUE7SUFDVixDQUFDO0lBRUQsSUFBSTtJQUNKLEtBQUssR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUMvQyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ1YsT0FBTyxDQUFDLENBQUE7SUFDVixDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUE7SUFFVCxNQUFNO0lBQ04sS0FBSyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ2hELElBQUksS0FBSyxFQUFFLENBQUM7UUFDVixLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUU5QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3QixPQUFPLEdBQUcsQ0FBQTtRQUNaLENBQUM7UUFFRCxPQUFPLENBQUMsQ0FBQyxLQUFLLEdBQUcsb0JBQW9CLENBQUMsQ0FBQTtJQUN4QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLEtBQUssR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUNsRCxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ1YsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDOUIsSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVwQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDdEMsT0FBTyxHQUFHLENBQUE7UUFDWixDQUFDO1FBRUQsY0FBYyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsb0JBQW9CLEdBQUcsT0FBTyxHQUFHLHNCQUFzQixDQUFBO1FBQzFGLE9BQU8sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQTtJQUNyRCxDQUFDO0lBRUQsaUJBQWlCO0lBQ2pCLElBQUkseUJBQXlCLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztRQUM5QyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO1FBQ25DLElBQUksT0FBTyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakQsSUFBSSxNQUFNLEdBQUcsVUFBVSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztRQUNqRCxJQUFJLFdBQVcsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUE7UUFFOUUsT0FBTyxDQUFDLFdBQVcsQ0FBQTtJQUNyQixDQUFDO0lBRUQsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDO0FBR0QsSUFBSSxvQkFBb0IsR0FBRyxPQUFPLENBQUE7QUFDbEMsSUFBSSxzQkFBc0IsR0FBRyxLQUFLLENBQUE7QUFFbEMsSUFBSSxRQUFRLEdBQUc7SUFDYixRQUFRLEVBQUUsWUFBWTtJQUN0QixTQUFTLEVBQUUsT0FBTztJQUNsQixVQUFVLEVBQUUsZUFBZTtJQUMzQixZQUFZLEVBQUUsd0JBQXdCO0NBQ3ZDLENBQUE7QUFFRCxTQUFTLFVBQVUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXO0lBQ3pFLElBQUksT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3pCLE9BQU8sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUM1QyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBQ3RELE9BQU8sT0FBTyxDQUFBO0FBQ2hCLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxJQUFJO0lBQ3JCLE9BQU8sVUFBVSxDQUNmLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFDbEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUNmLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFDZCxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQ2YsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUNqQixJQUFJLENBQUMsVUFBVSxFQUFFLEVBQ2pCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FDdkIsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxJQUFJLEVBQUUsY0FBYztJQUN0QyxJQUFJLE1BQU0sR0FBRyxjQUFjLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFBO0lBRWpELHlEQUF5RDtJQUN6RCxJQUFJLEtBQUssR0FBRyxVQUFVLENBQ3BCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFDVCxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUNiLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFDVCxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUNkLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFDVCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQ1QsQ0FBQyxDQUNGLENBQUMsT0FBTyxFQUFFLENBQUE7SUFFWCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDekIsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQTtJQUN0QixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO0lBQ3RDLE9BQU8sS0FBSyxHQUFHLElBQUksQ0FBQTtBQUNyQixDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxjQUFjO0lBQzdDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUU1QixrRUFBa0U7SUFDbEUsSUFBSSxRQUFRLEdBQUcsT0FBTyxHQUFHLE1BQU0sQ0FBQTtJQUUvQix1REFBdUQ7SUFDdkQsSUFBSSxFQUFFLEdBQUcsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFBO0lBRXZELDhDQUE4QztJQUM5QyxJQUFJLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUNsQixPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7SUFFRCx3REFBd0Q7SUFDeEQsUUFBUSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUE7SUFFdkIsc0RBQXNEO0lBQ3RELElBQUksRUFBRSxHQUFHLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQTtJQUN2RCxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUNkLE9BQU8sRUFBRSxDQUFBO0lBQ1gsQ0FBQztJQUVELGdHQUFnRztJQUNoRyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0FBQ3pCLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLEtBQUssRUFBRSxPQUFPLEdBQUcsSUFBSTtJQUM3QyxPQUFPLENBQUMsRUFBRSxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxPQUFPLElBQUksT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFDNUYsQ0FBQztBQUVELElBQUksc0JBQXNCLEdBQUcsRUFBRSxDQUFBO0FBQy9CLFNBQVMseUJBQXlCLENBQUMsY0FBYztJQUMvQyxJQUFJLHNCQUFzQixDQUFDLGNBQWMsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFBO0lBQ3ZELElBQUksQ0FBQztRQUNILElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQTtRQUNoRSxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsR0FBRyxJQUFJLENBQUE7UUFDN0MsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltQG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5QG9zb3ZpdG55LmNvbVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMTAgRmViIDIwMjRcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG5pbXBvcnQgeyB0elRva2VuaXplRGF0ZSB9IGZyb20gXCIuL3R6VG9rZW5pemVEYXRlXCJcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB0elBhcnNlVGltZXpvbmUodGltZXpvbmVTdHJpbmcsIGRhdGUsIGlzVXRjRGF0ZSkge1xyXG4gIHZhciB0b2tlblxyXG4gIHZhciBhYnNvbHV0ZU9mZnNldFxyXG5cclxuICAvLyBFbXB0eSBzdHJpbmdcclxuICBpZiAoIXRpbWV6b25lU3RyaW5nKSB7XHJcbiAgICByZXR1cm4gMFxyXG4gIH1cclxuXHJcbiAgLy8gWlxyXG4gIHRva2VuID0gcGF0dGVybnMudGltZXpvbmVaLmV4ZWModGltZXpvbmVTdHJpbmcpXHJcbiAgaWYgKHRva2VuKSB7XHJcbiAgICByZXR1cm4gMFxyXG4gIH1cclxuXHJcbiAgdmFyIGhvdXJzXHJcblxyXG4gIC8vIMKxaGhcclxuICB0b2tlbiA9IHBhdHRlcm5zLnRpbWV6b25lSEguZXhlYyh0aW1lem9uZVN0cmluZylcclxuICBpZiAodG9rZW4pIHtcclxuICAgIGhvdXJzID0gcGFyc2VJbnQodG9rZW5bMV0sIDEwKVxyXG5cclxuICAgIGlmICghdmFsaWRhdGVUaW1lem9uZShob3VycykpIHtcclxuICAgICAgcmV0dXJuIE5hTlxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAtKGhvdXJzICogTUlMTElTRUNPTkRTX0lOX0hPVVIpXHJcbiAgfVxyXG5cclxuICAvLyDCsWhoOm1tIG9yIMKxaGhtbVxyXG4gIHRva2VuID0gcGF0dGVybnMudGltZXpvbmVISE1NLmV4ZWModGltZXpvbmVTdHJpbmcpXHJcbiAgaWYgKHRva2VuKSB7XHJcbiAgICBob3VycyA9IHBhcnNlSW50KHRva2VuWzFdLCAxMClcclxuICAgIHZhciBtaW51dGVzID0gcGFyc2VJbnQodG9rZW5bMl0sIDEwKVxyXG5cclxuICAgIGlmICghdmFsaWRhdGVUaW1lem9uZShob3VycywgbWludXRlcykpIHtcclxuICAgICAgcmV0dXJuIE5hTlxyXG4gICAgfVxyXG5cclxuICAgIGFic29sdXRlT2Zmc2V0ID0gTWF0aC5hYnMoaG91cnMpICogTUlMTElTRUNPTkRTX0lOX0hPVVIgKyBtaW51dGVzICogTUlMTElTRUNPTkRTX0lOX01JTlVURVxyXG4gICAgcmV0dXJuIGhvdXJzID4gMCA/IC1hYnNvbHV0ZU9mZnNldCA6IGFic29sdXRlT2Zmc2V0XHJcbiAgfVxyXG5cclxuICAvLyBJQU5BIHRpbWUgem9uZVxyXG4gIGlmIChpc1ZhbGlkVGltZXpvbmVJQU5BU3RyaW5nKHRpbWV6b25lU3RyaW5nKSkge1xyXG4gICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUgfHwgRGF0ZS5ub3coKSlcclxuICAgIHZhciB1dGNEYXRlID0gaXNVdGNEYXRlID8gZGF0ZSA6IHRvVXRjRGF0ZShkYXRlKTtcclxuICAgIHZhciBvZmZzZXQgPSBjYWxjT2Zmc2V0KHV0Y0RhdGUsIHRpbWV6b25lU3RyaW5nKTtcclxuICAgIHZhciBmaXhlZE9mZnNldCA9IGlzVXRjRGF0ZSA/IG9mZnNldCA6IGZpeE9mZnNldChkYXRlLCBvZmZzZXQsIHRpbWV6b25lU3RyaW5nKVxyXG5cclxuICAgIHJldHVybiAtZml4ZWRPZmZzZXRcclxuICB9XHJcblxyXG4gIHJldHVybiBOYU5cclxufVxyXG5cclxuXHJcbnZhciBNSUxMSVNFQ09ORFNfSU5fSE9VUiA9IDM2MDAwMDBcclxudmFyIE1JTExJU0VDT05EU19JTl9NSU5VVEUgPSA2MDAwMFxyXG5cclxudmFyIHBhdHRlcm5zID0ge1xyXG4gIHRpbWV6b25lOiAvKFtaKy1dLiopJC8sXHJcbiAgdGltZXpvbmVaOiAvXihaKSQvLFxyXG4gIHRpbWV6b25lSEg6IC9eKFsrLV1cXGR7Mn0pJC8sXHJcbiAgdGltZXpvbmVISE1NOiAvXihbKy1dXFxkezJ9KTo/KFxcZHsyfSkkLyxcclxufVxyXG5cclxuZnVuY3Rpb24gbmV3RGF0ZVVUQyhmdWxsWWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kKSB7XHJcbiAgdmFyIHV0Y0RhdGUgPSBuZXcgRGF0ZSgwKVxyXG4gIHV0Y0RhdGUuc2V0VVRDRnVsbFllYXIoZnVsbFllYXIsIG1vbnRoLCBkYXkpXHJcbiAgdXRjRGF0ZS5zZXRVVENIb3Vycyhob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmQpXHJcbiAgcmV0dXJuIHV0Y0RhdGVcclxufVxyXG5cclxuZnVuY3Rpb24gdG9VdGNEYXRlKGRhdGUpIHtcclxuICByZXR1cm4gbmV3RGF0ZVVUQyhcclxuICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcclxuICAgIGRhdGUuZ2V0TW9udGgoKSxcclxuICAgIGRhdGUuZ2V0RGF0ZSgpLFxyXG4gICAgZGF0ZS5nZXRIb3VycygpLFxyXG4gICAgZGF0ZS5nZXRNaW51dGVzKCksXHJcbiAgICBkYXRlLmdldFNlY29uZHMoKSxcclxuICAgIGRhdGUuZ2V0TWlsbGlzZWNvbmRzKClcclxuICApXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNhbGNPZmZzZXQoZGF0ZSwgdGltZXpvbmVTdHJpbmcpIHtcclxuICB2YXIgdG9rZW5zID0gdHpUb2tlbml6ZURhdGUoZGF0ZSwgdGltZXpvbmVTdHJpbmcpXHJcblxyXG4gIC8vIG1zIGRyb3BwZWQgYmVjYXVzZSBpdCdzIG5vdCBwcm92aWRlZCBieSB0elRva2VuaXplRGF0ZVxyXG4gIHZhciBhc1VUQyA9IG5ld0RhdGVVVEMoXHJcbiAgICB0b2tlbnNbMF0sXHJcbiAgICB0b2tlbnNbMV0gLSAxLFxyXG4gICAgdG9rZW5zWzJdLFxyXG4gICAgdG9rZW5zWzNdICUgMjQsXHJcbiAgICB0b2tlbnNbNF0sXHJcbiAgICB0b2tlbnNbNV0sXHJcbiAgICAwXHJcbiAgKS5nZXRUaW1lKClcclxuXHJcbiAgdmFyIGFzVFMgPSBkYXRlLmdldFRpbWUoKVxyXG4gIHZhciBvdmVyID0gYXNUUyAlIDEwMDBcclxuICBhc1RTIC09IG92ZXIgPj0gMCA/IG92ZXIgOiAxMDAwICsgb3ZlclxyXG4gIHJldHVybiBhc1VUQyAtIGFzVFNcclxufVxyXG5cclxuZnVuY3Rpb24gZml4T2Zmc2V0KGRhdGUsIG9mZnNldCwgdGltZXpvbmVTdHJpbmcpIHtcclxuICB2YXIgbG9jYWxUUyA9IGRhdGUuZ2V0VGltZSgpXHJcblxyXG4gIC8vIE91ciBVVEMgdGltZSBpcyBqdXN0IGEgZ3Vlc3MgYmVjYXVzZSBvdXIgb2Zmc2V0IGlzIGp1c3QgYSBndWVzc1xyXG4gIHZhciB1dGNHdWVzcyA9IGxvY2FsVFMgLSBvZmZzZXRcclxuXHJcbiAgLy8gVGVzdCB3aGV0aGVyIHRoZSB6b25lIG1hdGNoZXMgdGhlIG9mZnNldCBmb3IgdGhpcyB0c1xyXG4gIHZhciBvMiA9IGNhbGNPZmZzZXQobmV3IERhdGUodXRjR3Vlc3MpLCB0aW1lem9uZVN0cmluZylcclxuXHJcbiAgLy8gSWYgc28sIG9mZnNldCBkaWRuJ3QgY2hhbmdlLCBhbmQgd2UncmUgZG9uZVxyXG4gIGlmIChvZmZzZXQgPT09IG8yKSB7XHJcbiAgICByZXR1cm4gb2Zmc2V0XHJcbiAgfVxyXG5cclxuICAvLyBJZiBub3QsIGNoYW5nZSB0aGUgdHMgYnkgdGhlIGRpZmZlcmVuY2UgaW4gdGhlIG9mZnNldFxyXG4gIHV0Y0d1ZXNzIC09IG8yIC0gb2Zmc2V0XHJcblxyXG4gIC8vIElmIHRoYXQgZ2l2ZXMgdXMgdGhlIGxvY2FsIHRpbWUgd2Ugd2FudCwgd2UncmUgZG9uZVxyXG4gIHZhciBvMyA9IGNhbGNPZmZzZXQobmV3IERhdGUodXRjR3Vlc3MpLCB0aW1lem9uZVN0cmluZylcclxuICBpZiAobzIgPT09IG8zKSB7XHJcbiAgICByZXR1cm4gbzJcclxuICB9XHJcblxyXG4gIC8vIElmIGl0J3MgZGlmZmVyZW50LCB3ZSdyZSBpbiBhIGhvbGUgdGltZS4gVGhlIG9mZnNldCBoYXMgY2hhbmdlZCwgYnV0IHdlIGRvbid0IGFkanVzdCB0aGUgdGltZVxyXG4gIHJldHVybiBNYXRoLm1heChvMiwgbzMpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHZhbGlkYXRlVGltZXpvbmUoaG91cnMsIG1pbnV0ZXMgPSBudWxsKSB7XHJcbiAgcmV0dXJuIC0yMyA8PSBob3VycyAmJiBob3VycyA8PSAyMyAmJiAobWludXRlcyA9PSBudWxsIHx8ICgwIDw9IG1pbnV0ZXMgJiYgbWludXRlcyA8PSA1OSkpXHJcbn1cclxuXHJcbnZhciB2YWxpZElBTkFUaW1lem9uZUNhY2hlID0ge31cclxuZnVuY3Rpb24gaXNWYWxpZFRpbWV6b25lSUFOQVN0cmluZyh0aW1lWm9uZVN0cmluZykge1xyXG4gIGlmICh2YWxpZElBTkFUaW1lem9uZUNhY2hlW3RpbWVab25lU3RyaW5nXSkgcmV0dXJuIHRydWVcclxuICB0cnkge1xyXG4gICAgbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodW5kZWZpbmVkLCB7IHRpbWVab25lOiB0aW1lWm9uZVN0cmluZyB9KVxyXG4gICAgdmFsaWRJQU5BVGltZXpvbmVDYWNoZVt0aW1lWm9uZVN0cmluZ10gPSB0cnVlXHJcbiAgICByZXR1cm4gdHJ1ZVxyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,101 +0,0 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHpUb2tlbml6ZURhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS9sb2NhbGl6YXRpb24vdHovdHpUb2tlbml6ZURhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRO0lBQzNDLElBQUksR0FBRyxHQUFHLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3JDLE9BQU8sR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQTtBQUM1RSxDQUFDO0FBRUQsSUFBSSxTQUFTLEdBQUc7SUFDZCxJQUFJLEVBQUUsQ0FBQztJQUNQLEtBQUssRUFBRSxDQUFDO0lBQ1IsR0FBRyxFQUFFLENBQUM7SUFDTixJQUFJLEVBQUUsQ0FBQztJQUNQLE1BQU0sRUFBRSxDQUFDO0lBQ1QsTUFBTSxFQUFFLENBQUM7Q0FDVixDQUFBO0FBRUQsU0FBUyxXQUFXLENBQUMsR0FBRyxFQUFFLElBQUk7SUFDNUIsSUFBSSxDQUFDO1FBQ0gsSUFBSSxTQUFTLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN2QyxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUE7UUFDZixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzFDLElBQUksR0FBRyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUE7WUFFdEMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1lBQ2hELENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLElBQUksS0FBSyxZQUFZLFVBQVUsRUFBRSxDQUFDO1lBQ2hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNkLENBQUM7UUFDRCxNQUFNLEtBQUssQ0FBQTtJQUNiLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsR0FBRyxFQUFFLElBQUk7SUFDNUIsSUFBSSxTQUFTLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ3ZELElBQUksTUFBTSxHQUFHLHlDQUF5QyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUN0RSxnRUFBZ0U7SUFDaEUsd0RBQXdEO0lBQ3hELE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQzNFLENBQUM7QUFFRCxzRkFBc0Y7QUFDdEYsb0ZBQW9GO0FBQ3BGLHdEQUF3RDtBQUN4RCxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUE7QUFDakIsU0FBUyxpQkFBaUIsQ0FBQyxRQUFRO0lBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUN4Qix3RkFBd0Y7UUFDeEYsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFO1lBQ3ZELE1BQU0sRUFBRSxLQUFLO1lBQ2IsUUFBUSxFQUFFLGtCQUFrQjtZQUM1QixJQUFJLEVBQUUsU0FBUztZQUNmLEtBQUssRUFBRSxTQUFTO1lBQ2hCLEdBQUcsRUFBRSxTQUFTO1lBQ2QsSUFBSSxFQUFFLFNBQVM7WUFDZixNQUFNLEVBQUUsU0FBUztZQUNqQixNQUFNLEVBQUUsU0FBUztTQUNsQixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQTtRQUUvQyxJQUFJLGtCQUFrQixHQUN0QixpQkFBaUIsS0FBSyxzQkFBc0I7WUFDNUMsaUJBQWlCLEtBQUsscUJBQXFCLENBQUE7UUFFM0MsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLGtCQUFrQjtZQUNyQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRTtnQkFDL0IsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLElBQUksRUFBRSxTQUFTO2dCQUNmLEtBQUssRUFBRSxTQUFTO2dCQUNoQixHQUFHLEVBQUUsU0FBUztnQkFDZCxJQUFJLEVBQUUsU0FBUztnQkFDZixNQUFNLEVBQUUsU0FBUztnQkFDakIsTUFBTSxFQUFFLFNBQVM7YUFDbEIsQ0FBQztZQUNKLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFO2dCQUMvQixTQUFTLEVBQUUsS0FBSztnQkFDaEIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLElBQUksRUFBRSxTQUFTO2dCQUNmLEtBQUssRUFBRSxTQUFTO2dCQUNoQixHQUFHLEVBQUUsU0FBUztnQkFDZCxJQUFJLEVBQUUsU0FBUztnQkFDZixNQUFNLEVBQUUsU0FBUztnQkFDakIsTUFBTSxFQUFFLFNBQVM7YUFDbEIsQ0FBQyxDQUFBO0lBQ1IsQ0FBQztJQUVELE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltQG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5QG9zb3ZpdG55LmNvbVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMTAgRmViIDIwMjRcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG4vKipcclxuICogUmV0dXJucyB0aGUgW3llYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kc10gdG9rZW5zIG9mIHRoZSBwcm92aWRlZFxyXG4gKiBgZGF0ZWAgYXMgaXQgd2lsbCBiZSByZW5kZXJlZCBpbiB0aGUgYHRpbWVab25lYC5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiB0elRva2VuaXplRGF0ZShkYXRlLCB0aW1lWm9uZSkge1xyXG4gIHZhciBkdGYgPSBnZXREYXRlVGltZUZvcm1hdCh0aW1lWm9uZSlcclxuICByZXR1cm4gZHRmLmZvcm1hdFRvUGFydHMgPyBwYXJ0c09mZnNldChkdGYsIGRhdGUpIDogaGFja3lPZmZzZXQoZHRmLCBkYXRlKVxyXG59XHJcblxyXG52YXIgdHlwZVRvUG9zID0ge1xyXG4gIHllYXI6IDAsXHJcbiAgbW9udGg6IDEsXHJcbiAgZGF5OiAyLFxyXG4gIGhvdXI6IDMsXHJcbiAgbWludXRlOiA0LFxyXG4gIHNlY29uZDogNSxcclxufVxyXG5cclxuZnVuY3Rpb24gcGFydHNPZmZzZXQoZHRmLCBkYXRlKSB7XHJcbiAgdHJ5IHtcclxuICAgIHZhciBmb3JtYXR0ZWQgPSBkdGYuZm9ybWF0VG9QYXJ0cyhkYXRlKVxyXG4gICAgdmFyIGZpbGxlZCA9IFtdXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZvcm1hdHRlZC5sZW5ndGg7IGkrKykge1xyXG4gICAgICB2YXIgcG9zID0gdHlwZVRvUG9zW2Zvcm1hdHRlZFtpXS50eXBlXVxyXG5cclxuICAgICAgaWYgKHBvcyA+PSAwKSB7XHJcbiAgICAgICAgZmlsbGVkW3Bvc10gPSBwYXJzZUludChmb3JtYXR0ZWRbaV0udmFsdWUsIDEwKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmlsbGVkXHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFJhbmdlRXJyb3IpIHtcclxuICAgICAgcmV0dXJuIFtOYU5dXHJcbiAgICB9XHJcbiAgICB0aHJvdyBlcnJvclxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gaGFja3lPZmZzZXQoZHRmLCBkYXRlKSB7XHJcbiAgdmFyIGZvcm1hdHRlZCA9IGR0Zi5mb3JtYXQoZGF0ZSkucmVwbGFjZSgvXFx1MjAwRS9nLCAnJylcclxuICB2YXIgcGFyc2VkID0gLyhcXGQrKVxcLyhcXGQrKVxcLyhcXGQrKSw/IChcXGQrKTooXFxkKyk6KFxcZCspLy5leGVjKGZvcm1hdHRlZClcclxuICAvLyB2YXIgWywgZk1vbnRoLCBmRGF5LCBmWWVhciwgZkhvdXIsIGZNaW51dGUsIGZTZWNvbmRdID0gcGFyc2VkXHJcbiAgLy8gcmV0dXJuIFtmWWVhciwgZk1vbnRoLCBmRGF5LCBmSG91ciwgZk1pbnV0ZSwgZlNlY29uZF1cclxuICByZXR1cm4gW3BhcnNlZFszXSwgcGFyc2VkWzFdLCBwYXJzZWRbMl0sIHBhcnNlZFs0XSwgcGFyc2VkWzVdLCBwYXJzZWRbNl1dXHJcbn1cclxuXHJcbi8vIEdldCBhIGNhY2hlZCBJbnRsLkRhdGVUaW1lRm9ybWF0IGluc3RhbmNlIGZvciB0aGUgSUFOQSBgdGltZVpvbmVgLiBUaGlzIGNhbiBiZSB1c2VkXHJcbi8vIHRvIGdldCBkZXRlcm1pbmlzdGljIGxvY2FsIGRhdGUvdGltZSBvdXRwdXQgYWNjb3JkaW5nIHRvIHRoZSBgZW4tVVNgIGxvY2FsZSB3aGljaFxyXG4vLyBjYW4gYmUgdXNlZCB0byBleHRyYWN0IGxvY2FsIHRpbWUgcGFydHMgYXMgbmVjZXNzYXJ5LlxyXG52YXIgZHRmQ2FjaGUgPSB7fVxyXG5mdW5jdGlvbiBnZXREYXRlVGltZUZvcm1hdCh0aW1lWm9uZSkge1xyXG4gIGlmICghZHRmQ2FjaGVbdGltZVpvbmVdKSB7XHJcbiAgICAvLyBOZXcgYnJvd3NlcnMgdXNlIGBob3VyQ3ljbGVgLCBJRSBhbmQgQ2hyb21lIDw3MyBkb2VzIG5vdCBzdXBwb3J0IGl0IGFuZCB1c2VzIGBob3VyMTJgXHJcbiAgICB2YXIgdGVzdERhdGVGb3JtYXR0ZWQgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgnZW4tVVMnLCB7XHJcbiAgICAgIGhvdXIxMjogZmFsc2UsXHJcbiAgICAgIHRpbWVab25lOiAnQW1lcmljYS9OZXdfWW9yaycsXHJcbiAgICAgIHllYXI6ICdudW1lcmljJyxcclxuICAgICAgbW9udGg6ICdudW1lcmljJyxcclxuICAgICAgZGF5OiAnMi1kaWdpdCcsXHJcbiAgICAgIGhvdXI6ICcyLWRpZ2l0JyxcclxuICAgICAgbWludXRlOiAnMi1kaWdpdCcsXHJcbiAgICAgIHNlY29uZDogJzItZGlnaXQnLFxyXG4gICAgfSkuZm9ybWF0KG5ldyBEYXRlKCcyMDE0LTA2LTI1VDA0OjAwOjAwLjEyM1onKSlcclxuXHJcbiAgICB2YXIgaG91ckN5Y2xlU3VwcG9ydGVkID1cclxuICAgIHRlc3REYXRlRm9ybWF0dGVkID09PSAnMDYvMjUvMjAxNCwgMDA6MDA6MDAnIHx8XHJcbiAgICB0ZXN0RGF0ZUZvcm1hdHRlZCA9PT0gJzA2LzI1LzIwMTQgMDA6MDA6MDAnXHJcblxyXG4gICAgZHRmQ2FjaGVbdGltZVpvbmVdID0gaG91ckN5Y2xlU3VwcG9ydGVkXHJcbiAgICAgID8gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoJ2VuLVVTJywge1xyXG4gICAgICAgICAgaG91cjEyOiBmYWxzZSxcclxuICAgICAgICAgIHRpbWVab25lOiB0aW1lWm9uZSxcclxuICAgICAgICAgIHllYXI6ICdudW1lcmljJyxcclxuICAgICAgICAgIG1vbnRoOiAnbnVtZXJpYycsXHJcbiAgICAgICAgICBkYXk6ICcyLWRpZ2l0JyxcclxuICAgICAgICAgIGhvdXI6ICcyLWRpZ2l0JyxcclxuICAgICAgICAgIG1pbnV0ZTogJzItZGlnaXQnLFxyXG4gICAgICAgICAgc2Vjb25kOiAnMi1kaWdpdCcsXHJcbiAgICAgICAgfSlcclxuICAgICAgOiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgnZW4tVVMnLCB7XHJcbiAgICAgICAgICBob3VyQ3ljbGU6ICdoMjMnLFxyXG4gICAgICAgICAgdGltZVpvbmU6IHRpbWVab25lLFxyXG4gICAgICAgICAgeWVhcjogJ251bWVyaWMnLFxyXG4gICAgICAgICAgbW9udGg6ICdudW1lcmljJyxcclxuICAgICAgICAgIGRheTogJzItZGlnaXQnLFxyXG4gICAgICAgICAgaG91cjogJzItZGlnaXQnLFxyXG4gICAgICAgICAgbWludXRlOiAnMi1kaWdpdCcsXHJcbiAgICAgICAgICBzZWNvbmQ6ICcyLWRpZ2l0JyxcclxuICAgICAgICB9KVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGR0ZkNhY2hlW3RpbWVab25lXVxyXG59XHJcblxyXG5cclxuIl19
|
|
@@ -1,36 +0,0 @@
|
|
|
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 utcToLocal(dirtyDate) {
|
|
24
|
-
let browserTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
25
|
-
if (browserTimeZone) {
|
|
26
|
-
let date = DateConvert.toDate(dirtyDate);
|
|
27
|
-
let offsetMilliseconds = tzParseTimezone(browserTimeZone, date, true);
|
|
28
|
-
let d = new Date(date.getTime() - offsetMilliseconds);
|
|
29
|
-
let resultDate = new Date(0);
|
|
30
|
-
resultDate.setFullYear(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate());
|
|
31
|
-
resultDate.setHours(d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds());
|
|
32
|
-
return resultDate;
|
|
33
|
-
}
|
|
34
|
-
return new Date(dirtyDate);
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRjVG9Mb2NhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuYXRvbHkvc3JjL2xpYi9jb3JlL2xvY2FsaXphdGlvbi90ei91dGNUb0xvY2FsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBbUJFO0FBRUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVwRCxNQUFNLFVBQVUsVUFBVSxDQUFDLFNBQVM7SUFDbEMsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUV2RSxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3BCLElBQUksSUFBSSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekMsSUFBSSxrQkFBa0IsR0FBRyxlQUFlLENBQUMsZUFBZSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztRQUN0RCxJQUFJLFVBQVUsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU3QixVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDNUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBRW5HLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxPQUFPLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltQG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5QG9zb3ZpdG55LmNvbVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMTAgRmViIDIwMjRcclxuXHJcbiAgU291cmNlOlxyXG4gICAgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvZGF0ZS1mbnMtdHpcclxuICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJudXN3L2RhdGUtZm5zLXR6L2Jsb2IvbWFzdGVyL3NyYy91dGNUb1pvbmVkVGltZS9pbmRleC5qc1xyXG4gICAgaHR0cHM6Ly9naXRodWIuY29tL21hcm51c3cvZGF0ZS1mbnMtdHovYmxvYi9tYXN0ZXIvc3JjL19saWIvdHpQYXJzZVRpbWV6b25lL2luZGV4LmpzXHJcblxyXG4gIENvcHlyaWdodCAoYykgMjAxNi0yMDIyIE9zb3ZpdG55IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuPC9maWxlPlxyXG4qL1xyXG5cclxuaW1wb3J0IHsgRGF0ZUNvbnZlcnQgfSBmcm9tIFwiLi4vLi4vY29udmVydHMvZGF0ZUNvbnZlcnRcIjtcclxuaW1wb3J0IHsgdHpQYXJzZVRpbWV6b25lIH0gZnJvbSBcIi4vdHpQYXJzZVRpbWV6b25lXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdXRjVG9Mb2NhbChkaXJ0eURhdGUpOiBEYXRlIHtcclxuICBsZXQgYnJvd3NlclRpbWVab25lID0gSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lO1xyXG5cclxuICBpZiAoYnJvd3NlclRpbWVab25lKSB7XHJcbiAgICBsZXQgZGF0ZSA9IERhdGVDb252ZXJ0LnRvRGF0ZShkaXJ0eURhdGUpO1xyXG4gICAgbGV0IG9mZnNldE1pbGxpc2Vjb25kcyA9IHR6UGFyc2VUaW1lem9uZShicm93c2VyVGltZVpvbmUsIGRhdGUsIHRydWUpO1xyXG4gICAgbGV0IGQgPSBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSAtIG9mZnNldE1pbGxpc2Vjb25kcyk7XHJcbiAgICBsZXQgcmVzdWx0RGF0ZSA9IG5ldyBEYXRlKDApO1xyXG5cclxuICAgIHJlc3VsdERhdGUuc2V0RnVsbFllYXIoZC5nZXRVVENGdWxsWWVhcigpLCBkLmdldFVUQ01vbnRoKCksIGQuZ2V0VVRDRGF0ZSgpKTtcclxuICAgIHJlc3VsdERhdGUuc2V0SG91cnMoZC5nZXRVVENIb3VycygpLCBkLmdldFVUQ01pbnV0ZXMoKSwgZC5nZXRVVENTZWNvbmRzKCksIGQuZ2V0VVRDTWlsbGlzZWNvbmRzKCkpO1xyXG5cclxuICAgIHJldHVybiByZXN1bHREYXRlO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIG5ldyBEYXRlKGRpcnR5RGF0ZSk7XHJcbn1cclxuXHJcblxyXG4iXX0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function utcToLocal(dirtyDate: any): Date;
|
|
File without changes
|
|
File without changes
|