// @ts-nocheck // Common Util for frontend and backend // Backend uses the compiled file util.js // Frontend uses util.ts // Need to run "tsc" to compile if there are any changes. import * as dayjs from "dayjs"; export const isDev = process.env.NODE_ENV === "development"; export const appName = "Uptime Kuma"; export const DOWN = 0; export const UP = 1; export const PENDING = 2; export function flipStatus(s) { if (s === UP) { return DOWN; } if (s === DOWN) { return UP; } return s; } export function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } /** * PHP's ucfirst * @param str */ export function ucfirst(str) { if (! str) { return str; } const firstLetter = str.substr(0, 1); return firstLetter.toUpperCase() + str.substr(1); } export function debug(msg) { if (isDev) { console.log(msg); } } export function polyfill() { /** * String.prototype.replaceAll() polyfill * https://gomakethings.com/how-to-replace-a-section-of-a-string-with-another-one-with-vanilla-js/ * @author Chris Ferdinandi * @license MIT */ if (!String.prototype.replaceAll) { String.prototype.replaceAll = function (str, newStr) { // If a regex pattern if (Object.prototype.toString.call(str).toLowerCase() === "[object regexp]") { return this.replace(str, newStr); } // If a string return this.replace(new RegExp(str, "g"), newStr); }; } } export class TimeLogger { constructor() { this.startTime = dayjs().valueOf(); } print(name) { if (isDev) { console.log(name + ": " + (dayjs().valueOf() - this.startTime) + "ms") } } }