@gemini-dock/server
Version:
An extensible Gemini server written in TypeScript
218 lines (212 loc) • 6.85 kB
JavaScript
;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __commonJS = (cb, mod) => function __require() {
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
// ../../../node_modules/.pnpm/real-require@0.2.0/node_modules/real-require/src/index.js
var require_src = __commonJS({
"../../../node_modules/.pnpm/real-require@0.2.0/node_modules/real-require/src/index.js"(exports2, module2) {
var realImport2 = new Function("modulePath", "return import(modulePath)");
function realRequire2(modulePath) {
if (typeof __non_webpack__require__ === "function") {
return __non_webpack__require__(modulePath);
}
return require(modulePath);
}
module2.exports = { realImport: realImport2, realRequire: realRequire2 };
}
});
// ../../../node_modules/.pnpm/thread-stream@3.1.0/node_modules/thread-stream/lib/indexes.js
var require_indexes = __commonJS({
"../../../node_modules/.pnpm/thread-stream@3.1.0/node_modules/thread-stream/lib/indexes.js"(exports2, module2) {
"use strict";
var WRITE_INDEX2 = 4;
var READ_INDEX2 = 8;
module2.exports = {
WRITE_INDEX: WRITE_INDEX2,
READ_INDEX: READ_INDEX2
};
}
});
// ../../../node_modules/.pnpm/thread-stream@3.1.0/node_modules/thread-stream/lib/wait.js
var require_wait = __commonJS({
"../../../node_modules/.pnpm/thread-stream@3.1.0/node_modules/thread-stream/lib/wait.js"(exports2, module2) {
"use strict";
var MAX_TIMEOUT = 1e3;
function wait(state2, index, expected, timeout, done) {
const max = Date.now() + timeout;
let current = Atomics.load(state2, index);
if (current === expected) {
done(null, "ok");
return;
}
let prior = current;
const check = (backoff) => {
if (Date.now() > max) {
done(null, "timed-out");
} else {
setTimeout(() => {
prior = current;
current = Atomics.load(state2, index);
if (current === prior) {
check(backoff >= MAX_TIMEOUT ? MAX_TIMEOUT : backoff * 2);
} else {
if (current === expected) done(null, "ok");
else done(null, "not-equal");
}
}, backoff);
}
};
check(1);
}
function waitDiff2(state2, index, expected, timeout, done) {
const max = Date.now() + timeout;
let current = Atomics.load(state2, index);
if (current !== expected) {
done(null, "ok");
return;
}
const check = (backoff) => {
if (Date.now() > max) {
done(null, "timed-out");
} else {
setTimeout(() => {
current = Atomics.load(state2, index);
if (current !== expected) {
done(null, "ok");
} else {
check(backoff >= MAX_TIMEOUT ? MAX_TIMEOUT : backoff * 2);
}
}, backoff);
}
};
check(1);
}
module2.exports = { wait, waitDiff: waitDiff2 };
}
});
// ../../../node_modules/.pnpm/thread-stream@3.1.0/node_modules/thread-stream/lib/worker.js
var { realImport, realRequire } = require_src();
var { workerData, parentPort } = require("worker_threads");
var { WRITE_INDEX, READ_INDEX } = require_indexes();
var { waitDiff } = require_wait();
var {
dataBuf,
filename,
stateBuf
} = workerData;
var destination;
var state = new Int32Array(stateBuf);
var data = Buffer.from(dataBuf);
async function start() {
let worker;
try {
if (filename.endsWith(".ts") || filename.endsWith(".cts")) {
if (!process[Symbol.for("ts-node.register.instance")]) {
realRequire("ts-node/register");
} else if (process.env.TS_NODE_DEV) {
realRequire("ts-node-dev");
}
worker = realRequire(decodeURIComponent(filename.replace(process.platform === "win32" ? "file:///" : "file://", "")));
} else {
worker = await realImport(filename);
}
} catch (error) {
if ((error.code === "ENOTDIR" || error.code === "ERR_MODULE_NOT_FOUND") && filename.startsWith("file://")) {
worker = realRequire(decodeURIComponent(filename.replace("file://", "")));
} else if (error.code === void 0 || error.code === "ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING") {
try {
worker = realRequire(decodeURIComponent(filename.replace(process.platform === "win32" ? "file:///" : "file://", "")));
} catch {
throw error;
}
} else {
throw error;
}
}
if (typeof worker === "object") worker = worker.default;
if (typeof worker === "object") worker = worker.default;
destination = await worker(workerData.workerData);
destination.on("error", function(err) {
Atomics.store(state, WRITE_INDEX, -2);
Atomics.notify(state, WRITE_INDEX);
Atomics.store(state, READ_INDEX, -2);
Atomics.notify(state, READ_INDEX);
parentPort.postMessage({
code: "ERROR",
err
});
});
destination.on("close", function() {
const end = Atomics.load(state, WRITE_INDEX);
Atomics.store(state, READ_INDEX, end);
Atomics.notify(state, READ_INDEX);
setImmediate(() => {
process.exit(0);
});
});
}
start().then(function() {
parentPort.postMessage({
code: "READY"
});
process.nextTick(run);
});
function run() {
const current = Atomics.load(state, READ_INDEX);
const end = Atomics.load(state, WRITE_INDEX);
if (end === current) {
if (end === data.length) {
waitDiff(state, READ_INDEX, end, Infinity, run);
} else {
waitDiff(state, WRITE_INDEX, end, Infinity, run);
}
return;
}
if (end === -1) {
destination.end();
return;
}
const toWrite = data.toString("utf8", current, end);
const res = destination.write(toWrite);
if (res) {
Atomics.store(state, READ_INDEX, end);
Atomics.notify(state, READ_INDEX);
setImmediate(run);
} else {
destination.once("drain", function() {
Atomics.store(state, READ_INDEX, end);
Atomics.notify(state, READ_INDEX);
run();
});
}
}
process.on("unhandledRejection", function(err) {
parentPort.postMessage({
code: "ERROR",
err
});
process.exit(1);
});
process.on("uncaughtException", function(err) {
parentPort.postMessage({
code: "ERROR",
err
});
process.exit(1);
});
process.once("exit", (exitCode) => {
if (exitCode !== 0) {
process.exit(exitCode);
return;
}
if (destination?.writableNeedDrain && !destination?.writableEnded) {
parentPort.postMessage({
code: "WARNING",
err: new Error("ThreadStream: process exited before destination stream was drained. this may indicate that the destination stream try to write to a another missing stream")
});
}
process.exit(0);
});
//# sourceMappingURL=thread-stream-worker.js.map