kotori-bot
Version:
Cross-platform chatbot framework base on Node.js and TypeScript
68 lines (67 loc) • 2.7 kB
JavaScript
/**
* @Package kotori-bot
* @Version 1.7.3
* @Author Arimura Sena <me@hotaru.icu>
* @Copyright 2024-2025 Hotaru. All rights reserved.
* @License GPL-3.0
* @Link https://github.com/kotorijs/kotori
* @Date 2026/2/14 15:49:07
*/
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var daemon_exports = {};
__export(daemon_exports, {
default: () => daemon_default
});
module.exports = __toCommonJS(daemon_exports);
var import_node_fs = require("node:fs");
var import_node_path = require("node:path");
var import_core = require("@kotori-bot/core");
var import_loader = require("@kotori-bot/loader");
function daemon(virtualEnv) {
const startTime = Date.now();
const isDev = virtualEnv.ROMI_MODE === import_loader.DEV_MODE;
import_loader.Logger.info("[Daemon] Starting...");
const isSource = (0, import_node_fs.existsSync)((0, import_node_path.resolve)(__dirname, "cli.ts"));
const child = (0, import_core.executeCommand)(
isDev || isSource ? `tsx "${(0, import_node_path.resolve)(__dirname, isSource ? "cli.ts" : "cli.js")}"` : `node "${(0, import_node_path.resolve)(__dirname, "cli.js")}"`,
{ cwd: process.cwd(), env: virtualEnv },
(err, stdout, stderr) => {
if (err && isDev) import_loader.Logger.error("[Daemon] Child process error: ", err);
if (stdout) process.stdout.write(stdout);
if (stderr) process.stderr.write(stderr);
}
);
child.on("exit", (code) => {
if (code === 0) {
import_loader.Logger.info("[Daemon] Exited with code 0.");
process.exit(0);
}
if (code !== 233) {
const endTime = Date.now();
const timeTaken = (endTime - startTime) / 1e3;
import_loader.Logger.error(`[Daemon] Exited with code ${code} in ${timeTaken} seconds.`);
if (timeTaken <= 5) return;
}
import_loader.Logger.warn("[Daemon] Restarting...");
daemon(virtualEnv);
});
process.stdin.on("data", (data) => child.stdin?.write(data));
}
var daemon_default = daemon;