add util.ts for sharing common functions between frontend and backend

This commit is contained in:
LouisLam
2021-07-30 11:23:04 +08:00
parent 71af902a4e
commit 081abcb6a1
12 changed files with 120 additions and 49 deletions

View File

@@ -1,5 +1,5 @@
const fs = require("fs");
const {sleep} = require("./util");
const {sleep} = require("../src/util");
const {R} = require("redbean-node");
const {setSetting, setting} = require("./util-server");

View File

@@ -6,7 +6,7 @@ dayjs.extend(utc)
dayjs.extend(timezone)
const axios = require("axios");
const {Prometheus} = require("../prometheus");
const {debug, UP, DOWN, PENDING} = require("../util");
const {debug, UP, DOWN, PENDING} = require("../../src/util");
const {tcping, ping, checkCertificate} = require("../util-server");
const {R} = require("redbean-node");
const {BeanModel} = require("redbean-node/dist/bean-model");
@@ -221,9 +221,12 @@ class Monitor extends BeanModel {
clearInterval(this.heartbeatInterval)
}
// Helper Method:
// returns URL object for further usage
// returns null if url is invalid
/**
* Helper Method:
* returns URL object for further usage
* returns null if url is invalid
* @returns {null|URL}
*/
getUrl() {
try {
return new URL(this.url);
@@ -232,7 +235,11 @@ class Monitor extends BeanModel {
}
}
// Store TLS info to database
/**
* Store TLS info to database
* @param checkCertificateResult
* @returns {Promise<void>}
*/
async updateTlsInfo(checkCertificateResult) {
let tls_info_bean = await R.findOne("monitor_tls_info", "monitor_id = ?", [
this.id

View File

@@ -12,7 +12,7 @@ const { getSettings } = require("./util-server");
const { Notification } = require("./notification")
const gracefulShutdown = require("http-graceful-shutdown");
const Database = require("./database");
const { sleep } = require("./util");
const { sleep } = require("../src/util");
const args = require("args-parser")(process.argv);
const prometheusAPIMetrics = require("prometheus-api-metrics");
const { basicAuth } = require("./auth");

View File

@@ -1,25 +0,0 @@
// Common JS cannot be used in frontend sadly
// sleep, ucfirst is duplicated in ../src/util-frontend.js
exports.DOWN = 0;
exports.UP = 1;
exports.PENDING = 2;
exports.sleep = function (ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
exports.ucfirst = function (str) {
if (! str) {
return str;
}
const firstLetter = str.substr(0, 1);
return firstLetter.toUpperCase() + str.substr(1);
}
exports.debug = (msg) => {
if (process.env.NODE_ENV === "development") {
console.log(msg)
}
}