57 lines
2.2 KiB
JavaScript
57 lines
2.2 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.respond = exports.convertRequest = exports.ExpoError = void 0;
|
|
exports.createRequestHandler = createRequestHandler;
|
|
const node_async_hooks_1 = require("node:async_hooks");
|
|
const abstract_1 = require("./abstract");
|
|
const node_1 = require("./environment/node");
|
|
const http_1 = require("./http");
|
|
var abstract_2 = require("./abstract");
|
|
Object.defineProperty(exports, "ExpoError", { enumerable: true, get: function () { return abstract_2.ExpoError; } });
|
|
const STORE = new node_async_hooks_1.AsyncLocalStorage();
|
|
/**
|
|
* Returns a request handler for Express that serves the response using Remix.
|
|
*/
|
|
function createRequestHandler(params, setup) {
|
|
const run = (0, node_1.createNodeRequestScope)(STORE, params);
|
|
const onRequest = (0, abstract_1.createRequestHandler)({
|
|
...(0, node_1.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 = (0, http_1.convertRequest)(req, res);
|
|
const response = await requestHandler(request);
|
|
await (0, http_1.respond)(res, response);
|
|
}
|
|
catch (error) {
|
|
// Express doesn't support async functions, so we have to pass along the
|
|
// error manually using next().
|
|
next(error);
|
|
}
|
|
};
|
|
}
|
|
var http_2 = require("./http");
|
|
Object.defineProperty(exports, "convertRequest", { enumerable: true, get: function () { return http_2.convertRequest; } });
|
|
Object.defineProperty(exports, "respond", { enumerable: true, get: function () { return http_2.respond; } });
|
|
//# sourceMappingURL=express.js.map
|