import {HttpVerb, Response} from 'then-request'; import GenericResponse = require('http-response-object'); import {URL} from 'url'; import {Req, Res} from './messages'; import {FormData, getFormDataEntries} from './FormData'; import {Options, MessageOptions} from './Options'; const init = require('sync-rpc'); const remote = init(require.resolve('./worker')); export {HttpVerb, Response, Options}; export {FormData}; export default function request( method: HttpVerb, url: string | URL, options?: Options ): Response { const {form, ...o} = options || {form: undefined}; const opts: MessageOptions = o; if (form) { opts.form = getFormDataEntries(form); } const req: Req = { m: method, u: url && typeof url === 'object' ? url.href : (url as string), o: opts, }; const res: Res = remote(req); return new GenericResponse(res.s, res.h, res.b, res.u); } module.exports = request; module.exports.default = request; module.exports.FormData = FormData;