Template Upload
This commit is contained in:
30
node_modules/popsicle/dist/base.d.ts
generated
vendored
Normal file
30
node_modules/popsicle/dist/base.d.ts
generated
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
import { Url } from 'url';
|
||||
export interface Query {
|
||||
[key: string]: string | string[];
|
||||
}
|
||||
export interface Headers {
|
||||
[name: string]: string | string[];
|
||||
}
|
||||
export declare type RawHeaders = string[];
|
||||
export interface BaseOptions {
|
||||
url?: string;
|
||||
query?: string | Query;
|
||||
headers?: Headers;
|
||||
rawHeaders?: RawHeaders;
|
||||
}
|
||||
export default class Base {
|
||||
Url: Url;
|
||||
rawHeaders: RawHeaders;
|
||||
constructor({url, headers, rawHeaders, query}: BaseOptions);
|
||||
url: string;
|
||||
query: string | Query;
|
||||
headers: Headers;
|
||||
toHeaders(): Headers;
|
||||
set(name: string, value: string | string[]): Base;
|
||||
append(name: string, value: string | string[]): this;
|
||||
name(name: string): string;
|
||||
get(name: string): string;
|
||||
remove(name: string): this;
|
||||
type(): string;
|
||||
type(value: string): Base;
|
||||
}
|
150
node_modules/popsicle/dist/base.js
generated
vendored
Normal file
150
node_modules/popsicle/dist/base.js
generated
vendored
Normal file
@ -0,0 +1,150 @@
|
||||
var url_1 = require('url');
|
||||
var querystring_1 = require('querystring');
|
||||
var extend = require('xtend');
|
||||
function lowerHeader(key) {
|
||||
var lower = key.toLowerCase();
|
||||
if (lower === 'referrer') {
|
||||
return 'referer';
|
||||
}
|
||||
return lower;
|
||||
}
|
||||
function type(str) {
|
||||
return str == null ? null : str.split(/ *; */)[0];
|
||||
}
|
||||
function concat(a, b) {
|
||||
if (a == null) {
|
||||
return b;
|
||||
}
|
||||
return Array.isArray(a) ? a.concat(b) : [a, b];
|
||||
}
|
||||
var Base = (function () {
|
||||
function Base(_a) {
|
||||
var url = _a.url, headers = _a.headers, rawHeaders = _a.rawHeaders, query = _a.query;
|
||||
this.Url = {};
|
||||
this.rawHeaders = [];
|
||||
if (url != null) {
|
||||
this.url = url;
|
||||
}
|
||||
if (query != null) {
|
||||
this.query = extend(this.query, typeof query === 'string' ? querystring_1.parse(query) : query);
|
||||
}
|
||||
if (rawHeaders) {
|
||||
if (rawHeaders.length % 2 === 1) {
|
||||
throw new TypeError("Expected raw headers length to be even, was " + rawHeaders.length);
|
||||
}
|
||||
this.rawHeaders = rawHeaders.slice(0);
|
||||
}
|
||||
else {
|
||||
this.headers = headers;
|
||||
}
|
||||
}
|
||||
Object.defineProperty(Base.prototype, "url", {
|
||||
get: function () {
|
||||
return url_1.format(this.Url);
|
||||
},
|
||||
set: function (url) {
|
||||
this.Url = url_1.parse(url, true, true);
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(Base.prototype, "query", {
|
||||
get: function () {
|
||||
return this.Url.query;
|
||||
},
|
||||
set: function (query) {
|
||||
this.Url.query = typeof query === 'string' ? querystring_1.parse(query) : query;
|
||||
this.Url.search = null;
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(Base.prototype, "headers", {
|
||||
get: function () {
|
||||
var headers = {};
|
||||
for (var i = 0; i < this.rawHeaders.length; i += 2) {
|
||||
var key = lowerHeader(this.rawHeaders[i]);
|
||||
var value = concat(headers[key], this.rawHeaders[i + 1]);
|
||||
headers[key] = value;
|
||||
}
|
||||
return headers;
|
||||
},
|
||||
set: function (headers) {
|
||||
this.rawHeaders = [];
|
||||
if (headers) {
|
||||
for (var _i = 0, _a = Object.keys(headers); _i < _a.length; _i++) {
|
||||
var key = _a[_i];
|
||||
this.append(key, headers[key]);
|
||||
}
|
||||
}
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Base.prototype.toHeaders = function () {
|
||||
var headers = {};
|
||||
for (var i = 0; i < this.rawHeaders.length; i += 2) {
|
||||
var key = this.rawHeaders[i];
|
||||
var value = concat(headers[key], this.rawHeaders[i + 1]);
|
||||
headers[key] = value;
|
||||
}
|
||||
return headers;
|
||||
};
|
||||
Base.prototype.set = function (name, value) {
|
||||
this.remove(name);
|
||||
this.append(name, value);
|
||||
return this;
|
||||
};
|
||||
Base.prototype.append = function (name, value) {
|
||||
if (Array.isArray(value)) {
|
||||
for (var _i = 0; _i < value.length; _i++) {
|
||||
var v = value[_i];
|
||||
this.rawHeaders.push(name, v);
|
||||
}
|
||||
}
|
||||
else {
|
||||
this.rawHeaders.push(name, value);
|
||||
}
|
||||
return this;
|
||||
};
|
||||
Base.prototype.name = function (name) {
|
||||
var lowered = lowerHeader(name);
|
||||
var headerName;
|
||||
for (var i = 0; i < this.rawHeaders.length; i += 2) {
|
||||
if (lowerHeader(this.rawHeaders[i]) === lowered) {
|
||||
headerName = this.rawHeaders[i];
|
||||
}
|
||||
}
|
||||
return headerName;
|
||||
};
|
||||
Base.prototype.get = function (name) {
|
||||
var lowered = lowerHeader(name);
|
||||
var value;
|
||||
for (var i = 0; i < this.rawHeaders.length; i += 2) {
|
||||
if (lowerHeader(this.rawHeaders[i]) === lowered) {
|
||||
value = value == null ? this.rawHeaders[i + 1] : value + ", " + this.rawHeaders[i + 1];
|
||||
}
|
||||
}
|
||||
return value;
|
||||
};
|
||||
Base.prototype.remove = function (name) {
|
||||
var lowered = lowerHeader(name);
|
||||
var len = this.rawHeaders.length;
|
||||
while ((len -= 2) >= 0) {
|
||||
if (lowerHeader(this.rawHeaders[len]) === lowered) {
|
||||
this.rawHeaders.splice(len, 2);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
};
|
||||
Base.prototype.type = function (value) {
|
||||
if (arguments.length === 0) {
|
||||
return type(this.get('Content-Type'));
|
||||
}
|
||||
return this.set('Content-Type', value);
|
||||
};
|
||||
return Base;
|
||||
})();
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.default = Base;
|
||||
//# sourceMappingURL=base.js.map
|
1
node_modules/popsicle/dist/base.js.map
generated
vendored
Normal file
1
node_modules/popsicle/dist/base.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
6
node_modules/popsicle/dist/browser.d.ts
generated
vendored
Normal file
6
node_modules/popsicle/dist/browser.d.ts
generated
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
import Promise = require('any-promise');
|
||||
import Request from './request';
|
||||
import { defaults as use } from './plugins/index';
|
||||
export { open, abort, use };
|
||||
declare function open(request: Request): Promise<{}>;
|
||||
declare function abort(request: Request): void;
|
87
node_modules/popsicle/dist/browser.js
generated
vendored
Normal file
87
node_modules/popsicle/dist/browser.js
generated
vendored
Normal file
@ -0,0 +1,87 @@
|
||||
var Promise = require('any-promise');
|
||||
var index_1 = require('./plugins/index');
|
||||
exports.use = index_1.defaults;
|
||||
function open(request) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
var url = request.url, method = request.method;
|
||||
var responseType = request.options.responseType;
|
||||
if (window.location.protocol === 'https:' && /^http\:/.test(url)) {
|
||||
return reject(request.error("The request to \"" + url + "\" was blocked", 'EBLOCKED'));
|
||||
}
|
||||
var xhr = request.raw = new XMLHttpRequest();
|
||||
xhr.onload = function () {
|
||||
return resolve({
|
||||
status: xhr.status === 1223 ? 204 : xhr.status,
|
||||
statusText: xhr.statusText,
|
||||
rawHeaders: parseToRawHeaders(xhr.getAllResponseHeaders()),
|
||||
body: responseType ? xhr.response : xhr.responseText,
|
||||
url: xhr.responseURL
|
||||
});
|
||||
};
|
||||
xhr.onabort = function () {
|
||||
return reject(request.error('Request aborted', 'EABORT'));
|
||||
};
|
||||
xhr.onerror = function () {
|
||||
return reject(request.error("Unable to connect to \"" + request.url + "\"", 'EUNAVAILABLE'));
|
||||
};
|
||||
xhr.onprogress = function (e) {
|
||||
if (e.lengthComputable) {
|
||||
request.downloadLength = e.total;
|
||||
}
|
||||
request.downloadedBytes = e.loaded;
|
||||
};
|
||||
if (method === 'GET' || method === 'HEAD' || !xhr.upload) {
|
||||
request.uploadLength = 0;
|
||||
request.uploadedBytes = 0;
|
||||
}
|
||||
else {
|
||||
xhr.upload.onprogress = function (e) {
|
||||
if (e.lengthComputable) {
|
||||
request.uploadLength = e.total;
|
||||
}
|
||||
request.uploadedBytes = e.loaded;
|
||||
};
|
||||
}
|
||||
try {
|
||||
xhr.open(method, url);
|
||||
}
|
||||
catch (e) {
|
||||
return reject(request.error("Refused to connect to \"" + url + "\"", 'ECSP', e));
|
||||
}
|
||||
if (request.options.withCredentials) {
|
||||
xhr.withCredentials = true;
|
||||
}
|
||||
if (responseType) {
|
||||
try {
|
||||
xhr.responseType = responseType;
|
||||
}
|
||||
finally {
|
||||
if (xhr.responseType !== responseType) {
|
||||
throw request.error("Unsupported response type: " + responseType, 'ERESPONSETYPE');
|
||||
}
|
||||
}
|
||||
}
|
||||
for (var i = 0; i < request.rawHeaders.length; i += 2) {
|
||||
xhr.setRequestHeader(request.rawHeaders[i], request.rawHeaders[i + 1]);
|
||||
}
|
||||
xhr.send(request.body);
|
||||
});
|
||||
}
|
||||
exports.open = open;
|
||||
function abort(request) {
|
||||
request.raw.abort();
|
||||
}
|
||||
exports.abort = abort;
|
||||
function parseToRawHeaders(headers) {
|
||||
var rawHeaders = [];
|
||||
var lines = headers.replace(/\r?\n$/, '').split(/\r?\n/);
|
||||
for (var _i = 0; _i < lines.length; _i++) {
|
||||
var header = lines[_i];
|
||||
var indexOf = header.indexOf(':');
|
||||
var name_1 = header.substr(0, indexOf).trim();
|
||||
var value = header.substr(indexOf + 1).trim();
|
||||
rawHeaders.push(name_1, value);
|
||||
}
|
||||
return rawHeaders;
|
||||
}
|
||||
//# sourceMappingURL=browser.js.map
|
1
node_modules/popsicle/dist/browser.js.map
generated
vendored
Normal file
1
node_modules/popsicle/dist/browser.js.map
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../lib/browser.ts"],"names":["open","abort","parseToRawHeaders"],"mappings":"AAAA,IAAO,OAAO,WAAW,aAAa,CAAC,CAAA;AAIvC,sBAAgC,iBAKhC,CAAC,CALgD;AAK3B,WAAG;AAEzB,cAAe,OAAgB;IAC7BA,MAAMA,CAACA,IAAIA,OAAOA,CAACA,UAAUA,OAAOA,EAAEA,MAAMA;QAC1C,IAAQ,GAAG,GAAa,OAAO,MAAlB,MAAM,GAAK,OAAO,OAAA,CAAA;QAC/B,IAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAA;QAGjD,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,sBAAmB,GAAG,mBAAe,EAAE,UAAU,CAAC,CAAC,CAAA;QACjF,CAAC;QAED,IAAM,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,cAAc,EAAE,CAAA;QAE9C,GAAG,CAAC,MAAM,GAAG;YACX,MAAM,CAAC,OAAO,CAAC;gBACb,MAAM,EAAE,GAAG,CAAC,MAAM,KAAK,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM;gBAC9C,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,UAAU,EAAE,iBAAiB,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;gBAC1D,IAAI,EAAE,YAAY,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,YAAY;gBACpD,GAAG,EAAE,GAAG,CAAC,WAAW;aACrB,CAAC,CAAA;QACJ,CAAC,CAAA;QAED,GAAG,CAAC,OAAO,GAAG;YACZ,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC,CAAA;QAC3D,CAAC,CAAA;QAED,GAAG,CAAC,OAAO,GAAG;YACZ,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,4BAAyB,OAAO,CAAC,GAAG,OAAG,EAAE,cAAc,CAAC,CAAC,CAAA;QACvF,CAAC,CAAA;QAGD,GAAG,CAAC,UAAU,GAAG,UAAU,CAAgB;YACzC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBACvB,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC,KAAK,CAAA;YAClC,CAAC;YAED,OAAO,CAAC,eAAe,GAAG,CAAC,CAAC,MAAM,CAAA;QACpC,CAAC,CAAA;QAGD,EAAE,CAAC,CAAC,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YACzD,OAAO,CAAC,YAAY,GAAG,CAAC,CAAA;YACxB,OAAO,CAAC,aAAa,GAAG,CAAC,CAAA;QAC3B,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,UAAU,CAAgB;gBAChD,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBACvB,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC,KAAK,CAAA;gBAChC,CAAC;gBAED,OAAO,CAAC,aAAa,GAAG,CAAC,CAAC,MAAM,CAAA;YAClC,CAAC,CAAA;QACH,CAAC;QAGD,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QACvB,CAAE;QAAA,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACX,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,6BAA0B,GAAG,OAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAA;QAC3E,CAAC;QAGD,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;YACpC,GAAG,CAAC,eAAe,GAAG,IAAI,CAAA;QAC5B,CAAC;QAED,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC;gBACH,GAAG,CAAC,YAAY,GAAG,YAAY,CAAA;YACjC,CAAC;oBAAS,CAAC;gBACT,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,KAAK,YAAY,CAAC,CAAC,CAAC;oBACtC,MAAM,OAAO,CAAC,KAAK,CAAC,gCAA8B,YAAc,EAAE,eAAe,CAAC,CAAA;gBACpF,CAAC;YACH,CAAC;QACH,CAAC;QAED,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACtD,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACxE,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC,CAACA,CAAAA;AACJA,CAACA;AAnFQ,YAAI,QAmFZ;AAKD,eAAgB,OAAgB;IAC9BC,OAAOA,CAACA,GAAGA,CAACA,KAAKA,EAAEA,CAAAA;AACrBA,CAACA;AA1Fc,aAAK,SA0FnB;AAKD,2BAA4B,OAAe;IACzCC,IAAMA,UAAUA,GAAeA,EAAEA,CAAAA;IACjCA,IAAMA,KAAKA,GAAGA,OAAOA,CAACA,OAAOA,CAACA,QAAQA,EAAEA,EAAEA,CAACA,CAACA,KAAKA,CAACA,OAAOA,CAACA,CAAAA;IAE1DA,GAAGA,CAACA,CAAiBA,UAAKA,EAArBA,iBAAYA,EAAZA,IAAqBA,CAACA;QAAtBA,IAAMA,MAAMA,GAAIA,KAAKA,IAATA;QACfA,IAAMA,OAAOA,GAAGA,MAAMA,CAACA,OAAOA,CAACA,GAAGA,CAACA,CAAAA;QACnCA,IAAMA,MAAIA,GAAGA,MAAMA,CAACA,MAAMA,CAACA,CAACA,EAAEA,OAAOA,CAACA,CAACA,IAAIA,EAAEA,CAAAA;QAC7CA,IAAMA,KAAKA,GAAGA,MAAMA,CAACA,MAAMA,CAACA,OAAOA,GAAGA,CAACA,CAACA,CAACA,IAAIA,EAAEA,CAAAA;QAE/CA,UAAUA,CAACA,IAAIA,CAACA,MAAIA,EAAEA,KAAKA,CAACA,CAAAA;KAC7BA;IAEDA,MAAMA,CAACA,UAAUA,CAAAA;AACnBA,CAACA"}
|
1
node_modules/popsicle/dist/browser/form-data.d.ts
generated
vendored
Normal file
1
node_modules/popsicle/dist/browser/form-data.d.ts
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
export = FormData;
|
2
node_modules/popsicle/dist/browser/form-data.js
generated
vendored
Normal file
2
node_modules/popsicle/dist/browser/form-data.js
generated
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
module.exports = FormData;
|
||||
//# sourceMappingURL=form-data.js.map
|
1
node_modules/popsicle/dist/browser/form-data.js.map
generated
vendored
Normal file
1
node_modules/popsicle/dist/browser/form-data.js.map
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"file":"form-data.js","sourceRoot":"","sources":["../../lib/browser/form-data.ts"],"names":[],"mappings":"AAAA,iBAAS,QAAQ,CAAA"}
|
3
node_modules/popsicle/dist/browser/tough-cookie.d.ts
generated
vendored
Normal file
3
node_modules/popsicle/dist/browser/tough-cookie.d.ts
generated
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
export declare class CookieJar {
|
||||
constructor();
|
||||
}
|
8
node_modules/popsicle/dist/browser/tough-cookie.js
generated
vendored
Normal file
8
node_modules/popsicle/dist/browser/tough-cookie.js
generated
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
var CookieJar = (function () {
|
||||
function CookieJar() {
|
||||
throw new TypeError('Cookie jars are only available on node');
|
||||
}
|
||||
return CookieJar;
|
||||
})();
|
||||
exports.CookieJar = CookieJar;
|
||||
//# sourceMappingURL=tough-cookie.js.map
|
1
node_modules/popsicle/dist/browser/tough-cookie.js.map
generated
vendored
Normal file
1
node_modules/popsicle/dist/browser/tough-cookie.js.map
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"file":"tough-cookie.js","sourceRoot":"","sources":["../../lib/browser/tough-cookie.ts"],"names":["CookieJar","CookieJar.constructor"],"mappings":"AAAA;IACEA;QACEC,MAAMA,IAAIA,SAASA,CAACA,wCAAwCA,CAACA,CAAAA;IAC/DA,CAACA;IACHD,gBAACA;AAADA,CAACA,AAJD,IAIC;AAJY,iBAAS,YAIrB,CAAA"}
|
18
node_modules/popsicle/dist/common.d.ts
generated
vendored
Normal file
18
node_modules/popsicle/dist/common.d.ts
generated
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
import Request, { RequestOptions, DefaultsOptions } from './request';
|
||||
import Response from './response';
|
||||
import * as plugins from './plugins/index';
|
||||
import form from './form';
|
||||
import jar from './jar';
|
||||
import PopsicleError from './error';
|
||||
import * as transport from './index';
|
||||
export declare function defaults(defaultsOptions: DefaultsOptions): (options: RequestOptions | string) => Request;
|
||||
export declare const browser: boolean;
|
||||
export declare const request: (options: RequestOptions | string) => Request;
|
||||
export declare const get: (options: RequestOptions | string) => Request;
|
||||
export declare const post: (options: RequestOptions | string) => Request;
|
||||
export declare const put: (options: RequestOptions | string) => Request;
|
||||
export declare const patch: (options: RequestOptions | string) => Request;
|
||||
export declare const del: (options: RequestOptions | string) => Request;
|
||||
export declare const head: (options: RequestOptions | string) => Request;
|
||||
export { Request, Response, PopsicleError, plugins, form, jar, transport };
|
||||
export default request;
|
43
node_modules/popsicle/dist/common.js
generated
vendored
Normal file
43
node_modules/popsicle/dist/common.js
generated
vendored
Normal file
@ -0,0 +1,43 @@
|
||||
var extend = require('xtend');
|
||||
var request_1 = require('./request');
|
||||
exports.Request = request_1.default;
|
||||
var response_1 = require('./response');
|
||||
exports.Response = response_1.default;
|
||||
var plugins = require('./plugins/index');
|
||||
exports.plugins = plugins;
|
||||
var form_1 = require('./form');
|
||||
exports.form = form_1.default;
|
||||
var jar_1 = require('./jar');
|
||||
exports.jar = jar_1.default;
|
||||
var error_1 = require('./error');
|
||||
exports.PopsicleError = error_1.default;
|
||||
var transport = require('./index');
|
||||
exports.transport = transport;
|
||||
function defaults(defaultsOptions) {
|
||||
var defaults = extend({ transport: transport }, defaultsOptions);
|
||||
return function popsicle(options) {
|
||||
var opts;
|
||||
if (typeof options === 'string') {
|
||||
opts = extend(defaults, { url: options });
|
||||
}
|
||||
else {
|
||||
opts = extend(defaults, options);
|
||||
}
|
||||
if (typeof opts.url !== 'string') {
|
||||
throw new TypeError('The URL must be a string');
|
||||
}
|
||||
return new request_1.default(opts);
|
||||
};
|
||||
}
|
||||
exports.defaults = defaults;
|
||||
exports.browser = !!process.browser;
|
||||
exports.request = defaults({});
|
||||
exports.get = defaults({ method: 'get' });
|
||||
exports.post = defaults({ method: 'post' });
|
||||
exports.put = defaults({ method: 'put' });
|
||||
exports.patch = defaults({ method: 'patch' });
|
||||
exports.del = defaults({ method: 'delete' });
|
||||
exports.head = defaults({ method: 'head' });
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.default = exports.request;
|
||||
//# sourceMappingURL=common.js.map
|
1
node_modules/popsicle/dist/common.js.map
generated
vendored
Normal file
1
node_modules/popsicle/dist/common.js.map
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"file":"common.js","sourceRoot":"","sources":["../lib/common.ts"],"names":["defaults","defaults.popsicle"],"mappings":"AAAA,IAAO,MAAM,WAAW,OAAO,CAAC,CAAA;AAChC,wBAAyD,WACzD,CAAC,CADmE;AAyC3D,eAAO;AAxChB,yBAAqB,YACrB,CAAC,CADgC;AAwCf,gBAAQ;AAvC1B,IAAY,OAAO,WAAM,iBACzB,CAAC,CADyC;AAuCC,eAAO;AAtClD,qBAAiB,QACjB,CAAC,CADwB;AAsC2B,YAAI;AArCxD,oBAAgB,OAChB,CAAC,CADsB;AAqCmC,WAAG;AApC7D,sBAA0B,SAC1B,CAAC,CADkC;AAoCP,qBAAa;AAnCzC,IAAY,SAAS,WAAM,SAK3B,CAAC,CALmC;AAmC2B,iBAAS;AA9BxE,kBAA0B,eAAgC;IACxDA,IAAMA,QAAQA,GAAGA,MAAMA,CAACA,EAAEA,WAAAA,SAASA,EAAEA,EAAEA,eAAeA,CAACA,CAAAA;IAEvDA,MAAMA,CAACA,kBAAmBA,OAAgCA;QACxDC,IAAIA,IAAoBA,CAAAA;QAExBA,EAAEA,CAACA,CAACA,OAAOA,OAAOA,KAAKA,QAAQA,CAACA,CAACA,CAACA;YAChCA,IAAIA,GAAGA,MAAMA,CAACA,QAAQA,EAAEA,EAAEA,GAAGA,EAAEA,OAAOA,EAAEA,CAACA,CAAAA;QAC3CA,CAACA;QAACA,IAAIA,CAACA,CAACA;YACNA,IAAIA,GAAGA,MAAMA,CAACA,QAAQA,EAAEA,OAAOA,CAACA,CAAAA;QAClCA,CAACA;QAEDA,EAAEA,CAACA,CAACA,OAAOA,IAAIA,CAACA,GAAGA,KAAKA,QAAQA,CAACA,CAACA,CAACA;YACjCA,MAAMA,IAAIA,SAASA,CAACA,0BAA0BA,CAACA,CAAAA;QACjDA,CAACA;QAEDA,MAAMA,CAACA,IAAIA,iBAAOA,CAACA,IAAIA,CAACA,CAAAA;IAC1BA,CAACA,CAAAD;AACHA,CAACA;AAlBe,gBAAQ,WAkBvB,CAAA;AAEY,eAAO,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAA;AAC3B,eAAO,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;AAEtB,WAAG,GAAG,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;AACjC,YAAI,GAAG,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;AACnC,WAAG,GAAG,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;AACjC,aAAK,GAAG,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;AACrC,WAAG,GAAG,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;AACpC,YAAI,GAAG,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;AAIhD;kBAAe,eAAO,CAAA"}
|
8
node_modules/popsicle/dist/error.d.ts
generated
vendored
Normal file
8
node_modules/popsicle/dist/error.d.ts
generated
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
import makeErrorCause = require('make-error-cause');
|
||||
import Request from './request';
|
||||
export default class PopsicleError extends makeErrorCause.BaseError {
|
||||
code: string;
|
||||
popsicle: Request;
|
||||
name: string;
|
||||
constructor(message: string, code: string, original: Error, popsicle: Request);
|
||||
}
|
19
node_modules/popsicle/dist/error.js
generated
vendored
Normal file
19
node_modules/popsicle/dist/error.js
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
var __extends = (this && this.__extends) || function (d, b) {
|
||||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
};
|
||||
var makeErrorCause = require('make-error-cause');
|
||||
var PopsicleError = (function (_super) {
|
||||
__extends(PopsicleError, _super);
|
||||
function PopsicleError(message, code, original, popsicle) {
|
||||
_super.call(this, message, original);
|
||||
this.name = 'PopsicleError';
|
||||
this.code = code;
|
||||
this.popsicle = popsicle;
|
||||
}
|
||||
return PopsicleError;
|
||||
})(makeErrorCause.BaseError);
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.default = PopsicleError;
|
||||
//# sourceMappingURL=error.js.map
|
1
node_modules/popsicle/dist/error.js.map
generated
vendored
Normal file
1
node_modules/popsicle/dist/error.js.map
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"file":"error.js","sourceRoot":"","sources":["../lib/error.ts"],"names":["PopsicleError","PopsicleError.constructor"],"mappings":";;;;;AAAA,IAAO,cAAc,WAAW,kBAAkB,CAAC,CAAA;AAGnD;IAA2CA,iCAAwBA;IAMjEA,uBAAaA,OAAeA,EAAEA,IAAYA,EAAEA,QAAeA,EAAEA,QAAiBA;QAC5EC,kBAAMA,OAAOA,EAAEA,QAAQA,CAACA,CAAAA;QAH1BA,SAAIA,GAAGA,eAAeA,CAAAA;QAKpBA,IAAIA,CAACA,IAAIA,GAAGA,IAAIA,CAAAA;QAChBA,IAAIA,CAACA,QAAQA,GAAGA,QAAQA,CAAAA;IAC1BA,CAACA;IAEHD,oBAACA;AAADA,CAACA,AAbD,EAA2C,cAAc,CAAC,SAAS,EAalE;AAbD;+BAaC,CAAA"}
|
2
node_modules/popsicle/dist/form.d.ts
generated
vendored
Normal file
2
node_modules/popsicle/dist/form.d.ts
generated
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
import FormData = require('form-data');
|
||||
export default function form(obj: any): FormData;
|
13
node_modules/popsicle/dist/form.js
generated
vendored
Normal file
13
node_modules/popsicle/dist/form.js
generated
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
var FormData = require('form-data');
|
||||
function form(obj) {
|
||||
var form = new FormData();
|
||||
if (obj) {
|
||||
Object.keys(obj).forEach(function (name) {
|
||||
form.append(name, obj[name]);
|
||||
});
|
||||
}
|
||||
return form;
|
||||
}
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.default = form;
|
||||
//# sourceMappingURL=form.js.map
|
1
node_modules/popsicle/dist/form.js.map
generated
vendored
Normal file
1
node_modules/popsicle/dist/form.js.map
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"file":"form.js","sourceRoot":"","sources":["../lib/form.ts"],"names":["form"],"mappings":"AAAA,IAAO,QAAQ,WAAW,WAAW,CAAC,CAAA;AAEtC,cAA8B,GAAQ;IACpCA,IAAMA,IAAIA,GAAGA,IAAIA,QAAQA,EAAEA,CAAAA;IAE3BA,EAAEA,CAACA,CAACA,GAAGA,CAACA,CAACA,CAACA;QACRA,MAAMA,CAACA,IAAIA,CAACA,GAAGA,CAACA,CAACA,OAAOA,CAACA,UAAUA,IAAIA;YACrC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;QAC9B,CAAC,CAACA,CAAAA;IACJA,CAACA;IAEDA,MAAMA,CAACA,IAAIA,CAAAA;AACbA,CAACA;AAVD;sBAUC,CAAA"}
|
6
node_modules/popsicle/dist/index.d.ts
generated
vendored
Normal file
6
node_modules/popsicle/dist/index.d.ts
generated
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
import Promise = require('any-promise');
|
||||
import Request from './request';
|
||||
import { defaults as use } from './plugins/index';
|
||||
export { open, abort, use };
|
||||
declare function open(request: Request): Promise<{}>;
|
||||
declare function abort(request: Request): void;
|
171
node_modules/popsicle/dist/index.js
generated
vendored
Normal file
171
node_modules/popsicle/dist/index.js
generated
vendored
Normal file
@ -0,0 +1,171 @@
|
||||
var http_1 = require('http');
|
||||
var https_1 = require('https');
|
||||
var stream_1 = require('stream');
|
||||
var urlLib = require('url');
|
||||
var arrify = require('arrify');
|
||||
var Promise = require('any-promise');
|
||||
var index_1 = require('./plugins/index');
|
||||
exports.use = index_1.defaults;
|
||||
var REDIRECT_TYPE;
|
||||
(function (REDIRECT_TYPE) {
|
||||
REDIRECT_TYPE[REDIRECT_TYPE["FOLLOW_WITH_GET"] = 0] = "FOLLOW_WITH_GET";
|
||||
REDIRECT_TYPE[REDIRECT_TYPE["FOLLOW_WITH_CONFIRMATION"] = 1] = "FOLLOW_WITH_CONFIRMATION";
|
||||
})(REDIRECT_TYPE || (REDIRECT_TYPE = {}));
|
||||
var REDIRECT_STATUS = {
|
||||
'300': REDIRECT_TYPE.FOLLOW_WITH_GET,
|
||||
'301': REDIRECT_TYPE.FOLLOW_WITH_GET,
|
||||
'302': REDIRECT_TYPE.FOLLOW_WITH_GET,
|
||||
'303': REDIRECT_TYPE.FOLLOW_WITH_GET,
|
||||
'305': REDIRECT_TYPE.FOLLOW_WITH_GET,
|
||||
'307': REDIRECT_TYPE.FOLLOW_WITH_CONFIRMATION,
|
||||
'308': REDIRECT_TYPE.FOLLOW_WITH_CONFIRMATION
|
||||
};
|
||||
function open(request) {
|
||||
var url = request.url, method = request.method, body = request.body, options = request.options;
|
||||
var maxRedirects = num(options.maxRedirects, 5);
|
||||
var followRedirects = options.followRedirects !== false;
|
||||
var requestCount = 0;
|
||||
var confirmRedirect = typeof options.followRedirects === 'function' ?
|
||||
options.followRedirects : falsey;
|
||||
function get(url, method, body) {
|
||||
if (requestCount++ > maxRedirects) {
|
||||
return Promise.reject(request.error("Exceeded maximum of " + maxRedirects + " redirects", 'EMAXREDIRECTS'));
|
||||
}
|
||||
return appendCookies(request)
|
||||
.then(function () {
|
||||
return new Promise(function (resolve, reject) {
|
||||
var arg = urlLib.parse(url);
|
||||
var isHttp = arg.protocol !== 'https:';
|
||||
var engine = isHttp ? http_1.request : https_1.request;
|
||||
arg.method = method;
|
||||
arg.headers = request.toHeaders();
|
||||
arg.agent = options.agent;
|
||||
arg.rejectUnauthorized = options.rejectUnauthorized !== false;
|
||||
arg.ca = options.ca;
|
||||
arg.cert = options.cert;
|
||||
arg.key = options.key;
|
||||
var req = engine(arg);
|
||||
var requestProxy = new stream_1.PassThrough();
|
||||
var responseProxy = new stream_1.PassThrough();
|
||||
requestProxy.on('data', function (chunk) {
|
||||
request.uploadedBytes = request.uploadedBytes + chunk.length;
|
||||
});
|
||||
requestProxy.on('end', function () {
|
||||
request.uploadedBytes = request.uploadLength;
|
||||
});
|
||||
responseProxy.on('data', function (chunk) {
|
||||
request.downloadedBytes = request.downloadedBytes + chunk.length;
|
||||
});
|
||||
responseProxy.on('end', function () {
|
||||
request.downloadedBytes = request.downloadLength;
|
||||
});
|
||||
function response(res) {
|
||||
var status = res.statusCode;
|
||||
var redirect = REDIRECT_STATUS[status];
|
||||
if (followRedirects && redirect != null && res.headers.location) {
|
||||
var newUrl = urlLib.resolve(url, res.headers.location);
|
||||
res.resume();
|
||||
request.remove('Cookie');
|
||||
if (redirect === REDIRECT_TYPE.FOLLOW_WITH_GET) {
|
||||
request.set('Content-Length', '0');
|
||||
return get(newUrl, 'GET');
|
||||
}
|
||||
if (redirect === REDIRECT_TYPE.FOLLOW_WITH_CONFIRMATION) {
|
||||
if (arg.method === 'GET' || arg.method === 'HEAD') {
|
||||
return get(newUrl, method, body);
|
||||
}
|
||||
if (confirmRedirect(req, res)) {
|
||||
return get(newUrl, method, body);
|
||||
}
|
||||
}
|
||||
}
|
||||
request.downloadLength = num(res.headers['content-length'], 0);
|
||||
res.pipe(responseProxy);
|
||||
return Promise.resolve({
|
||||
body: responseProxy,
|
||||
status: status,
|
||||
statusText: res.statusMessage,
|
||||
headers: res.headers,
|
||||
rawHeaders: res.rawHeaders,
|
||||
url: url
|
||||
});
|
||||
}
|
||||
req.once('response', function (message) {
|
||||
return resolve(setCookies(request, message).then(function () { return response(message); }));
|
||||
});
|
||||
req.once('abort', function () {
|
||||
return reject(request.error('Request aborted', 'EABORT'));
|
||||
});
|
||||
req.once('error', function (error) {
|
||||
return reject(request.error("Unable to connect to \"" + url + "\"", 'EUNAVAILABLE', error));
|
||||
});
|
||||
requestProxy.once('error', reject);
|
||||
request.raw = req;
|
||||
request.uploadLength = num(req.getHeader('content-length'), 0);
|
||||
requestProxy.pipe(req);
|
||||
if (body) {
|
||||
if (typeof body.pipe === 'function') {
|
||||
body.pipe(requestProxy);
|
||||
}
|
||||
else {
|
||||
requestProxy.end(body);
|
||||
}
|
||||
}
|
||||
else {
|
||||
requestProxy.end();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
return get(url, method, body);
|
||||
}
|
||||
exports.open = open;
|
||||
function abort(request) {
|
||||
request.raw.abort();
|
||||
}
|
||||
exports.abort = abort;
|
||||
function num(value, fallback) {
|
||||
if (value == null) {
|
||||
return fallback;
|
||||
}
|
||||
return isNaN(value) ? fallback : Number(value);
|
||||
}
|
||||
function falsey() {
|
||||
return false;
|
||||
}
|
||||
function appendCookies(request) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
if (!request.options.jar) {
|
||||
return resolve();
|
||||
}
|
||||
request.options.jar.getCookies(request.url, function (err, cookies) {
|
||||
if (err) {
|
||||
return reject(err);
|
||||
}
|
||||
if (cookies.length) {
|
||||
request.append('Cookie', cookies.join('; '));
|
||||
}
|
||||
return resolve();
|
||||
});
|
||||
});
|
||||
}
|
||||
function setCookies(request, message) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
if (!request.options.jar) {
|
||||
return resolve();
|
||||
}
|
||||
var cookies = arrify(message.headers['set-cookie']);
|
||||
if (!cookies.length) {
|
||||
return resolve();
|
||||
}
|
||||
var setCookies = cookies.map(function (cookie) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
request.options.jar.setCookie(cookie, request.url, function (err) {
|
||||
return err ? reject(err) : resolve();
|
||||
});
|
||||
});
|
||||
});
|
||||
return resolve(Promise.all(setCookies));
|
||||
});
|
||||
}
|
||||
//# sourceMappingURL=index.js.map
|
1
node_modules/popsicle/dist/index.js.map
generated
vendored
Normal file
1
node_modules/popsicle/dist/index.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
2
node_modules/popsicle/dist/jar.d.ts
generated
vendored
Normal file
2
node_modules/popsicle/dist/jar.d.ts
generated
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
import { CookieJar } from 'tough-cookie';
|
||||
export default function cookieJar(store?: any): CookieJar;
|
7
node_modules/popsicle/dist/jar.js
generated
vendored
Normal file
7
node_modules/popsicle/dist/jar.js
generated
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
var tough_cookie_1 = require('tough-cookie');
|
||||
function cookieJar(store) {
|
||||
return new tough_cookie_1.CookieJar(store);
|
||||
}
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.default = cookieJar;
|
||||
//# sourceMappingURL=jar.js.map
|
1
node_modules/popsicle/dist/jar.js.map
generated
vendored
Normal file
1
node_modules/popsicle/dist/jar.js.map
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"file":"jar.js","sourceRoot":"","sources":["../lib/jar.ts"],"names":["cookieJar"],"mappings":"AAAA,6BAA0B,cAE1B,CAAC,CAFuC;AAExC,mBAAmC,KAAW;IAC5CA,MAAMA,CAACA,IAAIA,wBAASA,CAACA,KAAKA,CAACA,CAAAA;AAC7BA,CAACA;AAFD;2BAEC,CAAA"}
|
3
node_modules/popsicle/dist/plugins/browser.d.ts
generated
vendored
Normal file
3
node_modules/popsicle/dist/plugins/browser.d.ts
generated
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
export * from './common';
|
||||
import { Middleware } from '../request';
|
||||
export declare const defaults: Middleware[];
|
7
node_modules/popsicle/dist/plugins/browser.js
generated
vendored
Normal file
7
node_modules/popsicle/dist/plugins/browser.js
generated
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
function __export(m) {
|
||||
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
|
||||
}
|
||||
__export(require('./common'));
|
||||
var common_2 = require('./common');
|
||||
exports.defaults = [common_2.stringify(), common_2.headers(), common_2.parse()];
|
||||
//# sourceMappingURL=browser.js.map
|
1
node_modules/popsicle/dist/plugins/browser.js.map
generated
vendored
Normal file
1
node_modules/popsicle/dist/plugins/browser.js.map
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../lib/plugins/browser.ts"],"names":[],"mappings":";;;AAAA,iBAAc,UACd,CAAC,EADuB;AACxB,uBAA0C,UAC1C,CAAC,CADmD;AAGvC,gBAAQ,GAAiB,CAAC,kBAAS,EAAE,EAAE,gBAAO,EAAE,EAAE,cAAK,EAAE,CAAC,CAAA"}
|
4
node_modules/popsicle/dist/plugins/common.d.ts
generated
vendored
Normal file
4
node_modules/popsicle/dist/plugins/common.d.ts
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
import Request from '../request';
|
||||
export declare function headers(): (request: Request) => void;
|
||||
export declare function stringify(): (request: Request) => void;
|
||||
export declare function parse(): (request: Request) => void;
|
106
node_modules/popsicle/dist/plugins/common.js
generated
vendored
Normal file
106
node_modules/popsicle/dist/plugins/common.js
generated
vendored
Normal file
@ -0,0 +1,106 @@
|
||||
var Promise = require('any-promise');
|
||||
var FormData = require('form-data');
|
||||
var querystring_1 = require('querystring');
|
||||
var form_1 = require('../form');
|
||||
var JSON_MIME_REGEXP = /^application\/(?:[\w!#\$%&\*`\-\.\^~]*\+)?json$/i;
|
||||
var QUERY_MIME_REGEXP = /^application\/x-www-form-urlencoded$/i;
|
||||
var FORM_MIME_REGEXP = /^multipart\/form-data$/i;
|
||||
var isHostObject;
|
||||
if (process.browser) {
|
||||
isHostObject = function (object) {
|
||||
var str = Object.prototype.toString.call(object);
|
||||
switch (str) {
|
||||
case '[object File]':
|
||||
case '[object Blob]':
|
||||
case '[object FormData]':
|
||||
case '[object ArrayBuffer]':
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
};
|
||||
}
|
||||
else {
|
||||
isHostObject = function (object) {
|
||||
return typeof object.pipe === 'function' || Buffer.isBuffer(object);
|
||||
};
|
||||
}
|
||||
function defaultHeaders(request) {
|
||||
if (!request.get('Accept')) {
|
||||
request.set('Accept', '*/*');
|
||||
}
|
||||
request.remove('Host');
|
||||
}
|
||||
function stringifyRequest(request) {
|
||||
var body = request.body;
|
||||
if (Object(body) !== body) {
|
||||
request.body = body == null ? null : String(body);
|
||||
return;
|
||||
}
|
||||
if (isHostObject(body)) {
|
||||
return;
|
||||
}
|
||||
var type = request.type();
|
||||
if (!type) {
|
||||
type = 'application/json';
|
||||
request.type(type);
|
||||
}
|
||||
try {
|
||||
if (JSON_MIME_REGEXP.test(type)) {
|
||||
request.body = JSON.stringify(body);
|
||||
}
|
||||
else if (FORM_MIME_REGEXP.test(type)) {
|
||||
request.body = form_1.default(body);
|
||||
}
|
||||
else if (QUERY_MIME_REGEXP.test(type)) {
|
||||
request.body = querystring_1.stringify(body);
|
||||
}
|
||||
}
|
||||
catch (err) {
|
||||
return Promise.reject(request.error('Unable to stringify request body: ' + err.message, 'ESTRINGIFY', err));
|
||||
}
|
||||
if (request.body instanceof FormData) {
|
||||
request.remove('Content-Type');
|
||||
}
|
||||
}
|
||||
function parseResponse(response) {
|
||||
var body = response.body;
|
||||
if (typeof body !== 'string') {
|
||||
return;
|
||||
}
|
||||
if (body === '') {
|
||||
response.body = null;
|
||||
return;
|
||||
}
|
||||
var type = response.type();
|
||||
try {
|
||||
if (JSON_MIME_REGEXP.test(type)) {
|
||||
response.body = body === '' ? null : JSON.parse(body);
|
||||
}
|
||||
else if (QUERY_MIME_REGEXP.test(type)) {
|
||||
response.body = querystring_1.parse(body);
|
||||
}
|
||||
}
|
||||
catch (err) {
|
||||
return Promise.reject(response.error('Unable to parse response body: ' + err.message, 'EPARSE', err));
|
||||
}
|
||||
}
|
||||
function headers() {
|
||||
return function (request) {
|
||||
request.before(defaultHeaders);
|
||||
};
|
||||
}
|
||||
exports.headers = headers;
|
||||
function stringify() {
|
||||
return function (request) {
|
||||
request.before(stringifyRequest);
|
||||
};
|
||||
}
|
||||
exports.stringify = stringify;
|
||||
function parse() {
|
||||
return function (request) {
|
||||
request.after(parseResponse);
|
||||
};
|
||||
}
|
||||
exports.parse = parse;
|
||||
//# sourceMappingURL=common.js.map
|
1
node_modules/popsicle/dist/plugins/common.js.map
generated
vendored
Normal file
1
node_modules/popsicle/dist/plugins/common.js.map
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../lib/plugins/common.ts"],"names":["defaultHeaders","stringifyRequest","parseResponse","headers","stringify","parse"],"mappings":"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"}
|
6
node_modules/popsicle/dist/plugins/index.d.ts
generated
vendored
Normal file
6
node_modules/popsicle/dist/plugins/index.d.ts
generated
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
export * from './common';
|
||||
import Request, { Middleware } from '../request';
|
||||
export declare function unzip(): (request: Request) => void;
|
||||
export declare function concatStream(encoding: string): (request: Request) => void;
|
||||
export declare function headers(): (request: Request) => void;
|
||||
export declare const defaults: Middleware[];
|
98
node_modules/popsicle/dist/plugins/index.js
generated
vendored
Normal file
98
node_modules/popsicle/dist/plugins/index.js
generated
vendored
Normal file
@ -0,0 +1,98 @@
|
||||
function __export(m) {
|
||||
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
|
||||
}
|
||||
var concat = require('concat-stream');
|
||||
var FormData = require('form-data');
|
||||
var zlib_1 = require('zlib');
|
||||
var Promise = require('any-promise');
|
||||
__export(require('./common'));
|
||||
var common_2 = require('./common');
|
||||
function unzipResponse(response) {
|
||||
if (['gzip', 'deflate'].indexOf(response.get('Content-Encoding')) > -1) {
|
||||
var unzip_1 = zlib_1.createUnzip();
|
||||
response.body.pipe(unzip_1);
|
||||
response.body = unzip_1;
|
||||
}
|
||||
}
|
||||
function unzipHeaders(request) {
|
||||
if (!request.get('Accept-Encoding')) {
|
||||
request.set('Accept-Encoding', 'gzip,deflate');
|
||||
}
|
||||
}
|
||||
function unzip() {
|
||||
return function (request) {
|
||||
request.before(unzipHeaders);
|
||||
request.after(unzipResponse);
|
||||
};
|
||||
}
|
||||
exports.unzip = unzip;
|
||||
function concatStream(encoding) {
|
||||
return function (request) {
|
||||
request.after(function (response) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
var stream = concat({
|
||||
encoding: encoding
|
||||
}, function (data) {
|
||||
response.body = data;
|
||||
return resolve();
|
||||
});
|
||||
response.body.once('error', reject);
|
||||
response.body.pipe(stream);
|
||||
});
|
||||
});
|
||||
};
|
||||
}
|
||||
exports.concatStream = concatStream;
|
||||
function defaultHeaders(request) {
|
||||
if (!request.get('User-Agent')) {
|
||||
request.set('User-Agent', 'https://github.com/blakeembrey/popsicle');
|
||||
}
|
||||
if (request.body instanceof FormData) {
|
||||
request.set('Content-Type', 'multipart/form-data; boundary=' + request.body.getBoundary());
|
||||
return new Promise(function (resolve, reject) {
|
||||
request.body.getLength(function (err, length) {
|
||||
if (err) {
|
||||
request.set('Transfer-Encoding', 'chunked');
|
||||
}
|
||||
else {
|
||||
request.set('Content-Length', String(length));
|
||||
}
|
||||
return resolve();
|
||||
});
|
||||
});
|
||||
}
|
||||
var length = 0;
|
||||
var body = request.body;
|
||||
if (body && !request.get('Content-Length')) {
|
||||
if (Array.isArray(body)) {
|
||||
for (var i = 0; i < body.length; i++) {
|
||||
length += body[i].length;
|
||||
}
|
||||
}
|
||||
else if (typeof body === 'string') {
|
||||
length = Buffer.byteLength(body);
|
||||
}
|
||||
else {
|
||||
length = body.length;
|
||||
}
|
||||
if (length) {
|
||||
request.set('Content-Length', String(length));
|
||||
}
|
||||
else if (typeof body.pipe === 'function') {
|
||||
request.set('Transfer-Encoding', 'chunked');
|
||||
}
|
||||
else {
|
||||
return Promise.reject(request.error('Argument error, `options.body`', 'EBODY'));
|
||||
}
|
||||
}
|
||||
}
|
||||
function headers() {
|
||||
var defaults = common_2.headers();
|
||||
return function (request) {
|
||||
defaults(request);
|
||||
request.before(defaultHeaders);
|
||||
};
|
||||
}
|
||||
exports.headers = headers;
|
||||
exports.defaults = [common_2.stringify(), headers(), unzip(), concatStream('string'), common_2.parse()];
|
||||
//# sourceMappingURL=index.js.map
|
1
node_modules/popsicle/dist/plugins/index.js.map
generated
vendored
Normal file
1
node_modules/popsicle/dist/plugins/index.js.map
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/plugins/index.ts"],"names":["unzipResponse","unzipHeaders","unzip","concatStream","defaultHeaders","headers"],"mappings":"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"}
|
82
node_modules/popsicle/dist/request.d.ts
generated
vendored
Normal file
82
node_modules/popsicle/dist/request.d.ts
generated
vendored
Normal file
@ -0,0 +1,82 @@
|
||||
import Promise = require('any-promise');
|
||||
import Base, { BaseOptions, Headers } from './base';
|
||||
import Response, { ResponseOptions } from './response';
|
||||
import PopsicleError from './error';
|
||||
export interface DefaultsOptions extends BaseOptions {
|
||||
url?: string;
|
||||
method?: string;
|
||||
timeout?: number;
|
||||
body?: any;
|
||||
options?: any;
|
||||
use?: Middleware[];
|
||||
before?: RequestPluginFunction[];
|
||||
after?: ResponsePluginFunction[];
|
||||
always?: RequestPluginFunction[];
|
||||
progress?: RequestPluginFunction[];
|
||||
transport?: TransportOptions;
|
||||
}
|
||||
export interface RequestOptions extends DefaultsOptions {
|
||||
url: string;
|
||||
}
|
||||
export interface RequestJSON {
|
||||
url: string;
|
||||
headers: Headers;
|
||||
body: any;
|
||||
timeout: number;
|
||||
options: any;
|
||||
method: string;
|
||||
}
|
||||
export interface TransportOptions {
|
||||
open: OpenHandler;
|
||||
abort?: AbortHandler;
|
||||
use?: Middleware[];
|
||||
}
|
||||
export declare type Middleware = (request?: Request) => any;
|
||||
export declare type RequestPluginFunction = (request?: Request) => any;
|
||||
export declare type ResponsePluginFunction = (response?: Response) => any;
|
||||
export declare type OpenHandler = (request: Request) => Promise<ResponseOptions>;
|
||||
export declare type AbortHandler = (request: Request) => any;
|
||||
export default class Request extends Base implements Promise<Response> {
|
||||
method: string;
|
||||
timeout: number;
|
||||
body: any;
|
||||
options: any;
|
||||
response: Response;
|
||||
raw: any;
|
||||
errored: PopsicleError;
|
||||
transport: TransportOptions;
|
||||
aborted: boolean;
|
||||
timedout: boolean;
|
||||
opened: boolean;
|
||||
started: boolean;
|
||||
uploadLength: number;
|
||||
downloadLength: number;
|
||||
private _uploadedBytes;
|
||||
private _downloadedBytes;
|
||||
private _promise;
|
||||
private _before;
|
||||
private _after;
|
||||
private _always;
|
||||
private _progress;
|
||||
constructor(options: RequestOptions);
|
||||
use(fn: Middleware | Middleware[]): this;
|
||||
error(message: string, code: string, original?: Error): PopsicleError;
|
||||
then(onFulfilled: (response?: Response) => any, onRejected?: (error?: PopsicleError) => any): Promise<any>;
|
||||
catch(onRejected: (error?: PopsicleError) => any): Promise<any>;
|
||||
exec(cb: (err: PopsicleError, response?: Response) => any): void;
|
||||
toOptions(): RequestOptions;
|
||||
toJSON(): RequestJSON;
|
||||
clone(): Request;
|
||||
progress(fn: RequestPluginFunction | RequestPluginFunction[]): Request;
|
||||
before(fn: RequestPluginFunction | RequestPluginFunction[]): Request;
|
||||
after(fn: ResponsePluginFunction | ResponsePluginFunction[]): Request;
|
||||
always(fn: RequestPluginFunction | RequestPluginFunction[]): Request;
|
||||
abort(): this;
|
||||
uploaded: number;
|
||||
downloaded: number;
|
||||
completed: number;
|
||||
completedBytes: number;
|
||||
totalBytes: number;
|
||||
uploadedBytes: number;
|
||||
downloadedBytes: number;
|
||||
}
|
262
node_modules/popsicle/dist/request.js
generated
vendored
Normal file
262
node_modules/popsicle/dist/request.js
generated
vendored
Normal file
@ -0,0 +1,262 @@
|
||||
var __extends = (this && this.__extends) || function (d, b) {
|
||||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
};
|
||||
var arrify = require('arrify');
|
||||
var extend = require('xtend');
|
||||
var Promise = require('any-promise');
|
||||
var base_1 = require('./base');
|
||||
var response_1 = require('./response');
|
||||
var error_1 = require('./error');
|
||||
var Request = (function (_super) {
|
||||
__extends(Request, _super);
|
||||
function Request(options) {
|
||||
var _this = this;
|
||||
_super.call(this, options);
|
||||
this.aborted = false;
|
||||
this.timedout = false;
|
||||
this.opened = false;
|
||||
this.started = false;
|
||||
this.uploadLength = null;
|
||||
this.downloadLength = null;
|
||||
this._uploadedBytes = null;
|
||||
this._downloadedBytes = null;
|
||||
this._before = [];
|
||||
this._after = [];
|
||||
this._always = [];
|
||||
this._progress = [];
|
||||
this.timeout = Number(options.timeout) || 0;
|
||||
this.method = (options.method || 'GET').toUpperCase();
|
||||
this.body = options.body;
|
||||
this.options = extend(options.options);
|
||||
this._promise = new Promise(function (resolve, reject) {
|
||||
process.nextTick(function () { return start(_this).then(resolve, reject); });
|
||||
});
|
||||
this.transport = extend(options.transport);
|
||||
this.use(options.use || this.transport.use);
|
||||
this.before(options.before);
|
||||
this.after(options.after);
|
||||
this.always(options.always);
|
||||
this.progress(options.progress);
|
||||
}
|
||||
Request.prototype.use = function (fn) {
|
||||
var _this = this;
|
||||
arrify(fn).forEach(function (fn) { return fn(_this); });
|
||||
return this;
|
||||
};
|
||||
Request.prototype.error = function (message, code, original) {
|
||||
return new error_1.default(message, code, original, this);
|
||||
};
|
||||
Request.prototype.then = function (onFulfilled, onRejected) {
|
||||
return this._promise.then(onFulfilled, onRejected);
|
||||
};
|
||||
Request.prototype.catch = function (onRejected) {
|
||||
return this.then(null, onRejected);
|
||||
};
|
||||
Request.prototype.exec = function (cb) {
|
||||
this.then(function (response) {
|
||||
cb(null, response);
|
||||
}, cb);
|
||||
};
|
||||
Request.prototype.toOptions = function () {
|
||||
return {
|
||||
url: this.url,
|
||||
method: this.method,
|
||||
options: this.options,
|
||||
use: [],
|
||||
body: this.body,
|
||||
transport: this.transport,
|
||||
timeout: this.timeout,
|
||||
rawHeaders: this.rawHeaders,
|
||||
before: this._before,
|
||||
after: this._after,
|
||||
progress: this._progress,
|
||||
always: this._always
|
||||
};
|
||||
};
|
||||
Request.prototype.toJSON = function () {
|
||||
return {
|
||||
url: this.url,
|
||||
headers: this.headers,
|
||||
body: this.body,
|
||||
options: this.options,
|
||||
timeout: this.timeout,
|
||||
method: this.method
|
||||
};
|
||||
};
|
||||
Request.prototype.clone = function () {
|
||||
return new Request(this.toOptions());
|
||||
};
|
||||
Request.prototype.progress = function (fn) {
|
||||
return pluginFunction(this, '_progress', fn);
|
||||
};
|
||||
Request.prototype.before = function (fn) {
|
||||
return pluginFunction(this, '_before', fn);
|
||||
};
|
||||
Request.prototype.after = function (fn) {
|
||||
return pluginFunction(this, '_after', fn);
|
||||
};
|
||||
Request.prototype.always = function (fn) {
|
||||
return pluginFunction(this, '_always', fn);
|
||||
};
|
||||
Request.prototype.abort = function () {
|
||||
if (this.completed === 1 || this.aborted) {
|
||||
return this;
|
||||
}
|
||||
this.aborted = true;
|
||||
this.errored = this.errored || this.error('Request aborted', 'EABORT');
|
||||
if (this.opened) {
|
||||
emitProgress(this);
|
||||
this._progress = null;
|
||||
if (this.transport.abort) {
|
||||
this.transport.abort(this);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
};
|
||||
Object.defineProperty(Request.prototype, "uploaded", {
|
||||
get: function () {
|
||||
return this.uploadLength ? this.uploadedBytes / this.uploadLength : 0;
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(Request.prototype, "downloaded", {
|
||||
get: function () {
|
||||
return this.downloadLength ? this.downloadedBytes / this.downloadLength : 0;
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(Request.prototype, "completed", {
|
||||
get: function () {
|
||||
return (this.uploaded + this.downloaded) / 2;
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(Request.prototype, "completedBytes", {
|
||||
get: function () {
|
||||
return this.uploadedBytes + this.downloadedBytes;
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(Request.prototype, "totalBytes", {
|
||||
get: function () {
|
||||
return this.uploadLength + this.downloadLength;
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(Request.prototype, "uploadedBytes", {
|
||||
get: function () {
|
||||
return this._uploadedBytes;
|
||||
},
|
||||
set: function (bytes) {
|
||||
if (bytes !== this._uploadedBytes) {
|
||||
this._uploadedBytes = bytes;
|
||||
emitProgress(this);
|
||||
}
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(Request.prototype, "downloadedBytes", {
|
||||
get: function () {
|
||||
return this._downloadedBytes;
|
||||
},
|
||||
set: function (bytes) {
|
||||
if (bytes !== this._downloadedBytes) {
|
||||
this._downloadedBytes = bytes;
|
||||
emitProgress(this);
|
||||
}
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
return Request;
|
||||
})(base_1.default);
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.default = Request;
|
||||
function pluginFunction(request, property, fns) {
|
||||
if (request.started) {
|
||||
throw new TypeError('Plugins can not be used after the request has started');
|
||||
}
|
||||
for (var _i = 0, _a = arrify(fns); _i < _a.length; _i++) {
|
||||
var fn = _a[_i];
|
||||
if (typeof fn !== 'function') {
|
||||
throw new TypeError("Expected a function, but got " + fn + " instead");
|
||||
}
|
||||
;
|
||||
request[property].push(fn);
|
||||
}
|
||||
return request;
|
||||
}
|
||||
function start(request) {
|
||||
var req = request;
|
||||
var timeout = request.timeout, url = request.url;
|
||||
var timer;
|
||||
request.started = true;
|
||||
if (request.errored) {
|
||||
return Promise.reject(request.errored);
|
||||
}
|
||||
if (/^https?\:\/*(?:[~#\\\?;\:]|$)/.test(url)) {
|
||||
return Promise.reject(request.error("Refused to connect to invalid URL \"" + url + "\"", 'EINVALID'));
|
||||
}
|
||||
return chain(req._before, request)
|
||||
.then(function () {
|
||||
if (request.errored) {
|
||||
return;
|
||||
}
|
||||
if (timeout) {
|
||||
timer = setTimeout(function () {
|
||||
var error = request.error("Timeout of " + request.timeout + "ms exceeded", 'ETIMEOUT');
|
||||
request.errored = error;
|
||||
request.timedout = true;
|
||||
request.abort();
|
||||
}, timeout);
|
||||
}
|
||||
req.opened = true;
|
||||
return req.transport.open(request)
|
||||
.then(function (options) {
|
||||
var response = new response_1.default(options);
|
||||
response.request = request;
|
||||
request.response = response;
|
||||
return chain(req._after, response);
|
||||
});
|
||||
})
|
||||
.then(function () { return chain(req._always, request); }, function (error) { return chain(req._always, request).then(function () { return Promise.reject(error); }); })
|
||||
.then(function () {
|
||||
if (request.errored) {
|
||||
return Promise.reject(request.errored);
|
||||
}
|
||||
return request.response;
|
||||
}, function (error) {
|
||||
request.errored = request.errored || error;
|
||||
return Promise.reject(request.errored);
|
||||
});
|
||||
}
|
||||
function chain(fns, arg) {
|
||||
return fns.reduce(function (p, fn) {
|
||||
return p.then(function () { return fn(arg); });
|
||||
}, Promise.resolve());
|
||||
}
|
||||
function emitProgress(request) {
|
||||
var fns = request._progress;
|
||||
if (!fns || request.errored) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
for (var _i = 0; _i < fns.length; _i++) {
|
||||
var fn = fns[_i];
|
||||
fn(request);
|
||||
}
|
||||
}
|
||||
catch (err) {
|
||||
request.errored = err;
|
||||
request.abort();
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=request.js.map
|
1
node_modules/popsicle/dist/request.js.map
generated
vendored
Normal file
1
node_modules/popsicle/dist/request.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
26
node_modules/popsicle/dist/response.d.ts
generated
vendored
Normal file
26
node_modules/popsicle/dist/response.d.ts
generated
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
import Base, { BaseOptions, Headers, RawHeaders } from './base';
|
||||
import Request from './request';
|
||||
import PopsicleError from './error';
|
||||
export interface ResponseOptions extends BaseOptions {
|
||||
body: any;
|
||||
status: number;
|
||||
statusText: string;
|
||||
}
|
||||
export interface ResponseJSON {
|
||||
headers: Headers;
|
||||
rawHeaders: RawHeaders;
|
||||
body: any;
|
||||
url: string;
|
||||
status: number;
|
||||
statusText: string;
|
||||
}
|
||||
export default class Response extends Base {
|
||||
status: number;
|
||||
statusText: string;
|
||||
body: any;
|
||||
request: Request;
|
||||
constructor(options: ResponseOptions);
|
||||
statusType(): number;
|
||||
error(message: string, type: string, error?: Error): PopsicleError;
|
||||
toJSON(): ResponseJSON;
|
||||
}
|
35
node_modules/popsicle/dist/response.js
generated
vendored
Normal file
35
node_modules/popsicle/dist/response.js
generated
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
var __extends = (this && this.__extends) || function (d, b) {
|
||||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
};
|
||||
var base_1 = require('./base');
|
||||
var Response = (function (_super) {
|
||||
__extends(Response, _super);
|
||||
function Response(options) {
|
||||
_super.call(this, options);
|
||||
this.body = options.body;
|
||||
this.status = options.status;
|
||||
this.statusText = options.statusText;
|
||||
}
|
||||
Response.prototype.statusType = function () {
|
||||
return ~~(this.status / 100);
|
||||
};
|
||||
Response.prototype.error = function (message, type, error) {
|
||||
return this.request.error(message, type, error);
|
||||
};
|
||||
Response.prototype.toJSON = function () {
|
||||
return {
|
||||
url: this.url,
|
||||
headers: this.headers,
|
||||
rawHeaders: this.rawHeaders,
|
||||
body: this.body,
|
||||
status: this.status,
|
||||
statusText: this.statusText
|
||||
};
|
||||
};
|
||||
return Response;
|
||||
})(base_1.default);
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.default = Response;
|
||||
//# sourceMappingURL=response.js.map
|
1
node_modules/popsicle/dist/response.js.map
generated
vendored
Normal file
1
node_modules/popsicle/dist/response.js.map
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"file":"response.js","sourceRoot":"","sources":["../lib/response.ts"],"names":["Response","Response.constructor","Response.statusType","Response.error","Response.toJSON"],"mappings":";;;;;AAAA,qBAAuD,QACvD,CAAC,CAD8D;AAmB/D;IAAsCA,4BAAIA;IAMxCA,kBAAaA,OAAwBA;QACnCC,kBAAMA,OAAOA,CAACA,CAAAA;QAEdA,IAAIA,CAACA,IAAIA,GAAGA,OAAOA,CAACA,IAAIA,CAAAA;QACxBA,IAAIA,CAACA,MAAMA,GAAGA,OAAOA,CAACA,MAAMA,CAAAA;QAC5BA,IAAIA,CAACA,UAAUA,GAAGA,OAAOA,CAACA,UAAUA,CAAAA;IACtCA,CAACA;IAEDD,6BAAUA,GAAVA;QACEE,MAAMA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA,MAAMA,GAAGA,GAAGA,CAACA,CAAAA;IAC9BA,CAACA;IAEDF,wBAAKA,GAALA,UAAOA,OAAeA,EAAEA,IAAYA,EAAEA,KAAaA;QACjDG,MAAMA,CAACA,IAAIA,CAACA,OAAOA,CAACA,KAAKA,CAACA,OAAOA,EAAEA,IAAIA,EAAEA,KAAKA,CAACA,CAAAA;IACjDA,CAACA;IAEDH,yBAAMA,GAANA;QACEI,MAAMA,CAACA;YACLA,GAAGA,EAAEA,IAAIA,CAACA,GAAGA;YACbA,OAAOA,EAAEA,IAAIA,CAACA,OAAOA;YACrBA,UAAUA,EAAEA,IAAIA,CAACA,UAAUA;YAC3BA,IAAIA,EAAEA,IAAIA,CAACA,IAAIA;YACfA,MAAMA,EAAEA,IAAIA,CAACA,MAAMA;YACnBA,UAAUA,EAAEA,IAAIA,CAACA,UAAUA;SAC5BA,CAAAA;IACHA,CAACA;IAEHJ,eAACA;AAADA,CAACA,AAjCD,EAAsC,cAAI,EAiCzC;AAjCD;0BAiCC,CAAA"}
|
0
node_modules/popsicle/dist/test/index.d.ts
generated
vendored
Normal file
0
node_modules/popsicle/dist/test/index.d.ts
generated
vendored
Normal file
913
node_modules/popsicle/dist/test/index.js
generated
vendored
Normal file
913
node_modules/popsicle/dist/test/index.js
generated
vendored
Normal file
@ -0,0 +1,913 @@
|
||||
var test = require('blue-tape');
|
||||
var methods = require('methods');
|
||||
var FormData = require('form-data');
|
||||
var Promise = require('any-promise');
|
||||
var fs_1 = require('fs');
|
||||
var path_1 = require('path');
|
||||
var popsicle = require('../common');
|
||||
var SHORTHAND_METHODS = [
|
||||
'get',
|
||||
'post',
|
||||
'put',
|
||||
'patch',
|
||||
'del'
|
||||
];
|
||||
var SUPPORTED_METHODS = typeof window === 'object' ? [
|
||||
'get',
|
||||
'post',
|
||||
'put',
|
||||
'patch',
|
||||
'delete'
|
||||
] : methods.filter(function (method) { return method !== 'connect'; });
|
||||
var METHODS_WITHOUT_BODY = ['connect', 'head', 'options'];
|
||||
var REMOTE_URL = 'http://localhost:' + process.env.PORT;
|
||||
var REMOTE_HTTPS_URL = 'https://localhost:' + process.env.HTTPS_PORT;
|
||||
var EXAMPLE_BODY = {
|
||||
username: 'blakeembrey',
|
||||
password: 'hunter2'
|
||||
};
|
||||
var BOUNDARY_REGEXP = /^multipart\/form-data; boundary=([^;]+)/;
|
||||
var supportsStatusText = parseFloat(process.version.replace(/^v/, '')) >= 0.12;
|
||||
test('should expose default functions', function (t) {
|
||||
t.equal(typeof popsicle, 'object');
|
||||
t.equal(typeof popsicle.Request, 'function');
|
||||
t.equal(typeof popsicle.Response, 'function');
|
||||
t.equal(typeof popsicle.form, 'function');
|
||||
t.equal(typeof popsicle.jar, 'function');
|
||||
SHORTHAND_METHODS.forEach(function (method) {
|
||||
t.equal(typeof popsicle[method], 'function');
|
||||
});
|
||||
t.end();
|
||||
});
|
||||
test('throw an error when no options are provided', function (t) {
|
||||
t.throws(function () { return popsicle.request({}); }, /url must be a string/i);
|
||||
t.end();
|
||||
});
|
||||
test('create a popsicle#Request instance', function (t) {
|
||||
var req = popsicle.request('/');
|
||||
t.ok(req instanceof popsicle.Request);
|
||||
return req.then(null, function () { });
|
||||
});
|
||||
test('use the same response in promise chains', function (t) {
|
||||
var req = popsicle.get(REMOTE_URL + '/echo');
|
||||
t.plan(15);
|
||||
return req
|
||||
.then(function (res) {
|
||||
t.ok(res instanceof popsicle.Response);
|
||||
t.ok(typeof res.url === 'string' || res.url == null);
|
||||
t.ok(Array.isArray(res.rawHeaders));
|
||||
t.equal(typeof res.headers, 'object');
|
||||
t.equal(typeof res.status, 'number');
|
||||
t.equal(typeof res.get, 'function');
|
||||
t.equal(typeof res.name, 'function');
|
||||
t.equal(typeof res.type, 'function');
|
||||
t.equal(typeof res.statusType, 'function');
|
||||
t.equal(typeof res.error, 'function');
|
||||
t.equal(typeof res.toJSON, 'function');
|
||||
t.equal(res.request, req);
|
||||
t.deepEqual(Object.keys(req.toJSON()), ['url', 'headers', 'body', 'options', 'timeout', 'method']);
|
||||
t.deepEqual(Object.keys(res.toJSON()), ['url', 'headers', 'rawHeaders', 'body', 'status', 'statusText']);
|
||||
return req
|
||||
.then(function (res2) {
|
||||
t.equal(res, res2);
|
||||
});
|
||||
});
|
||||
});
|
||||
test('clone a request instance', function (t) {
|
||||
var req = popsicle.get(REMOTE_URL + '/echo/header/x-example');
|
||||
req.use(function (self) {
|
||||
self.before(function (req) {
|
||||
req.set('X-Example', 'foobar');
|
||||
});
|
||||
});
|
||||
return Promise.all([req, req.clone()])
|
||||
.then(function (res) {
|
||||
t.notEqual(res[0], res[1]);
|
||||
t.equal(res[0].body, 'foobar');
|
||||
t.equal(res[0].body, res[1].body);
|
||||
});
|
||||
});
|
||||
test('methods', function (t) {
|
||||
t.test('use node-style callbacks', function (t) {
|
||||
t.plan(1);
|
||||
return popsicle.request(REMOTE_URL + '/echo')
|
||||
.exec(function (err, res) {
|
||||
t.ok(res instanceof popsicle.Response);
|
||||
t.end();
|
||||
});
|
||||
});
|
||||
t.test('allow methods to be passed in', function (t) {
|
||||
return Promise.all(SUPPORTED_METHODS.map(function (method) {
|
||||
return popsicle.request({
|
||||
url: REMOTE_URL + '/echo/method',
|
||||
method: method
|
||||
})
|
||||
.then(function (res) {
|
||||
t.equal(res.status, 200);
|
||||
t.equal(res.body, METHODS_WITHOUT_BODY.indexOf(method) === -1 ? method.toUpperCase() : null);
|
||||
});
|
||||
}));
|
||||
});
|
||||
});
|
||||
test('allow usage of method shorthands', function (t) {
|
||||
return Promise.all(SHORTHAND_METHODS.map(function (method) {
|
||||
return popsicle[method](REMOTE_URL + '/echo/method')
|
||||
.then(function (res) {
|
||||
t.equal(res.status, 200);
|
||||
t.equal(res.body, method === 'del' ? 'DELETE' : method.toUpperCase());
|
||||
});
|
||||
}));
|
||||
});
|
||||
test('response status', function (t) {
|
||||
t.test('5xx', function (t) {
|
||||
return popsicle.request(REMOTE_URL + '/error')
|
||||
.then(function (res) {
|
||||
t.equal(res.status, 500);
|
||||
t.equal(res.statusType(), 5);
|
||||
if (supportsStatusText) {
|
||||
t.equal(res.statusText, 'Internal Server Error');
|
||||
}
|
||||
});
|
||||
});
|
||||
t.test('4xx', function (t) {
|
||||
return popsicle.request(REMOTE_URL + '/not-found')
|
||||
.then(function (res) {
|
||||
t.equal(res.status, 404);
|
||||
t.equal(res.statusType(), 4);
|
||||
if (supportsStatusText) {
|
||||
t.equal(res.statusText, 'Not Found');
|
||||
}
|
||||
});
|
||||
});
|
||||
t.test('2xx', function (t) {
|
||||
return popsicle.request(REMOTE_URL + '/no-content')
|
||||
.then(function (res) {
|
||||
t.equal(res.status, 204);
|
||||
t.equal(res.statusType(), 2);
|
||||
if (supportsStatusText) {
|
||||
t.equal(res.statusText, 'No Content');
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
test('request headers', function (t) {
|
||||
t.test('always send user agent', function (t) {
|
||||
return popsicle.request(REMOTE_URL + '/echo/header/user-agent')
|
||||
.then(function (res) {
|
||||
var regexp = process.browser ?
|
||||
/^Mozilla\/.+$/ :
|
||||
/^https:\/\/github\.com\/blakeembrey\/popsicle$/;
|
||||
t.ok(regexp.test(res.body));
|
||||
});
|
||||
});
|
||||
if (!popsicle.browser) {
|
||||
t.test('send a custom user agent header', function (t) {
|
||||
return popsicle.request({
|
||||
url: REMOTE_URL + '/echo/header/user-agent',
|
||||
headers: {
|
||||
'User-Agent': 'foobar'
|
||||
}
|
||||
})
|
||||
.then(function (res) {
|
||||
t.equal(res.body, 'foobar');
|
||||
});
|
||||
});
|
||||
if (!/^v0\.10/.test(process.version)) {
|
||||
t.test('case sensitive headers', function (t) {
|
||||
return popsicle.get({
|
||||
url: REMOTE_URL + '/raw-headers',
|
||||
headers: {
|
||||
'Raw-Header': 'test'
|
||||
}
|
||||
})
|
||||
.then(function (res) {
|
||||
t.ok(res.body.indexOf('Raw-Header') > -1, 'raw headers sent with original casing');
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
test('response headers', function (t) {
|
||||
t.test('parse', function (t) {
|
||||
return popsicle.request(REMOTE_URL + '/notfound')
|
||||
.then(function (res) {
|
||||
t.equal(res.type(), 'text/html');
|
||||
t.equal(res.get('Content-Type'), 'text/html; charset=utf-8');
|
||||
});
|
||||
});
|
||||
});
|
||||
test('request body', function (t) {
|
||||
t.test('send post data', function (t) {
|
||||
return popsicle.request({
|
||||
url: REMOTE_URL + '/echo',
|
||||
method: 'POST',
|
||||
body: 'example data',
|
||||
headers: {
|
||||
'content-type': 'application/octet-stream'
|
||||
}
|
||||
})
|
||||
.then(function (res) {
|
||||
t.equal(res.body, 'example data');
|
||||
t.equal(res.status, 200);
|
||||
t.equal(res.type(), 'application/octet-stream');
|
||||
if (supportsStatusText) {
|
||||
t.equal(res.statusText, 'OK');
|
||||
}
|
||||
});
|
||||
});
|
||||
t.test('should automatically send objects as json', function (t) {
|
||||
return popsicle.request({
|
||||
url: REMOTE_URL + '/echo',
|
||||
method: 'POST',
|
||||
body: EXAMPLE_BODY
|
||||
})
|
||||
.then(function (res) {
|
||||
t.deepEqual(res.body, EXAMPLE_BODY);
|
||||
t.equal(res.type(), 'application/json');
|
||||
});
|
||||
});
|
||||
t.test('should send as form encoded when header is set', function (t) {
|
||||
return popsicle.request({
|
||||
url: REMOTE_URL + '/echo',
|
||||
method: 'POST',
|
||||
body: EXAMPLE_BODY,
|
||||
headers: {
|
||||
'Content-Type': 'application/x-www-form-urlencoded'
|
||||
}
|
||||
})
|
||||
.then(function (res) {
|
||||
t.deepEqual(res.body, EXAMPLE_BODY);
|
||||
t.equal(res.type(), 'application/x-www-form-urlencoded');
|
||||
});
|
||||
});
|
||||
t.test('host objects', function (t) {
|
||||
t.test('form data', function (t) {
|
||||
function validateResponse(res) {
|
||||
var boundary = BOUNDARY_REGEXP.exec(res.headers['content-type'])[1];
|
||||
var body = [
|
||||
'--' + boundary,
|
||||
'Content-Disposition: form-data; name="username"',
|
||||
'',
|
||||
EXAMPLE_BODY.username,
|
||||
'--' + boundary,
|
||||
'Content-Disposition: form-data; name="password"',
|
||||
'',
|
||||
EXAMPLE_BODY.password,
|
||||
'--' + boundary + '--'
|
||||
].join('\r\n');
|
||||
if (typeof window !== 'undefined') {
|
||||
body += '\r\n';
|
||||
}
|
||||
t.equal(res.body, body);
|
||||
}
|
||||
t.test('should create form data instance', function (t) {
|
||||
var form = popsicle.form(EXAMPLE_BODY);
|
||||
t.ok(form instanceof FormData);
|
||||
return popsicle.request({
|
||||
url: REMOTE_URL + '/echo',
|
||||
method: 'POST',
|
||||
body: form
|
||||
}).then(validateResponse);
|
||||
});
|
||||
t.test('should stringify to form data when set as multipart', function (t) {
|
||||
return popsicle.request({
|
||||
url: REMOTE_URL + '/echo',
|
||||
method: 'POST',
|
||||
body: EXAMPLE_BODY,
|
||||
headers: {
|
||||
'Content-Type': 'multipart/form-data'
|
||||
}
|
||||
}).then(validateResponse);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
test('query', function (t) {
|
||||
t.test('should stringify and send query parameters', function (t) {
|
||||
return popsicle.request({
|
||||
url: REMOTE_URL + '/echo/query',
|
||||
query: EXAMPLE_BODY
|
||||
})
|
||||
.then(function (res) {
|
||||
t.deepEqual(res.body, EXAMPLE_BODY);
|
||||
});
|
||||
});
|
||||
t.test('should stringify and append to query object', function (t) {
|
||||
var req = popsicle.request({
|
||||
url: REMOTE_URL + '/echo/query?query=true',
|
||||
query: EXAMPLE_BODY
|
||||
});
|
||||
var query = {
|
||||
query: 'true',
|
||||
username: 'blakeembrey',
|
||||
password: 'hunter2'
|
||||
};
|
||||
var fullUrl = REMOTE_URL + '/echo/query?query=true&username=blakeembrey&password=hunter2';
|
||||
t.equal(req.url, fullUrl);
|
||||
t.deepEqual(req.query, query);
|
||||
return req
|
||||
.then(function (res) {
|
||||
if (typeof window === 'undefined') {
|
||||
t.equal(res.url, fullUrl);
|
||||
}
|
||||
t.deepEqual(res.body, query);
|
||||
});
|
||||
});
|
||||
t.test('should accept query as a string', function (t) {
|
||||
var req = popsicle.request({
|
||||
url: REMOTE_URL + '/echo/query',
|
||||
query: 'query=true'
|
||||
});
|
||||
t.equal(req.url, REMOTE_URL + '/echo/query?query=true');
|
||||
t.deepEqual(req.query, { query: 'true' });
|
||||
return req
|
||||
.then(function (res) {
|
||||
t.deepEqual(res.body, { query: 'true' });
|
||||
});
|
||||
});
|
||||
});
|
||||
test('timeout', function (t) {
|
||||
t.test('should timeout the request when set', function (t) {
|
||||
t.plan(3);
|
||||
return popsicle.request({
|
||||
url: REMOTE_URL + '/delay/1500',
|
||||
timeout: 500
|
||||
})
|
||||
.catch(function (err) {
|
||||
t.equal(err.message, 'Timeout of 500ms exceeded');
|
||||
t.equal(err.code, 'ETIMEOUT');
|
||||
t.ok(err.popsicle instanceof popsicle.Request);
|
||||
});
|
||||
});
|
||||
});
|
||||
test('abort', function (t) {
|
||||
t.test('abort before it starts', function (t) {
|
||||
var req = popsicle.request(REMOTE_URL + '/echo');
|
||||
req.abort();
|
||||
t.plan(3);
|
||||
return req
|
||||
.catch(function (err) {
|
||||
t.equal(err.message, 'Request aborted');
|
||||
t.equal(err.code, 'EABORT');
|
||||
t.ok(err.popsicle instanceof popsicle.Request);
|
||||
});
|
||||
});
|
||||
t.test('abort mid-request', function (t) {
|
||||
var req = popsicle.request(REMOTE_URL + '/download');
|
||||
t.plan(3);
|
||||
setTimeout(function () {
|
||||
req.abort();
|
||||
}, 100);
|
||||
return req
|
||||
.catch(function (err) {
|
||||
t.equal(err.message, 'Request aborted');
|
||||
t.equal(err.code, 'EABORT');
|
||||
t.ok(err.popsicle instanceof popsicle.Request);
|
||||
});
|
||||
});
|
||||
t.test('no side effects of aborting twice', function (t) {
|
||||
var req = popsicle.request(REMOTE_URL + '/download');
|
||||
t.plan(3);
|
||||
req.abort();
|
||||
req.abort();
|
||||
return req
|
||||
.catch(function (err) {
|
||||
t.equal(err.message, 'Request aborted');
|
||||
t.equal(err.code, 'EABORT');
|
||||
t.ok(err.popsicle instanceof popsicle.Request);
|
||||
});
|
||||
});
|
||||
});
|
||||
test('progress', function (t) {
|
||||
t.test('download', function (t) {
|
||||
t.test('download progress', function (t) {
|
||||
var req = popsicle.request(REMOTE_URL + '/download');
|
||||
t.plan(typeof window === 'undefined' ? 3 : 2);
|
||||
t.equal(req.downloaded, 0);
|
||||
if (typeof window === 'undefined') {
|
||||
setTimeout(function () {
|
||||
t.equal(req.downloaded, 0.5);
|
||||
}, 100);
|
||||
}
|
||||
return req
|
||||
.then(function () {
|
||||
t.equal(req.downloaded, 1);
|
||||
});
|
||||
});
|
||||
});
|
||||
t.test('event', function (t) {
|
||||
t.test('emit progress events', function (t) {
|
||||
var req = popsicle.request({
|
||||
url: REMOTE_URL + '/echo',
|
||||
body: EXAMPLE_BODY,
|
||||
method: 'POST'
|
||||
});
|
||||
t.plan(3);
|
||||
var asserted = 0;
|
||||
var expected = 0;
|
||||
req.progress(function (e) {
|
||||
expected += 0.5;
|
||||
t.equal(e.completed, expected);
|
||||
});
|
||||
return req
|
||||
.then(function (res) {
|
||||
t.deepEqual(res.body, EXAMPLE_BODY);
|
||||
});
|
||||
});
|
||||
t.test('error when the progress callback errors', function (t) {
|
||||
var req = popsicle.request(REMOTE_URL + '/echo');
|
||||
t.plan(2);
|
||||
req.progress(function () {
|
||||
throw new Error('Testing');
|
||||
});
|
||||
return req
|
||||
.catch(function (err) {
|
||||
t.equal(err.message, 'Testing');
|
||||
t.notOk(err.popsicle, 'popsicle should not be set');
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
test('response body', function (t) {
|
||||
t.test('automatically parse json responses', function (t) {
|
||||
return popsicle.request(REMOTE_URL + '/json')
|
||||
.then(function (res) {
|
||||
t.equal(res.type(), 'application/json');
|
||||
t.deepEqual(res.body, { username: 'blakeembrey' });
|
||||
});
|
||||
});
|
||||
t.test('automatically parse form encoded responses', function (t) {
|
||||
return popsicle.request(REMOTE_URL + '/foo')
|
||||
.then(function (res) {
|
||||
t.equal(res.type(), 'application/x-www-form-urlencoded');
|
||||
t.deepEqual(res.body, { foo: 'bar' });
|
||||
});
|
||||
});
|
||||
t.test('disable automatic parsing', function (t) {
|
||||
return popsicle.request({
|
||||
url: REMOTE_URL + '/json',
|
||||
use: popsicle.browser ? [] : [popsicle.plugins.concatStream('string')]
|
||||
})
|
||||
.then(function (res) {
|
||||
t.equal(res.type(), 'application/json');
|
||||
t.equal(res.body, '{"username":"blakeembrey"}');
|
||||
});
|
||||
});
|
||||
t.test('set non-parsable responses as null', function (t) {
|
||||
return popsicle.request({
|
||||
url: REMOTE_URL + '/echo',
|
||||
method: 'post'
|
||||
})
|
||||
.then(function (res) {
|
||||
t.equal(res.body, null);
|
||||
});
|
||||
});
|
||||
t.test('set body to null when json is empty', function (t) {
|
||||
return popsicle.request({
|
||||
url: REMOTE_URL + '/echo',
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
})
|
||||
.then(function (res) {
|
||||
t.equal(res.body, null);
|
||||
t.equal(res.type(), 'application/json');
|
||||
});
|
||||
});
|
||||
if (!process.browser) {
|
||||
var fs = require('fs');
|
||||
var concat = require('concat-stream');
|
||||
var filename = require('path').join(__dirname, '../../scripts/server.js');
|
||||
var filecontents = fs.readFileSync(filename, 'utf-8');
|
||||
t.test('stream the response body', function (t) {
|
||||
return popsicle.request({
|
||||
url: REMOTE_URL + '/json',
|
||||
use: []
|
||||
})
|
||||
.then(function (res) {
|
||||
t.equal(typeof res.body, 'object');
|
||||
return new Promise(function (resolve) {
|
||||
res.body.pipe(concat(function (data) {
|
||||
t.equal(data.toString(), '{"username":"blakeembrey"}');
|
||||
return resolve();
|
||||
}));
|
||||
});
|
||||
});
|
||||
});
|
||||
t.test('pipe streams', function (t) {
|
||||
return popsicle.request({
|
||||
url: REMOTE_URL + '/echo',
|
||||
body: fs.createReadStream(filename)
|
||||
})
|
||||
.then(function (res) {
|
||||
t.equal(res.body, filecontents);
|
||||
});
|
||||
});
|
||||
t.test('pipe streams into forms', function (t) {
|
||||
return popsicle.request({
|
||||
url: REMOTE_URL + '/echo',
|
||||
body: popsicle.form({
|
||||
file: fs.createReadStream(filename)
|
||||
})
|
||||
})
|
||||
.then(function (res) {
|
||||
var boundary = BOUNDARY_REGEXP.exec(res.headers['content-type'])[1];
|
||||
t.equal(res.body, [
|
||||
'--' + boundary,
|
||||
'Content-Disposition: form-data; name="file"; filename="server.js"',
|
||||
'Content-Type: application/javascript',
|
||||
'',
|
||||
filecontents,
|
||||
'--' + boundary + '--'
|
||||
].join('\r\n'));
|
||||
});
|
||||
});
|
||||
t.test('unzip contents', function (t) {
|
||||
return popsicle.request({
|
||||
url: REMOTE_URL + '/echo/zip',
|
||||
body: fs.createReadStream(filename)
|
||||
})
|
||||
.then(function (res) {
|
||||
t.equal(res.get('Content-Encoding'), 'deflate');
|
||||
t.equal(res.body, filecontents);
|
||||
});
|
||||
});
|
||||
t.test('unzip with gzip encoding', function (t) {
|
||||
return popsicle.request({
|
||||
url: REMOTE_URL + '/echo/zip',
|
||||
body: fs.createReadStream(filename),
|
||||
headers: {
|
||||
'Accept-Encoding': 'gzip'
|
||||
}
|
||||
})
|
||||
.then(function (res) {
|
||||
t.equal(res.get('Content-Encoding'), 'gzip');
|
||||
t.equal(res.body, filecontents);
|
||||
});
|
||||
});
|
||||
}
|
||||
else {
|
||||
t.test('browser response type', function (t) {
|
||||
return popsicle.request({
|
||||
url: REMOTE_URL + '/text',
|
||||
options: {
|
||||
responseType: 'arraybuffer'
|
||||
}
|
||||
})
|
||||
.then(function (res) {
|
||||
t.ok(res.body instanceof ArrayBuffer);
|
||||
});
|
||||
});
|
||||
t.test('throw on unsupported response type', function (t) {
|
||||
t.plan(2);
|
||||
return popsicle.request({
|
||||
url: REMOTE_URL + '/text',
|
||||
options: {
|
||||
responseType: 'foobar'
|
||||
}
|
||||
})
|
||||
.catch(function (err) {
|
||||
t.equal(err.message, 'Unsupported response type: foobar');
|
||||
t.equal(err.code, 'ERESPONSETYPE');
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
test('request errors', function (t) {
|
||||
t.test('error when requesting an unknown domain', function (t) {
|
||||
t.plan(3);
|
||||
return popsicle.request('http://fdahkfjhuehfakjbvdahjfds.fdsa')
|
||||
.catch(function (err) {
|
||||
t.ok(/Unable to connect/i.exec(err.message));
|
||||
t.equal(err.code, 'EUNAVAILABLE');
|
||||
t.ok(err.popsicle instanceof popsicle.Request);
|
||||
});
|
||||
});
|
||||
t.test('give a parse error on invalid response body', function (t) {
|
||||
t.plan(3);
|
||||
return popsicle.request({
|
||||
url: REMOTE_URL + '/echo',
|
||||
method: 'POST',
|
||||
body: 'username=blakeembrey&password=hunter2',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
})
|
||||
.catch(function (err) {
|
||||
t.ok(/Unable to parse response body/i.test(err.message));
|
||||
t.equal(err.code, 'EPARSE');
|
||||
t.ok(err.popsicle instanceof popsicle.Request);
|
||||
});
|
||||
});
|
||||
t.test('give a stringify error on invalid request body', function (t) {
|
||||
var obj = {};
|
||||
t.plan(3);
|
||||
obj.obj = obj;
|
||||
return popsicle.request({
|
||||
url: REMOTE_URL + '/echo',
|
||||
method: 'POST',
|
||||
body: obj
|
||||
})
|
||||
.catch(function (err) {
|
||||
t.ok(/Unable to stringify request body/i.test(err.message));
|
||||
t.equal(err.code, 'ESTRINGIFY');
|
||||
t.ok(err.popsicle instanceof popsicle.Request);
|
||||
});
|
||||
});
|
||||
});
|
||||
test('plugins', function (t) {
|
||||
t.test('modify the request', function (t) {
|
||||
var req = popsicle.request(REMOTE_URL + '/echo');
|
||||
t.plan(1);
|
||||
req.use(function (self) {
|
||||
t.equal(self, req);
|
||||
});
|
||||
return req;
|
||||
});
|
||||
});
|
||||
test('request flow', function (t) {
|
||||
t.test('before', function (t) {
|
||||
t.test('run a function before opening the request', function (t) {
|
||||
var req = popsicle.request(REMOTE_URL + '/echo');
|
||||
t.plan(2);
|
||||
req.before(function (self) {
|
||||
t.equal(self, req);
|
||||
t.notOk(req.response);
|
||||
});
|
||||
return req;
|
||||
});
|
||||
t.test('fail the request before starting', function (t) {
|
||||
var req = popsicle.request(REMOTE_URL + '/echo');
|
||||
t.plan(1);
|
||||
req.before(function () {
|
||||
throw new Error('Hello world!');
|
||||
});
|
||||
return req
|
||||
.catch(function (err) {
|
||||
t.equal(err.message, 'Hello world!');
|
||||
});
|
||||
});
|
||||
t.test('accept a promise to delay the request', function (t) {
|
||||
var req = popsicle.request(REMOTE_URL + '/echo');
|
||||
t.plan(1);
|
||||
req.before(function (self) {
|
||||
return new Promise(function (resolve) {
|
||||
setTimeout(function () {
|
||||
t.equal(self, req);
|
||||
resolve();
|
||||
}, 10);
|
||||
});
|
||||
});
|
||||
return req;
|
||||
});
|
||||
});
|
||||
test('after', function (t) {
|
||||
t.test('run after the response', function (t) {
|
||||
var req = popsicle.request(REMOTE_URL + '/echo');
|
||||
t.plan(4);
|
||||
req.before(function () {
|
||||
t.notOk(req.response);
|
||||
});
|
||||
req.after(function (response) {
|
||||
t.ok(response instanceof popsicle.Response);
|
||||
t.equal(req.response, response);
|
||||
t.equal(response.request, req);
|
||||
});
|
||||
return req;
|
||||
});
|
||||
t.test('accept a promise', function (t) {
|
||||
var req = popsicle.request(REMOTE_URL + '/echo');
|
||||
t.plan(1);
|
||||
req.after(function (response) {
|
||||
return new Promise(function (resolve) {
|
||||
setTimeout(function () {
|
||||
t.equal(response, req.response);
|
||||
resolve();
|
||||
}, 10);
|
||||
});
|
||||
});
|
||||
return req;
|
||||
});
|
||||
});
|
||||
test('always', function (t) {
|
||||
t.test('run all together in order', function (t) {
|
||||
var req = popsicle.request(REMOTE_URL + '/echo');
|
||||
var before = false;
|
||||
var after = false;
|
||||
var always = false;
|
||||
t.plan(6);
|
||||
req.before(function () {
|
||||
before = true;
|
||||
t.notOk(after);
|
||||
t.notOk(always);
|
||||
});
|
||||
req.after(function () {
|
||||
after = true;
|
||||
t.ok(before);
|
||||
t.notOk(always);
|
||||
});
|
||||
req.always(function (request) {
|
||||
always = true;
|
||||
t.ok(before);
|
||||
t.ok(after);
|
||||
});
|
||||
return req;
|
||||
});
|
||||
t.test('run on error', function (t) {
|
||||
var req = popsicle.request(REMOTE_URL + '/echo');
|
||||
t.plan(2);
|
||||
req.before(function () {
|
||||
throw new Error('Testing');
|
||||
});
|
||||
req.always(function (self) {
|
||||
t.equal(self, req);
|
||||
});
|
||||
return req
|
||||
.catch(function (err) {
|
||||
t.equal(err.message, 'Testing');
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
if (!process.browser) {
|
||||
test('cookie jar', function (t) {
|
||||
t.test('should work with a cookie jar', function (t) {
|
||||
var cookie;
|
||||
var instance = popsicle.defaults({
|
||||
options: {
|
||||
jar: popsicle.jar()
|
||||
}
|
||||
});
|
||||
return instance(REMOTE_URL + '/cookie')
|
||||
.then(function (res) {
|
||||
t.notOk(res.get('Cookie'));
|
||||
t.ok(res.get('Set-Cookie'));
|
||||
cookie = res.get('Set-Cookie');
|
||||
return instance(REMOTE_URL + '/echo');
|
||||
})
|
||||
.then(function (res) {
|
||||
t.equal(res.get('Cookie').toLowerCase(), cookie.toLowerCase());
|
||||
t.notOk(res.get('Set-Cookie'));
|
||||
});
|
||||
});
|
||||
t.test('should update over redirects', function (t) {
|
||||
var instance = popsicle.defaults({
|
||||
options: {
|
||||
jar: popsicle.jar()
|
||||
}
|
||||
});
|
||||
return instance(REMOTE_URL + '/cookie/redirect')
|
||||
.then(function (res) {
|
||||
t.ok(/^new=cookie/.test(res.body));
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
test('override request mechanism', function (t) {
|
||||
return popsicle.request({
|
||||
url: '/foo',
|
||||
transport: {
|
||||
open: function (request) {
|
||||
return Promise.resolve({
|
||||
url: '/foo',
|
||||
body: 'testing',
|
||||
headers: {},
|
||||
status: 200,
|
||||
statusText: 'OK'
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
.then(function (res) {
|
||||
t.equal(res.body, 'testing');
|
||||
});
|
||||
});
|
||||
if (!popsicle.browser) {
|
||||
test('redirect', function (t) {
|
||||
t.test('should follow 302 redirect with get', function (t) {
|
||||
return popsicle.request(REMOTE_URL + '/redirect')
|
||||
.then(function (res) {
|
||||
t.equal(res.body, 'welcome get');
|
||||
t.equal(res.status, 200);
|
||||
t.ok(/\/destination$/.test(res.url));
|
||||
});
|
||||
});
|
||||
t.test('should follow 301 redirect with post', function (t) {
|
||||
return popsicle.post(REMOTE_URL + '/redirect/code/301')
|
||||
.then(function (res) {
|
||||
t.equal(res.body, 'welcome get');
|
||||
t.equal(res.status, 200);
|
||||
t.ok(/\/destination$/.test(res.url));
|
||||
});
|
||||
});
|
||||
t.test('should follow 303 redirect with post', function (t) {
|
||||
return popsicle.post({
|
||||
url: REMOTE_URL + '/redirect/code/303',
|
||||
body: { foo: 'bar' }
|
||||
})
|
||||
.then(function (res) {
|
||||
t.equal(res.body, 'welcome get');
|
||||
t.equal(res.status, 200);
|
||||
t.ok(/\/destination$/.test(res.url));
|
||||
});
|
||||
});
|
||||
t.test('disable following redirects', function (t) {
|
||||
return popsicle.request({
|
||||
url: REMOTE_URL + '/redirect',
|
||||
options: {
|
||||
followRedirects: false
|
||||
}
|
||||
})
|
||||
.then(function (res) {
|
||||
t.equal(res.status, 302);
|
||||
t.ok(/\/redirect$/.test(res.url));
|
||||
});
|
||||
});
|
||||
t.test('default maximum redirects of 5', function (t) {
|
||||
t.plan(2);
|
||||
return popsicle.request(REMOTE_URL + '/redirect/6')
|
||||
.catch(function (err) {
|
||||
t.equal(err.message, 'Exceeded maximum of 5 redirects');
|
||||
t.equal(err.code, 'EMAXREDIRECTS');
|
||||
});
|
||||
});
|
||||
t.test('change maximum redirects', function (t) {
|
||||
return popsicle.request({
|
||||
url: REMOTE_URL + '/redirect/6',
|
||||
options: {
|
||||
maxRedirects: 10
|
||||
}
|
||||
})
|
||||
.then(function (res) {
|
||||
t.equal(res.body, 'welcome get');
|
||||
t.equal(res.status, 200);
|
||||
t.ok(/\/destination$/.test(res.url));
|
||||
});
|
||||
});
|
||||
t.test('support head redirects with 307', function (t) {
|
||||
return popsicle.head(REMOTE_URL + '/redirect/code/307')
|
||||
.then(function (res) {
|
||||
t.equal(res.body, null);
|
||||
t.equal(res.status, 200);
|
||||
t.ok(/\/destination$/.test(res.url));
|
||||
});
|
||||
});
|
||||
t.test('block 307/308 redirects by default', function (t) {
|
||||
return popsicle.post(REMOTE_URL + '/redirect/code/307')
|
||||
.then(function (res) {
|
||||
t.equal(res.status, 307);
|
||||
t.ok(/\/redirect\/code\/307$/.test(res.url));
|
||||
});
|
||||
});
|
||||
t.test('support user confirmed redirects with 308', function (t) {
|
||||
return popsicle.post({
|
||||
url: REMOTE_URL + '/redirect/code/308',
|
||||
options: {
|
||||
followRedirects: function () {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
})
|
||||
.then(function (res) {
|
||||
t.equal(res.body, 'welcome post');
|
||||
t.equal(res.status, 200);
|
||||
t.ok(/\/destination$/.test(res.url));
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
if (!popsicle.browser) {
|
||||
test('https reject unauthorized', function (t) {
|
||||
t.plan(1);
|
||||
return popsicle.get({
|
||||
url: "" + REMOTE_HTTPS_URL
|
||||
})
|
||||
.catch(function (err) {
|
||||
t.equal(err.code, 'EUNAVAILABLE');
|
||||
});
|
||||
});
|
||||
test('https ca option', function (t) {
|
||||
return popsicle.get({
|
||||
url: "" + REMOTE_HTTPS_URL,
|
||||
options: {
|
||||
ca: fs_1.readFileSync(path_1.join(__dirname, '../../scripts/support/ca-crt.pem'))
|
||||
}
|
||||
})
|
||||
.then(function (res) {
|
||||
t.equal(res.body, 'Success');
|
||||
});
|
||||
});
|
||||
test('https disable reject unauthorized', function (t) {
|
||||
return popsicle.get({
|
||||
url: "" + REMOTE_HTTPS_URL,
|
||||
options: {
|
||||
rejectUnauthorized: false
|
||||
}
|
||||
})
|
||||
.then(function (res) {
|
||||
t.equal(res.body, 'Success');
|
||||
});
|
||||
});
|
||||
}
|
||||
//# sourceMappingURL=index.js.map
|
1
node_modules/popsicle/dist/test/index.js.map
generated
vendored
Normal file
1
node_modules/popsicle/dist/test/index.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user