UNPKG

@jsprismarine/server

Version:
58 lines (56 loc) 9 kB
import colorParser from '@jsprismarine/color-parser'; import { Logger } from '@jsprismarine/logger'; import { Config, Server } from '@jsprismarine/prismarine'; import { transports, format } from 'winston'; import dotenv from 'dotenv'; import path from 'node:path'; 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") ] }); const date = /* @__PURE__ */ new Date(); let 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`; const config = new Config(); const 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, ""); }) }) ]); const server = new Server({ config, logger }); let 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); } void 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; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmVyLmVzLmpzIiwic291cmNlcyI6WyIuLi9zcmMvU2VydmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb2xvclBhcnNlciBmcm9tICdAanNwcmlzbWFyaW5lL2NvbG9yLXBhcnNlcic7XG5pbXBvcnQgeyBMb2dnZXIgfSBmcm9tICdAanNwcmlzbWFyaW5lL2xvZ2dlcic7XG5pbXBvcnQgeyBDb25maWcsIFNlcnZlciB9IGZyb20gJ0Bqc3ByaXNtYXJpbmUvcHJpc21hcmluZSc7XG5pbXBvcnQgeyBmb3JtYXQsIHRyYW5zcG9ydHMgfSBmcm9tICd3aW5zdG9uJztcblxuaW1wb3J0IGRvdGVudiBmcm9tICdkb3RlbnYnO1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcblxucHJvY2Vzcy50aXRsZSA9ICdKU1ByaXNtYXJpbmUnO1xuXG5kb3RlbnYuY29uZmlnKHtcbiAgICBwYXRoOiBbXG4gICAgICAgIHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAnLmVudi5sb2NhbCcpLFxuICAgICAgICBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgJy5lbnYnKSxcbiAgICAgICAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICcuZW52LmRldmVsb3BtZW50LmxvY2FsJyksXG4gICAgICAgIHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAnLmVudi5kZXZlbG9wbWVudCcpXG4gICAgXVxufSk7XG5cbmNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xubGV0IGxvZ0ZpbGUgPSAnanNwcmlzbWFyaW5lLWRldmVsb3BtZW50LmxvZyc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50JylcbiAgICBsb2dGaWxlID0gYGpzcHJpc21hcmluZS4keyhkYXRlLmdldE1vbnRoKCkgKyAxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9JHtkYXRlXG4gICAgICAgIC5nZXREYXRlKClcbiAgICAgICAgLnRvU3RyaW5nKClcbiAgICAgICAgLnBhZFN0YXJ0KDIsICcwJyl9JHtkYXRlLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfS0ke2RhdGVcbiAgICAgICAgLmdldEhvdXJzKClcbiAgICAgICAgLnRvU3RyaW5nKClcbiAgICAgICAgLnBhZFN0YXJ0KDIsICcwJyl9JHtkYXRlLmdldE1pbnV0ZXMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9JHtkYXRlXG4gICAgICAgIC5nZXRTZWNvbmRzKClcbiAgICAgICAgLnRvU3RyaW5nKClcbiAgICAgICAgLnBhZFN0YXJ0KDIsICcwJyl9LmxvZ2A7XG5cbmNvbnN0IGNvbmZpZyA9IG5ldyBDb25maWcoKTtcbmNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIoY29uZmlnLmdldExvZ0xldmVsKCksIFtcbiAgICBuZXcgdHJhbnNwb3J0cy5GaWxlKHtcbiAgICAgICAgbGV2ZWw6ICdkZWJ1ZycsXG4gICAgICAgIGZpbGVuYW1lOiBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgcHJvY2Vzcy5lbnYuSlNQX0RJUiB8fCAnJywgJ2xvZ3MnLCBsb2dGaWxlKSxcbiAgICAgICAgZm9ybWF0OiBmb3JtYXQucHJpbnRmKCh7IGxldmVsLCBtZXNzYWdlLCB0aW1lc3RhbXAsIG5hbWVzcGFjZSB9OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBgWyR7dGltZXN0YW1wfV0gWyR7bGV2ZWx9XSR7Y29sb3JQYXJzZXIoXG4gICAgICAgICAgICAgICAgYCR7bmFtZXNwYWNlID8gYCBbJHtuYW1lc3BhY2V9XWAgOiAnJ306ICR7bWVzc2FnZX1gXG4gICAgICAgICAgICApfWAucmVwbGFjZUFsbCgvW1xcdTAwMWJcXHUwMDliXVtbKCkjOz9dKig/OlswLTldezEsNH0oPzo7WzAtOV17MCw0fSkqKT9bMC05QS1PUlpjZi1ucXJ5PT48XS9nLCAnJyk7XG4gICAgICAgIH0pXG4gICAgfSlcbl0pO1xuY29uc3Qgc2VydmVyID0gbmV3IFNlcnZlcih7XG4gICAgY29uZmlnLFxuICAgIGxvZ2dlcjogbG9nZ2VyIGFzIGFueVxufSk7XG5cbmxldCBmb3JjZUV4aXRUcmlnZ2VyZWQgPSBmYWxzZTtcblsnU0lHU0VHVicsICdTSUdIVVAnLCAnU0lHSU5UJywgJ1NJR1RFUk0nLCAndW5jYXVnaHRFeGNlcHRpb24nXS5mb3JFYWNoKChzaWduYWwpID0+IHtcbiAgICBwcm9jZXNzLm9uKHNpZ25hbCwgYXN5bmMgKGVycm9yKSA9PiB7XG4gICAgICAgIC8vIEhhbmRsZSBzcGFtbWluZyBjdHJsK2MuXG4gICAgICAgIGlmIChmb3JjZUV4aXRUcmlnZ2VyZWQpIHtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgICAgfVxuICAgICAgICBmb3JjZUV4aXRUcmlnZ2VyZWQgPSB0cnVlO1xuXG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoZXJyb3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgdm9pZCBzZXJ2ZXIuc2h1dGRvd24oeyBjcmFzaDogZXJyb3IgPT09ICd1bmNhdWdodEV4Y2VwdGlvbicgfSk7XG5cbiAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB0ZW1wb3JhcnkgZml4IGZvciB0aGUgc2VydmVyIG5vdCBzaHV0dGluZyBkb3duIHByb3Blcmx5LlxuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfSk7XG59KTtcblxudHJ5IHtcbiAgICBhd2FpdCBzZXJ2ZXIuYm9vdHN0cmFwKGNvbmZpZy5nZXRTZXJ2ZXJJcCgpLCBjb25maWcuZ2V0U2VydmVyUG9ydCgpKTtcbn0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgbG9nZ2VyLndhcm4oYENhbm5vdCBzdGFydCB0aGUgc2VydmVyLCBpcyBpdCBhbHJlYWR5IHJ1bm5pbmcgb24gdGhlIHNhbWUgcG9ydD9gKTtcbiAgICB0aHJvdyBlcnJvcjsgLy8gUmUtdGhyb3cgaXQgc28gYHByb2Nlc3Mub25gIGNhbiBoYW5kbGUgaXQuXG59XG5c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