UNPKG

next

Version:

The React Framework

79 lines (77 loc) 3.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "getRestartDevServerMiddleware", { enumerable: true, get: function() { return getRestartDevServerMiddleware; } }); const _utils = require("../../server/lib/utils"); const _middlewareresponse = require("./middleware-response"); const _cacheinvalidation = require("../../build/webpack/cache-invalidation"); const EVENT_DEV_OVERLAY_RESTART_SERVER = 'DEV_OVERLAY_RESTART_SERVER'; function getRestartDevServerMiddleware(param) { let { telemetry, turbopackProject, webpackCacheDirectories } = param; /** * Some random value between 1 and Number.MAX_SAFE_INTEGER (inclusive). The same value is returned * on every call to `__nextjs_server_status` until the server is restarted. * * Can be used to determine if two server status responses are from the same process or a * different (restarted) process. */ const executionId = Math.floor(Math.random() * Number.MAX_SAFE_INTEGER) + 1; async function handleRestartRequest(req, res, searchParams) { if (req.method !== 'POST') { return _middlewareresponse.middlewareResponse.methodNotAllowed(res); } const shouldInvalidatePersistentCache = searchParams.has('invalidatePersistentCache'); if (shouldInvalidatePersistentCache) { if (webpackCacheDirectories != null) { await Promise.all(Array.from(webpackCacheDirectories).map(_cacheinvalidation.invalidatePersistentCache)); } if (turbopackProject != null) { await turbopackProject.invalidatePersistentCache(); } } telemetry.record({ eventName: EVENT_DEV_OVERLAY_RESTART_SERVER, payload: { invalidatePersistentCache: shouldInvalidatePersistentCache } }); // TODO: Use flushDetached await telemetry.flush(); // do this async to try to give the response a chance to send // it's not really important if it doesn't though setTimeout(()=>{ process.exit(_utils.RESTART_EXIT_CODE); }, 0); return _middlewareresponse.middlewareResponse.noContent(res); } async function handleServerStatus(req, res) { if (req.method !== 'GET') { return _middlewareresponse.middlewareResponse.methodNotAllowed(res); } return _middlewareresponse.middlewareResponse.json(res, { executionId }); } return async function(req, res, next) { const { pathname, searchParams } = new URL("http://n" + req.url); switch(pathname){ case '/__nextjs_restart_dev': return await handleRestartRequest(req, res, searchParams); case '/__nextjs_server_status': return await handleServerStatus(req, res); default: return next(); } }; } if ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') { Object.defineProperty(exports.default, '__esModule', { value: true }); Object.assign(exports.default, exports); module.exports = exports.default; } //# sourceMappingURL=restart-dev-server-middleware.js.map