diff --git a/.gitignore b/.gitignore index 8248143..ab05030 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,2 @@ node_modules -*.js -*.js.map -*.d.ts -*.log +*.log \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts new file mode 100644 index 0000000..8f46821 --- /dev/null +++ b/dist/index.d.ts @@ -0,0 +1,198 @@ +/// +import * as http from 'http'; +import * as _stream from 'stream'; +import { Url } from 'url'; +export declare var throwResponseError: boolean; +export declare function get(uri: string, options?: RequestOptions): Promise>; +export declare function post(uri: string, options?: RequestOptions, content?: any): Promise>; +export declare function put(uri: string, options?: RequestOptions, content?: any): Promise>; +export declare function patch(uri: string, options?: RequestOptions, content?: any): Promise>; +export declare function head(uri: string, options?: RequestOptions): Promise>; +export declare function del(uri: string, options?: RequestOptions): Promise>; +export declare function json(uri: string, options?: RequestOptions): Promise; +export { del as delete }; +export declare function create(uri: string, options?: RequestOptions, content?: any): Request; +export declare function stream(uri: string, options?: RequestOptions, content?: any): Request; +export declare function defaults(options: RequestOptions): void; +export declare function debug(value?: boolean): boolean; +export interface AuthOptions { + user?: string; + username?: string; + pass?: string; + password?: string; + sendImmediately?: boolean; + bearer?: string; +} +export interface AWSOptions { + secret: string; + bucket?: string; +} +export interface Cookie extends Array { + str: string; + expires: Date; + path: string; + domain: string; + toString(): string; +} +export interface CookieJar { + setCookie(cookie: Cookie, uri: string | Url, options?: any): void; + getCookieString(uri: string | Url): string; + getCookies(uri: string | Url): Cookie[]; +} +export interface CookieValue { + name: string; + value: any; + httpOnly: boolean; +} +export interface Headers { + [key: string]: any; +} +export interface HttpArchiveRequest { + url?: string; + method?: string; + headers?: NameValuePair[]; + postData?: { + mimeType?: string; + params?: NameValuePair[]; + }; +} +export interface Multipart { + chunked?: boolean; + data?: { + 'content-type'?: string; + body: string; + }[]; +} +export interface NameValuePair { + name: string; + value: string; +} +export interface RequestPart { + headers?: Headers; + body: any; +} +export interface OAuthOptions { + callback?: string; + consumer_key?: string; + consumer_secret?: string; + token?: string; + token_secret?: string; + verifier?: string; +} +export interface Request extends _stream.Stream { + headers: Headers; + method: string; + readable: boolean; + uri: Url; + writable: boolean; + getAgent(): http.Agent; + pipeDest(dest: any): void; + setHeader(name: string, value: string, clobber?: boolean): this; + setHeaders(headers: Headers): this; + qs(q: Object, clobber?: boolean): this; + form(): any; + form(form: any): this; + multipart(multipart: RequestPart[]): this; + json(val: any): this; + aws(opts: AWSOptions, now?: boolean): this; + auth(username: string, password: string, sendImmediately?: boolean, bearer?: string): this; + oauth(oauth: OAuthOptions): this; + jar(jar: CookieJar): this; + on(event: string, listener: Function): this; + on(event: 'request', listener: (req: http.ClientRequest) => void): this; + on(event: 'response', listener: (resp: http.IncomingMessage) => void): this; + on(event: 'data', listener: (data: Buffer | string) => void): this; + on(event: 'error', listener: (err: Error) => void): this; + on(event: 'complete', listener: (resp: http.IncomingMessage, body?: string | Buffer) => void): this; + write(buffer: Buffer, cb?: Function): boolean; + write(str: string, cb?: Function): boolean; + write(str: string, encoding: string, cb?: Function): boolean; + write(str: string, encoding?: string, fd?: string): boolean; + end(): void; + end(chunk: Buffer, cb?: Function): void; + end(chunk: string, cb?: Function): void; + end(chunk: string, encoding: string, cb?: Function): void; + pause(): void; + resume(): void; + abort(): void; + destroy(): void; + toJSON(): Object; + options: RequestOptions; + response: Promise>; +} +export interface RequestOptions { + baseUrl?: string; + jar?: CookieJar | boolean; + formData?: Object; + form?: Object | string; + auth?: AuthOptions; + oauth?: OAuthOptions; + aws?: { + secret: string; + bucket?: string; + }; + hawk?: { + credentials: any; + }; + qs?: any; + json?: any; + multipart?: RequestPart[] | Multipart; + agentOptions?: any; + agentClass?: any; + forever?: any; + host?: string; + port?: number; + method?: string; + headers?: Headers; + body?: any; + followRedirect?: boolean | ((response: http.IncomingMessage) => boolean); + followAllRedirects?: boolean; + maxRedirects?: number; + encoding?: string | null; + pool?: any; + timeout?: number; + proxy?: any; + strictSSL?: boolean; + rejectUnauthorized?: boolean; + gzip?: boolean; + preambleCRLF?: boolean; + postambleCRLF?: boolean; + key?: Buffer; + cert?: Buffer; + passphrase?: string; + ca?: Buffer; + har?: HttpArchiveRequest; + useQuerystring?: boolean; + uri?: string; + throwResponseError?: boolean; + family?: number; +} +export declare class RequestError extends Error { + request: Request; + innerError: Error; + constructor(err: Error, request: Request); +} +export declare class Response { + request: Request; + message: http.IncomingMessage; + private body; + constructor(request: Request, message: http.IncomingMessage, body: T); + get charset(): string; + get content(): T; + get contentLength(): number; + get contentType(): string; + get cookies(): Cookie[]; + get headers(): Headers; + get httpVersion(): string; + get lastModified(): Date; + get method(): string; + get server(): string; + get statusCode(): number; + get statusMessage(): string; + get uri(): Url; +} +export declare class ResponseError extends Error { + response: Response; + statusCode: number; + constructor(response: Response); +} diff --git a/dist/index.js b/dist/index.js new file mode 100644 index 0000000..881e40b --- /dev/null +++ b/dist/index.js @@ -0,0 +1,147 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var request = require('request'); +exports.throwResponseError = false; +async function get(uri, options) { return await create(uri, Object.assign({}, options, { method: 'GET' })).response; } +exports.get = get; +async function post(uri, options, content) { return await create(uri, Object.assign({}, options, { method: 'POST' }), content).response; } +exports.post = post; +async function put(uri, options, content) { return await create(uri, Object.assign({}, options, { method: 'PUT' }), content).response; } +exports.put = put; +async function patch(uri, options, content) { return await create(uri, Object.assign({}, options, { method: 'PATCH' }), content).response; } +exports.patch = patch; +async function head(uri, options) { return await create(uri, Object.assign({}, options, { method: 'HEAD' })).response; } +exports.head = head; +async function del(uri, options) { return await create(uri, Object.assign({}, options, { method: 'DELETE' })).response; } +exports.del = del; +exports.delete = del; +async function json(uri, options) { return (await create(uri, Object.assign({}, options, { json: true })).response).content; } +exports.json = json; +function create(uri, options, content) { + options = Object.assign({}, options, { uri: uri }); + if (options.jar === true) + options.jar = request.jar(); + if (content !== undefined) + options.body = content; + var throwEnabled = exports.throwResponseError; + if (options.throwResponseError !== undefined) + throwEnabled = options.throwResponseError; + var instance; + var promise = new Promise((resolve, reject) => { + instance = request(options, (err, message, body) => { + if (!err) { + var response = new Response(instance, message, body); + if (message.statusCode < 400 || !throwEnabled) + resolve(response); + else + reject(new ResponseError(response)); + } + else { + reject(new RequestError(err, instance)); + } + }); + }); + instance.options = options; + instance.response = promise; + return instance; +} +exports.create = create; +function stream(uri, options, content) { + options = Object.assign({}, options, { uri: uri }); + if (options.jar === true) + options.jar = request.jar(); + if (content !== undefined) + options.body = content; + var instance = request(options); + instance.options = options; + instance.response = new Promise((resolve, reject) => instance + .on('complete', message => { + var response = new Response(instance, message, null); + if (message.statusCode < 400 || !exports.throwResponseError) + resolve(response); + else + reject(new ResponseError(response)); + }) + .on('error', err => reject(new RequestError(err, instance)))); + return instance; +} +exports.stream = stream; +function defaults(options) { + if (options.throwResponseError !== undefined) + exports.throwResponseError = options.throwResponseError; + request.defaults(options); +} +exports.defaults = defaults; +function debug(value) { + if (value === undefined) + return request.debug; + else + request.debug = value; +} +exports.debug = debug; +class RequestError extends Error { + constructor(err, request) { + super(err.message); + this.request = request; + this.innerError = err; + } +} +exports.RequestError = RequestError; +class Response { + constructor(request, message, body) { + this.request = request; + this.message = message; + this.body = body; + } + get charset() { return parseContentType(this.message.headers['content-type']).charset; } + get content() { + return this.body; + } + get contentLength() { + if ('content-length' in this.message.headers) + return parseInt(this.message.headers['content-length']); + else if (typeof this.body === 'string') + return this.body.length; + } + get contentType() { return parseContentType(this.message.headers['content-type']).contentType; } + get cookies() { + if (typeof this.request.options.jar === 'object') { + var jar = this.request.options.jar; + return jar.getCookies(this.request.options.uri); + } + } + get headers() { return this.message.headers; } + get httpVersion() { return this.message.httpVersion; } + get lastModified() { return new Date(this.message.headers['last-modified']); } + get method() { return this.message.method || this.message.request.method; } + get server() { return this.message.headers['server']; } + get statusCode() { return this.message.statusCode; } + get statusMessage() { return this.message.statusMessage; } + get uri() { return this.message.request.uri; } +} +exports.Response = Response; +class ResponseError extends Error { + constructor(response) { + super(response.statusMessage); + this.response = response; + this.statusCode = response.statusCode; + } +} +exports.ResponseError = ResponseError; +function parseKeyValue(text) { + var i = text.indexOf('='); + return { + key: i > 0 ? text.substring(0, i) : text, + value: i > 0 ? text.substring(i + 1) : null + }; +} +function parseContentType(text) { + var list = text ? text.split('; ') : []; + var tuple1 = list.length > 0 ? parseKeyValue(list[0]) : null; + var tuple2 = list.length > 1 ? parseKeyValue(list[1]) : null; + return { + contentType: tuple1 ? tuple1.key : null, + charset: tuple2 && tuple2.key.toLowerCase() === 'charset' ? tuple2.value : null + }; +} +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map new file mode 100644 index 0000000..c4cd98a --- /dev/null +++ b/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/main.d.ts b/dist/main.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/dist/main.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/dist/main.js b/dist/main.js new file mode 100644 index 0000000..1b2ebd0 --- /dev/null +++ b/dist/main.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const WebRequest = require("./index"); +(async function () { + var result = await WebRequest.get('http://www.google.com/'); + console.log(result.content); + process.exit(); +})(); +//# sourceMappingURL=main.js.map \ No newline at end of file diff --git a/dist/main.js.map b/dist/main.js.map new file mode 100644 index 0000000..ce3b453 --- /dev/null +++ b/dist/main.js.map @@ -0,0 +1 @@ +{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;AAKA,sCAAsC;AAEtC,CAAC,KAAK;IACF,IAAI,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5B,OAAO,CAAC,IAAI,EAAE,CAAC;AACnB,CAAC,CAAC,EAAE,CAAC"} \ No newline at end of file diff --git a/dist/test.d.ts b/dist/test.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/dist/test.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/dist/test.js b/dist/test.js new file mode 100644 index 0000000..de3b660 --- /dev/null +++ b/dist/test.js @@ -0,0 +1,72 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const fs = require("fs"); +const chai_1 = require("chai"); +const WebRequest = require("./index"); +describe('all', function () { + it('get', async function () { + var response = await WebRequest.get('http://www.google.com/'); + chai_1.assert(response.contentType === 'text/html', 'contentType'); + chai_1.assert(response.charset === 'ISO-8859-1', 'charset'); + chai_1.assert(response.statusCode === 200, 'statusCode'); + chai_1.assert(response.statusMessage === 'OK', 'statusMessage'); + chai_1.assert(response.method === 'GET', 'method'); + chai_1.assert(response.headers['content-type'] === 'text/html; charset=ISO-8859-1', 'headers'); + chai_1.assert(response.uri.protocol === 'http:', 'uri.protocol'); + chai_1.assert(response.uri.host === 'www.google.com', 'uri.host'); + chai_1.assert(response.uri.path === '/', 'uri.path'); + chai_1.assert(response.contentLength > 1000, 'contentLength'); + chai_1.assert(response.content.indexOf('') === 0, 'content'); + }); + it('404', async function () { + var response = await WebRequest.get('http://www.google.com/invalid'); + chai_1.assert(response.statusCode === 404); + }); + it('error', async function () { + try { + var response = await WebRequest.get(''); + chai_1.assert(false, 'Expected exception did not occur'); + } + catch (err) { + chai_1.assert(err instanceof WebRequest.RequestError, 'instanceof'); + chai_1.assert(err.message === 'options.uri is a required argument', 'message'); + } + }); + it('json1', async function () { + var result = await WebRequest.json('http://query.yahooapis.com/v1/public/yql?q=select+*+from+yahoo.finance.quotes+where+symbol+IN+(%22YHOO%22,%22AAPL%22)&format=json&env=http://datatables.org/alltables.env'); + chai_1.assert(result.query.results.quote[0].Symbol === 'YHOO', 'YHOO'); + chai_1.assert(result.query.results.quote[1].Symbol === 'AAPL', 'AAPL'); + }); + it('json2', async function () { + var result = await WebRequest.json('http://query.yahooapis.com/v1/public/yql?q=select+*+from+yahoo.finance.quotes+where+symbol+IN+(%22YHOO%22,%22AAPL%22)&format=json&env=http://datatables.org/alltables.env'); + chai_1.assert(result.query.results.quote[0].Symbol === 'YHOO', 'YHOO'); + chai_1.assert(result.query.results.quote[1].Symbol === 'AAPL', 'AAPL'); + }); + it('cookies', async function () { + var response = await WebRequest.get('http://www.google.com/', { jar: true }); + chai_1.assert(response.cookies.length > 0, response.cookies.length.toString() + ' cookies'); + }); + it('stream', async function () { + var file = 'google.png'; + var request = WebRequest.stream('https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png'); + var w = fs.createWriteStream(file); + request.pipe(w); + var response = await request.response; + await new Promise(resolve => w.on('finish', () => resolve())); + var stat = fs.statSync(file); + chai_1.assert(stat.size > 10000, 'file-size'); + chai_1.assert(response.content === null, 'null content'); + fs.unlinkSync(file); + }); + it('throwResponseError', async function () { + try { + await WebRequest.get('http://xyzzy.com/123', { throwResponseError: true }); + chai_1.assert(false, 'Expected exception did not occur'); + } + catch (err) { + chai_1.assert(err instanceof WebRequest.ResponseError, 'instanceof'); + chai_1.assert(err.response.statusCode === 404, 'statusCode'); + } + }); +}); +//# sourceMappingURL=test.js.map \ No newline at end of file diff --git a/dist/test.js.map b/dist/test.js.map new file mode 100644 index 0000000..1881592 --- /dev/null +++ b/dist/test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":";;AAGA,yBAAyB;AAEzB,+BAA4B;AAC5B,sCAAsC;AAEtC,QAAQ,CAAC,KAAK,EAAE;IAEZ,EAAE,CAAC,KAAK,EAAE,KAAK;QACX,IAAI,QAAQ,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QAC9D,aAAM,CAAC,QAAQ,CAAC,WAAW,KAAK,WAAW,EAAE,aAAa,CAAC,CAAC;QAC5D,aAAM,CAAC,QAAQ,CAAC,OAAO,KAAK,YAAY,EAAE,SAAS,CAAC,CAAC;QACrD,aAAM,CAAC,QAAQ,CAAC,UAAU,KAAK,GAAG,EAAE,YAAY,CAAC,CAAC;QAClD,aAAM,CAAC,QAAQ,CAAC,aAAa,KAAK,IAAI,EAAE,eAAe,CAAC,CAAC;QACzD,aAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC5C,aAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,+BAA+B,EAAE,SAAS,CAAC,CAAC;QACxF,aAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,cAAc,CAAC,CAAC;QAC1D,aAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,gBAAgB,EAAE,UAAU,CAAC,CAAC;QAC3D,aAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,UAAU,CAAC,CAAC;QAC9C,aAAM,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,EAAE,eAAe,CAAC,CAAC;QACvD,aAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,KAAK,EAAE,KAAK;QACX,IAAI,QAAQ,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QACrE,aAAM,CAAC,QAAQ,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,OAAO,EAAE,KAAK;QACb,IAAI;YACA,IAAI,QAAQ,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxC,aAAM,CAAC,KAAK,EAAE,kCAAkC,CAAC,CAAC;SACrD;QACD,OAAO,GAAG,EAAE;YACR,aAAM,CAAC,GAAG,YAAY,UAAU,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;YAC7D,aAAM,CAAC,GAAG,CAAC,OAAO,KAAK,oCAAoC,EAAE,SAAS,CAAC,CAAC;SAC3E;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,OAAO,EAAE,KAAK;QACb,IAAI,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAM,2KAA2K,CAAC,CAAC;QACrN,aAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE,MAAM,CAAC,CAAC;QAChE,aAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE,MAAM,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,OAAO,EAAE,KAAK;QAcb,IAAI,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAc,2KAA2K,CAAC,CAAC;QAC7N,aAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE,MAAM,CAAC,CAAC;QAChE,aAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE,MAAM,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,SAAS,EAAE,KAAK;QACf,IAAI,QAAQ,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,wBAAwB,EAAE,EAAC,GAAG,EAAE,IAAI,EAAC,CAAC,CAAC;QAC3E,aAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,UAAU,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,QAAQ,EAAE,KAAK;QACd,IAAI,IAAI,GAAG,YAAY,CAAC;QACxB,IAAI,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,oFAAoF,CAAC,CAAC;QACtH,IAAI,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,IAAI,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC;QACtC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC9D,IAAI,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7B,aAAM,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,EAAE,WAAW,CAAC,CAAC;QACvC,aAAM,CAAC,QAAQ,CAAC,OAAO,KAAK,IAAI,EAAE,cAAc,CAAC,CAAC;QAClD,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,KAAK;QAC1B,IAAI;YACA,MAAM,UAAU,CAAC,GAAG,CAAC,sBAAsB,EAAE,EAAC,kBAAkB,EAAE,IAAI,EAAC,CAAC,CAAC;YACzE,aAAM,CAAC,KAAK,EAAE,kCAAkC,CAAC,CAAC;SACrD;QACD,OAAO,GAAG,EAAE;YACR,aAAM,CAAC,GAAG,YAAY,UAAU,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;YAC9D,aAAM,CAAoC,GAAI,CAAC,QAAQ,CAAC,UAAU,KAAK,GAAG,EAAE,YAAY,CAAC,CAAC;SAC7F;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..5b245cf --- /dev/null +++ b/package-lock.json @@ -0,0 +1,567 @@ +{ + "name": "web-request", + "version": "1.1.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/caseless": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.1.tgz", + "integrity": "sha512-FhlMa34NHp9K5MY1Uz8yb+ZvuX0pnvn3jScRSNAb75KHGB8d3rEU6hqMs3Z2vjuytcMfRg6c5CHMc3wtYyD2/A==", + "dev": true + }, + "@types/chai": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.1.4.tgz", + "integrity": "sha512-h6+VEw2Vr3ORiFCyyJmcho2zALnUq9cvdB/IO8Xs9itrJVCenC7o26A6+m7D0ihTTr65eS259H5/Ghl/VjYs6g==", + "dev": true + }, + "@types/form-data": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz", + "integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/mocha": { + "version": "2.2.48", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.48.tgz", + "integrity": "sha512-nlK/iyETgafGli8Zh9zJVCTicvU3iajSkRwOh3Hhiva598CMqNJ4NcVCGMTGKpGpTYj/9R8RLzS9NAykSSCqGw==", + "dev": true + }, + "@types/node": { + "version": "13.7.0", + "resolved": "https://nexus.tundra-shared.com/repository/npm-group/@types/node/-/node-13.7.0.tgz", + "integrity": "sha512-GnZbirvmqZUzMgkFn70c74OQpTTUcCzlhQliTzYjQMqg+hVKcDnxdL19Ne3UdYzdMA/+W3eb646FWn/ZaT1NfQ==", + "dev": true + }, + "@types/request": { + "version": "2.47.1", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.47.1.tgz", + "integrity": "sha512-TV3XLvDjQbIeVxJ1Z3oCTDk/KuYwwcNKVwz2YaT0F5u86Prgc4syDAp6P96rkTQQ4bIdh+VswQIC9zS6NjY7/g==", + "dev": true, + "requires": { + "@types/caseless": "*", + "@types/form-data": "*", + "@types/node": "*", + "@types/tough-cookie": "*" + } + }, + "@types/tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha512-MDQLxNFRLasqS4UlkWMSACMKeSm1x4Q3TxzUC7KQUsh6RK1ZrQ0VEyE3yzXcBu+K8ejVj4wuX32eUG02yNp+YQ==", + "dev": true + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", + "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==" + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "chai": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", + "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", + "dev": true, + "requires": { + "assertion-error": "^1.0.1", + "deep-eql": "^0.1.3", + "type-detect": "^1.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz", + "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "deep-eql": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", + "dev": true, + "requires": { + "type-detect": "0.1.1" + }, + "dependencies": { + "type-detect": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", + "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "diff": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", + "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "optional": true, + "requires": { + "jsbn": "~0.1.0" + } + }, + "escape-string-regexp": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz", + "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=", + "dev": true + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", + "dev": true, + "requires": { + "inherits": "2", + "minimatch": "0.3" + } + }, + "growl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "requires": { + "ajv": "^5.1.0", + "har-schema": "^2.0.0" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jade": { + "version": "0.26.3", + "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=", + "dev": true, + "requires": { + "commander": "0.6.1", + "mkdirp": "0.3.0" + }, + "dependencies": { + "commander": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", + "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=", + "dev": true + }, + "mkdirp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=", + "dev": true + } + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "dev": true + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "requires": { + "mime-db": "~1.33.0" + } + }, + "minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", + "dev": true, + "requires": { + "lru-cache": "2", + "sigmund": "~1.0.0" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-2.5.3.tgz", + "integrity": "sha1-FhvlvetJZ3HrmzV0UFC2IrWu/Fg=", + "dev": true, + "requires": { + "commander": "2.3.0", + "debug": "2.2.0", + "diff": "1.4.0", + "escape-string-regexp": "1.0.2", + "glob": "3.2.11", + "growl": "1.9.2", + "jade": "0.26.3", + "mkdirp": "0.5.1", + "supports-color": "1.2.0", + "to-iso-string": "0.0.2" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "request": { + "version": "2.87.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", + "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, + "sshpk": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", + "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "supports-color": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz", + "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=", + "dev": true + }, + "to-iso-string": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz", + "integrity": "sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=", + "dev": true + }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "requires": { + "punycode": "^1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "type-detect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", + "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", + "dev": true + }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + } + } +} diff --git a/package.json b/package.json index a3694f8..c7ad6f6 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,17 @@ { "name": "web-request", - "version": "1.0.8", + "version": "1.1.4", "description": "Simplifies making web requests with TypeScript async/await", - "main": "index.js", + "main": "dist/index.js", + "types": "dist/index.d.ts", "scripts": { - "test": "mocha" + "prepublish": "npm run build", + "test": "mocha", + "build": "tsc" }, "repository": { "type": "git", - "url": "git+https://github.com/davetemplin/web-request.git" + "url": "git+https://github.com/mbharanya/web-request.git" }, "keywords": [ "async", @@ -37,11 +40,14 @@ "@types/chai": "^4.0.3", "@types/mocha": "^2.2.41", "chai": "^3.4.1", - "mocha": "^2.3.4" + "mocha": "^2.3.4", + "@types/node": "^13.7.0", + "@types/request": "^2.0.1" }, "dependencies": { - "@types/node": "^8.0.22", - "@types/request": "^2.0.1", "request": "^2.69.0" - } + }, + "files": [ + "dist" + ] } diff --git a/index.ts b/src/index.ts similarity index 99% rename from index.ts rename to src/index.ts index 16f1be6..c437e0d 100644 --- a/index.ts +++ b/src/index.ts @@ -248,6 +248,7 @@ export interface RequestOptions { useQuerystring?: boolean; uri?: string; // extension throwResponseError?: boolean; // extension + family?:number; } export class RequestError extends Error { diff --git a/main.ts b/src/main.ts similarity index 100% rename from main.ts rename to src/main.ts diff --git a/test.ts b/src/test.ts similarity index 100% rename from test.ts rename to src/test.ts diff --git a/tsconfig.json b/tsconfig.json index d2d485e..8fdf560 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,17 +6,12 @@ "preserveConstEnums": false, "sourceMap": true, "declaration": true, - "target": "es5", - "lib": ["es6", "es2015"] + "target": "es2018", + "lib": ["ES2018","esnext.asynciterable" ], + "outDir": "dist", + "rootDir": "./src", }, - "files": [ - "node_modules/@types/chai/index.d.ts", - "node_modules/@types/form-data/index.d.ts", - "node_modules/@types/mocha/index.d.ts", - "node_modules/@types/node/index.d.ts", - "node_modules/@types/request/index.d.ts", - "index.ts", - "main.ts", - "test.ts" + "include": [ + "src/**/*" ] } \ No newline at end of file