import { AppOptions, HttpRequest, HttpResponse, TemplatedApp } from 'uWebSockets.js' import { NativeRequest } from './request'; import { NativeTemplatedApp } from './app'; export const App = (): TemplatedApp => new NativeTemplatedApp() export const SSLApp = (options?: AppOptions): TemplatedApp => new NativeTemplatedApp(options) export const parseBody = async (req: HttpRequest, resp: HttpResponse, maxBodySize?: number) => { const request = (req as NativeRequest).request return new Promise(function (resolve, reject) { request.on('error', reject) const buffers: Buffer[] = [] let totalSize = 0 request.on('data', function (data) { totalSize += data.length if (maxBodySize && totalSize > maxBodySize) { request.destroy() reject(new Error(`Request body too large. Maximum size is ${maxBodySize} bytes (${Math.round(maxBodySize / 1024 / 1024)}M)`)) return } buffers.push(data) }).on('end', function () { resolve(Buffer.concat(buffers)) }) }) }