mirror of
				https://github.com/louislam/uptime-kuma.git
				synced 2025-11-04 05:36:13 +08:00 
			
		
		
		
	Copy timezone.js from dayjs
This commit is contained in:
		
							
								
								
									
										20
									
								
								server/modules/dayjs/plugins/timezone.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								server/modules/dayjs/plugins/timezone.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
import { PluginFunc, ConfigType } from 'dayjs'
 | 
			
		||||
 | 
			
		||||
declare const plugin: PluginFunc
 | 
			
		||||
export = plugin
 | 
			
		||||
 | 
			
		||||
declare module 'dayjs' {
 | 
			
		||||
  interface Dayjs {
 | 
			
		||||
    tz(timezone?: string, keepLocalTime?: boolean): Dayjs
 | 
			
		||||
    offsetName(type?: 'short' | 'long'): string | undefined
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  interface DayjsTimezone {
 | 
			
		||||
    (date: ConfigType, timezone?: string): Dayjs
 | 
			
		||||
    (date: ConfigType, format: string, timezone?: string): Dayjs
 | 
			
		||||
    guess(): string
 | 
			
		||||
    setDefault(timezone?: string): void
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  const tz: DayjsTimezone
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										111
									
								
								server/modules/dayjs/plugins/timezone.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								server/modules/dayjs/plugins/timezone.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,111 @@
 | 
			
		||||
/**
 | 
			
		||||
 * Copy from node_modules/dayjs/plugin/timezone.js
 | 
			
		||||
 * Try to fix https://github.com/louislam/uptime-kuma/issues/2318
 | 
			
		||||
 * Source: https://github.com/iamkun/dayjs/tree/dev/src/plugin/utc
 | 
			
		||||
 * License: MIT
 | 
			
		||||
 */
 | 
			
		||||
!function (t, e) {
 | 
			
		||||
    typeof exports == "object" && typeof module != "undefined" ? module.exports = e() : typeof define == "function" && define.amd ? define(e) : (t = typeof globalThis != "undefined" ? globalThis : t || self).dayjs_plugin_timezone = e();
 | 
			
		||||
}(this, (function () {
 | 
			
		||||
    "use strict";
 | 
			
		||||
    let t = {
 | 
			
		||||
        year: 0,
 | 
			
		||||
        month: 1,
 | 
			
		||||
        day: 2,
 | 
			
		||||
        hour: 3,
 | 
			
		||||
        minute: 4,
 | 
			
		||||
        second: 5
 | 
			
		||||
    };
 | 
			
		||||
    let e = {};
 | 
			
		||||
    return function (n, i, o) {
 | 
			
		||||
        let r;
 | 
			
		||||
        let a = function (t, n, i) {
 | 
			
		||||
            void 0 === i && (i = {});
 | 
			
		||||
            let o = new Date(t);
 | 
			
		||||
            let r = function (t, n) {
 | 
			
		||||
                void 0 === n && (n = {});
 | 
			
		||||
                let i = n.timeZoneName || "short";
 | 
			
		||||
                let o = t + "|" + i;
 | 
			
		||||
                let r = e[o];
 | 
			
		||||
                return r || (r = new Intl.DateTimeFormat("en-US", {
 | 
			
		||||
                    hour12: !1,
 | 
			
		||||
                    timeZone: t,
 | 
			
		||||
                    year: "numeric",
 | 
			
		||||
                    month: "2-digit",
 | 
			
		||||
                    day: "2-digit",
 | 
			
		||||
                    hour: "2-digit",
 | 
			
		||||
                    minute: "2-digit",
 | 
			
		||||
                    second: "2-digit",
 | 
			
		||||
                    timeZoneName: i
 | 
			
		||||
                }), e[o] = r), r;
 | 
			
		||||
            }(n, i);
 | 
			
		||||
            return r.formatToParts(o);
 | 
			
		||||
        };
 | 
			
		||||
        let u = function (e, n) {
 | 
			
		||||
            for (var i = a(e, n), r = [], u = 0; u < i.length; u += 1) {
 | 
			
		||||
                let f = i[u];
 | 
			
		||||
                let s = f.type;
 | 
			
		||||
                let m = f.value;
 | 
			
		||||
                let c = t[s];
 | 
			
		||||
                c >= 0 && (r[c] = parseInt(m, 10));
 | 
			
		||||
            }
 | 
			
		||||
            let d = r[3];
 | 
			
		||||
            let l = d === 24 ? 0 : d;
 | 
			
		||||
            let v = r[0] + "-" + r[1] + "-" + r[2] + " " + l + ":" + r[4] + ":" + r[5] + ":000";
 | 
			
		||||
            let h = +e;
 | 
			
		||||
            return (o.utc(v).valueOf() - (h -= h % 1e3)) / 6e4;
 | 
			
		||||
        };
 | 
			
		||||
        let f = i.prototype;
 | 
			
		||||
        f.tz = function (t, e) {
 | 
			
		||||
            void 0 === t && (t = r);
 | 
			
		||||
            let n = this.utcOffset();
 | 
			
		||||
            let i = this.toDate();
 | 
			
		||||
            let a = i.toLocaleString("en-US", { timeZone: t });
 | 
			
		||||
            let u = Math.round((i - new Date(a)) / 1e3 / 60);
 | 
			
		||||
            let f = o(a).$set("millisecond", this.$ms).utcOffset(15 * -Math.round(i.getTimezoneOffset() / 15) - u, !0);
 | 
			
		||||
            if (e) {
 | 
			
		||||
                let s = f.utcOffset();
 | 
			
		||||
                f = f.add(n - s, "minute");
 | 
			
		||||
            }
 | 
			
		||||
            return f.$x.$timezone = t, f;
 | 
			
		||||
        }, f.offsetName = function (t) {
 | 
			
		||||
            let e = this.$x.$timezone || o.tz.guess();
 | 
			
		||||
            let n = a(this.valueOf(), e, { timeZoneName: t }).find((function (t) {
 | 
			
		||||
                return t.type.toLowerCase() === "timezonename";
 | 
			
		||||
            }));
 | 
			
		||||
            return n && n.value;
 | 
			
		||||
        };
 | 
			
		||||
        let s = f.startOf;
 | 
			
		||||
        f.startOf = function (t, e) {
 | 
			
		||||
            if (!this.$x || !this.$x.$timezone) {
 | 
			
		||||
                return s.call(this, t, e);
 | 
			
		||||
            }
 | 
			
		||||
            let n = o(this.format("YYYY-MM-DD HH:mm:ss:SSS"));
 | 
			
		||||
            return s.call(n, t, e).tz(this.$x.$timezone, !0);
 | 
			
		||||
        }, o.tz = function (t, e, n) {
 | 
			
		||||
            let i = n && e;
 | 
			
		||||
            let a = n || e || r;
 | 
			
		||||
            let f = u(+o(), a);
 | 
			
		||||
            if (typeof t != "string") {
 | 
			
		||||
                return o(t).tz(a);
 | 
			
		||||
            }
 | 
			
		||||
            let s = function (t, e, n) {
 | 
			
		||||
                let i = t - 60 * e * 1e3;
 | 
			
		||||
                let o = u(i, n);
 | 
			
		||||
                if (e === o) {
 | 
			
		||||
                    return [ i, e ];
 | 
			
		||||
                }
 | 
			
		||||
                let r = u(i -= 60 * (o - e) * 1e3, n);
 | 
			
		||||
                return o === r ? [ i, o ] : [ t - 60 * Math.min(o, r) * 1e3, Math.max(o, r) ];
 | 
			
		||||
            }(o.utc(t, i).valueOf(), f, a);
 | 
			
		||||
            let m = s[0];
 | 
			
		||||
            let c = s[1];
 | 
			
		||||
            let d = o(m).utcOffset(c);
 | 
			
		||||
            return d.$x.$timezone = a, d;
 | 
			
		||||
        }, o.tz.guess = function () {
 | 
			
		||||
            return Intl.DateTimeFormat().resolvedOptions().timeZone;
 | 
			
		||||
        }, o.tz.setDefault = function (t) {
 | 
			
		||||
            r = t;
 | 
			
		||||
        };
 | 
			
		||||
    };
 | 
			
		||||
}));
 | 
			
		||||
		Reference in New Issue
	
	Block a user