ssr-to-html
Version:
Crawl a server rendered application and output html files
63 lines (60 loc) • 1.96 kB
JavaScript
var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
// src/start-server.ts
import net from "net";
import cp from "child_process";
var start_server_default = async (cmd, port, wait) => {
const proc = cp.spawn(cmd, {
shell: true,
stdio: "inherit",
windowsHide: true,
env: __spreadProps(__spreadValues({}, process.env), { PORT: `${port}` })
});
const close = () => {
proc.unref();
proc.kill();
};
let remaining = wait > 0 ? wait : Infinity;
while (!await isPortInUse(port)) {
if (remaining >= 100) {
remaining -= 100;
await sleep(100);
} else {
close();
throw new Error(`site-write: timeout while wating for server to start on port "${port}".`);
}
}
return close;
};
function isPortInUse(port) {
return new Promise((resolve) => {
const connection = net.connect(port).setNoDelay(true).setKeepAlive(false).on("error", () => done(false)).on("connect", () => done(true));
function done(connected) {
connection.end();
resolve(connected);
}
});
}
function sleep(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
export {
start_server_default
};