|  | @ -1,4 +1,8 @@ | 
			
		
	
		
		
			
				
					|  |  | "use strict"; |  |  | "use strict"; | 
			
		
	
		
		
			
				
					|  |  |  |  |  | // 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.
 | 
			
		
	
		
		
			
				
					|  |  | Object.defineProperty(exports, "__esModule", { value: true }); |  |  | Object.defineProperty(exports, "__esModule", { value: true }); | 
			
		
	
		
		
			
				
					|  |  | exports.getRandomInt = exports.getRandomArbitrary = exports.TimeLogger = exports.polyfill = exports.debug = exports.ucfirst = exports.sleep = exports.flipStatus = exports.STATUS_PAGE_PARTIAL_DOWN = exports.STATUS_PAGE_ALL_UP = exports.STATUS_PAGE_ALL_DOWN = exports.PENDING = exports.UP = exports.DOWN = exports.appName = exports.isDev = void 0; |  |  | exports.getRandomInt = exports.getRandomArbitrary = exports.TimeLogger = exports.polyfill = exports.debug = exports.ucfirst = exports.sleep = exports.flipStatus = exports.STATUS_PAGE_PARTIAL_DOWN = exports.STATUS_PAGE_ALL_UP = exports.STATUS_PAGE_ALL_DOWN = exports.PENDING = exports.UP = exports.DOWN = exports.appName = exports.isDev = void 0; | 
			
		
	
		
		
			
				
					|  |  | const _dayjs = require("dayjs"); |  |  | const _dayjs = require("dayjs"); | 
			
		
	
	
		
		
			
				
					|  | @ -25,6 +29,10 @@ function sleep(ms) { | 
			
		
	
		
		
			
				
					|  |  |     return new Promise(resolve => setTimeout(resolve, ms)); |  |  |     return new Promise(resolve => setTimeout(resolve, ms)); | 
			
		
	
		
		
			
				
					|  |  | } |  |  | } | 
			
		
	
		
		
			
				
					|  |  | exports.sleep = sleep; |  |  | exports.sleep = sleep; | 
			
		
	
		
		
			
				
					|  |  |  |  |  | /** | 
			
		
	
		
		
			
				
					|  |  |  |  |  |  * PHP's ucfirst | 
			
		
	
		
		
			
				
					|  |  |  |  |  |  * @param str | 
			
		
	
		
		
			
				
					|  |  |  |  |  |  */ | 
			
		
	
		
		
			
				
					|  |  | function ucfirst(str) { |  |  | function ucfirst(str) { | 
			
		
	
		
		
			
				
					|  |  |     if (!str) { |  |  |     if (!str) { | 
			
		
	
		
		
			
				
					|  |  |         return str; |  |  |         return str; | 
			
		
	
	
		
		
			
				
					|  | @ -40,11 +48,19 @@ function debug(msg) { | 
			
		
	
		
		
			
				
					|  |  | } |  |  | } | 
			
		
	
		
		
			
				
					|  |  | exports.debug = debug; |  |  | exports.debug = debug; | 
			
		
	
		
		
			
				
					|  |  | function polyfill() { |  |  | 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) { |  |  |     if (!String.prototype.replaceAll) { | 
			
		
	
		
		
			
				
					|  |  |         String.prototype.replaceAll = function (str, newStr) { |  |  |         String.prototype.replaceAll = function (str, newStr) { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             // If a regex pattern
 | 
			
		
	
		
		
			
				
					|  |  |             if (Object.prototype.toString.call(str).toLowerCase() === "[object regexp]") { |  |  |             if (Object.prototype.toString.call(str).toLowerCase() === "[object regexp]") { | 
			
		
	
		
		
			
				
					|  |  |                 return this.replace(str, newStr); |  |  |                 return this.replace(str, newStr); | 
			
		
	
		
		
			
				
					|  |  |             } |  |  |             } | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             // If a string
 | 
			
		
	
		
		
			
				
					|  |  |             return this.replace(new RegExp(str, "g"), newStr); |  |  |             return this.replace(new RegExp(str, "g"), newStr); | 
			
		
	
		
		
			
				
					|  |  |         }; |  |  |         }; | 
			
		
	
		
		
			
				
					|  |  |     } |  |  |     } | 
			
		
	
	
		
		
			
				
					|  | @ -61,10 +77,22 @@ class TimeLogger { | 
			
		
	
		
		
			
				
					|  |  |     } |  |  |     } | 
			
		
	
		
		
			
				
					|  |  | } |  |  | } | 
			
		
	
		
		
			
				
					|  |  | exports.TimeLogger = TimeLogger; |  |  | exports.TimeLogger = TimeLogger; | 
			
		
	
		
		
			
				
					|  |  |  |  |  | /** | 
			
		
	
		
		
			
				
					|  |  |  |  |  |  * Returns a random number between min (inclusive) and max (exclusive) | 
			
		
	
		
		
			
				
					|  |  |  |  |  |  */ | 
			
		
	
		
		
			
				
					|  |  | function getRandomArbitrary(min, max) { |  |  | function getRandomArbitrary(min, max) { | 
			
		
	
		
		
			
				
					|  |  |     return Math.random() * (max - min) + min; |  |  |     return Math.random() * (max - min) + min; | 
			
		
	
		
		
			
				
					|  |  | } |  |  | } | 
			
		
	
		
		
			
				
					|  |  | exports.getRandomArbitrary = getRandomArbitrary; |  |  | exports.getRandomArbitrary = getRandomArbitrary; | 
			
		
	
		
		
			
				
					|  |  |  |  |  | /** | 
			
		
	
		
		
			
				
					|  |  |  |  |  |  * From: https://stackoverflow.com/questions/1527803/generating-random-whole-numbers-in-javascript-in-a-specific-range
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |  * | 
			
		
	
		
		
			
				
					|  |  |  |  |  |  * Returns a random integer between min (inclusive) and max (inclusive). | 
			
		
	
		
		
			
				
					|  |  |  |  |  |  * The value is no lower than min (or the next integer greater than min | 
			
		
	
		
		
			
				
					|  |  |  |  |  |  * if min isn't an integer) and no greater than max (or the next integer | 
			
		
	
		
		
			
				
					|  |  |  |  |  |  * lower than max if max isn't an integer). | 
			
		
	
		
		
			
				
					|  |  |  |  |  |  * Using Math.round() will give you a non-uniform distribution! | 
			
		
	
		
		
			
				
					|  |  |  |  |  |  */ | 
			
		
	
		
		
			
				
					|  |  | function getRandomInt(min, max) { |  |  | function getRandomInt(min, max) { | 
			
		
	
		
		
			
				
					|  |  |     min = Math.ceil(min); |  |  |     min = Math.ceil(min); | 
			
		
	
		
		
			
				
					|  |  |     max = Math.floor(max); |  |  |     max = Math.floor(max); | 
			
		
	
	
		
		
			
				
					|  | 
 |