New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@loki/target-chrome-core

Package Overview
Dependencies
Maintainers
1
Versions
24
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@loki/target-chrome-core - npm Package Compare versions

Comparing version 0.20.3 to 0.21.0

8

package.json
{
"name": "@loki/target-chrome-core",
"version": "0.20.3",
"version": "0.21.0",
"description": "Loki Chrome target core lib",

@@ -23,4 +23,4 @@ "keywords": [

"dependencies": {
"@loki/browser": "^0.20.2",
"@loki/core": "^0.20.0"
"@loki/browser": "^0.21.0",
"@loki/core": "^0.21.0"
},

@@ -30,3 +30,3 @@ "publishConfig": {

},
"gitHead": "caa4742573e8f98cb79d08428809eddff1e4cbdb"
"gitHead": "a2d1932446621a449994a8e76f3485712fe19ebb"
}
const debug = require('debug')('loki:chrome');
const {
disableAnimations,
disableInputCaret,
disablePointerEvents,

@@ -8,2 +9,3 @@ getSelectorBoxSize,

awaitLokiReady,
awaitSelectorPresent,
addLokiSessionMarker,

@@ -74,60 +76,66 @@ } = require('@loki/browser');

const awaitRequestsFinished = () =>
new Promise(async (resolve, reject) => {
const pendingRequestURLMap = {};
const failedURLs = [];
let pageLoaded = false;
let stabilizationTimer = null;
const pendingRequestURLMap = {};
const failedURLs = [];
let stabilizationTimer = null;
let requestsFinishedAwaiter;
const maybeFulfillPromise = () => {
if (pageLoaded && Object.keys(pendingRequestURLMap).length === 0) {
if (failedURLs.length !== 0) {
reject(new FetchingURLsError(failedURLs));
} else {
// In some cases such as fonts further requests will only happen after the page has been fully rendered
if (stabilizationTimer) {
clearTimeout(stabilizationTimer);
}
stabilizationTimer = setTimeout(
resolve,
REQUEST_STABILIZATION_TIMEOUT
);
}
}
};
const maybeFulfillPromise = () => {
if (!requestsFinishedAwaiter) {
return;
}
const { reject, resolve } = requestsFinishedAwaiter;
const requestEnded = requestId => {
delete pendingRequestURLMap[requestId];
maybeFulfillPromise();
};
const requestFailed = requestId => {
const failedURL = pendingRequestURLMap[requestId];
if (!fetchFailIgnore || !fetchFailIgnore.test(failedURL)) {
failedURLs.push(failedURL);
}
requestEnded(requestId);
};
Network.requestWillBeSent(({ requestId, request }) => {
if (Object.keys(pendingRequestURLMap).length === 0) {
if (failedURLs.length !== 0) {
reject(new FetchingURLsError(failedURLs));
} else {
// In some cases such as fonts further requests will only happen after the page has been fully rendered
if (stabilizationTimer) {
clearTimeout(stabilizationTimer);
}
pendingRequestURLMap[requestId] = request.url;
});
stabilizationTimer = setTimeout(
resolve,
REQUEST_STABILIZATION_TIMEOUT
);
}
}
};
Network.responseReceived(({ requestId, response }) => {
if (response.status >= 400) {
requestFailed(requestId);
} else {
requestEnded(requestId);
}
});
const startObservingRequests = () => {
const requestEnded = requestId => {
delete pendingRequestURLMap[requestId];
maybeFulfillPromise();
};
Network.loadingFailed(({ requestId }) => {
const requestFailed = requestId => {
const failedURL = pendingRequestURLMap[requestId];
if (!fetchFailIgnore || !fetchFailIgnore.test(failedURL)) {
failedURLs.push(failedURL);
}
requestEnded(requestId);
};
Network.requestWillBeSent(({ requestId, request }) => {
if (stabilizationTimer) {
clearTimeout(stabilizationTimer);
}
pendingRequestURLMap[requestId] = request.url;
});
Network.responseReceived(({ requestId, response }) => {
if (response.status >= 400) {
requestFailed(requestId);
});
} else {
requestEnded(requestId);
}
});
await Page.loadEventFired();
pageLoaded = true;
Network.loadingFailed(({ requestId }) => {
requestFailed(requestId);
});
};
const awaitRequestsFinished = () =>
new Promise((resolve, reject) => {
requestsFinishedAwaiter = { resolve, reject };
maybeFulfillPromise();

@@ -163,3 +171,3 @@ });

client.loadUrl = async url => {
client.loadUrl = async (url, selectorToBePresent) => {
if (!options.chromeEnableAnimations) {

@@ -170,6 +178,19 @@ debug('Disabling animations');

await evaluateOnNewDocument(`(${disablePointerEvents})(window);`);
await evaluateOnNewDocument(`(${disableInputCaret})(window);`);
debug(`Navigating to ${url}`);
await Promise.all([Page.navigate({ url }), awaitRequestsFinished()]);
startObservingRequests();
await Page.navigate({ url });
await Page.loadEventFired();
if (selectorToBePresent) {
debug(`Awaiting selector "${selectorToBePresent}"`);
await executeFunctionWithWindow(
awaitSelectorPresent,
selectorToBePresent
);
}
await awaitRequestsFinished();
debug('Awaiting runtime setup');

@@ -328,3 +349,3 @@ await executeFunctionWithWindow(awaitLokiReady);

try {
await withTimeout(options.chromeLoadTimeout)(tab.loadUrl(url));
await withTimeout(options.chromeLoadTimeout)(tab.loadUrl(url, selector));
screenshot = await tab.captureScreenshot(selector);

@@ -331,0 +352,0 @@ } catch (err) {

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc