@xpresser/events-server
Version:
Xpresser's Official Events Server Plugin.
86 lines (85 loc) • 2.99 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.loadEventServerConfig = exports.md5 = exports.now = void 0;
const moment_1 = __importDefault(require("moment"));
const exports_1 = require("object-collection/exports");
const abolish_1 = require("abolish");
const crypto = require("crypto");
/**
* Get current date formatted.
* @param date
*/
function now(date) {
return (0, moment_1.default)(date).format("D/MM/yyyy|HH:mm:ss.SSSS");
}
exports.now = now;
/**
* Create Md5 hash function
* @param str
*/
function md5(str) {
return crypto.createHash("md5").update(str).digest("hex");
}
exports.md5 = md5;
/**
* load events server config
* @param $
* @param omitSecretKey
*/
function loadEventServerConfig($, omitSecretKey = false) {
// Get EventsServer Config
let eventsServerConfig = $.config.get("eventsServer");
// Return error and stop process if eventsServer is not defined.
if (!eventsServerConfig)
return [new Error("Config: {eventsServer} is required!")];
if ($.engineData.has("eventsServerConfigLoaded")) {
return [undefined, eventsServerConfig];
}
eventsServerConfig = (0, exports_1.Obj)({
server: "localhost",
port: 7000,
keepAlive: false,
logs: { args: false },
dbPaths: {
server: "./storage/events-server/serverDB.json",
access: "./storage/events-server/accessDB.json",
communicator: "./storage/events-server/communicatorDB.json"
},
controlPanel: {
enabled: true,
password: "password",
routePath: "/__es__"
}
})
.merge(eventsServerConfig)
.all();
const validator = abolish_1.Abolish.compileObject({
secretKey: [
"required|typeof:string",
{ $name: "{eventsServer.secretKey}", $skip: omitSecretKey }
],
port: ["required|typeof:number", { $name: "{eventsServer.port}" }],
dbPaths: {
required: true,
typeof: "object",
$name: "{eventsServer.dbPaths}",
object: abolish_1.Abolish.compileObject({
server: ["required|typeof:string", { $name: "{eventsServer.dbPaths.server}" }],
access: ["required|typeof:string", { $name: "{eventsServer.dbPaths.access}" }],
communicator: [
"required|typeof:string",
{ $name: "{eventsServer.dbPaths.communicator}" }
]
})
}
});
const [err] = validator.validateObject(eventsServerConfig);
// Set config to merged config.
$.engineData.set("eventsServerConfigLoaded", true);
$.config.set("eventsServer", eventsServerConfig);
return [err, eventsServerConfig];
}
exports.loadEventServerConfig = loadEventServerConfig;