2024-02-24 00:37:31 +08:00

138 lines
4.8 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
0 && (module.exports = {
WORKER_SELF_EXIT_CODE: null,
clearModuleContext: null,
deleteAppClientCache: null,
deleteCache: null,
initialize: null
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
WORKER_SELF_EXIT_CODE: function() {
return WORKER_SELF_EXIT_CODE;
},
clearModuleContext: function() {
return clearModuleContext;
},
deleteAppClientCache: function() {
return deleteAppClientCache;
},
deleteCache: function() {
return deleteCache;
},
initialize: function() {
return initialize;
}
});
require("./cpu-profile");
const _v8 = /*#__PURE__*/ _interop_require_default(require("v8"));
const _http = /*#__PURE__*/ _interop_require_default(require("http"));
const _net = require("net");
require("../require-hook");
const _next = /*#__PURE__*/ _interop_require_default(require("../next"));
const _log = require("../../build/output/log");
const _workerutils = require("../lib/worker-utils");
function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
const WORKER_SELF_EXIT_CODE = 77;
const MAXIMUM_HEAP_SIZE_ALLOWED = _v8.default.getHeapStatistics().heap_size_limit / 1024 / 1024 * 0.9;
let result;
let sandboxContext;
let requireCacheHotReloader;
if (process.env.NODE_ENV !== "production") {
sandboxContext = require("../web/sandbox/context");
requireCacheHotReloader = require("../../build/webpack/plugins/nextjs-require-cache-hot-reloader");
}
function clearModuleContext(target) {
sandboxContext == null ? void 0 : sandboxContext.clearModuleContext(target);
}
function deleteAppClientCache() {
requireCacheHotReloader == null ? void 0 : requireCacheHotReloader.deleteAppClientCache();
}
function deleteCache(filePath) {
requireCacheHotReloader == null ? void 0 : requireCacheHotReloader.deleteCache(filePath);
}
async function initialize(opts) {
// if we already setup the server return as we only need to do
// this on first worker boot
if (result) {
return result;
}
let requestHandler;
const server = _http.default.createServer((req, res)=>{
return requestHandler(req, res).catch((err)=>{
res.statusCode = 500;
res.end("Internal Server Error");
console.error(err);
}).finally(()=>{
if (process.memoryUsage().heapUsed / 1024 / 1024 > MAXIMUM_HEAP_SIZE_ALLOWED) {
(0, _log.warn)("The server is running out of memory, restarting to free up memory.");
server.close();
process.exit(WORKER_SELF_EXIT_CODE);
}
});
});
if (opts.keepAliveTimeout) {
server.keepAliveTimeout = opts.keepAliveTimeout;
}
return new Promise(async (resolve, reject)=>{
server.on("error", (err)=>{
console.error(`Invariant: failed to start render worker`, err);
process.exit(1);
});
let upgradeHandler;
if (!opts.dev) {
server.on("upgrade", (req, socket, upgrade)=>{
upgradeHandler(req, socket, upgrade);
});
}
server.on("listening", async ()=>{
try {
const addr = server.address();
const port = addr && typeof addr === "object" ? addr.port : 0;
if (!port) {
console.error(`Invariant failed to detect render worker port`, addr);
process.exit(1);
}
let hostname = !opts.hostname || opts.hostname === "0.0.0.0" ? "localhost" : opts.hostname;
if ((0, _net.isIPv6)(hostname)) {
hostname = hostname === "::" ? "[::1]" : `[${hostname}]`;
}
result = {
port,
hostname
};
const app = (0, _next.default)({
...opts,
_routerWorker: opts.workerType === "router",
_renderWorker: opts.workerType === "render",
hostname,
customServer: false,
httpServer: server,
port: opts.port,
isNodeDebugging: opts.isNodeDebugging
});
requestHandler = app.getRequestHandler();
upgradeHandler = app.getUpgradeHandler();
await app.prepare();
resolve(result);
} catch (err) {
return reject(err);
}
});
server.listen(await (0, _workerutils.getFreePort)(), "0.0.0.0");
});
}
//# sourceMappingURL=render-server.js.map