UNPKG

@quadible/web-sdk

Version:

The web sdk for Quadible's behavioral authentication service.

67 lines 2.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const eventemitter2_1 = require("eventemitter2"); const sources_1 = require("../common/sources"); const entropy_source_1 = require("../common/utils/entropy_source"); class DeviceCollector extends eventemitter2_1.EventEmitter2 { sdk; name = 'WebDevice'; data = []; isCollecting = false; constructor(sdk) { super(); this.sdk = sdk; } async start() { this.isCollecting = true; await this.collect(); } stop() { this.isCollecting = false; } flush() { return this.data.splice(0); } async isAvailable() { return true; } async collect() { const userAgent = navigator.userAgent; this.data.push({ kind: "deviceinfo" /* EventKind.DeviceInfo */, timestamp: Date.now(), userAgent, viewportWidth: innerWidth, viewportHeight: innerHeight, themePreference: this.getThemePreference(), timezoneOffset: new Date().getTimezoneOffset(), language: navigator?.language || navigator?.userLanguage, languages: navigator?.languages }); try { const components = await (0, entropy_source_1.loadSources)(sources_1.sources, { cache: {}, debug: true }, [])(); this.data.push({ kind: "deviceproperties" /* EventKind.DeviceProperties */, timestamp: Date.now(), components }); } catch (error) { this.sdk.emit('error', error); } } getThemePreference() { let theming = 'unknown'; if (window.matchMedia) { if (window.matchMedia('(prefers-color-scheme: dark)').matches) { theming = 'dark'; } else { theming = 'default'; } } return theming; } } exports.default = DeviceCollector; //# sourceMappingURL=DeviceCollector.js.map