UNPKG

@jsprismarine/server

Version:
54 lines (53 loc) 7.61 kB
import colorParser from "@jsprismarine/color-parser"; import { Logger } from "@jsprismarine/logger"; import { Config, Server } from "@jsprismarine/prismarine"; import { format, transports } from "winston"; import dotenv from "dotenv"; import path from "node:path"; //#region src/Server.ts process.title = "JSPrismarine"; dotenv.config({ path: [ path.join(process.cwd(), ".env.local"), path.join(process.cwd(), ".env"), path.join(process.cwd(), ".env.development.local"), path.join(process.cwd(), ".env.development") ] }); var date = /* @__PURE__ */ new Date(); var logFile = "jsprismarine-development.log"; if (process.env.NODE_ENV !== "development") logFile = `jsprismarine.${(date.getMonth() + 1).toString().padStart(2, "0")}${date.getDate().toString().padStart(2, "0")}${date.getFullYear().toString().padStart(2, "0")}-${date.getHours().toString().padStart(2, "0")}${date.getMinutes().toString().padStart(2, "0")}${date.getSeconds().toString().padStart(2, "0")}.log`; var config = new Config(); var logger = new Logger(config.getLogLevel(), [new transports.File({ level: "debug", filename: path.join(process.cwd(), process.env.JSP_DIR || "", "logs", logFile), format: format.printf(({ level, message, timestamp, namespace }) => { return `[${timestamp}] [${level}]${colorParser(`${namespace ? ` [${namespace}]` : ""}: ${message}`)}`.replaceAll(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, ""); }) })]); var server = new Server({ config, logger }); var forceExitTriggered = false; [ "SIGSEGV", "SIGHUP", "SIGINT", "SIGTERM", "uncaughtException" ].forEach((signal) => { process.on(signal, async (error) => { if (forceExitTriggered) process.exit(1); forceExitTriggered = true; if (error instanceof Error) logger.error(error); server.shutdown({ crash: error === "uncaughtException" }); process.exit(1); }); }); try { await server.bootstrap(config.getServerIp(), config.getServerPort()); } catch (error) { logger.warn(`Cannot start the server, is it already running on the same port?`); throw error; } //#endregion //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmVyLmVzLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uL3NyYy9TZXJ2ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbG9yUGFyc2VyIGZyb20gJ0Bqc3ByaXNtYXJpbmUvY29sb3ItcGFyc2VyJztcbmltcG9ydCB7IExvZ2dlciB9IGZyb20gJ0Bqc3ByaXNtYXJpbmUvbG9nZ2VyJztcbmltcG9ydCB7IENvbmZpZywgU2VydmVyIH0gZnJvbSAnQGpzcHJpc21hcmluZS9wcmlzbWFyaW5lJztcbmltcG9ydCB7IGZvcm1hdCwgdHJhbnNwb3J0cyB9IGZyb20gJ3dpbnN0b24nO1xuXG5pbXBvcnQgZG90ZW52IGZyb20gJ2RvdGVudic7XG5pbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuXG5wcm9jZXNzLnRpdGxlID0gJ0pTUHJpc21hcmluZSc7XG5cbmRvdGVudi5jb25maWcoe1xuICAgIHBhdGg6IFtcbiAgICAgICAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICcuZW52LmxvY2FsJyksXG4gICAgICAgIHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAnLmVudicpLFxuICAgICAgICBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgJy5lbnYuZGV2ZWxvcG1lbnQubG9jYWwnKSxcbiAgICAgICAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICcuZW52LmRldmVsb3BtZW50JylcbiAgICBdXG59KTtcblxuY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG5sZXQgbG9nRmlsZSA9ICdqc3ByaXNtYXJpbmUtZGV2ZWxvcG1lbnQubG9nJztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAnZGV2ZWxvcG1lbnQnKVxuICAgIGxvZ0ZpbGUgPSBganNwcmlzbWFyaW5lLiR7KGRhdGUuZ2V0TW9udGgoKSArIDEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX0ke2RhdGVcbiAgICAgICAgLmdldERhdGUoKVxuICAgICAgICAudG9TdHJpbmcoKVxuICAgICAgICAucGFkU3RhcnQoMiwgJzAnKX0ke2RhdGUuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9LSR7ZGF0ZVxuICAgICAgICAuZ2V0SG91cnMoKVxuICAgICAgICAudG9TdHJpbmcoKVxuICAgICAgICAucGFkU3RhcnQoMiwgJzAnKX0ke2RhdGUuZ2V0TWludXRlcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX0ke2RhdGVcbiAgICAgICAgLmdldFNlY29uZHMoKVxuICAgICAgICAudG9TdHJpbmcoKVxuICAgICAgICAucGFkU3RhcnQoMiwgJzAnKX0ubG9nYDtcblxuY29uc3QgY29uZmlnID0gbmV3IENvbmZpZygpO1xuY29uc3QgbG9nZ2VyID0gbmV3IExvZ2dlcihjb25maWcuZ2V0TG9nTGV2ZWwoKSwgW1xuICAgIG5ldyB0cmFuc3BvcnRzLkZpbGUoe1xuICAgICAgICBsZXZlbDogJ2RlYnVnJyxcbiAgICAgICAgZmlsZW5hbWU6IHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBwcm9jZXNzLmVudi5KU1BfRElSIHx8ICcnLCAnbG9ncycsIGxvZ0ZpbGUpLFxuICAgICAgICBmb3JtYXQ6IGZvcm1hdC5wcmludGYoKHsgbGV2ZWwsIG1lc3NhZ2UsIHRpbWVzdGFtcCwgbmFtZXNwYWNlIH06IGFueSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGBbJHt0aW1lc3RhbXB9XSBbJHtsZXZlbH1dJHtjb2xvclBhcnNlcihcbiAgICAgICAgICAgICAgICBgJHtuYW1lc3BhY2UgPyBgIFske25hbWVzcGFjZX1dYCA6ICcnfTogJHttZXNzYWdlfWBcbiAgICAgICAgICAgICl9YC5yZXBsYWNlQWxsKC9bXFx1MDAxYlxcdTAwOWJdW1soKSM7P10qKD86WzAtOV17MSw0fSg/OjtbMC05XXswLDR9KSopP1swLTlBLU9SWmNmLW5xcnk9PjxdL2csICcnKTtcbiAgICAgICAgfSlcbiAgICB9KVxuXSk7XG5jb25zdCBzZXJ2ZXIgPSBuZXcgU2VydmVyKHtcbiAgICBjb25maWcsXG4gICAgbG9nZ2VyOiBsb2dnZXIgYXMgYW55XG59KTtcblxubGV0IGZvcmNlRXhpdFRyaWdnZXJlZCA9IGZhbHNlO1xuWydTSUdTRUdWJywgJ1NJR0hVUCcsICdTSUdJTlQnLCAnU0lHVEVSTScsICd1bmNhdWdodEV4Y2VwdGlvbiddLmZvckVhY2goKHNpZ25hbCkgPT4ge1xuICAgIHByb2Nlc3Mub24oc2lnbmFsLCBhc3luYyAoZXJyb3IpID0+IHtcbiAgICAgICAgLy8gSGFuZGxlIHNwYW1taW5nIGN0cmwrYy5cbiAgICAgICAgaWYgKGZvcmNlRXhpdFRyaWdnZXJlZCkge1xuICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgICB9XG4gICAgICAgIGZvcmNlRXhpdFRyaWdnZXJlZCA9IHRydWU7XG5cbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIGxvZ2dlci5lcnJvcihlcnJvcik7XG4gICAgICAgIH1cblxuICAgICAgICB2b2lkIHNlcnZlci5zaHV0ZG93bih7IGNyYXNoOiBlcnJvciA9PT0gJ3VuY2F1Z2h0RXhjZXB0aW9uJyB9KTtcblxuICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHRlbXBvcmFyeSBmaXggZm9yIHRoZSBzZXJ2ZXIgbm90IHNodXR0aW5nIGRvd24gcHJvcGVybHkuXG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9KTtcbn0pO1xuXG50cnkge1xuICAgIGF3YWl0IHNlcnZlci5ib290c3RyYXAoY29uZmlnLmdldFNlcnZlcklwKCksIGNvbmZpZy5nZXRTZXJ2ZXJQb3J0KCkpO1xufSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICBsb2dnZXIud2FybihgQ2Fubm90IHN0YXJ0IHRoZSBzZXJ2ZXIsIGlzIGl0IGFscmVhZHkgcnVubmluZyBvbiB0aGUgc2FtZSBwb3J0P2ApO1xuICAgIHRocm93IGVycm9yOyAvLyBSZS10aHJvdyBpdCBzbyBgcHJvY2Vzcy5vbmAgY2FuIGhhbmRsZSBpdC5cbn1cblxuZXhwb3J0IHt9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBUUEsUUFBUSxRQUFRO0FBRWhCLE9BQU8sT0FBTyxFQUNWLE1BQU07Q0FDRixLQUFLLEtBQUssUUFBUSxJQUFJLEdBQUcsWUFBWTtDQUNyQyxLQUFLLEtBQUssUUFBUSxJQUFJLEdBQUcsTUFBTTtDQUMvQixLQUFLLEtBQUssUUFBUSxJQUFJLEdBQUcsd0JBQXdCO0NBQ2pELEtBQUssS0FBSyxRQUFRLElBQUksR0FBRyxrQkFBa0I7QUFDL0MsRUFDSixDQUFDO0FBRUQsSUFBTSx1QkFBTyxJQUFJLEtBQUs7QUFDdEIsSUFBSSxVQUFVO0FBRWQsSUFBQSxRQUFBLElBQUEsYUFBNkIsZUFDekIsVUFBVSxpQkFBaUIsS0FBSyxTQUFTLElBQUksR0FBRyxTQUFTLEVBQUUsU0FBUyxHQUFHLEdBQUcsSUFBSSxLQUN6RSxRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsR0FBRyxHQUFHLElBQUksS0FBSyxZQUFZLEVBQUUsU0FBUyxFQUFFLFNBQVMsR0FBRyxHQUFHLEVBQUUsR0FBRyxLQUNyRSxTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsR0FBRyxHQUFHLElBQUksS0FBSyxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsR0FBRyxHQUFHLElBQUksS0FDbkUsV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEdBQUcsR0FBRyxFQUFFO0FBRTFCLElBQU0sU0FBUyxJQUFJLE9BQU87QUFDMUIsSUFBTSxTQUFTLElBQUksT0FBTyxPQUFPLFlBQVksR0FBRyxDQUM1QyxJQUFJLFdBQVcsS0FBSztDQUNoQixPQUFPO0NBQ1AsVUFBVSxLQUFLLEtBQUssUUFBUSxJQUFJLEdBQUcsUUFBUSxJQUFJLFdBQVcsSUFBSSxRQUFRLE9BQU87Q0FDN0UsUUFBUSxPQUFPLFFBQVEsRUFBRSxPQUFPLFNBQVMsV0FBVyxnQkFBcUI7RUFDckUsT0FBTyxJQUFJLFVBQVUsS0FBSyxNQUFNLEdBQUcsWUFDL0IsR0FBRyxZQUFZLEtBQUssVUFBVSxLQUFLLEdBQUcsSUFBSSxTQUM5QyxJQUFJLFdBQVcsK0VBQStFLEVBQUU7Q0FDcEcsQ0FBQztBQUNMLENBQUMsQ0FDTCxDQUFDO0FBQ0QsSUFBTSxTQUFTLElBQUksT0FBTztDQUN0QjtDQUNRO0FBQ1osQ0FBQztBQUVELElBQUkscUJBQXFCO0FBQ3pCO0NBQUM7Q0FBVztDQUFVO0NBQVU7Q0FBVztBQUFtQixFQUFFLFNBQVMsV0FBVztDQUNoRixRQUFRLEdBQUcsUUFBUSxPQUFPLFVBQVU7RUFFaEMsSUFBSSxvQkFDQSxRQUFRLEtBQUssQ0FBQztFQUVsQixxQkFBcUI7RUFFckIsSUFBSSxpQkFBaUIsT0FDakIsT0FBTyxNQUFNLEtBQUs7RUFHdEIsT0FBWSxTQUFTLEVBQUUsT0FBTyxVQUFVLG9CQUFvQixDQUFDO0VBRzdELFFBQVEsS0FBSyxDQUFDO0NBQ2xCLENBQUM7QUFDTCxDQUFDO0FBRUQsSUFBSTtDQUNBLE1BQU0sT0FBTyxVQUFVLE9BQU8sWUFBWSxHQUFHLE9BQU8sY0FBYyxDQUFDO0FBQ3ZFLFNBQVMsT0FBZ0I7Q0FDckIsT0FBTyxLQUFLLGtFQUFrRTtDQUM5RSxNQUFNO0FBQ1YifQ==