jsdom
Advanced tools
Comparing version 16.5.3 to 16.6.0
@@ -6,5 +6,6 @@ "use strict"; | ||
const dataURLFromRecord = require("data-urls").fromURLRecord; | ||
const request = require("request-promise-native"); | ||
const wrapCookieJarForRequest = require("../../living/helpers/wrap-cookie-jar-for-request"); | ||
const packageVersion = require("../../../../package.json").version; | ||
const agentFactory = require("../../living/helpers/agent-factory"); | ||
const Request = require("../../living/helpers/http-request"); | ||
const IS_BROWSER = Object.prototype.toString.call(process) !== "[object process]"; | ||
@@ -71,25 +72,3 @@ | ||
_getRequestOptions({ cookieJar, referrer, accept = "*/*" }) { | ||
const requestOptions = { | ||
encoding: null, | ||
gzip: true, | ||
jar: wrapCookieJarForRequest(cookieJar), | ||
strictSSL: this._strictSSL, | ||
proxy: this._proxy, | ||
forever: true, | ||
headers: { | ||
"User-Agent": this._userAgent, | ||
"Accept-Language": "en", | ||
"Accept": accept | ||
} | ||
}; | ||
if (referrer && !IS_BROWSER) { | ||
requestOptions.headers.referer = referrer; | ||
} | ||
return requestOptions; | ||
} | ||
fetch(urlString, options = {}) { | ||
fetch(urlString, { accept, cookieJar, referrer } = {}) { | ||
const url = parseURL(urlString); | ||
@@ -108,4 +87,44 @@ | ||
case "https": { | ||
const requestOptions = this._getRequestOptions(options); | ||
return request(urlString, requestOptions); | ||
const agents = agentFactory(this._proxy, this._strictSSL); | ||
const headers = { | ||
"User-Agent": this._userAgent, | ||
"Accept-Language": "en", | ||
"Accept-Encoding": "gzip", | ||
"Accept": accept || "*/*" | ||
}; | ||
if (referrer && !IS_BROWSER) { | ||
headers.Referer = referrer; | ||
} | ||
const requestClient = new Request( | ||
urlString, | ||
{ followRedirects: true, cookieJar, agents }, | ||
{ headers } | ||
); | ||
const promise = new Promise((resolve, reject) => { | ||
const accumulated = []; | ||
requestClient.once("response", res => { | ||
promise.response = res; | ||
const { statusCode } = res; | ||
// TODO This deviates from the spec when it comes to | ||
// loading resources such as images | ||
if (statusCode < 200 || statusCode > 299) { | ||
requestClient.abort(); | ||
reject(new Error(`Resource was not loaded. Status: ${statusCode}`)); | ||
} | ||
}); | ||
requestClient.on("data", chunk => { | ||
accumulated.push(chunk); | ||
}); | ||
requestClient.on("end", () => resolve(Buffer.concat(accumulated))); | ||
requestClient.on("error", reject); | ||
}); | ||
// The method fromURL in lib/api.js crashes without the following four | ||
// properties defined on the Promise instance, causing the test suite to halt | ||
requestClient.on("end", () => { | ||
promise.href = requestClient.currentURL; | ||
}); | ||
promise.abort = requestClient.abort.bind(requestClient); | ||
promise.getHeader = name => headers[name] || requestClient.getHeader(name); | ||
requestClient.end(); | ||
return promise; | ||
} | ||
@@ -112,0 +131,0 @@ |
@@ -175,2 +175,27 @@ "use strict"; | ||
replaceChildren() { | ||
const esValue = this !== null && this !== undefined ? this : globalObject; | ||
if (!exports.is(esValue)) { | ||
throw new TypeError("'replaceChildren' called on an object that is not a valid instance of DocumentFragment."); | ||
} | ||
const args = []; | ||
for (let i = 0; i < arguments.length; i++) { | ||
let curArg = arguments[i]; | ||
if (Node.is(curArg)) { | ||
curArg = utils.implForWrapper(curArg); | ||
} else { | ||
curArg = conversions["DOMString"](curArg, { | ||
context: "Failed to execute 'replaceChildren' on 'DocumentFragment': parameter " + (i + 1) | ||
}); | ||
} | ||
args.push(curArg); | ||
} | ||
ceReactionsPreSteps_helpers_custom_elements(globalObject); | ||
try { | ||
return utils.tryWrapperForImpl(esValue[implSymbol].replaceChildren(...args)); | ||
} finally { | ||
ceReactionsPostSteps_helpers_custom_elements(globalObject); | ||
} | ||
} | ||
querySelector(selectors) { | ||
@@ -276,2 +301,3 @@ const esValue = this !== null && this !== undefined ? this : globalObject; | ||
append: { enumerable: true }, | ||
replaceChildren: { enumerable: true }, | ||
querySelector: { enumerable: true }, | ||
@@ -284,3 +310,6 @@ querySelectorAll: { enumerable: true }, | ||
[Symbol.toStringTag]: { value: "DocumentFragment", configurable: true }, | ||
[Symbol.unscopables]: { value: { prepend: true, append: true, __proto__: null }, configurable: true } | ||
[Symbol.unscopables]: { | ||
value: { prepend: true, append: true, replaceChildren: true, __proto__: null }, | ||
configurable: true | ||
} | ||
}); | ||
@@ -287,0 +316,0 @@ if (globalObject[ctorRegistrySymbol] === undefined) { |
@@ -1000,2 +1000,27 @@ "use strict"; | ||
replaceChildren() { | ||
const esValue = this !== null && this !== undefined ? this : globalObject; | ||
if (!exports.is(esValue)) { | ||
throw new TypeError("'replaceChildren' called on an object that is not a valid instance of Element."); | ||
} | ||
const args = []; | ||
for (let i = 0; i < arguments.length; i++) { | ||
let curArg = arguments[i]; | ||
if (Node.is(curArg)) { | ||
curArg = utils.implForWrapper(curArg); | ||
} else { | ||
curArg = conversions["DOMString"](curArg, { | ||
context: "Failed to execute 'replaceChildren' on 'Element': parameter " + (i + 1) | ||
}); | ||
} | ||
args.push(curArg); | ||
} | ||
ceReactionsPreSteps_helpers_custom_elements(globalObject); | ||
try { | ||
return utils.tryWrapperForImpl(esValue[implSymbol].replaceChildren(...args)); | ||
} finally { | ||
ceReactionsPostSteps_helpers_custom_elements(globalObject); | ||
} | ||
} | ||
querySelector(selectors) { | ||
@@ -1527,2 +1552,3 @@ const esValue = this !== null && this !== undefined ? this : globalObject; | ||
append: { enumerable: true }, | ||
replaceChildren: { enumerable: true }, | ||
querySelector: { enumerable: true }, | ||
@@ -1567,2 +1593,3 @@ querySelectorAll: { enumerable: true }, | ||
append: true, | ||
replaceChildren: true, | ||
__proto__: null | ||
@@ -1569,0 +1596,0 @@ }, |
@@ -7,4 +7,4 @@ "use strict"; | ||
const HTMLConstructor_helpers_html_constructor = require("../helpers/html-constructor.js").HTMLConstructor; | ||
const parseURLToResultingURLRecord_helpers_document_base_url = require("../helpers/document-base-url.js") | ||
.parseURLToResultingURLRecord; | ||
const parseURLToResultingURLRecord_helpers_document_base_url = | ||
require("../helpers/document-base-url.js").parseURLToResultingURLRecord; | ||
const serializeURLwhatwg_url = require("whatwg-url").serializeURL; | ||
@@ -11,0 +11,0 @@ const ceReactionsPreSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPreSteps; |
@@ -9,4 +9,4 @@ "use strict"; | ||
const ceReactionsPostSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPostSteps; | ||
const parseURLToResultingURLRecord_helpers_document_base_url = require("../helpers/document-base-url.js") | ||
.parseURLToResultingURLRecord; | ||
const parseURLToResultingURLRecord_helpers_document_base_url = | ||
require("../helpers/document-base-url.js").parseURLToResultingURLRecord; | ||
const serializeURLwhatwg_url = require("whatwg-url").serializeURL; | ||
@@ -13,0 +13,0 @@ const implSymbol = utils.implSymbol; |
@@ -7,4 +7,4 @@ "use strict"; | ||
const HTMLConstructor_helpers_html_constructor = require("../helpers/html-constructor.js").HTMLConstructor; | ||
const parseURLToResultingURLRecord_helpers_document_base_url = require("../helpers/document-base-url.js") | ||
.parseURLToResultingURLRecord; | ||
const parseURLToResultingURLRecord_helpers_document_base_url = | ||
require("../helpers/document-base-url.js").parseURLToResultingURLRecord; | ||
const serializeURLwhatwg_url = require("whatwg-url").serializeURL; | ||
@@ -11,0 +11,0 @@ const ceReactionsPreSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPreSteps; |
@@ -9,4 +9,4 @@ "use strict"; | ||
const ceReactionsPostSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPostSteps; | ||
const parseURLToResultingURLRecord_helpers_document_base_url = require("../helpers/document-base-url.js") | ||
.parseURLToResultingURLRecord; | ||
const parseURLToResultingURLRecord_helpers_document_base_url = | ||
require("../helpers/document-base-url.js").parseURLToResultingURLRecord; | ||
const serializeURLwhatwg_url = require("whatwg-url").serializeURL; | ||
@@ -13,0 +13,0 @@ const parseNonNegativeInteger_helpers_strings = require("../helpers/strings.js").parseNonNegativeInteger; |
@@ -11,4 +11,4 @@ "use strict"; | ||
const FileList = require("./FileList.js"); | ||
const parseURLToResultingURLRecord_helpers_document_base_url = require("../helpers/document-base-url.js") | ||
.parseURLToResultingURLRecord; | ||
const parseURLToResultingURLRecord_helpers_document_base_url = | ||
require("../helpers/document-base-url.js").parseURLToResultingURLRecord; | ||
const serializeURLwhatwg_url = require("whatwg-url").serializeURL; | ||
@@ -15,0 +15,0 @@ const implSymbol = utils.implSymbol; |
@@ -7,4 +7,4 @@ "use strict"; | ||
const HTMLConstructor_helpers_html_constructor = require("../helpers/html-constructor.js").HTMLConstructor; | ||
const parseURLToResultingURLRecord_helpers_document_base_url = require("../helpers/document-base-url.js") | ||
.parseURLToResultingURLRecord; | ||
const parseURLToResultingURLRecord_helpers_document_base_url = | ||
require("../helpers/document-base-url.js").parseURLToResultingURLRecord; | ||
const serializeURLwhatwg_url = require("whatwg-url").serializeURL; | ||
@@ -11,0 +11,0 @@ const ceReactionsPreSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPreSteps; |
@@ -7,4 +7,4 @@ "use strict"; | ||
const TextTrackKind = require("./TextTrackKind.js"); | ||
const parseURLToResultingURLRecord_helpers_document_base_url = require("../helpers/document-base-url.js") | ||
.parseURLToResultingURLRecord; | ||
const parseURLToResultingURLRecord_helpers_document_base_url = | ||
require("../helpers/document-base-url.js").parseURLToResultingURLRecord; | ||
const serializeURLwhatwg_url = require("whatwg-url").serializeURL; | ||
@@ -11,0 +11,0 @@ const ceReactionsPreSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPreSteps; |
@@ -7,4 +7,4 @@ "use strict"; | ||
const HTMLConstructor_helpers_html_constructor = require("../helpers/html-constructor.js").HTMLConstructor; | ||
const parseURLToResultingURLRecord_helpers_document_base_url = require("../helpers/document-base-url.js") | ||
.parseURLToResultingURLRecord; | ||
const parseURLToResultingURLRecord_helpers_document_base_url = | ||
require("../helpers/document-base-url.js").parseURLToResultingURLRecord; | ||
const serializeURLwhatwg_url = require("whatwg-url").serializeURL; | ||
@@ -11,0 +11,0 @@ const ceReactionsPreSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPreSteps; |
@@ -7,4 +7,4 @@ "use strict"; | ||
const HTMLConstructor_helpers_html_constructor = require("../helpers/html-constructor.js").HTMLConstructor; | ||
const parseURLToResultingURLRecord_helpers_document_base_url = require("../helpers/document-base-url.js") | ||
.parseURLToResultingURLRecord; | ||
const parseURLToResultingURLRecord_helpers_document_base_url = | ||
require("../helpers/document-base-url.js").parseURLToResultingURLRecord; | ||
const serializeURLwhatwg_url = require("whatwg-url").serializeURL; | ||
@@ -11,0 +11,0 @@ const ceReactionsPreSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPreSteps; |
@@ -7,4 +7,4 @@ "use strict"; | ||
const HTMLConstructor_helpers_html_constructor = require("../helpers/html-constructor.js").HTMLConstructor; | ||
const parseURLToResultingURLRecord_helpers_document_base_url = require("../helpers/document-base-url.js") | ||
.parseURLToResultingURLRecord; | ||
const parseURLToResultingURLRecord_helpers_document_base_url = | ||
require("../helpers/document-base-url.js").parseURLToResultingURLRecord; | ||
const serializeURLwhatwg_url = require("whatwg-url").serializeURL; | ||
@@ -11,0 +11,0 @@ const ceReactionsPreSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPreSteps; |
@@ -7,4 +7,4 @@ "use strict"; | ||
const HTMLConstructor_helpers_html_constructor = require("../helpers/html-constructor.js").HTMLConstructor; | ||
const parseURLToResultingURLRecord_helpers_document_base_url = require("../helpers/document-base-url.js") | ||
.parseURLToResultingURLRecord; | ||
const parseURLToResultingURLRecord_helpers_document_base_url = | ||
require("../helpers/document-base-url.js").parseURLToResultingURLRecord; | ||
const serializeURLwhatwg_url = require("whatwg-url").serializeURL; | ||
@@ -11,0 +11,0 @@ const ceReactionsPreSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPreSteps; |
@@ -7,4 +7,4 @@ "use strict"; | ||
const HTMLConstructor_helpers_html_constructor = require("../helpers/html-constructor.js").HTMLConstructor; | ||
const parseURLToResultingURLRecord_helpers_document_base_url = require("../helpers/document-base-url.js") | ||
.parseURLToResultingURLRecord; | ||
const parseURLToResultingURLRecord_helpers_document_base_url = | ||
require("../helpers/document-base-url.js").parseURLToResultingURLRecord; | ||
const serializeURLwhatwg_url = require("whatwg-url").serializeURL; | ||
@@ -11,0 +11,0 @@ const ceReactionsPreSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPreSteps; |
@@ -9,4 +9,4 @@ "use strict"; | ||
const ceReactionsPostSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPostSteps; | ||
const parseURLToResultingURLRecord_helpers_document_base_url = require("../helpers/document-base-url.js") | ||
.parseURLToResultingURLRecord; | ||
const parseURLToResultingURLRecord_helpers_document_base_url = | ||
require("../helpers/document-base-url.js").parseURLToResultingURLRecord; | ||
const serializeURLwhatwg_url = require("whatwg-url").serializeURL; | ||
@@ -13,0 +13,0 @@ const implSymbol = utils.implSymbol; |
@@ -10,4 +10,4 @@ "use strict"; | ||
const ceReactionsPostSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPostSteps; | ||
const parseURLToResultingURLRecord_helpers_document_base_url = require("../helpers/document-base-url.js") | ||
.parseURLToResultingURLRecord; | ||
const parseURLToResultingURLRecord_helpers_document_base_url = | ||
require("../helpers/document-base-url.js").parseURLToResultingURLRecord; | ||
const serializeURLwhatwg_url = require("whatwg-url").serializeURL; | ||
@@ -14,0 +14,0 @@ const implSymbol = utils.implSymbol; |
@@ -21,2 +21,6 @@ "use strict"; | ||
if (typeof message !== "string") { | ||
message = "uncaught exception: " + util.inspect(errorObject); | ||
} | ||
const event = createAnEvent("error", target._globalObject, ErrorEvent, { | ||
@@ -59,3 +63,3 @@ cancelable: true, | ||
const handled = reportAnError(lineNumber, columnNumber, windowImpl, error, error.message, fileName); | ||
const handled = reportAnError(lineNumber, columnNumber, windowImpl, error, error && error.message, fileName); | ||
@@ -73,3 +77,3 @@ if (!handled) { | ||
function shouldBeDisplayedAsError(x) { | ||
return x.name && x.message !== undefined && x.stack; | ||
return x && x.name && x.message !== undefined && x.stack; | ||
} |
@@ -58,2 +58,8 @@ "use strict"; | ||
replaceChildren(...nodes) { | ||
const node = convertNodesIntoNode(this._ownerDocument, nodes); | ||
this._preInsertValidity(node, null); | ||
this._replaceAll(node); | ||
} | ||
querySelector(selectors) { | ||
@@ -60,0 +66,0 @@ if (shouldAlwaysSelectNothing(this)) { |
"use strict"; | ||
const fs = require("fs"); | ||
const request = require("request"); | ||
const { EventEmitter } = require("events"); | ||
@@ -11,3 +10,5 @@ const { URL } = require("whatwg-url"); | ||
const wrapCookieJarForRequest = require("../helpers/wrap-cookie-jar-for-request"); | ||
const agentFactory = require("../helpers/agent-factory"); | ||
const Request = require("../helpers/http-request"); | ||
const FormData = require("form-data"); | ||
const { fireAnEvent } = require("../helpers/events"); | ||
@@ -163,3 +164,2 @@ | ||
response.headers = {}; | ||
response.request = { uri: urlObj }; | ||
const filePath = urlObj.pathname | ||
@@ -207,3 +207,3 @@ .replace(/^file:\/\//, "") | ||
process.nextTick(() => client.emit("response", response)); | ||
process.nextTick(() => client.emit("response", response, urlObj.href)); | ||
@@ -216,4 +216,2 @@ return client; | ||
response.request = { uri: urlObj }; | ||
const client = new EventEmitter(); | ||
@@ -239,3 +237,3 @@ | ||
process.nextTick(() => { | ||
client.emit("response", response); | ||
client.emit("response", response, urlObj.href); | ||
process.nextTick(() => { | ||
@@ -251,3 +249,3 @@ response.emit("data", buffer); | ||
} | ||
const agents = agentFactory(flag.proxy, flag.strictSSL); | ||
const requestHeaders = {}; | ||
@@ -277,23 +275,9 @@ | ||
const options = { | ||
uri, | ||
method: flag.method, | ||
headers: requestHeaders, | ||
gzip: true, | ||
maxRedirects: 21, | ||
followAllRedirects: true, | ||
encoding: null, | ||
strictSSL: flag.strictSSL, | ||
proxy: flag.proxy, | ||
forever: true | ||
}; | ||
const options = { rejectUnauthorized: flag.strictSSL, agents, followRedirects: true }; | ||
if (flag.auth) { | ||
options.auth = { | ||
user: flag.auth.user || "", | ||
pass: flag.auth.pass || "", | ||
sendImmediately: false | ||
}; | ||
options.user = flag.auth.user || ""; | ||
options.pass = flag.auth.pass || ""; | ||
} | ||
if (flag.cookieJar && (!crossOrigin || flag.withCredentials)) { | ||
options.jar = wrapCookieJarForRequest(flag.cookieJar); | ||
options.cookieJar = flag.cookieJar; | ||
} | ||
@@ -307,6 +291,2 @@ | ||
if (hasBody && !flag.formData) { | ||
options.body = body; | ||
} | ||
if (hasBody && getRequestHeader(flag.requestHeaders, "content-type") === null) { | ||
@@ -318,16 +298,43 @@ requestHeaders["Content-Type"] = "text/plain;charset=UTF-8"; | ||
try { | ||
const client = request(options); | ||
if (hasBody && flag.formData) { | ||
const form = client.form(); | ||
for (const entry of body) { | ||
form.append(entry.name, entry.value, entry.options); | ||
let requestBody = body; | ||
let len = 0; | ||
if (hasBody) { | ||
if (flag.formData) { | ||
// TODO: implement https://html.spec.whatwg.org/#multipart-form-data | ||
// directly instead of using an external library | ||
requestBody = new FormData(); | ||
for (const entry of body) { | ||
requestBody.append(entry.name, entry.value, entry.options); | ||
} | ||
len = requestBody.getLengthSync(); | ||
requestHeaders["Content-Type"] = `multipart/form-data; boundary=${requestBody.getBoundary()}`; | ||
} else { | ||
if (typeof body === "string") { | ||
len = Buffer.byteLength(body); | ||
} else { | ||
len = body.length; | ||
} | ||
requestBody = Buffer.isBuffer(requestBody) ? requestBody : Buffer.from(requestBody); | ||
} | ||
requestHeaders["Content-Length"] = len; | ||
} | ||
return client; | ||
requestHeaders["Accept-Encoding"] = "gzip, deflate"; | ||
const requestClient = new Request(uri, options, { method: flag.method, headers: requestHeaders }); | ||
if (hasBody) { | ||
if (flag.formData) { | ||
requestBody.on("error", err => { | ||
requestClient.emit("error", err); | ||
requestClient.abort(); | ||
}); | ||
requestClient.pipeRequest(requestBody); | ||
} else { | ||
requestClient.write(requestBody); | ||
} | ||
} | ||
return requestClient; | ||
} catch (e) { | ||
const client = new EventEmitter(); | ||
process.nextTick(() => client.emit("error", e)); | ||
return client; | ||
const eventEmitterclient = new EventEmitter(); | ||
process.nextTick(() => eventEmitterclient.emit("error", e)); | ||
eventEmitterclient.end = () => {}; | ||
return eventEmitterclient; | ||
} | ||
@@ -344,7 +351,7 @@ } | ||
const preflightRequestHeaders = []; | ||
const preflightRequestHeaders = {}; | ||
for (const header in requestHeaders) { | ||
// the only existing request headers the cors spec allows on the preflight request are Origin and Referrer | ||
// the only existing request headers the cors spec allows on the preflight request are Origin and Referer | ||
const lcHeader = header.toLowerCase(); | ||
if (lcHeader === "origin" || lcHeader === "referrer") { | ||
if (lcHeader === "origin" || lcHeader === "referer") { | ||
preflightRequestHeaders[header] = requestHeaders[header]; | ||
@@ -363,16 +370,9 @@ } | ||
const preflightOptions = { | ||
const rejectUnauthorized = flag.strictSSL; | ||
const preflightClient = new Request( | ||
uri, | ||
method: "OPTIONS", | ||
headers: preflightRequestHeaders, | ||
followRedirect: false, | ||
encoding: null, | ||
pool: flag.pool, | ||
strictSSL: flag.strictSSL, | ||
proxy: flag.proxy, | ||
forever: true | ||
}; | ||
{ agents, followRedirects: false }, | ||
{ method: "OPTIONS", headers: preflightRequestHeaders, rejectUnauthorized } | ||
); | ||
const preflightClient = request(preflightOptions); | ||
preflightClient.on("response", resp => { | ||
@@ -389,4 +389,5 @@ // don't send the real request if the preflight request returned an error | ||
} | ||
// Set request gzip option right before headers are set | ||
const realClient = doRequest(); | ||
realClient.on("response", res => client.emit("response", res)); | ||
realClient.on("response", (...args) => client.emit("response", ...args)); | ||
realClient.on("data", chunk => client.emit("data", chunk)); | ||
@@ -399,13 +400,17 @@ realClient.on("end", () => client.emit("end")); | ||
}); | ||
realClient.on("redirect", () => { | ||
client.response = realClient.response; | ||
client.emit("redirect"); | ||
realClient.on("redirect", (...args) => { | ||
client.emit("redirect", ...args); | ||
}); | ||
realClient.on("error", err => client.emit("error", err)); | ||
realClient.on("error", err => { | ||
client.emit("error", err); | ||
}); | ||
client.abort = () => { | ||
realClient.abort(); | ||
}; | ||
setImmediate(() => realClient.end()); | ||
}); | ||
preflightClient.on("error", err => client.emit("error", err)); | ||
preflightClient.on("error", err => { | ||
client.emit("error", err); | ||
}); | ||
@@ -415,4 +420,6 @@ client.abort = () => { | ||
}; | ||
setImmediate(() => preflightClient.end()); | ||
} else { | ||
client = doRequest(); | ||
setImmediate(() => client.end()); | ||
} | ||
@@ -433,3 +440,2 @@ | ||
} | ||
return client; | ||
@@ -436,0 +442,0 @@ } |
@@ -658,10 +658,8 @@ "use strict"; | ||
client.on("response", res => receiveResponse(this, res)); | ||
client.on("response", (res, url) => receiveResponse(this, res, url)); | ||
client.on("redirect", () => { | ||
const { response } = client; | ||
const destUrlObj = new URL(response.request.headers.Referer); | ||
client.on("redirect", (response, requestHeaders, currentURL) => { | ||
const destUrlObj = new URL(requestHeaders.Referer); | ||
const urlObj = new URL(currentURL); | ||
const urlObj = new URL(response.request.uri.href); | ||
if (destUrlObj.origin !== urlObj.origin && destUrlObj.origin !== flag.origin) { | ||
@@ -671,3 +669,3 @@ properties.origin = "null"; | ||
response.request.headers.Origin = properties.origin; | ||
requestHeaders.Origin = properties.origin; | ||
@@ -768,5 +766,5 @@ if (flag.origin !== destUrlObj.origin && | ||
function receiveResponse(xhr, response) { | ||
function receiveResponse(xhr, response, currentURL) { | ||
const { flag, properties } = xhr; | ||
const { statusCode } = response; | ||
const { rawHeaders, statusCode } = response; | ||
@@ -778,3 +776,2 @@ let byteOffset = 0; | ||
const headerMap = {}; | ||
const { rawHeaders } = response; | ||
const n = Number(rawHeaders.length); | ||
@@ -798,3 +795,3 @@ for (let i = 0; i < n; i += 2) { | ||
const destUrlObj = new URL(response.request.uri.href); | ||
const destUrlObj = new URL(currentURL); | ||
if (properties.origin !== destUrlObj.origin && | ||
@@ -801,0 +798,0 @@ destUrlObj.protocol !== "data:") { |
{ | ||
"name": "jsdom", | ||
"version": "16.5.3", | ||
"version": "16.6.0", | ||
"description": "A JavaScript implementation of many web standards", | ||
@@ -24,3 +24,3 @@ "keywords": [ | ||
"abab": "^2.0.5", | ||
"acorn": "^8.1.0", | ||
"acorn": "^8.2.4", | ||
"acorn-globals": "^6.0.0", | ||
@@ -33,8 +33,9 @@ "cssom": "^0.4.4", | ||
"escodegen": "^2.0.0", | ||
"form-data": "^3.0.0", | ||
"html-encoding-sniffer": "^2.0.1", | ||
"is-potential-custom-element-name": "^1.0.0", | ||
"http-proxy-agent": "^4.0.1", | ||
"https-proxy-agent": "^5.0.0", | ||
"is-potential-custom-element-name": "^1.0.1", | ||
"nwsapi": "^2.2.0", | ||
"parse5": "6.0.1", | ||
"request": "^2.88.2", | ||
"request-promise-native": "^1.0.9", | ||
"saxes": "^5.0.1", | ||
@@ -49,3 +50,3 @@ "symbol-tree": "^3.2.4", | ||
"whatwg-url": "^8.5.0", | ||
"ws": "^7.4.4", | ||
"ws": "^7.4.5", | ||
"xml-name-validator": "^3.0.0" | ||
@@ -65,11 +66,11 @@ }, | ||
"devDependencies": { | ||
"@domenic/eslint-config": "^1.1.0", | ||
"@domenic/eslint-config": "^1.2.0", | ||
"benchmark": "^2.1.4", | ||
"browserify": "^17.0.0", | ||
"chai": "^4.3.4", | ||
"eslint": "^7.23.0", | ||
"eslint": "^7.27.0", | ||
"eslint-plugin-html": "^6.1.2", | ||
"eslint-plugin-jsdom-internal": "link:./scripts/eslint-plugin", | ||
"js-yaml": "^4.0.0", | ||
"karma": "^6.3.1", | ||
"js-yaml": "^4.1.0", | ||
"karma": "^6.3.2", | ||
"karma-browserify": "^8.0.0", | ||
@@ -80,3 +81,3 @@ "karma-chrome-launcher": "^3.1.0", | ||
"minimatch": "^3.0.4", | ||
"mocha": "^8.3.2", | ||
"mocha": "^8.4.0", | ||
"mocha-sugar-free": "^1.4.0", | ||
@@ -86,3 +87,2 @@ "optimist": "0.6.1", | ||
"server-destroy": "^1.0.1", | ||
"st": "^2.0.0", | ||
"watchify": "^4.0.0", | ||
@@ -89,0 +89,0 @@ "wd": "^1.14.0", |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Network access
Supply chain riskThis module accesses the network.
Found 3 instances in 1 package
2913360
22
465
71980
28
10
+ Addedform-data@^3.0.0
+ Addedhttp-proxy-agent@^4.0.1
+ Addedhttps-proxy-agent@^5.0.0
+ Added@tootallnate/once@1.1.2(transitive)
+ Addedform-data@3.0.1(transitive)
+ Addedhttp-proxy-agent@4.0.1(transitive)
- Removedrequest@^2.88.2
- Removedrequest-promise-native@^1.0.9
- Removedajv@6.12.6(transitive)
- Removedasn1@0.2.6(transitive)
- Removedassert-plus@1.0.0(transitive)
- Removedaws-sign2@0.7.0(transitive)
- Removedaws4@1.13.0(transitive)
- Removedbcrypt-pbkdf@1.0.2(transitive)
- Removedcaseless@0.12.0(transitive)
- Removedcore-util-is@1.0.2(transitive)
- Removeddashdash@1.14.1(transitive)
- Removedecc-jsbn@0.1.2(transitive)
- Removedextend@3.0.2(transitive)
- Removedextsprintf@1.3.0(transitive)
- Removedfast-deep-equal@3.1.3(transitive)
- Removedfast-json-stable-stringify@2.1.0(transitive)
- Removedforever-agent@0.6.1(transitive)
- Removedform-data@2.3.3(transitive)
- Removedgetpass@0.1.7(transitive)
- Removedhar-schema@2.0.0(transitive)
- Removedhar-validator@5.1.5(transitive)
- Removedhttp-signature@1.2.0(transitive)
- Removedis-typedarray@1.0.0(transitive)
- Removedisstream@0.1.2(transitive)
- Removedjsbn@0.1.1(transitive)
- Removedjson-schema@0.4.0(transitive)
- Removedjson-schema-traverse@0.4.1(transitive)
- Removedjson-stringify-safe@5.0.1(transitive)
- Removedjsprim@1.4.2(transitive)
- Removedoauth-sign@0.9.0(transitive)
- Removedperformance-now@2.1.0(transitive)
- Removedqs@6.5.3(transitive)
- Removedrequest@2.88.2(transitive)
- Removedrequest-promise-core@1.1.4(transitive)
- Removedrequest-promise-native@1.0.9(transitive)
- Removedsshpk@1.18.0(transitive)
- Removedstealthy-require@1.1.1(transitive)
- Removedtough-cookie@2.5.0(transitive)
- Removedtunnel-agent@0.6.0(transitive)
- Removedtweetnacl@0.14.5(transitive)
- Removeduri-js@4.4.1(transitive)
- Removeduuid@3.4.0(transitive)
- Removedverror@1.10.0(transitive)
Updatedacorn@^8.2.4
Updatedws@^7.4.5