r19
Version:
Simple remote procedure calls in TypeScript
37 lines (36 loc) • 993 B
JavaScript
import { Buffer } from "node:buffer";
import { handleRPCRequest } from "./handleRPCRequest.js";
const createRPCMiddleware = (args) => {
const fn = (req, res, next) => {
if (req.method !== "POST") {
res.statusCode = 405;
res.end();
return next();
}
const requestBodyChunks = [];
req.on("data", (chunk) => {
requestBodyChunks.push(chunk);
});
req.on("end", async () => {
const { body, headers, statusCode } = await handleRPCRequest({
procedures: args.procedures,
body: Buffer.concat(requestBodyChunks),
onError: args.onError
});
if (statusCode) {
res.statusCode = statusCode;
}
for (const headerName in headers) {
res.setHeader(headerName, headers[headerName]);
}
res.end(Buffer.from(body), "binary");
next();
});
};
fn._procedures = args.procedures;
return fn;
};
export {
createRPCMiddleware
};
//# sourceMappingURL=createRPCMiddleware.js.map