Files
Fluxup_PAP/node_modules/expo-server/build/mjs/vendor/express.js
2026-03-10 16:18:05 +00:00

50 lines
1.7 KiB
JavaScript

import { AsyncLocalStorage } from 'node:async_hooks';
import { createRequestHandler as createExpoHandler, } from './abstract';
import { createNodeEnv, createNodeRequestScope } from './environment/node';
import { respond, convertRequest } from './http';
export { ExpoError } from './abstract';
const STORE = new AsyncLocalStorage();
/**
* Returns a request handler for Express that serves the response using Remix.
*/
export function createRequestHandler(params, setup) {
const run = createNodeRequestScope(STORE, params);
const onRequest = createExpoHandler({
...createNodeEnv(params),
...setup,
});
async function requestHandler(request) {
try {
return await run(onRequest, request);
}
catch (error) {
const handleRouteError = setup?.handleRouteError;
if (handleRouteError && error != null && typeof error === 'object') {
try {
return await handleRouteError(error);
}
catch {
// Rethrow original error below
}
}
throw error;
}
}
return async (req, res, next) => {
if (!req?.url || !req.method) {
return next();
}
try {
const request = convertRequest(req, res);
const response = await requestHandler(request);
await respond(res, response);
}
catch (error) {
// Express doesn't support async functions, so we have to pass along the
// error manually using next().
next(error);
}
};
}
export { convertRequest, respond } from './http';
//# sourceMappingURL=express.js.map