@tubular/time
Version:
Date/time, IANA timezones, leap seconds, TAI/UTC conversions, calendar with settable Julian/Gregorian switchover
56 lines • 2.52 kB
JavaScript
export const zonePollerBrowser = {
getLatestVersion(url) {
return new Promise((resolve, reject) => {
const head = document.querySelector('head');
const script = document.createElement('script');
const callbackName = 'tt_zp_callback_' + (1000000 + Math.floor(Math.random() * 9000000));
let version = '';
window[callbackName] = (data) => {
if (typeof data === 'string')
version = data;
else
version = new Error('Invalid data for tz version from ' + url);
};
head.appendChild(script);
script.onload = () => {
script.remove();
window[callbackName] = undefined;
if (version instanceof Error)
reject(version);
else
resolve(version);
};
script.onerror = () => {
script.remove();
reject(new Error('Failed to retrieve latest tz version from ' + url));
};
script.src = `${url}?callback=${callbackName}`;
});
},
getTimezones(url) {
return new Promise((resolve, reject) => {
const head = document.querySelector('head');
const script = document.createElement('script');
const w = window;
head.appendChild(script);
script.onload = () => {
var _a, _b, _c;
const zoneData = w.tbTime_timezone_small || w.tbTime_timezone_large || w.tbTime_timezone_large_alt;
script.remove();
w.tbTime_tzcache_small = (_a = w.tbTime_timezone_small) !== null && _a !== void 0 ? _a : w.tbTime_tzcache_small;
delete w.tbTime_timezone_small;
w.tbTime_tzcache_large = (_b = w.tbTime_timezone_large) !== null && _b !== void 0 ? _b : w.tbTime_tzcache_large;
delete w.tbTime_timezone_large;
w.tbTime_tzcache_large_alt = (_c = w.tbTime_timezone_large_alt) !== null && _c !== void 0 ? _c : w.tbTime_tzcache_large_alt;
delete w.tbTime_timezone_large_alt;
resolve(zoneData);
};
script.onerror = () => {
script.remove();
reject(new Error('Failed to load timezone definitions from ' + url));
};
script.src = url;
});
}
};
//# sourceMappingURL=zone-poller-browser.js.map