Sha256: ab450c75ac0a7b16bbf4f9d236a67573ec0c87669d2737eac666c5a1d123d9cc

Contents?: true

Size: 1.29 KB

Versions: 15

Compression:

Stored size: 1.29 KB

Contents

export default function(url, options) {
	options = options || {};
	return new Promise( (resolve, reject) => {
		const request = new XMLHttpRequest();
		const keys = [];
		const all = [];
		const headers = {};

		const response = () => ({
			ok: (request.status/100|0) == 2,		// 200-299
			statusText: request.statusText,
			status: request.status,
			url: request.responseURL,
			text: () => Promise.resolve(request.responseText),
			json: () => Promise.resolve(request.responseText).then(JSON.parse),
			blob: () => Promise.resolve(new Blob([request.response])),
			clone: response,
			headers: {
				keys: () => keys,
				entries: () => all,
				get: n => headers[n.toLowerCase()],
				has: n => n.toLowerCase() in headers
			}
		});

		request.open(options.method || 'get', url, true);

		request.onload = () => {
			request.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm, (m, key, value) => {
				keys.push(key = key.toLowerCase());
				all.push([key, value]);
				headers[key] = headers[key] ? `${headers[key]},${value}` : value;
			});
			resolve(response());
		};

		request.onerror = reject;

		request.withCredentials = options.credentials=='include';

		for (const i in options.headers) {
			request.setRequestHeader(i, options.headers[i]);
		}

		request.send(options.body || null);
	});
}

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
japanese_address_parser-3.2.0 js/node_modules/unfetch/src/index.mjs
japanese_address_parser-3.1.2 js/node_modules/unfetch/src/index.mjs
japanese_address_parser-3.1.1 js/node_modules/unfetch/src/index.mjs
japanese_address_parser-3.1.0 js/node_modules/unfetch/src/index.mjs
japanese_address_parser-3.0.5 js/node_modules/unfetch/src/index.mjs
japanese_address_parser-3.0.4 js/node_modules/unfetch/src/index.mjs
japanese_address_parser-3.0.3 js/node_modules/unfetch/src/index.mjs
japanese_address_parser-3.0.2 js/node_modules/unfetch/src/index.mjs
japanese_address_parser-3.0.1 js/node_modules/unfetch/src/index.mjs
japanese_address_parser-3.0.0 js/node_modules/unfetch/src/index.mjs
japanese_address_parser-2.2.1 js/node_modules/unfetch/src/index.mjs
japanese_address_parser-2.2.0 js/node_modules/unfetch/src/index.mjs
japanese_address_parser-2.1.1 js/node_modules/unfetch/src/index.mjs
japanese_address_parser-2.1.0 js/node_modules/unfetch/src/index.mjs
japanese_address_parser-2.0.0 js/node_modules/unfetch/src/index.mjs