nodestatus-server 1.2.0-beta.1 → 1.2.2-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/app.js CHANGED
@@ -53260,11 +53260,15 @@ exports.Option = Option;
53260
53260
  }(commander, commander.exports));
53261
53261
 
53262
53262
  dotenv__default["default"].config({ path: require$$1$1.resolve(require$$1$3.homedir(), ".nodestatus/.env.local") });
53263
- commander.exports.program.option("-db, --database <db>", "the path of database", require$$1$3.platform() === "win32" ? require$$1$1.resolve(require$$1$3.homedir(), ".nodestatus/db.sqlite") : "/usr/local/NodeStatus/server/db.sqlite").option("-p, --port <port>", "the port of NodeStatus", "35601").option("-i, --interval <interval>", "update interval", "1500").parse(process.argv);
53263
+ commander.exports.program.option("-db, --database <db>", "the path of database", require$$1$3.platform() === "win32" ? `file:${require$$1$1.resolve(require$$1$3.homedir(), ".nodestatus/db.sqlite")}` : "file:/usr/local/NodeStatus/server/db.sqlite").option("-p, --port <port>", "the port of NodeStatus", "35601").option("-i, --interval <interval>", "update interval", "1500").parse(process.argv);
53264
53264
  const options = commander.exports.program.opts();
