ksjsb/core/h5_vendor_encode_server.mjs
2026-07-30 20:25:56 +08:00

58 lines
1.4 KiB
JavaScript

import readline from "node:readline";
import { encodeWith, installBrowserStubs, loadVendor } from "./h5_vendor_encode.mjs";
const cookie = process.env.KS_COOKIE || "";
const exportName = process.env.KS_VENDOR_EXPORT || "f";
installBrowserStubs(cookie);
const realConsole = { log: console.log, warn: console.warn, error: console.error };
if (!process.env.KS_VENDOR_DEBUG) {
console.log = () => {};
console.warn = () => {};
console.error = () => {};
}
const vendor = await loadVendor();
console.log = realConsole.log;
console.warn = realConsole.warn;
console.error = realConsole.error;
const instance = vendor[exportName];
if (!instance || typeof instance.call !== "function") {
throw new Error(`vendor export ${exportName} has no call()`);
}
const rl = readline.createInterface({
input: process.stdin,
crlfDelay: Infinity,
});
function writeJson(value) {
process.stdout.write(`${JSON.stringify(value)}\n`);
}
rl.on("line", async (line) => {
if (!line.trim()) {
return;
}
let req;
try {
req = JSON.parse(line);
const signInput = String(req.signInput ?? "");
const encoded = await encodeWith(instance, signInput);
writeJson({ id: req.id ?? null, ok: true, exportName, ...encoded });
} catch (error) {
writeJson({
id: req && "id" in req ? req.id : null,
ok: false,
error: error && error.stack ? error.stack : String(error),
});
}
});
rl.on("close", () => {
process.exit(0);
});