Socket
Socket
Sign inDemoInstall

jsdom

Package Overview
Dependencies
112
Maintainers
6
Versions
259
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 16.5.3 to 16.6.0

lib/jsdom/living/helpers/agent-factory.js

73

lib/jsdom/browser/resources/resource-loader.js

@@ -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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc