mirror of
https://github.com/S2-/minifyfromhtml.git
synced 2025-08-02 12:00:03 +02:00
update node modules
This commit is contained in:
6
node_modules/jsdom/Changelog.md
generated
vendored
6
node_modules/jsdom/Changelog.md
generated
vendored
@@ -26,6 +26,12 @@ Other guidelines:
|
||||
* Roughly order changes within those groupings by impact.
|
||||
-->
|
||||
|
||||
## 16.6.0
|
||||
|
||||
* Added `parentNode.replaceChildren()`. (ninevra)
|
||||
* Fixed jsdom's handling of when code running inside the jsdom throws `null` or `undefined` as an exception. (mbest)
|
||||
* Removed the dependency on the deprecated [`request`](https://www.npmjs.com/package/request) package, in the process fixing several issues with the `XMLHttpRequest` implementation around header processing. Special thanks to vegardbb for completing this months-long effort!
|
||||
|
||||
## 16.5.3
|
||||
|
||||
* Fixed infinite recursion when using `MutationObserver`s to observe elements inside a `MutationObserver` callback.
|
||||
|
73
node_modules/jsdom/lib/jsdom/browser/resources/resource-loader.js
generated
vendored
73
node_modules/jsdom/lib/jsdom/browser/resources/resource-loader.js
generated
vendored
@@ -3,9 +3,10 @@ const fs = require("fs");
|
||||
const { fileURLToPath } = require("url");
|
||||
const { parseURL } = require("whatwg-url");
|
||||
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]";
|
||||
|
||||
module.exports = class ResourceLoader {
|
||||
@@ -67,29 +68,7 @@ module.exports = class ResourceLoader {
|
||||
return promise;
|
||||
}
|
||||
|
||||
_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);
|
||||
|
||||
if (!url) {
|
||||
@@ -103,8 +82,48 @@ module.exports = class ResourceLoader {
|
||||
|
||||
case "http":
|
||||
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;
|
||||
}
|
||||
|
||||
case "file": {
|
||||
|
31
node_modules/jsdom/lib/jsdom/living/generated/Document.js
generated
vendored
31
node_modules/jsdom/lib/jsdom/living/generated/Document.js
generated
vendored
@@ -919,6 +919,31 @@ exports.install = (globalObject, globalNames) => {
|
||||
}
|
||||
}
|
||||
|
||||
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 Document.");
|
||||
}
|
||||
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 'Document': 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) {
|
||||
const esValue = this !== null && this !== undefined ? this : globalObject;
|
||||
if (!exports.is(esValue)) {
|
||||
@@ -3174,6 +3199,7 @@ exports.install = (globalObject, globalNames) => {
|
||||
getElementById: { enumerable: true },
|
||||
prepend: { enumerable: true },
|
||||
append: { enumerable: true },
|
||||
replaceChildren: { enumerable: true },
|
||||
querySelector: { enumerable: true },
|
||||
querySelectorAll: { enumerable: true },
|
||||
implementation: { enumerable: true },
|
||||
@@ -3276,7 +3302,10 @@ exports.install = (globalObject, globalNames) => {
|
||||
lastElementChild: { enumerable: true },
|
||||
childElementCount: { enumerable: true },
|
||||
[Symbol.toStringTag]: { value: "Document", 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
|
||||
}
|
||||
});
|
||||
if (globalObject[ctorRegistrySymbol] === undefined) {
|
||||
globalObject[ctorRegistrySymbol] = Object.create(null);
|
||||
|
31
node_modules/jsdom/lib/jsdom/living/generated/DocumentFragment.js
generated
vendored
31
node_modules/jsdom/lib/jsdom/living/generated/DocumentFragment.js
generated
vendored
@@ -172,6 +172,31 @@ exports.install = (globalObject, globalNames) => {
|
||||
}
|
||||
}
|
||||
|
||||
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) {
|
||||
const esValue = this !== null && this !== undefined ? this : globalObject;
|
||||
if (!exports.is(esValue)) {
|
||||
@@ -272,6 +297,7 @@ exports.install = (globalObject, globalNames) => {
|
||||
getElementById: { enumerable: true },
|
||||
prepend: { enumerable: true },
|
||||
append: { enumerable: true },
|
||||
replaceChildren: { enumerable: true },
|
||||
querySelector: { enumerable: true },
|
||||
querySelectorAll: { enumerable: true },
|
||||
children: { enumerable: true },
|
||||
@@ -279,7 +305,10 @@ exports.install = (globalObject, globalNames) => {
|
||||
lastElementChild: { enumerable: true },
|
||||
childElementCount: { 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
|
||||
}
|
||||
});
|
||||
if (globalObject[ctorRegistrySymbol] === undefined) {
|
||||
globalObject[ctorRegistrySymbol] = Object.create(null);
|
||||
|
27
node_modules/jsdom/lib/jsdom/living/generated/Element.js
generated
vendored
27
node_modules/jsdom/lib/jsdom/living/generated/Element.js
generated
vendored
@@ -997,6 +997,31 @@ exports.install = (globalObject, globalNames) => {
|
||||
}
|
||||
}
|
||||
|
||||
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) {
|
||||
const esValue = this !== null && this !== undefined ? this : globalObject;
|
||||
if (!exports.is(esValue)) {
|
||||
@@ -1523,6 +1548,7 @@ exports.install = (globalObject, globalNames) => {
|
||||
remove: { enumerable: true },
|
||||
prepend: { enumerable: true },
|
||||
append: { enumerable: true },
|
||||
replaceChildren: { enumerable: true },
|
||||
querySelector: { enumerable: true },
|
||||
querySelectorAll: { enumerable: true },
|
||||
namespaceURI: { enumerable: true },
|
||||
@@ -1562,6 +1588,7 @@ exports.install = (globalObject, globalNames) => {
|
||||
remove: true,
|
||||
prepend: true,
|
||||
append: true,
|
||||
replaceChildren: true,
|
||||
__proto__: null
|
||||
},
|
||||
configurable: true
|
||||
|
4
node_modules/jsdom/lib/jsdom/living/generated/HTMLEmbedElement.js
generated
vendored
4
node_modules/jsdom/lib/jsdom/living/generated/HTMLEmbedElement.js
generated
vendored
@@ -4,8 +4,8 @@ const conversions = require("webidl-conversions");
|
||||
const utils = require("./utils.js");
|
||||
|
||||
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;
|
||||
const ceReactionsPreSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPreSteps;
|
||||
const ceReactionsPostSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPostSteps;
|
||||
|
4
node_modules/jsdom/lib/jsdom/living/generated/HTMLFrameElement.js
generated
vendored
4
node_modules/jsdom/lib/jsdom/living/generated/HTMLFrameElement.js
generated
vendored
@@ -6,8 +6,8 @@ const utils = require("./utils.js");
|
||||
const HTMLConstructor_helpers_html_constructor = require("../helpers/html-constructor.js").HTMLConstructor;
|
||||
const ceReactionsPreSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPreSteps;
|
||||
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;
|
||||
const implSymbol = utils.implSymbol;
|
||||
const ctorRegistrySymbol = utils.ctorRegistrySymbol;
|
||||
|
4
node_modules/jsdom/lib/jsdom/living/generated/HTMLIFrameElement.js
generated
vendored
4
node_modules/jsdom/lib/jsdom/living/generated/HTMLIFrameElement.js
generated
vendored
@@ -4,8 +4,8 @@ const conversions = require("webidl-conversions");
|
||||
const utils = require("./utils.js");
|
||||
|
||||
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;
|
||||
const ceReactionsPreSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPreSteps;
|
||||
const ceReactionsPostSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPostSteps;
|
||||
|
4
node_modules/jsdom/lib/jsdom/living/generated/HTMLImageElement.js
generated
vendored
4
node_modules/jsdom/lib/jsdom/living/generated/HTMLImageElement.js
generated
vendored
@@ -6,8 +6,8 @@ const utils = require("./utils.js");
|
||||
const HTMLConstructor_helpers_html_constructor = require("../helpers/html-constructor.js").HTMLConstructor;
|
||||
const ceReactionsPreSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPreSteps;
|
||||
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;
|
||||
const parseNonNegativeInteger_helpers_strings = require("../helpers/strings.js").parseNonNegativeInteger;
|
||||
const implSymbol = utils.implSymbol;
|
||||
|
4
node_modules/jsdom/lib/jsdom/living/generated/HTMLInputElement.js
generated
vendored
4
node_modules/jsdom/lib/jsdom/living/generated/HTMLInputElement.js
generated
vendored
@@ -8,8 +8,8 @@ const SelectionMode = require("./SelectionMode.js");
|
||||
const ceReactionsPreSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPreSteps;
|
||||
const ceReactionsPostSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPostSteps;
|
||||
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;
|
||||
const implSymbol = utils.implSymbol;
|
||||
const ctorRegistrySymbol = utils.ctorRegistrySymbol;
|
||||
|
4
node_modules/jsdom/lib/jsdom/living/generated/HTMLLinkElement.js
generated
vendored
4
node_modules/jsdom/lib/jsdom/living/generated/HTMLLinkElement.js
generated
vendored
@@ -4,8 +4,8 @@ const conversions = require("webidl-conversions");
|
||||
const utils = require("./utils.js");
|
||||
|
||||
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;
|
||||
const ceReactionsPreSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPreSteps;
|
||||
const ceReactionsPostSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPostSteps;
|
||||
|
4
node_modules/jsdom/lib/jsdom/living/generated/HTMLMediaElement.js
generated
vendored
4
node_modules/jsdom/lib/jsdom/living/generated/HTMLMediaElement.js
generated
vendored
@@ -4,8 +4,8 @@ const conversions = require("webidl-conversions");
|
||||
const utils = require("./utils.js");
|
||||
|
||||
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;
|
||||
const ceReactionsPreSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPreSteps;
|
||||
const ceReactionsPostSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPostSteps;
|
||||
|
4
node_modules/jsdom/lib/jsdom/living/generated/HTMLModElement.js
generated
vendored
4
node_modules/jsdom/lib/jsdom/living/generated/HTMLModElement.js
generated
vendored
@@ -4,8 +4,8 @@ const conversions = require("webidl-conversions");
|
||||
const utils = require("./utils.js");
|
||||
|
||||
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;
|
||||
const ceReactionsPreSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPreSteps;
|
||||
const ceReactionsPostSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPostSteps;
|
||||
|
4
node_modules/jsdom/lib/jsdom/living/generated/HTMLObjectElement.js
generated
vendored
4
node_modules/jsdom/lib/jsdom/living/generated/HTMLObjectElement.js
generated
vendored
@@ -4,8 +4,8 @@ const conversions = require("webidl-conversions");
|
||||
const utils = require("./utils.js");
|
||||
|
||||
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;
|
||||
const ceReactionsPreSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPreSteps;
|
||||
const ceReactionsPostSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPostSteps;
|
||||
|
4
node_modules/jsdom/lib/jsdom/living/generated/HTMLQuoteElement.js
generated
vendored
4
node_modules/jsdom/lib/jsdom/living/generated/HTMLQuoteElement.js
generated
vendored
@@ -4,8 +4,8 @@ const conversions = require("webidl-conversions");
|
||||
const utils = require("./utils.js");
|
||||
|
||||
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;
|
||||
const ceReactionsPreSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPreSteps;
|
||||
const ceReactionsPostSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPostSteps;
|
||||
|
4
node_modules/jsdom/lib/jsdom/living/generated/HTMLScriptElement.js
generated
vendored
4
node_modules/jsdom/lib/jsdom/living/generated/HTMLScriptElement.js
generated
vendored
@@ -4,8 +4,8 @@ const conversions = require("webidl-conversions");
|
||||
const utils = require("./utils.js");
|
||||
|
||||
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;
|
||||
const ceReactionsPreSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPreSteps;
|
||||
const ceReactionsPostSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPostSteps;
|
||||
|
4
node_modules/jsdom/lib/jsdom/living/generated/HTMLSourceElement.js
generated
vendored
4
node_modules/jsdom/lib/jsdom/living/generated/HTMLSourceElement.js
generated
vendored
@@ -4,8 +4,8 @@ const conversions = require("webidl-conversions");
|
||||
const utils = require("./utils.js");
|
||||
|
||||
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;
|
||||
const ceReactionsPreSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPreSteps;
|
||||
const ceReactionsPostSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPostSteps;
|
||||
|
4
node_modules/jsdom/lib/jsdom/living/generated/HTMLTrackElement.js
generated
vendored
4
node_modules/jsdom/lib/jsdom/living/generated/HTMLTrackElement.js
generated
vendored
@@ -6,8 +6,8 @@ const utils = require("./utils.js");
|
||||
const HTMLConstructor_helpers_html_constructor = require("../helpers/html-constructor.js").HTMLConstructor;
|
||||
const ceReactionsPreSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPreSteps;
|
||||
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;
|
||||
const implSymbol = utils.implSymbol;
|
||||
const ctorRegistrySymbol = utils.ctorRegistrySymbol;
|
||||
|
4
node_modules/jsdom/lib/jsdom/living/generated/HTMLVideoElement.js
generated
vendored
4
node_modules/jsdom/lib/jsdom/living/generated/HTMLVideoElement.js
generated
vendored
@@ -7,8 +7,8 @@ const HTMLConstructor_helpers_html_constructor = require("../helpers/html-constr
|
||||
const parseNonNegativeInteger_helpers_strings = require("../helpers/strings.js").parseNonNegativeInteger;
|
||||
const ceReactionsPreSteps_helpers_custom_elements = require("../helpers/custom-elements.js").ceReactionsPreSteps;
|
||||
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;
|
||||
const implSymbol = utils.implSymbol;
|
||||
const ctorRegistrySymbol = utils.ctorRegistrySymbol;
|
||||
|
15
node_modules/jsdom/lib/jsdom/living/helpers/agent-factory.js
generated
vendored
Normal file
15
node_modules/jsdom/lib/jsdom/living/helpers/agent-factory.js
generated
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
"use strict";
|
||||
const http = require("http");
|
||||
const https = require("https");
|
||||
const { parse: parseURLToNodeOptions } = require("url");
|
||||
const HttpProxyAgent = require("http-proxy-agent");
|
||||
const HttpsProxyAgent = require("https-proxy-agent");
|
||||
|
||||
module.exports = function agentFactory(proxy, rejectUnauthorized) {
|
||||
const agentOpts = { keepAlive: true, rejectUnauthorized };
|
||||
if (proxy) {
|
||||
const proxyOpts = { ...parseURLToNodeOptions(proxy), ...agentOpts };
|
||||
return { https: new HttpsProxyAgent(proxyOpts), http: new HttpProxyAgent(proxyOpts) };
|
||||
}
|
||||
return { http: new http.Agent(agentOpts), https: new https.Agent(agentOpts) };
|
||||
};
|
254
node_modules/jsdom/lib/jsdom/living/helpers/http-request.js
generated
vendored
Normal file
254
node_modules/jsdom/lib/jsdom/living/helpers/http-request.js
generated
vendored
Normal file
@@ -0,0 +1,254 @@
|
||||
"use strict";
|
||||
const http = require("http");
|
||||
const https = require("https");
|
||||
const { Writable } = require("stream");
|
||||
const zlib = require("zlib");
|
||||
|
||||
const ver = process.version.replace("v", "").split(".");
|
||||
const majorNodeVersion = Number.parseInt(ver[0]);
|
||||
|
||||
function abortRequest(clientRequest) {
|
||||
// clientRequest.destroy breaks the test suite for versions 10 and 12,
|
||||
// hence the version check
|
||||
if (majorNodeVersion > 13) {
|
||||
clientRequest.destroy();
|
||||
} else {
|
||||
clientRequest.abort();
|
||||
}
|
||||
clientRequest.removeAllListeners();
|
||||
clientRequest.on("error", () => {});
|
||||
}
|
||||
|
||||
module.exports = class Request extends Writable {
|
||||
constructor(url, clientOptions, requestOptions) {
|
||||
super();
|
||||
Object.assign(this, clientOptions);
|
||||
this.currentURL = url;
|
||||
this._requestOptions = requestOptions;
|
||||
this.headers = requestOptions.headers;
|
||||
this._ended = false;
|
||||
this._redirectCount = 0;
|
||||
this._requestBodyBuffers = [];
|
||||
this._bufferIndex = 0;
|
||||
this._performRequest();
|
||||
}
|
||||
|
||||
abort() {
|
||||
abortRequest(this._currentRequest);
|
||||
this.emit("abort");
|
||||
this.removeAllListeners();
|
||||
}
|
||||
|
||||
pipeRequest(form) {
|
||||
form.pipe(this._currentRequest);
|
||||
}
|
||||
|
||||
write(data, encoding) {
|
||||
if (data.length > 0) {
|
||||
this._requestBodyBuffers.push({ data, encoding });
|
||||
this._currentRequest.write(data, encoding);
|
||||
}
|
||||
}
|
||||
|
||||
end() {
|
||||
this.emit("request", this._currentRequest);
|
||||
this._ended = true;
|
||||
this._currentRequest.end();
|
||||
}
|
||||
|
||||
setHeader(name, value) {
|
||||
this.headers[name] = value;
|
||||
this._currentRequest.setHeader(name, value);
|
||||
}
|
||||
|
||||
removeHeader(name) {
|
||||
delete this.headers[name];
|
||||
this._currentRequest.removeHeader(name);
|
||||
}
|
||||
|
||||
// Without this method, the test send-redirect-infinite-sync will halt the test suite
|
||||
// TODO: investigate this further and ideally remove
|
||||
toJSON() {
|
||||
const { method, headers } = this._requestOptions;
|
||||
return { uri: new URL(this.currentURL), method, headers };
|
||||
}
|
||||
|
||||
_writeNext(error) {
|
||||
if (this._currentRequest) {
|
||||
if (error) {
|
||||
this.emit("error", error);
|
||||
} else if (this._bufferIndex < this._requestBodyBuffers.length) {
|
||||
const buffer = this._requestBodyBuffers[this._bufferIndex++];
|
||||
if (!this._currentRequest.writableEnded) {
|
||||
this._currentRequest.write(
|
||||
buffer.data,
|
||||
buffer.encoding,
|
||||
this._writeNext.bind(this)
|
||||
);
|
||||
}
|
||||
} else if (this._ended) {
|
||||
this._currentRequest.end();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_performRequest() {
|
||||
const urlOptions = new URL(this.currentURL);
|
||||
const scheme = urlOptions.protocol;
|
||||
this._requestOptions.agent = this.agents[scheme.substring(0, scheme.length - 1)];
|
||||
const { request } = scheme === "https:" ? https : http;
|
||||
this._currentRequest = request(this.currentURL, this._requestOptions, response => {
|
||||
this._processResponse(response);
|
||||
});
|
||||
|
||||
let cookies;
|
||||
if (this._redirectCount === 0) {
|
||||
this.originalCookieHeader = this.getHeader("Cookie");
|
||||
}
|
||||
if (this.cookieJar) {
|
||||
cookies = this.cookieJar.getCookieStringSync(this.currentURL);
|
||||
}
|
||||
if (cookies && cookies.length) {
|
||||
if (this.originalCookieHeader) {
|
||||
this.setHeader("Cookie", this.originalCookieHeader + "; " + cookies);
|
||||
} else {
|
||||
this.setHeader("Cookie", cookies);
|
||||
}
|
||||
}
|
||||
|
||||
for (const event of ["connect", "error", "socket", "timeout"]) {
|
||||
this._currentRequest.on(event, (...args) => {
|
||||
this.emit(event, ...args);
|
||||
});
|
||||
}
|
||||
if (this._isRedirect) {
|
||||
this._bufferIndex = 0;
|
||||
this._writeNext();
|
||||
}
|
||||
}
|
||||
|
||||
_processResponse(response) {
|
||||
const cookies = response.headers["set-cookie"];
|
||||
if (this.cookieJar && Array.isArray(cookies)) {
|
||||
try {
|
||||
cookies.forEach(cookie => {
|
||||
this.cookieJar.setCookieSync(cookie, this.currentURL, { ignoreError: true });
|
||||
});
|
||||
} catch (e) {
|
||||
this.emit("error", e);
|
||||
}
|
||||
}
|
||||
|
||||
const { statusCode } = response;
|
||||
const { location } = response.headers;
|
||||
// In Node v15, aborting a message with remaining data causes an error to be thrown,
|
||||
// hence the version check
|
||||
const catchResErrors = err => {
|
||||
if (!(majorNodeVersion >= 15 && err.message === "aborted")) {
|
||||
this.emit("error", err);
|
||||
}
|
||||
};
|
||||
response.on("error", catchResErrors);
|
||||
let redirectAddress = null;
|
||||
let resendWithAuth = false;
|
||||
if (typeof location === "string" &&
|
||||
location.length &&
|
||||
this.followRedirects &&
|
||||
statusCode >= 300 &&
|
||||
statusCode < 400) {
|
||||
redirectAddress = location;
|
||||
} else if (statusCode === 401 &&
|
||||
/^Basic /i.test(response.headers["www-authenticate"] || "") &&
|
||||
(this.user && this.user.length)) {
|
||||
this._requestOptions.auth = `${this.user}:${this.pass}`;
|
||||
resendWithAuth = true;
|
||||
}
|
||||
if (redirectAddress || resendWithAuth) {
|
||||
if (++this._redirectCount > 21) {
|
||||
const redirectError = new Error("Maximum number of redirects exceeded");
|
||||
redirectError.code = "ERR_TOO_MANY_REDIRECTS";
|
||||
this.emit("error", redirectError);
|
||||
return;
|
||||
}
|
||||
abortRequest(this._currentRequest);
|
||||
response.destroy();
|
||||
this._isRedirect = true;
|
||||
if (((statusCode === 301 || statusCode === 302) && this._requestOptions.method === "POST") ||
|
||||
(statusCode === 303 && !/^(?:GET|HEAD)$/.test(this._requestOptions.method))) {
|
||||
this._requestOptions.method = "GET";
|
||||
this._requestBodyBuffers = [];
|
||||
}
|
||||
let previousHostName = this._removeMatchingHeaders(/^host$/i);
|
||||
if (!previousHostName) {
|
||||
previousHostName = new URL(this.currentURL).hostname;
|
||||
}
|
||||
const previousURL = this.currentURL;
|
||||
if (!resendWithAuth) {
|
||||
const nextURL = redirectAddress.startsWith("https:") ?
|
||||
new URL(redirectAddress) :
|
||||
new URL(redirectAddress, this.currentURL);
|
||||
if (nextURL.hostname !== previousHostName) {
|
||||
this._removeMatchingHeaders(/^authorization$/i);
|
||||
}
|
||||
this.currentURL = nextURL.toString();
|
||||
}
|
||||
this.headers.Referer = previousURL;
|
||||
this.emit("redirect", response, this.headers, this.currentURL);
|
||||
try {
|
||||
this._performRequest();
|
||||
} catch (cause) {
|
||||
this.emit("error", cause);
|
||||
}
|
||||
} else {
|
||||
let pipeline = response;
|
||||
const acceptEncoding = this.headers["Accept-Encoding"];
|
||||
const requestCompressed = typeof acceptEncoding === "string" &&
|
||||
(acceptEncoding.includes("gzip") || acceptEncoding.includes("deflate"));
|
||||
if (
|
||||
requestCompressed &&
|
||||
this._requestOptions.method !== "HEAD" &&
|
||||
statusCode >= 200 &&
|
||||
statusCode !== 204 &&
|
||||
statusCode !== 304
|
||||
) {
|
||||
const zlibOptions = {
|
||||
flush: zlib.constants.Z_SYNC_FLUSH,
|
||||
finishFlush: zlib.constants.Z_SYNC_FLUSH
|
||||
};
|
||||
const contentEncoding = (response.headers["content-encoding"] || "identity").trim().toLowerCase();
|
||||
if (contentEncoding === "gzip") {
|
||||
pipeline = zlib.createGunzip(zlibOptions);
|
||||
response.pipe(pipeline);
|
||||
} else if (contentEncoding === "deflate") {
|
||||
pipeline = zlib.createInflate(zlibOptions);
|
||||
response.pipe(pipeline);
|
||||
}
|
||||
}
|
||||
pipeline.removeAllListeners("error");
|
||||
this.emit("response", response, this.currentURL);
|
||||
pipeline.on("data", bytes => this.emit("data", bytes));
|
||||
pipeline.once("end", bytes => this.emit("end", bytes));
|
||||
pipeline.on("error", catchResErrors);
|
||||
pipeline.on("close", () => this.emit("close"));
|
||||
this._requestBodyBuffers = [];
|
||||
}
|
||||
}
|
||||
|
||||
getHeader(key, value) {
|
||||
if (this._currentRequest) {
|
||||
return this._currentRequest.getHeader(key, value);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
_removeMatchingHeaders(regex) {
|
||||
let lastValue;
|
||||
for (const header in this.headers) {
|
||||
if (regex.test(header)) {
|
||||
lastValue = this.headers[header];
|
||||
delete this.headers[header];
|
||||
}
|
||||
}
|
||||
return lastValue;
|
||||
}
|
||||
};
|
8
node_modules/jsdom/lib/jsdom/living/helpers/runtime-script-errors.js
generated
vendored
8
node_modules/jsdom/lib/jsdom/living/helpers/runtime-script-errors.js
generated
vendored
@@ -18,6 +18,10 @@ function reportAnError(line, col, target, errorObject, message, location) {
|
||||
|
||||
target[errorReportingMode] = true;
|
||||
|
||||
if (typeof message !== "string") {
|
||||
message = "uncaught exception: " + util.inspect(errorObject);
|
||||
}
|
||||
|
||||
const event = createAnEvent("error", target._globalObject, ErrorEvent, {
|
||||
cancelable: true,
|
||||
message,
|
||||
@@ -55,7 +59,7 @@ module.exports = function reportException(window, error, filenameHint) {
|
||||
|
||||
const windowImpl = idlUtils.implForWrapper(window);
|
||||
|
||||
const handled = reportAnError(lineNumber, columnNumber, windowImpl, error, error.message, fileName);
|
||||
const handled = reportAnError(lineNumber, columnNumber, windowImpl, error, error && error.message, fileName);
|
||||
|
||||
if (!handled) {
|
||||
const errorString = shouldBeDisplayedAsError(error) ? `[${error.name}: ${error.message}]` : util.inspect(error);
|
||||
@@ -68,5 +72,5 @@ module.exports = function reportException(window, error, filenameHint) {
|
||||
};
|
||||
|
||||
function shouldBeDisplayedAsError(x) {
|
||||
return x.name && x.message !== undefined && x.stack;
|
||||
return x && x.name && x.message !== undefined && x.stack;
|
||||
}
|
||||
|
8
node_modules/jsdom/lib/jsdom/living/helpers/wrap-cookie-jar-for-request.js
generated
vendored
8
node_modules/jsdom/lib/jsdom/living/helpers/wrap-cookie-jar-for-request.js
generated
vendored
@@ -1,8 +0,0 @@
|
||||
"use strict";
|
||||
const request = require("request");
|
||||
|
||||
module.exports = cookieJar => {
|
||||
const jarWrapper = request.jar();
|
||||
jarWrapper._jar = cookieJar;
|
||||
return jarWrapper;
|
||||
};
|
6
node_modules/jsdom/lib/jsdom/living/nodes/ParentNode-impl.js
generated
vendored
6
node_modules/jsdom/lib/jsdom/living/nodes/ParentNode-impl.js
generated
vendored
@@ -55,6 +55,12 @@ class ParentNodeImpl {
|
||||
this._append(convertNodesIntoNode(this._ownerDocument, nodes));
|
||||
}
|
||||
|
||||
replaceChildren(...nodes) {
|
||||
const node = convertNodesIntoNode(this._ownerDocument, nodes);
|
||||
this._preInsertValidity(node, null);
|
||||
this._replaceAll(node);
|
||||
}
|
||||
|
||||
querySelector(selectors) {
|
||||
if (shouldAlwaysSelectNothing(this)) {
|
||||
return null;
|
||||
|
19
node_modules/jsdom/lib/jsdom/living/xhr/XMLHttpRequest-impl.js
generated
vendored
19
node_modules/jsdom/lib/jsdom/living/xhr/XMLHttpRequest-impl.js
generated
vendored
@@ -655,19 +655,17 @@ class XMLHttpRequestImpl extends XMLHttpRequestEventTargetImpl {
|
||||
xhrUtils.dispatchError(this);
|
||||
});
|
||||
|
||||
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);
|
||||
|
||||
const urlObj = new URL(response.request.uri.href);
|
||||
client.on("redirect", (response, requestHeaders, currentURL) => {
|
||||
const destUrlObj = new URL(requestHeaders.Referer);
|
||||
const urlObj = new URL(currentURL);
|
||||
|
||||
if (destUrlObj.origin !== urlObj.origin && destUrlObj.origin !== flag.origin) {
|
||||
properties.origin = "null";
|
||||
}
|
||||
|
||||
response.request.headers.Origin = properties.origin;
|
||||
requestHeaders.Origin = properties.origin;
|
||||
|
||||
if (flag.origin !== destUrlObj.origin &&
|
||||
destUrlObj.protocol !== "data:") {
|
||||
@@ -763,16 +761,15 @@ function readyStateChange(xhr, readyState) {
|
||||
fireAnEvent("readystatechange", xhr);
|
||||
}
|
||||
|
||||
function receiveResponse(xhr, response) {
|
||||
function receiveResponse(xhr, response, currentURL) {
|
||||
const { flag, properties } = xhr;
|
||||
const { statusCode } = response;
|
||||
const { rawHeaders, statusCode } = response;
|
||||
|
||||
let byteOffset = 0;
|
||||
|
||||
const headers = {};
|
||||
const filteredResponseHeaders = [];
|
||||
const headerMap = {};
|
||||
const { rawHeaders } = response;
|
||||
const n = Number(rawHeaders.length);
|
||||
for (let i = 0; i < n; i += 2) {
|
||||
const k = rawHeaders[i];
|
||||
@@ -791,7 +788,7 @@ function receiveResponse(xhr, response) {
|
||||
headerMap[kl] = k;
|
||||
}
|
||||
|
||||
const destUrlObj = new URL(response.request.uri.href);
|
||||
const destUrlObj = new URL(currentURL);
|
||||
if (properties.origin !== destUrlObj.origin &&
|
||||
destUrlObj.protocol !== "data:") {
|
||||
if (!xhrUtils.validCORSHeaders(xhr, response, flag, properties, properties.origin)) {
|
||||
|
132
node_modules/jsdom/lib/jsdom/living/xhr/xhr-utils.js
generated
vendored
132
node_modules/jsdom/lib/jsdom/living/xhr/xhr-utils.js
generated
vendored
@@ -1,6 +1,5 @@
|
||||
"use strict";
|
||||
const fs = require("fs");
|
||||
const request = require("request");
|
||||
const { EventEmitter } = require("events");
|
||||
const { URL } = require("whatwg-url");
|
||||
const parseDataURL = require("data-urls");
|
||||
@@ -8,7 +7,9 @@ const DOMException = require("domexception/webidl2js-wrapper");
|
||||
|
||||
const ProgressEvent = require("../generated/ProgressEvent");
|
||||
|
||||
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");
|
||||
|
||||
const headerListSeparatorRegexp = /,[ \t]*/;
|
||||
@@ -159,7 +160,6 @@ function createClient(xhr) {
|
||||
response.statusCode = 200;
|
||||
response.rawHeaders = [];
|
||||
response.headers = {};
|
||||
response.request = { uri: urlObj };
|
||||
const filePath = urlObj.pathname
|
||||
.replace(/^file:\/\//, "")
|
||||
.replace(/^\/([a-z]):\//i, "$1:/")
|
||||
@@ -202,7 +202,7 @@ function createClient(xhr) {
|
||||
client.on("end", rmReq);
|
||||
}
|
||||
|
||||
process.nextTick(() => client.emit("response", response));
|
||||
process.nextTick(() => client.emit("response", response, urlObj.href));
|
||||
|
||||
return client;
|
||||
}
|
||||
@@ -210,8 +210,6 @@ function createClient(xhr) {
|
||||
if (urlObj.protocol === "data:") {
|
||||
const response = new EventEmitter();
|
||||
|
||||
response.request = { uri: urlObj };
|
||||
|
||||
const client = new EventEmitter();
|
||||
|
||||
let buffer;
|
||||
@@ -232,7 +230,7 @@ function createClient(xhr) {
|
||||
};
|
||||
|
||||
process.nextTick(() => {
|
||||
client.emit("response", response);
|
||||
client.emit("response", response, urlObj.href);
|
||||
process.nextTick(() => {
|
||||
response.emit("data", buffer);
|
||||
client.emit("data", buffer);
|
||||
@@ -243,7 +241,7 @@ function createClient(xhr) {
|
||||
|
||||
return client;
|
||||
}
|
||||
|
||||
const agents = agentFactory(flag.proxy, flag.strictSSL);
|
||||
const requestHeaders = {};
|
||||
|
||||
for (const header in flag.requestHeaders) {
|
||||
@@ -268,27 +266,13 @@ function createClient(xhr) {
|
||||
requestHeaders.Origin = flag.origin;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
const { body } = flag;
|
||||
@@ -297,30 +281,53 @@ function createClient(xhr) {
|
||||
body !== "" &&
|
||||
!(ucMethod === "HEAD" || ucMethod === "GET");
|
||||
|
||||
if (hasBody && !flag.formData) {
|
||||
options.body = body;
|
||||
}
|
||||
|
||||
if (hasBody && getRequestHeader(flag.requestHeaders, "content-type") === null) {
|
||||
requestHeaders["Content-Type"] = "text/plain;charset=UTF-8";
|
||||
}
|
||||
|
||||
function doRequest() {
|
||||
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;
|
||||
}
|
||||
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 client;
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -332,11 +339,11 @@ function createClient(xhr) {
|
||||
if (crossOrigin && (!simpleMethods.has(ucMethod) || nonSimpleHeaders.length > 0 || properties.uploadListener)) {
|
||||
client = new EventEmitter();
|
||||
|
||||
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];
|
||||
}
|
||||
}
|
||||
@@ -350,19 +357,12 @@ function createClient(xhr) {
|
||||
|
||||
flag.preflight = true;
|
||||
|
||||
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
|
||||
};
|
||||
|
||||
const preflightClient = request(preflightOptions);
|
||||
{ agents, followRedirects: false },
|
||||
{ method: "OPTIONS", headers: preflightRequestHeaders, rejectUnauthorized }
|
||||
);
|
||||
|
||||
preflightClient.on("response", resp => {
|
||||
// don't send the real request if the preflight request returned an error
|
||||
@@ -375,8 +375,9 @@ function createClient(xhr) {
|
||||
setResponseToNetworkError(xhr);
|
||||
return;
|
||||
}
|
||||
// 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));
|
||||
realClient.on("end", () => client.emit("end"));
|
||||
realClient.on("abort", () => client.emit("abort"));
|
||||
@@ -384,23 +385,29 @@ function createClient(xhr) {
|
||||
client.headers = realClient.headers;
|
||||
client.emit("request", req);
|
||||
});
|
||||
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);
|
||||
});
|
||||
|
||||
client.abort = () => {
|
||||
preflightClient.abort();
|
||||
};
|
||||
setImmediate(() => preflightClient.end());
|
||||
} else {
|
||||
client = doRequest();
|
||||
setImmediate(() => client.end());
|
||||
}
|
||||
|
||||
if (requestManager) {
|
||||
@@ -416,7 +423,6 @@ function createClient(xhr) {
|
||||
client.on("error", rmReq);
|
||||
client.on("end", rmReq);
|
||||
}
|
||||
|
||||
return client;
|
||||
}
|
||||
|
||||
|
44
node_modules/jsdom/package.json
generated
vendored
44
node_modules/jsdom/package.json
generated
vendored
@@ -2,29 +2,29 @@
|
||||
"_dependenciesComments": {
|
||||
"parse5": "Pinned to exact version number because we monkeypatch its internals (see htmltodom.js)"
|
||||
},
|
||||
"_from": "jsdom@16.5.3",
|
||||
"_id": "jsdom@16.5.3",
|
||||
"_from": "jsdom@latest",
|
||||
"_id": "jsdom@16.6.0",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha512-Qj1H+PEvUsOtdPJ056ewXM4UJPCi4hhLA8wpiz9F2YvsRBhuFsXxtrIFAgGBDynQA9isAMGE91PfUYbdMPXuTA==",
|
||||
"_integrity": "sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg==",
|
||||
"_location": "/jsdom",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "version",
|
||||
"type": "tag",
|
||||
"registry": true,
|
||||
"raw": "jsdom@16.5.3",
|
||||
"raw": "jsdom@latest",
|
||||
"name": "jsdom",
|
||||
"escapedName": "jsdom",
|
||||
"rawSpec": "16.5.3",
|
||||
"rawSpec": "latest",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "16.5.3"
|
||||
"fetchSpec": "latest"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"#USER",
|
||||
"/"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.5.3.tgz",
|
||||
"_shasum": "13a755b3950eb938b4482c407238ddf16f0d2136",
|
||||
"_spec": "jsdom@16.5.3",
|
||||
"_resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.6.0.tgz",
|
||||
"_shasum": "f79b3786682065492a3da6a60a4695da983805ac",
|
||||
"_spec": "jsdom@latest",
|
||||
"_where": "D:\\Projects\\minifyfromhtml",
|
||||
"browser": {
|
||||
"canvas": false,
|
||||
@@ -37,7 +37,7 @@
|
||||
"bundleDependencies": false,
|
||||
"dependencies": {
|
||||
"abab": "^2.0.5",
|
||||
"acorn": "^8.1.0",
|
||||
"acorn": "^8.2.4",
|
||||
"acorn-globals": "^6.0.0",
|
||||
"cssom": "^0.4.4",
|
||||
"cssstyle": "^2.3.0",
|
||||
@@ -45,12 +45,13 @@
|
||||
"decimal.js": "^10.2.1",
|
||||
"domexception": "^2.0.1",
|
||||
"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",
|
||||
"symbol-tree": "^3.2.4",
|
||||
"tough-cookie": "^4.0.0",
|
||||
@@ -60,32 +61,31 @@
|
||||
"whatwg-encoding": "^1.0.5",
|
||||
"whatwg-mimetype": "^2.3.0",
|
||||
"whatwg-url": "^8.5.0",
|
||||
"ws": "^7.4.4",
|
||||
"ws": "^7.4.5",
|
||||
"xml-name-validator": "^3.0.0"
|
||||
},
|
||||
"deprecated": false,
|
||||
"description": "A JavaScript implementation of many web standards",
|
||||
"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",
|
||||
"karma-chrome-launcher": "^3.1.0",
|
||||
"karma-mocha": "^2.0.1",
|
||||
"karma-mocha-webworker": "^1.3.0",
|
||||
"minimatch": "^3.0.4",
|
||||
"mocha": "^8.3.2",
|
||||
"mocha": "^8.4.0",
|
||||
"mocha-sugar-free": "^1.4.0",
|
||||
"optimist": "0.6.1",
|
||||
"rimraf": "^3.0.2",
|
||||
"server-destroy": "^1.0.1",
|
||||
"st": "^2.0.0",
|
||||
"watchify": "^4.0.0",
|
||||
"wd": "^1.14.0",
|
||||
"webidl2js": "^16.2.0"
|
||||
@@ -171,5 +171,5 @@
|
||||
"update-authors": "git log --format=\"%aN <%aE>\" | sort -f | uniq > AUTHORS.txt",
|
||||
"update-wpt": "git submodule update --recursive --remote && cd test/web-platform-tests/tests && python3 wpt.py manifest --path ../wpt-manifest.json"
|
||||
},
|
||||
"version": "16.5.3"
|
||||
"version": "16.6.0"
|
||||
}
|
||||
|
Reference in New Issue
Block a user