53265
+ let database = process.env.DATABASE || (process.env.NODE_ENV === "TEST" ? require$$1$1.resolve(__dirname, "../../db.base.sqlite") : options.database);
53266
+ if (!(database.includes("file:") || database.includes("mysql:") || database.includes("postgresql:"))) {
53267
+ database = `file:${database}`;
53268
+ }
53265
53269
  const config = {
53266
53270
  NODE_ENV: process.env.NODE_ENV,
53267
- database: process.env.DATABASE || (process.env.NODE_ENV === "TEST" ? require$$1$1.resolve(__dirname, "../../db.base.sqlite") : options.database),
53271
+ database,
53268
53272
  port: Number(process.env.PORT || options.port),
53269
53273
  interval: Number(process.env.INTERVAL || options.interval),
53270
53274
  verbose: process.env.VERBOSE === "true",
@@ -54750,11 +54754,11 @@ var bcryptjs = bcrypt.exports;
54750
54754
  const prisma = new client.PrismaClient({
54751
54755
  datasources: {
54752
54756
  db: {
54753
- url: `file:${config.database}`
54757
+ url: `${config.database}`
54754
54758
  }
54755
54759
  }
54756
54760
  });
54757
- const actions = new Set(["create", "createMany", "update", "updateMany", "upsert"]);
54761
+ const actions = /* @__PURE__ */ new Set(["create", "createMany", "update", "updateMany", "upsert"]);
54758
54762
  const parseFields = async (server) => {
54759
54763
  for (const key in server) {
54760
54764
  if (server[key] === "") {
@@ -54778,7 +54782,7 @@ prisma.$use(async (params, next) => {
54778
54782
  });
54779
54783
 
54780
54784
  let isInitial = true;
54781
- const orderMap = new Map();
54785
+ const orderMap = /* @__PURE__ */ new Map();
54782
54786
  const resolveResult = (item) => {
54783
54787
  if (!item)
54784
54788
  return item;
@@ -54786,7 +54790,7 @@ const resolveResult = (item) => {
54786
54790
  delete item[key];
54787
54791
  return Object.assign(item, { order: orderMap.get(item.id) || item.id || 0 });
54788
54792
  };
54789
- const updateOrder = (order, shouldEmit = true) => {
54793
+ const updateCacheOrder = (order, shouldEmit = true) => {
54790
54794
  orderMap.clear();
54791
54795
  const orderList = order === "" ? [] : order.split(",");
54792
54796
  for (let i = 0; i < orderList.length; ++i) {
@@ -54801,18 +54805,18 @@ const queryOrder = async () => {
54801
54805
  }
54802
54806
  });
54803
54807
  isInitial = false;
54804
- return updateOrder(order?.value || "");
54808
+ return updateCacheOrder(order?.value || "");
54805
54809
  };
54806
- async function setOrder(order, Prisma = prisma) {
54810
+ async function updateOrder(order, Prisma = prisma) {
54807
54811
  const shouldEmit = Prisma === prisma;
54808
54812
  await Prisma.option.upsert({
54809
54813
  where: { name: "order" },
54810
54814
  update: { value: order },
54811
54815
  create: { name: "order", value: order }
54812
54816
  });
54813
- updateOrder(order, shouldEmit);
54817
+ updateCacheOrder(order, shouldEmit);
54814
54818
  }
54815
- async function getServer$1(username) {
54819
+ async function readServer(username) {
54816
54820
  const item = await prisma.server.findUnique({
54817
54821
  where: {
54818
54822
  username
@@ -54820,7 +54824,7 @@ async function getServer$1(username) {
54820
54824
  });
54821
54825
  return resolveResult(item);
54822
54826
  }
54823
- async function getServerPassword(username) {
54827
+ async function readServerPassword(username) {
54824
54828
  const item = await prisma.server.findUnique({
54825
54829
  where: {
54826
54830
  username
@@ -54828,7 +54832,7 @@ async function getServerPassword(username) {
54828
54832
  });
54829
54833
  return item?.password || null;
54830
54834
  }
54831
- async function getListServers$1() {
54835
+ async function readServersList() {
54832
54836
  const queries = [prisma.server.findMany()];
54833
54837
  isInitial && queries.push(queryOrder());
54834
54838
  const [items] = await Promise.all(queries);
@@ -54839,7 +54843,7 @@ async function createServer(item) {
54839
54843
  const server = await prisma2.server.create({ data: item });
54840
54844
  const order = Array.from(orderMap.keys());
54841
54845
  order.push(server.id);
54842
- await setOrder(order.join(","), prisma2);
54846
+ await updateOrder(order.join(","), prisma2);
54843
54847
  });
54844
54848
  emitter.emit("update", item.username);
54845
54849
  }
@@ -54848,11 +54852,11 @@ async function bulkCreateServer(items) {
54848
54852
  const order = [];
54849
54853
  await Promise.all(items.map((item) => prisma2.server.create({ data: item }).then((server) => order.push(server.id))));
54850
54854
  const newOrder = Array.from(orderMap.keys()).concat(order);
54851
- await setOrder(newOrder.join(","), prisma2);
54855
+ await updateOrder(newOrder.join(","), prisma2);
54852
54856
  });
54853
54857
  emitter.emit("update");
54854
54858
  }
54855
- async function delServer$2(username) {
54859
+ async function deleteServer(username) {
54856
54860
  await prisma.$transaction(async (prisma2) => {
54857
54861
  const server = await prisma2.server.delete({
54858
54862
  where: {
@@ -54860,11 +54864,11 @@ async function delServer$2(username) {
54860
54864
  }
54861
54865
  });
54862
54866
  orderMap.delete(server.id);
54863
- await setOrder(Array.from(orderMap.keys()).join(","), prisma2);
54867
+ await updateOrder(Array.from(orderMap.keys()).join(","), prisma2);
54864
54868
  });
54865
54869
  emitter.emit("update", username, true);
54866
54870
  }
54867
- async function setServer$2(username, obj) {
54871
+ async function updateServer(username, obj) {
54868
54872
  await prisma.server.update({
54869
54873
  where: {
54870
54874
  username
@@ -54876,6 +54880,24 @@ async function setServer$2(username, obj) {
54876
54880
  obj.username && emitter.emit("update", obj.username, true);
54877
54881
  }
54878
54882
 
54883
+ const createEvent = (username) => prisma.event.create({
54884
+ data: {
54885
+ username
54886
+ }
54887
+ });
54888
+ const updateEvent = (username, resolved = true) => prisma.event.updateMany({
54889
+ where: {
54890
+ AND: [
54891
+ { username },
54892
+ { resolved: false }
54893
+ ]
54894
+ },
54895
+ data: {
54896
+ resolved
54897
+ }
54898
+ });
54899
+ const readEvents = () => prisma.event.findMany({});
54900
+
54879
54901
  async function handleRequest$1(ctx, handler) {
54880
54902
  try {
54881
54903
  ctx.body = createRes({ data: await handler });
@@ -54884,8 +54906,8 @@ async function handleRequest$1(ctx, handler) {
54884
54906
  ctx.body = createRes(1, err.message);
54885
54907
  }
54886
54908
  }
54887
- const listServers = async (ctx) => {
54888
- await handleRequest$1(ctx, getListServers$1().then((data) => data.sort((x, y) => y.order - x.order)));
54909
+ const getListServers$1 = async (ctx) => {
54910
+ await handleRequest$1(ctx, readServersList().then((data) => data.sort((x, y) => y.order - x.order)));
54889
54911
  };
54890
54912
  const setServer$1 = async (ctx) => {
54891
54913
  const { username } = ctx.request.body;
@@ -54897,7 +54919,7 @@ const setServer$1 = async (ctx) => {
54897
54919
  }
54898
54920
  if (username === data.username)
54899
54921
  delete data.username;
54900
- await handleRequest$1(ctx, setServer$2(username, data));
54922
+ await handleRequest$1(ctx, updateServer(username, data));
54901
54923
  };
54902
54924
  const addServer$1 = async (ctx) => {
54903
54925
  const data = ctx.request.body;
@@ -54918,33 +54940,37 @@ const addServer$1 = async (ctx) => {
54918
54940
  await handleRequest$1(ctx, createServer(data));
54919
54941
  }
54920
54942
  };
54921
- const delServer$1 = async (ctx) => {
54943
+ const removeServer$1 = async (ctx) => {
54922
54944
  const { username = "" } = ctx.params;
54923
54945
  if (!username) {
54924
54946
  ctx.status = 400;
54925
54947
  ctx.body = createRes(1, "Wrong request");
54926
54948
  return;
54927
54949
  }
54928
- await handleRequest$1(ctx, delServer$2(username));
54950
+ await handleRequest$1(ctx, deleteServer(username));
54929
54951
  };
54930
54952
  const modifyOrder = async (ctx) => {
54931
- const { order = "" } = ctx.request.body;
54932
- if (!order) {
54953
+ const { order = [] } = ctx.request.body;
54954
+ if (!order.length) {
54933
54955
  ctx.status = 400;
54934
54956
  ctx.body = createRes(1, "Wrong request");
54935
54957
  return;
54936
54958
  }
54937
- await handleRequest$1(ctx, setOrder(order));
54959
+ await handleRequest$1(ctx, updateOrder(order.join(",")));
54960
+ };
54961
+ const queryEvents = async (ctx) => {
54962
+ await handleRequest$1(ctx, readEvents());
54938
54963
  };
54939
54964
 
54940
54965
  const router = new router$1({ prefix: "/api" });
54941
54966
  router.get("/session", verifySession);
54942
54967
  router.post("/session", createSession);
54943
- router.get("/server", listServers);
54968
+ router.get("/server", getListServers$1);
54944
54969
  router.post("/server", addServer$1);
54945
54970
  router.put("/server", setServer$1);
54946
54971
  router.put("/server/order", modifyOrder);
54947
- router.delete("/server/:username", delServer$1);
54972
+ router.delete("/server/:username", removeServer$1);
54973
+ router.get("/event", queryEvents);
54948
54974
 
54949
54975
  var bufferUtil$1 = {exports: {}};
54950
54976
 
@@ -61287,7 +61313,7 @@ async function handleRequest(handler) {
61287
61313
  return createRes({ data });
61288
61314
  }
61289
61315
  async function authServer(username, password) {
61290
- const res = await handleRequest(getServerPassword(username));
61316
+ const res = await handleRequest(readServerPassword(username));
61291
61317
  if (res.code || !res.data)
61292
61318
  return false;
61293
61319
  return bcryptjs.compare(password, res.data);
@@ -61296,13 +61322,13 @@ function addServer(obj) {
61296
61322
  return handleRequest(createServer(obj));
61297
61323
  }
61298
61324
  function setServer(username, obj) {
61299
- return handleRequest(setServer$2(username, obj));
61325
+ return handleRequest(updateServer(username, obj));
61300
61326
  }
61301
- function delServer(username) {
61302
- return handleRequest(delServer$2(username));
61327
+ function removeServer(username) {
61328
+ return handleRequest(deleteServer(username));
61303
61329
  }
61304
61330
  async function getListServers() {
61305
- const result = await handleRequest(getListServers$1());
61331
+ const result = await handleRequest(readServersList());
61306
61332
  if (result.code)
61307
61333
  return result;
61308
61334
  const obj = {};
@@ -61315,7 +61341,7 @@ async function getListServers() {
61315
61341
  return createRes({ data: obj });
61316
61342
  }
61317
61343
  async function getServer(username) {
61318
- const result = await handleRequest(getServer$1(username));
61344
+ const result = await handleRequest(readServer(username));
61319
61345
  if (result.code || !result.data)
61320
61346
  return result;
61321
61347
  const { data } = result;
@@ -61325,7 +61351,13 @@ async function getServer(username) {
61325
61351
  return createRes({ data: item });
61326
61352
  }
61327
61353
  function getRawListServers() {
61328
- return handleRequest(getListServers$1());
61354
+ return handleRequest(readServersList());
61355
+ }
61356
+ function createNewEvent(username) {
61357
+ return handleRequest(createEvent(username));
61358
+ }
61359
+ function resolveEvent(username) {
61360
+ return handleRequest(updateEvent(username, true));
61329
61361
  }
61330
61362
 
61331
61363
  function callHook(instance, hook, ...args) {
@@ -61338,14 +61370,20 @@ function callHook(instance, hook, ...args) {
61338
61370
  }
61339
61371
  }
61340
61372
  class NodeStatus {
61373
+ options;
61374
+ server;
61375
+ ioPub = new ws.Server({ noServer: true });
61376
+ ioConn = new ws.Server({ noServer: true });
61377
+ ipMap = new WeakMap();
61378
+ userMap = /* @__PURE__ */ new Map();
61379
+ isBanned = /* @__PURE__ */ new Map();
61380
+ servers = {};
61381
+ serversPub = [];
61382
+ onServerConnect;
61383
+ onServerBanned;
61384
+ onServerConnected;
61385
+ onServerDisconnected;
61341
61386
  constructor(server, options) {
61342
- this.ioPub = new ws.Server({ noServer: true });
61343
- this.ioConn = new ws.Server({ noServer: true });
61344
- this.ipMap = new WeakMap();
61345
- this.userMap = new Map();
61346
- this.isBanned = new Map();
61347
- this.servers = {};
61348
- this.serversPub = [];
61349
61387
  this.server = server;
61350
61388
  this.options = options;
61351
61389
  emitter.on("update", this.updateStatus.bind(this));
@@ -61417,12 +61455,14 @@ class NodeStatus {
61417
61455
  }
61418
61456
  socket.send(`You are connecting via: ${ipType}`);
61419
61457
  logger.info(`${address} has connected to server`);
61458
+ resolveEvent(username).then();
61420
61459
  socket.on("message", (buf2) => this.servers[username].status = decode(buf2));
61421
61460
  this.userMap.set(username, socket);
61422
61461
  callHook(this, "onServerConnected", socket, username);
61423
61462
  socket.once("close", () => {
61424
61463
  this.userMap.delete(username);
61425
61464
  this.servers[username] && (this.servers[username].status = {});
61465
+ createNewEvent(username).then();
61426
61466
  logger.warn(`${address} disconnected`);
61427
61467
  callHook(this, "onServerDisconnected", socket, username);
61428
61468
  });
@@ -61501,7 +61541,7 @@ function createIpc() {
61501
61541
  break;
61502
61542
  }
61503
61543
  case "del": {
61504
- const status = await delServer(payload);
61544
+ const status = await removeServer(payload);
61505
61545
  client.write(JSON.stringify(status));
61506
61546
  break;
61507
61547
  }
@@ -62000,8 +62040,8 @@ var dist = createHttpsProxyAgent;
62000
62040
 
62001
62041
  function createPush(options) {
62002
62042
  const pushList = [];
62003
- const timerMap = new Map();
62004
- const entities = new Set(["_", "*", "[", "]", "(", ")", "~", "`", ">", "#", "+", "-", "=", "|", "{", "}", ".", "!", "\\"]);
62043
+ const timerMap = /* @__PURE__ */ new Map();
62044
+ const entities = /* @__PURE__ */ new Set(["_", "*", "[", "]", "(", ")", "~", "`", ">", "#", "+", "-", "=", "|", "{", "}", ".", "!", "\\"]);
62005
62045
  const parseEntities = (msg) => {
62006
62046
  let str;
62007
62047
  if (typeof msg !== "string")
@@ -62037,15 +62077,15 @@ function createPush(options) {
62037
62077
  str += "\n\n";
62038
62078
  return;
62039
62079
  }
62040
- str += `\u5F53\u524D\u8D1F\u8F7D: ${parseEntities(item.status.load.toFixed(2))}
62080
+ str += `\u8D1F\u8F7D: ${parseEntities(item.status.load.toFixed(2))}
62041
62081
  `;
62042
- str += `\u5F53\u524DCPU\u5360\u7528: ${Math.round(item.status.cpu)}%
62082
+ str += `CPU: ${Math.round(item.status.cpu)}%
62043
62083
  `;
62044
- str += `\u5F53\u524D\u5185\u5B58\u5360\u7528: ${Math.round(item.status.memory_used / item.status.memory_total * 100)}%
62084
+ str += `\u5185\u5B58: ${Math.round(item.status.memory_used / item.status.memory_total * 100)}%
62045
62085
  `;
62046
- str += `\u5F53\u524D\u786C\u76D8\u5360\u7528: ${Math.round(item.status.hdd_used / item.status.hdd_total * 100)}%
62086
+ str += `\u786C\u76D8: ${Math.round(item.status.hdd_used / item.status.hdd_total * 100)}%
62047
62087
  `;
62048
- str += "\n\n";
62088
+ str += "\n";
62049
62089
  });
62050
62090
  return `\u{1F34A}*NodeStatus*
62051
62091
  \u{1F916} \u5F53\u524D\u6709 ${this.serversPub.length} \u53F0\u670D\u52A1\u5668, \u5176\u4E2D\u5728\u7EBF ${online} \u53F0