1 | import {HttpVerb, Response} from 'then-request';
|
2 | import GenericResponse = require('http-response-object');
|
3 | import {URL} from 'url';
|
4 | import {Req, Res} from './messages';
|
5 | import {FormData, getFormDataEntries} from './FormData';
|
6 | import {Options, MessageOptions} from './Options';
|
7 | const init = require('sync-rpc');
|
8 | const remote = init(require.resolve('./worker'));
|
9 |
|
10 | export {HttpVerb, Response, Options};
|
11 | export {FormData};
|
12 | export default function request(
|
13 | method: HttpVerb,
|
14 | url: string | URL,
|
15 | options?: Options
|
16 | ): Response {
|
17 | const {form, ...o} = options || {form: undefined};
|
18 | const opts: MessageOptions = o;
|
19 | if (form) {
|
20 | opts.form = getFormDataEntries(form);
|
21 | }
|
22 | const req: Req = {
|
23 | m: method,
|
24 | u: url && typeof url === 'object' ? url.href : (url as string),
|
25 | o: opts,
|
26 | };
|
27 | const res: Res = remote(req);
|
28 | return new GenericResponse(res.s, res.h, res.b, res.u);
|
29 | }
|
30 | module.exports = request;
|
31 | module.exports.default = request;
|
32 | module.exports.FormData = FormData;
|