cmux/node_modules/@vercel/next/dist/middleware-launcher.js
2026-01-29 17:36:26 -08:00

135 lines
4.2 KiB
JavaScript

"use strict";
// src/vercel-request-context.ts
var SYMBOL_FOR_REQ_CONTEXT = Symbol.for("@vercel/request-context");
function getContext() {
const fromSymbol = globalThis;
return fromSymbol[SYMBOL_FOR_REQ_CONTEXT]?.get?.() ?? {};
}
// src/next-request-context.ts
var import_async_hooks = require("async_hooks");
var name = "@next/request-context";
var NEXT_REQUEST_CONTEXT_SYMBOL = Symbol.for(name);
var INTERNAL_STORAGE_FIELD_SYMBOL = Symbol.for("internal.storage");
function getOrCreateContextSingleton() {
const _globalThis = globalThis;
if (!_globalThis[NEXT_REQUEST_CONTEXT_SYMBOL]) {
const storage = new import_async_hooks.AsyncLocalStorage();
const Context = {
get: () => storage.getStore(),
[INTERNAL_STORAGE_FIELD_SYMBOL]: storage
};
_globalThis[NEXT_REQUEST_CONTEXT_SYMBOL] = Context;
}
return _globalThis[NEXT_REQUEST_CONTEXT_SYMBOL];
}
var NextRequestContext = getOrCreateContextSingleton();
function withNextRequestContext(value, callback) {
const storage = NextRequestContext[INTERNAL_STORAGE_FIELD_SYMBOL];
return storage.run(value, callback);
}
// src/edge-function-source/to-plain-headers.ts
function toPlainHeaders(headers) {
const result = {};
if (!headers)
return result;
headers.forEach((value, key) => {
result[key] = value;
if (key.toLowerCase() === "set-cookie") {
result[key] = splitCookiesString(value);
}
});
return result;
}
function splitCookiesString(cookiesString) {
const cookiesStrings = [];
let pos = 0;
let start;
let ch;
let lastComma;
let nextStart;
let cookiesSeparatorFound;
function skipWhitespace() {
while (pos < cookiesString.length && /\s/.test(cookiesString.charAt(pos)))
pos += 1;
return pos < cookiesString.length;
}
function notSpecialChar() {
ch = cookiesString.charAt(pos);
return ch !== "=" && ch !== ";" && ch !== ",";
}
while (pos < cookiesString.length) {
start = pos;
cookiesSeparatorFound = false;
while (skipWhitespace()) {
ch = cookiesString.charAt(pos);
if (ch === ",") {
lastComma = pos;
pos += 1;
skipWhitespace();
nextStart = pos;
while (pos < cookiesString.length && notSpecialChar()) {
pos += 1;
}
if (pos < cookiesString.length && cookiesString.charAt(pos) === "=") {
cookiesSeparatorFound = true;
pos = nextStart;
cookiesStrings.push(cookiesString.substring(start, lastComma));
start = pos;
} else {
pos = lastComma + 1;
}
} else {
pos += 1;
}
}
if (!cookiesSeparatorFound || pos >= cookiesString.length) {
cookiesStrings.push(cookiesString.substring(start, cookiesString.length));
}
}
return cookiesStrings;
}
// src/middleware-launcher.ts
process.chdir(__dirname);
var region = process.env.VERCEL_REGION || process.env.NOW_REGION;
if (!process.env.NODE_ENV) {
process.env.NODE_ENV = region === "dev1" ? "development" : "production";
}
if (process.env.NODE_ENV !== "production" && region !== "dev1") {
console.warn(
`Warning: NODE_ENV was incorrectly set to "${process.env.NODE_ENV}", this value is being overridden to "production"`
);
process.env.NODE_ENV = "production";
}
var conf = __NEXT_CONFIG__;
globalThis.AsyncLocalStorage = require("async_hooks").AsyncLocalStorage;
var middlewareModule = require("__NEXT_MIDDLEWARE_PATH__");
var serve = async (request) => {
const context = getContext();
return await withNextRequestContext(
{ waitUntil: context.waitUntil },
async () => {
let middlewareHandler = await middlewareModule;
middlewareHandler = middlewareHandler.default || middlewareHandler;
const result = await middlewareHandler({
request: {
url: request.url,
method: request.method,
headers: toPlainHeaders(request.headers),
nextConfig: conf,
page: "/middleware",
body: request.method !== "GET" && request.method !== "HEAD" ? request.body : void 0,
waitUntil: context.waitUntil
}
});
if (result.waitUntil && context.waitUntil) {
context.waitUntil(result.waitUntil);
}
return result.response;
}
);
};
module.exports = serve;