UNPKG

telefunc

Version:

Remote functions. Instead of API.

32 lines (31 loc) 1.2 kB
export { addTelefuncMiddleware }; import { telefunc } from '../../server.js'; function addTelefuncMiddleware(middlewares) { middlewares.use((req, res, next) => { if (res.headersSent) return next(); const url = req.originalUrl || req.url; if (!url) return next(); if (url !== '/_telefunc') return next(); // https://stackoverflow.com/questions/12497358/handling-text-plain-in-express-via-connect/12497793#12497793 // Alternative: https://www.npmjs.com/package/raw-body let body = ''; let bodyPromiseResolve; let bodyPromise = new Promise((r) => (bodyPromiseResolve = () => r(undefined))); req.setEncoding('utf8'); req.on('data', function (chunk) { body += chunk; }); req.on('end', () => { bodyPromiseResolve(); }); bodyPromise.then(async () => { const httpResponse = await telefunc({ url, method: req.method, body }); res.setHeader('Content-Type', httpResponse.contentType); res.statusCode = httpResponse.statusCode; res.end(httpResponse.body); }); }); }