UNPKG

@quadible/web-sdk

Version:

The web sdk for Quadible's behavioral authentication service.

125 lines 4.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const eventemitter2_1 = require("eventemitter2"); class EventCollector extends eventemitter2_1.EventEmitter2 { isCollecting = false; name = 'WebGenericEvents'; data = []; constructor() { super(); this.registerGamepadEventListeners(); this.registerClipboardListeners(); this.registerBatteryListeners(); } flush() { return this.data.splice(0); } async isAvailable() { return true; } start() { this.isCollecting = true; this.collect(); } stop() { this.isCollecting = false; } async registerBatteryListeners() { const battery = await navigator?.getBattery?.(); if (battery) { this.data.push({ kind: "battery" /* EventKind.Battery */, timestamp: Date.now(), event: 'battery', charging: battery.charging, chargingTime: battery.chargingTime, dischargingTime: battery.dischargingTime, level: battery.level }); const listener = (event) => { this.data.push({ kind: event.type, timestamp: Date.now(), event: event.type, charging: battery.charging, chargingTime: battery.chargingTime, dischargingTime: battery.dischargingTime, level: battery.level }); }; battery.addEventListener?.('chargingchange', listener); battery.addEventListener?.('chargingtimechange', listener); battery.addEventListener?.('dischargingtimechange', listener); battery.addEventListener?.('levelchange', listener); } } collect() { this.data.push({ kind: "getgamepads" /* EventKind.GetGamepads */, event: 'get-gamepads', data: this.getGamepads(), timestamp: Date.now() }); } registerClipboardListeners() { const listener = (event) => { if (this.isCollecting) { const el = event.target; this.data.push({ kind: event.type, name: event.type, timestamp: Date.now(), element: { tag: el?.tagName, class: el?.className, id: el?.id, name: el?.name, type: el?.type, width: el?.clientWidth, height: el?.clientHeight } }); } }; window.addEventListener('copy', listener); window.addEventListener('paste', listener); window.addEventListener('cut', listener); } registerGamepadEventListeners() { const listener = (event) => { this.data.push({ kind: event.type, event: event.type, timestamp: Date.now(), gamepad: this.getGamepadInfo(event.gamepad) }); }; window.addEventListener('gamepadconnected', listener); window.addEventListener('gamepaddisconnected', listener); } getGamepads() { const gamepads = navigator.getGamepads(); const gamepadInfo = []; if (gamepads?.length) { for (const gamepad of gamepads) { if (gamepad) { gamepadInfo.push(this.getGamepadInfo(gamepad)); } } } return gamepadInfo; } getGamepadInfo(gamepad) { return { id: gamepad?.id, index: gamepad?.index, mapping: gamepad?.mapping, connected: gamepad?.connected, axes: gamepad?.axes, buttonCount: gamepad?.buttons?.length, vibrationActuatorType: gamepad?.['vibrationActuator']?.['type'] }; } } exports.default = EventCollector; //# sourceMappingURL=EventCollector.js.map