UNPKG

@quadible/web-sdk

Version:

The web sdk for Quadible's behavioral authentication service.

34 lines 1.55 kB
"use strict"; 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