@quadible/web-sdk
Version:
The web sdk for Quadible's behavioral authentication service.
34 lines • 1.55 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = getScreenResolution;
exports.getUnstableScreenResolution = getUnstableScreenResolution;
const data_1 = require("../utils/data");
const browser_1 = require("../utils/browser");
/**
* A version of the entropy source with stabilization to make it suitable for static fingerprinting.
* The window resolution is always the document size in private mode of Safari 17,
* so the window resolution is not used in Safari 17.
*/
function getScreenResolution() {
if ((0, browser_1.isWebKit)() && (0, browser_1.isWebKit616OrNewer)() && (0, browser_1.isSafariWebKit)()) {
return undefined;
}
return getUnstableScreenResolution();
}
/**
* A version of the entropy source without stabilization.
*
* Warning for package users:
* This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.
*/
function getUnstableScreenResolution() {
const s = screen;
// Some browsers return screen resolution as strings, e.g. "1200", instead of a number, e.g. 1200.
// I suspect it's done by certain plugins that randomize browser properties to prevent fingerprinting.
// Some browsers even return screen resolution as not numbers.
const parseDimension = (value) => (0, data_1.replaceNaN)((0, data_1.toInt)(value), null);
const dimensions = [parseDimension(s.width), parseDimension(s.height)];
dimensions.sort().reverse();
return dimensions;
}
//# sourceMappingURL=screen_resolution.js.map