@volley/vwr-loader 1.5.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +84 -24
- package/dist/cli.js.map +1 -1
- package/dist/{datadog.d.ts → vwr/src/datadog.d.ts} +7 -3
- package/dist/vwr/src/datadog.d.ts.map +1 -0
- package/dist/{datadog.js → vwr/src/datadog.js} +6 -5
- package/dist/vwr/src/datadog.js.map +1 -0
- package/dist/{envDefaults.d.ts → vwr/src/envDefaults.d.ts} +1 -0
- package/dist/vwr/src/envDefaults.d.ts.map +1 -0
- package/dist/vwr/src/envDefaults.js +67 -0
- package/dist/vwr/src/envDefaults.js.map +1 -0
- package/dist/vwr/src/iframe.d.ts +25 -0
- package/dist/vwr/src/iframe.d.ts.map +1 -0
- package/dist/vwr/src/iframe.js +82 -0
- package/dist/vwr/src/iframe.js.map +1 -0
- package/dist/vwr/src/logger.d.ts +15 -0
- package/dist/vwr/src/logger.d.ts.map +1 -0
- package/dist/{logger.js → vwr/src/logger.js} +30 -46
- package/dist/vwr/src/logger.js.map +1 -0
- package/dist/vwr/src/native/app-lifecycle/factory.d.ts +7 -0
- package/dist/vwr/src/native/app-lifecycle/factory.d.ts.map +1 -0
- package/dist/vwr/src/native/app-lifecycle/factory.js +68 -0
- package/dist/vwr/src/native/app-lifecycle/factory.js.map +1 -0
- package/dist/vwr/src/native/app-lifecycle/rpc.d.ts +15 -0
- package/dist/vwr/src/native/app-lifecycle/rpc.d.ts.map +1 -0
- package/dist/vwr/src/native/app-lifecycle/rpc.js +46 -0
- package/dist/vwr/src/native/app-lifecycle/rpc.js.map +1 -0
- package/dist/vwr/src/native/capacitor-bridge/rpc.d.ts +33 -0
- package/dist/vwr/src/native/capacitor-bridge/rpc.d.ts.map +1 -0
- package/dist/vwr/src/native/capacitor-bridge/rpc.js +129 -0
- package/dist/vwr/src/native/capacitor-bridge/rpc.js.map +1 -0
- package/dist/vwr/src/native/device-info/factory.d.ts +9 -0
- package/dist/vwr/src/native/device-info/factory.d.ts.map +1 -0
- package/dist/vwr/src/native/device-info/factory.js +28 -0
- package/dist/vwr/src/native/device-info/factory.js.map +1 -0
- package/dist/vwr/src/native/device-info/firetvCollector.d.ts +9 -0
- package/dist/vwr/src/native/device-info/firetvCollector.d.ts.map +1 -0
- package/dist/vwr/src/native/device-info/firetvCollector.js +180 -0
- package/dist/vwr/src/native/device-info/firetvCollector.js.map +1 -0
- package/dist/vwr/src/native/device-info/getDeviceId.d.ts +13 -0
- package/dist/vwr/src/native/device-info/getDeviceId.d.ts.map +1 -0
- package/dist/vwr/src/native/device-info/getDeviceId.js +137 -0
- package/dist/vwr/src/native/device-info/getDeviceId.js.map +1 -0
- package/dist/vwr/src/native/device-info/lgCollector.d.ts +8 -0
- package/dist/vwr/src/native/device-info/lgCollector.d.ts.map +1 -0
- package/dist/vwr/src/native/device-info/lgCollector.js +136 -0
- package/dist/vwr/src/native/device-info/lgCollector.js.map +1 -0
- package/dist/vwr/src/native/device-info/mobileCollector.d.ts +9 -0
- package/dist/vwr/src/native/device-info/mobileCollector.d.ts.map +1 -0
- package/dist/vwr/src/native/device-info/mobileCollector.js +47 -0
- package/dist/vwr/src/native/device-info/mobileCollector.js.map +1 -0
- package/dist/vwr/src/native/device-info/rpc.d.ts +51 -0
- package/dist/vwr/src/native/device-info/rpc.d.ts.map +1 -0
- package/dist/vwr/src/native/device-info/rpc.js +46 -0
- package/dist/vwr/src/native/device-info/rpc.js.map +1 -0
- package/dist/vwr/src/native/device-info/samsungCollector.d.ts +9 -0
- package/dist/vwr/src/native/device-info/samsungCollector.d.ts.map +1 -0
- package/dist/vwr/src/native/device-info/samsungCollector.js +86 -0
- package/dist/vwr/src/native/device-info/samsungCollector.js.map +1 -0
- package/dist/vwr/src/native/device-info/webCollector.d.ts +4 -0
- package/dist/vwr/src/native/device-info/webCollector.d.ts.map +1 -0
- package/dist/vwr/src/native/device-info/webCollector.js +56 -0
- package/dist/vwr/src/native/device-info/webCollector.js.map +1 -0
- package/dist/vwr/src/native/native-bridge/rpc.d.ts +33 -0
- package/dist/vwr/src/native/native-bridge/rpc.d.ts.map +1 -0
- package/dist/vwr/src/native/native-bridge/rpc.js +114 -0
- package/dist/vwr/src/native/native-bridge/rpc.js.map +1 -0
- package/dist/vwr/src/native/screensaver-prevention/LGLunaService.d.ts +14 -0
- package/dist/vwr/src/native/screensaver-prevention/LGLunaService.d.ts.map +1 -0
- package/dist/vwr/src/native/screensaver-prevention/LGLunaService.js +187 -0
- package/dist/vwr/src/native/screensaver-prevention/LGLunaService.js.map +1 -0
- package/dist/vwr/src/native/screensaver-prevention/rpc.d.ts +27 -0
- package/dist/vwr/src/native/screensaver-prevention/rpc.d.ts.map +1 -0
- package/dist/vwr/src/native/screensaver-prevention/rpc.js +71 -0
- package/dist/vwr/src/native/screensaver-prevention/rpc.js.map +1 -0
- package/dist/vwr/src/observability.d.ts +35 -0
- package/dist/vwr/src/observability.d.ts.map +1 -0
- package/dist/vwr/src/observability.js +68 -0
- package/dist/vwr/src/observability.js.map +1 -0
- package/dist/vwr/src/shellEnvDefaults.d.ts +15 -0
- package/dist/vwr/src/shellEnvDefaults.d.ts.map +1 -0
- package/dist/vwr/src/shellEnvDefaults.js +34 -0
- package/dist/vwr/src/shellEnvDefaults.js.map +1 -0
- package/dist/vwr/src/types.d.ts +56 -0
- package/dist/vwr/src/types.d.ts.map +1 -0
- package/dist/vwr/src/types.js +27 -0
- package/dist/vwr/src/types.js.map +1 -0
- package/dist/vwr/src/urlUtils.d.ts +17 -0
- package/dist/vwr/src/urlUtils.d.ts.map +1 -0
- package/dist/vwr/src/urlUtils.js +42 -0
- package/dist/vwr/src/urlUtils.js.map +1 -0
- package/dist/vwr/src/vwrBootstrap.d.ts +26 -0
- package/dist/vwr/src/vwrBootstrap.d.ts.map +1 -0
- package/dist/vwr/src/vwrBootstrap.js +176 -0
- package/dist/vwr/src/vwrBootstrap.js.map +1 -0
- package/dist/{vwrConfig.d.ts → vwr/src/vwrConfig.d.ts} +5 -0
- package/dist/vwr/src/vwrConfig.d.ts.map +1 -0
- package/dist/{vwrConfig.js → vwr/src/vwrConfig.js} +24 -7
- package/dist/vwr/src/vwrConfig.js.map +1 -0
- package/{src → dist/vwr-loader}/index.html +1 -1
- package/dist/vwr-loader/src/__mocks__/@datadog/browser-logs.d.ts.map +1 -0
- package/dist/vwr-loader/src/__mocks__/@datadog/browser-logs.js.map +1 -0
- package/dist/vwr-loader/src/__mocks__/@datadog/browser-rum.d.ts.map +1 -0
- package/dist/vwr-loader/src/__mocks__/@datadog/browser-rum.js.map +1 -0
- package/dist/vwr-loader/src/__mocks__/invalidVwrModule.d.ts +2 -0
- package/dist/vwr-loader/src/__mocks__/invalidVwrModule.d.ts.map +1 -0
- package/dist/vwr-loader/src/__mocks__/invalidVwrModule.js +2 -0
- package/dist/vwr-loader/src/__mocks__/invalidVwrModule.js.map +1 -0
- package/dist/vwr-loader/src/__mocks__/vwrModule.d.ts.map +1 -0
- package/dist/vwr-loader/src/__mocks__/vwrModule.js.map +1 -0
- package/dist/vwr-loader/src/amplitudeFlagFetcher.d.ts.map +1 -0
- package/dist/vwr-loader/src/amplitudeFlagFetcher.js.map +1 -0
- package/dist/vwr-loader/src/errors/InitializationError.d.ts.map +1 -0
- package/dist/vwr-loader/src/errors/InitializationError.js.map +1 -0
- package/dist/vwr-loader/src/errors/ensureError.d.ts.map +1 -0
- package/dist/vwr-loader/src/errors/ensureError.js.map +1 -0
- package/dist/vwr-loader/src/errors/index.d.ts.map +1 -0
- package/dist/vwr-loader/src/errors/index.js.map +1 -0
- package/dist/vwr-loader/src/exitHandler.d.ts.map +1 -0
- package/dist/{exitHandler.js → vwr-loader/src/exitHandler.js} +2 -3
- package/dist/vwr-loader/src/exitHandler.js.map +1 -0
- package/dist/vwr-loader/src/getEnvironment.d.ts.map +1 -0
- package/dist/vwr-loader/src/getEnvironment.js.map +1 -0
- package/dist/vwr-loader/src/getShellVersion.d.ts.map +1 -0
- package/dist/vwr-loader/src/getShellVersion.js.map +1 -0
- package/dist/vwr-loader/src/index.d.ts +8 -0
- package/dist/vwr-loader/src/index.d.ts.map +1 -0
- package/dist/vwr-loader/src/index.js +6 -0
- package/dist/vwr-loader/src/index.js.map +1 -0
- package/dist/vwr-loader/src/loadVwr.d.ts.map +1 -0
- package/dist/{loadVwr.js → vwr-loader/src/loadVwr.js} +36 -27
- package/dist/vwr-loader/src/loadVwr.js.map +1 -0
- package/dist/vwr-loader/src/logger.d.ts +4 -0
- package/dist/vwr-loader/src/logger.d.ts.map +1 -0
- package/dist/vwr-loader/src/logger.js +10 -0
- package/dist/vwr-loader/src/logger.js.map +1 -0
- package/dist/vwr-loader/src/main.d.ts +2 -0
- package/dist/vwr-loader/src/main.d.ts.map +1 -0
- package/dist/vwr-loader/src/main.js +96 -0
- package/dist/vwr-loader/src/main.js.map +1 -0
- package/dist/vwr-loader/src/polyfills.d.ts.map +1 -0
- package/dist/vwr-loader/src/polyfills.js.map +1 -0
- package/dist/{test-setup.d.ts.map → vwr-loader/src/test-setup.d.ts.map} +1 -1
- package/dist/vwr-loader/src/test-setup.js.map +1 -0
- package/package.json +13 -12
- package/dist/__mocks__/@datadog/browser-logs.d.ts.map +0 -1
- package/dist/__mocks__/@datadog/browser-logs.js.map +0 -1
- package/dist/__mocks__/@datadog/browser-rum.d.ts.map +0 -1
- package/dist/__mocks__/@datadog/browser-rum.js.map +0 -1
- package/dist/__mocks__/vwrModule.d.ts.map +0 -1
- package/dist/__mocks__/vwrModule.js.map +0 -1
- package/dist/amplitudeFlagFetcher.d.ts.map +0 -1
- package/dist/amplitudeFlagFetcher.js.map +0 -1
- package/dist/assets/profiler-BRmTNL9s.js +0 -2
- package/dist/assets/profiler-BRmTNL9s.js.map +0 -1
- package/dist/assets/startRecording-CuFdVhxx.js +0 -3
- package/dist/assets/startRecording-CuFdVhxx.js.map +0 -1
- package/dist/datadog.d.ts.map +0 -1
- package/dist/datadog.js.map +0 -1
- package/dist/envDefaults.d.ts.map +0 -1
- package/dist/envDefaults.js +0 -74
- package/dist/envDefaults.js.map +0 -1
- package/dist/errors/InitializationError.d.ts.map +0 -1
- package/dist/errors/InitializationError.js.map +0 -1
- package/dist/errors/ensureError.d.ts.map +0 -1
- package/dist/errors/ensureError.js.map +0 -1
- package/dist/errors/index.d.ts.map +0 -1
- package/dist/errors/index.js.map +0 -1
- package/dist/exitHandler.d.ts.map +0 -1
- package/dist/exitHandler.js.map +0 -1
- package/dist/getDeviceId.d.ts +0 -26
- package/dist/getDeviceId.d.ts.map +0 -1
- package/dist/getDeviceId.js +0 -209
- package/dist/getDeviceId.js.map +0 -1
- package/dist/getEnvironment.d.ts.map +0 -1
- package/dist/getEnvironment.js.map +0 -1
- package/dist/getShellVersion.d.ts.map +0 -1
- package/dist/getShellVersion.js.map +0 -1
- package/dist/index.d.ts +0 -8
- package/dist/index.d.ts.map +0 -1
- package/dist/index.html +0 -25
- package/dist/index.js +0 -6
- package/dist/index.js.map +0 -1
- package/dist/loadVwr.d.ts.map +0 -1
- package/dist/loadVwr.js.map +0 -1
- package/dist/logger.d.ts +0 -12
- package/dist/logger.d.ts.map +0 -1
- package/dist/logger.js.map +0 -1
- package/dist/main.js +0 -12
- package/dist/main.js.map +0 -1
- package/dist/polyfills.d.ts.map +0 -1
- package/dist/polyfills.js.map +0 -1
- package/dist/test-setup.js.map +0 -1
- package/dist/types.d.ts +0 -103
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -5
- package/dist/types.js.map +0 -1
- package/dist/vwrConfig.d.ts.map +0 -1
- package/dist/vwrConfig.js.map +0 -1
- package/src/__mocks__/@datadog/browser-logs.ts +0 -35
- package/src/__mocks__/@datadog/browser-rum.ts +0 -27
- package/src/__mocks__/vwrModule.ts +0 -3
- package/src/amplitudeFlagFetcher.test.ts +0 -175
- package/src/amplitudeFlagFetcher.ts +0 -105
- package/src/datadog.ts +0 -55
- package/src/envDefaults.ts +0 -94
- package/src/errors/InitializationError.ts +0 -105
- package/src/errors/ensureError.ts +0 -6
- package/src/errors/index.ts +0 -16
- package/src/exitHandler.test.ts +0 -373
- package/src/exitHandler.ts +0 -232
- package/src/getDeviceId.test.ts +0 -298
- package/src/getDeviceId.ts +0 -224
- package/src/getEnvironment.test.ts +0 -417
- package/src/getEnvironment.ts +0 -144
- package/src/getShellVersion.test.ts +0 -403
- package/src/getShellVersion.ts +0 -132
- package/src/index.ts +0 -7
- package/src/loadVwr.test.ts +0 -549
- package/src/loadVwr.ts +0 -357
- package/src/logger.ts +0 -121
- package/src/main.test.ts +0 -157
- package/src/main.ts +0 -127
- package/src/polyfills.ts +0 -32
- package/src/test-setup.ts +0 -5
- package/src/types.ts +0 -105
- package/src/vite-env.d.ts +0 -32
- package/src/vwrConfig.test.ts +0 -386
- package/src/vwrConfig.ts +0 -374
- /package/dist/{__mocks__ → vwr-loader/src/__mocks__}/@datadog/browser-logs.d.ts +0 -0
- /package/dist/{__mocks__ → vwr-loader/src/__mocks__}/@datadog/browser-logs.js +0 -0
- /package/dist/{__mocks__ → vwr-loader/src/__mocks__}/@datadog/browser-rum.d.ts +0 -0
- /package/dist/{__mocks__ → vwr-loader/src/__mocks__}/@datadog/browser-rum.js +0 -0
- /package/dist/{__mocks__ → vwr-loader/src/__mocks__}/vwrModule.d.ts +0 -0
- /package/dist/{__mocks__ → vwr-loader/src/__mocks__}/vwrModule.js +0 -0
- /package/dist/{amplitudeFlagFetcher.d.ts → vwr-loader/src/amplitudeFlagFetcher.d.ts} +0 -0
- /package/dist/{amplitudeFlagFetcher.js → vwr-loader/src/amplitudeFlagFetcher.js} +0 -0
- /package/dist/{errors → vwr-loader/src/errors}/InitializationError.d.ts +0 -0
- /package/dist/{errors → vwr-loader/src/errors}/InitializationError.js +0 -0
- /package/dist/{errors → vwr-loader/src/errors}/ensureError.d.ts +0 -0
- /package/dist/{errors → vwr-loader/src/errors}/ensureError.js +0 -0
- /package/dist/{errors → vwr-loader/src/errors}/index.d.ts +0 -0
- /package/dist/{errors → vwr-loader/src/errors}/index.js +0 -0
- /package/dist/{exitHandler.d.ts → vwr-loader/src/exitHandler.d.ts} +0 -0
- /package/dist/{getEnvironment.d.ts → vwr-loader/src/getEnvironment.d.ts} +0 -0
- /package/dist/{getEnvironment.js → vwr-loader/src/getEnvironment.js} +0 -0
- /package/dist/{getShellVersion.d.ts → vwr-loader/src/getShellVersion.d.ts} +0 -0
- /package/dist/{getShellVersion.js → vwr-loader/src/getShellVersion.js} +0 -0
- /package/dist/{loadVwr.d.ts → vwr-loader/src/loadVwr.d.ts} +0 -0
- /package/dist/{polyfills.d.ts → vwr-loader/src/polyfills.d.ts} +0 -0
- /package/dist/{polyfills.js → vwr-loader/src/polyfills.js} +0 -0
- /package/dist/{test-setup.d.ts → vwr-loader/src/test-setup.d.ts} +0 -0
- /package/dist/{test-setup.js → vwr-loader/src/test-setup.js} +0 -0
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { InputDeviceType } from "@volley/platform-sdk/lib";
|
|
2
|
+
import { getDeviceId } from "./getDeviceId";
|
|
3
|
+
/**
|
|
4
|
+
* Infer device type from device name using heuristics.
|
|
5
|
+
* Mirrors the SDK's inferDeviceType logic so bootstrap can produce
|
|
6
|
+
* the final format without VWR needing to transform.
|
|
7
|
+
*/
|
|
8
|
+
function inferDeviceType(deviceName) {
|
|
9
|
+
const name = deviceName.toLowerCase();
|
|
10
|
+
if (name.includes("remote") ||
|
|
11
|
+
name.includes("fire tv") ||
|
|
12
|
+
name.includes("shield") ||
|
|
13
|
+
name.includes("roku"))
|
|
14
|
+
return InputDeviceType.HARDWARE_REMOTE;
|
|
15
|
+
if (name.includes("controller") ||
|
|
16
|
+
name.includes("gamepad") ||
|
|
17
|
+
name.includes("xbox") ||
|
|
18
|
+
name.includes("playstation") ||
|
|
19
|
+
name.includes("dualshock") ||
|
|
20
|
+
name.includes("dualsense"))
|
|
21
|
+
return InputDeviceType.GAME_CONTROLLER;
|
|
22
|
+
if (name.includes("keyboard"))
|
|
23
|
+
return InputDeviceType.KEYBOARD_DEVICE;
|
|
24
|
+
if (name.includes("mouse") ||
|
|
25
|
+
name.includes("trackpad") ||
|
|
26
|
+
name.includes("touchpad"))
|
|
27
|
+
return InputDeviceType.POINTING_DEVICE;
|
|
28
|
+
if (name.includes("touch") || name.includes("screen"))
|
|
29
|
+
return InputDeviceType.TOUCH_DEVICE;
|
|
30
|
+
if (name.includes("mobile") || name.includes("app"))
|
|
31
|
+
return InputDeviceType.MOBILE_APP;
|
|
32
|
+
return InputDeviceType.UNKNOWN;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Collect FireTV device info from Capacitor plugins.
|
|
36
|
+
* Must be called from the bootstrap's main window where Capacitor globals are available
|
|
37
|
+
* (NOT from the VWR https:// iframe).
|
|
38
|
+
*/
|
|
39
|
+
export async function collectFireTVDeviceInfo(logger, shellVersion) {
|
|
40
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y;
|
|
41
|
+
const capacitor = window.Capacitor;
|
|
42
|
+
if (!(capacitor === null || capacitor === void 0 ? void 0 : capacitor.Plugins)) {
|
|
43
|
+
logger.warn("Capacitor.Plugins not available; returning defaults");
|
|
44
|
+
return {
|
|
45
|
+
locale: "unknown",
|
|
46
|
+
screenResolution: { width: 0, height: 0 },
|
|
47
|
+
model: "unknown",
|
|
48
|
+
manufacturer: "Amazon",
|
|
49
|
+
operatingSystem: "android",
|
|
50
|
+
osVersion: "unknown",
|
|
51
|
+
sdkVersion: 0,
|
|
52
|
+
deviceId: "unknown",
|
|
53
|
+
nativeShellAppVersion: shellVersion,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
const device = capacitor.Plugins.Device;
|
|
57
|
+
const deviceInfoPlugin = capacitor.Plugins.DeviceInfo;
|
|
58
|
+
// Collect all available info in parallel
|
|
59
|
+
const [infoResult, localeResult, screenResult, nativeInfoResult, adIdResult, inputSourcesResult,] = await Promise.allSettled([
|
|
60
|
+
(_a = device === null || device === void 0 ? void 0 : device.getInfo) === null || _a === void 0 ? void 0 : _a.call(device),
|
|
61
|
+
(_b = device === null || device === void 0 ? void 0 : device.getLanguageTag) === null || _b === void 0 ? void 0 : _b.call(device),
|
|
62
|
+
(_c = deviceInfoPlugin === null || deviceInfoPlugin === void 0 ? void 0 : deviceInfoPlugin.getScreenResolution) === null || _c === void 0 ? void 0 : _c.call(deviceInfoPlugin),
|
|
63
|
+
(_d = deviceInfoPlugin === null || deviceInfoPlugin === void 0 ? void 0 : deviceInfoPlugin.getDeviceInfo) === null || _d === void 0 ? void 0 : _d.call(deviceInfoPlugin),
|
|
64
|
+
(_e = deviceInfoPlugin === null || deviceInfoPlugin === void 0 ? void 0 : deviceInfoPlugin.getAdvertisingId) === null || _e === void 0 ? void 0 : _e.call(deviceInfoPlugin),
|
|
65
|
+
(_f = deviceInfoPlugin === null || deviceInfoPlugin === void 0 ? void 0 : deviceInfoPlugin.getInputDeviceSources) === null || _f === void 0 ? void 0 : _f.call(deviceInfoPlugin),
|
|
66
|
+
]);
|
|
67
|
+
const deviceId = (_g = (await getDeviceId("FIRE_TV", logger))) !== null && _g !== void 0 ? _g : "unknown";
|
|
68
|
+
// Device info from Capacitor Device plugin (model, manufacturer, osVersion, etc.)
|
|
69
|
+
let model = "unknown";
|
|
70
|
+
let manufacturer = "Amazon";
|
|
71
|
+
let operatingSystem = "android";
|
|
72
|
+
let osVersion = "unknown";
|
|
73
|
+
let webViewVersion;
|
|
74
|
+
let sdkVersion = 0;
|
|
75
|
+
if (infoResult.status === "fulfilled" && infoResult.value) {
|
|
76
|
+
const info = infoResult.value;
|
|
77
|
+
model = (_h = info.model) !== null && _h !== void 0 ? _h : "unknown";
|
|
78
|
+
manufacturer = (_j = info.manufacturer) !== null && _j !== void 0 ? _j : "Amazon";
|
|
79
|
+
operatingSystem = (_k = info.operatingSystem) !== null && _k !== void 0 ? _k : "android";
|
|
80
|
+
osVersion = (_l = info.osVersion) !== null && _l !== void 0 ? _l : "unknown";
|
|
81
|
+
webViewVersion = info.webViewVersion;
|
|
82
|
+
if (typeof info.androidSDKVersion === "number") {
|
|
83
|
+
sdkVersion = info.androidSDKVersion;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
logger.error({
|
|
88
|
+
reason: infoResult.status === "rejected"
|
|
89
|
+
? (_m = infoResult.reason) === null || _m === void 0 ? void 0 : _m.message
|
|
90
|
+
: "no value",
|
|
91
|
+
}, "Failed to get device info");
|
|
92
|
+
}
|
|
93
|
+
// Locale from Capacitor Device plugin
|
|
94
|
+
let locale = "unknown";
|
|
95
|
+
if (localeResult.status === "fulfilled" && ((_o = localeResult.value) === null || _o === void 0 ? void 0 : _o.value)) {
|
|
96
|
+
locale = localeResult.value.value;
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
logger.error({
|
|
100
|
+
reason: localeResult.status === "rejected"
|
|
101
|
+
? (_p = localeResult.reason) === null || _p === void 0 ? void 0 : _p.message
|
|
102
|
+
: "no value",
|
|
103
|
+
}, "Failed to get locale");
|
|
104
|
+
}
|
|
105
|
+
// Screen resolution from DeviceInfo plugin
|
|
106
|
+
let screenResolution = { width: 0, height: 0 };
|
|
107
|
+
if (screenResult.status === "fulfilled" && screenResult.value) {
|
|
108
|
+
screenResolution = {
|
|
109
|
+
width: (_q = screenResult.value.width) !== null && _q !== void 0 ? _q : 0,
|
|
110
|
+
height: (_r = screenResult.value.height) !== null && _r !== void 0 ? _r : 0,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
logger.error({
|
|
115
|
+
reason: screenResult.status === "rejected"
|
|
116
|
+
? (_s = screenResult.reason) === null || _s === void 0 ? void 0 : _s.message
|
|
117
|
+
: "no value",
|
|
118
|
+
}, "Failed to get screen resolution");
|
|
119
|
+
}
|
|
120
|
+
// OS display version and shell app version from DeviceInfo plugin
|
|
121
|
+
let osDisplayVersion;
|
|
122
|
+
let nativeShellAppVersion = shellVersion;
|
|
123
|
+
if (nativeInfoResult.status === "fulfilled" && nativeInfoResult.value) {
|
|
124
|
+
osDisplayVersion = nativeInfoResult.value.osDisplayVersion;
|
|
125
|
+
if (nativeInfoResult.value.versionName) {
|
|
126
|
+
nativeShellAppVersion = nativeInfoResult.value.versionName;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
logger.error({
|
|
131
|
+
reason: nativeInfoResult.status === "rejected"
|
|
132
|
+
? (_t = nativeInfoResult.reason) === null || _t === void 0 ? void 0 : _t.message
|
|
133
|
+
: "no value",
|
|
134
|
+
}, "Failed to get native device info");
|
|
135
|
+
}
|
|
136
|
+
// Advertising ID from DeviceInfo plugin
|
|
137
|
+
let adId;
|
|
138
|
+
if (adIdResult.status === "fulfilled") {
|
|
139
|
+
adId = (_u = adIdResult.value) !== null && _u !== void 0 ? _u : null;
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
logger.error({ reason: (_v = adIdResult.reason) === null || _v === void 0 ? void 0 : _v.message }, "Failed to get advertising ID");
|
|
143
|
+
}
|
|
144
|
+
// Input device sources from DeviceInfo plugin (transform raw names to include deviceType)
|
|
145
|
+
let inputDeviceSources;
|
|
146
|
+
if (inputSourcesResult.status === "fulfilled" && inputSourcesResult.value) {
|
|
147
|
+
const rawDevices = (_w = inputSourcesResult.value.devices) !== null && _w !== void 0 ? _w : {};
|
|
148
|
+
const devices = {};
|
|
149
|
+
for (const [id, rawDevice] of Object.entries(rawDevices)) {
|
|
150
|
+
const name = (_x = rawDevice.name) !== null && _x !== void 0 ? _x : "Unknown";
|
|
151
|
+
devices[id] = { name, deviceType: inferDeviceType(name) };
|
|
152
|
+
}
|
|
153
|
+
inputDeviceSources = { devices };
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
logger.error({
|
|
157
|
+
reason: inputSourcesResult.status === "rejected"
|
|
158
|
+
? (_y = inputSourcesResult.reason) === null || _y === void 0 ? void 0 : _y.message
|
|
159
|
+
: "no value",
|
|
160
|
+
}, "Failed to get input device sources");
|
|
161
|
+
}
|
|
162
|
+
const deviceInfo = {
|
|
163
|
+
locale,
|
|
164
|
+
screenResolution,
|
|
165
|
+
model,
|
|
166
|
+
manufacturer,
|
|
167
|
+
operatingSystem,
|
|
168
|
+
osVersion,
|
|
169
|
+
sdkVersion,
|
|
170
|
+
webViewVersion,
|
|
171
|
+
deviceId,
|
|
172
|
+
nativeShellAppVersion,
|
|
173
|
+
osDisplayVersion,
|
|
174
|
+
adId,
|
|
175
|
+
inputDeviceSources,
|
|
176
|
+
};
|
|
177
|
+
logger.debug({ deviceInfo }, "FireTV device info collected");
|
|
178
|
+
return deviceInfo;
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=firetvCollector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firetvCollector.js","sourceRoot":"","sources":["../../../../../../vwr/src/native/device-info/firetvCollector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ILogger } from "@volley/logger";
|
|
2
|
+
/**
|
|
3
|
+
* Get a unique device identifier from platform-specific native APIs.
|
|
4
|
+
*
|
|
5
|
+
* This runs in the shell's main window (file:// origin) where native APIs
|
|
6
|
+
* are available. Used by:
|
|
7
|
+
* - vwr-loader: for Amplitude flag evaluation and config resolution
|
|
8
|
+
* - bootstrap collectors: as part of full device info collection
|
|
9
|
+
*
|
|
10
|
+
* NOT used by the VWR iframe — it reads deviceId from URL params instead.
|
|
11
|
+
*/
|
|
12
|
+
export declare function getDeviceId(platform: string, logger: ILogger): Promise<string | null>;
|
|
13
|
+
//# sourceMappingURL=getDeviceId.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDeviceId.d.ts","sourceRoot":"","sources":["../../../../../../vwr/src/native/device-info/getDeviceId.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAE7C;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,GAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiBxB"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { v4 as uuidv4 } from "uuid";
|
|
2
|
+
/**
|
|
3
|
+
* Get a unique device identifier from platform-specific native APIs.
|
|
4
|
+
*
|
|
5
|
+
* This runs in the shell's main window (file:// origin) where native APIs
|
|
6
|
+
* are available. Used by:
|
|
7
|
+
* - vwr-loader: for Amplitude flag evaluation and config resolution
|
|
8
|
+
* - bootstrap collectors: as part of full device info collection
|
|
9
|
+
*
|
|
10
|
+
* NOT used by the VWR iframe — it reads deviceId from URL params instead.
|
|
11
|
+
*/
|
|
12
|
+
export async function getDeviceId(platform, logger) {
|
|
13
|
+
switch (platform.toUpperCase()) {
|
|
14
|
+
case "FIRE_TV":
|
|
15
|
+
return getFireTVDeviceId(logger);
|
|
16
|
+
case "SAMSUNG_TV":
|
|
17
|
+
return getSamsungDeviceId(logger);
|
|
18
|
+
case "LG_TV":
|
|
19
|
+
return getLGDeviceId(logger);
|
|
20
|
+
case "ANDROID_MOBILE":
|
|
21
|
+
case "IOS_MOBILE":
|
|
22
|
+
return getMobileDeviceId(logger);
|
|
23
|
+
case "WEB":
|
|
24
|
+
return getLocalStorageDeviceId();
|
|
25
|
+
default:
|
|
26
|
+
logger.error(`[getDeviceId] Unknown platform: ${platform}`);
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function getLocalStorageDeviceId() {
|
|
31
|
+
const existingDeviceId = localStorage.getItem("volley_device_id");
|
|
32
|
+
if (existingDeviceId) {
|
|
33
|
+
return existingDeviceId;
|
|
34
|
+
}
|
|
35
|
+
const newDeviceId = uuidv4();
|
|
36
|
+
localStorage.setItem("volley_device_id", newDeviceId);
|
|
37
|
+
return newDeviceId;
|
|
38
|
+
}
|
|
39
|
+
async function getFireTVDeviceId(logger) {
|
|
40
|
+
var _a, _b, _c;
|
|
41
|
+
try {
|
|
42
|
+
const capacitor = window.Capacitor;
|
|
43
|
+
if (!((_b = (_a = capacitor === null || capacitor === void 0 ? void 0 : capacitor.Plugins) === null || _a === void 0 ? void 0 : _a.Device) === null || _b === void 0 ? void 0 : _b.getId)) {
|
|
44
|
+
logger.error("[getDeviceId] Capacitor Device.getId not available");
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
const result = await capacitor.Plugins.Device.getId();
|
|
48
|
+
if ((_c = result === null || result === void 0 ? void 0 : result.identifier) === null || _c === void 0 ? void 0 : _c.trim()) {
|
|
49
|
+
return result.identifier;
|
|
50
|
+
}
|
|
51
|
+
logger.error("[getDeviceId] Capacitor Device.getId returned empty");
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
logger.error({ error }, "[getDeviceId] Capacitor Device.getId failed");
|
|
55
|
+
}
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
function getSamsungDeviceId(logger) {
|
|
59
|
+
var _a, _b, _c;
|
|
60
|
+
try {
|
|
61
|
+
const id = (_c = (_b = (_a = window.webapis) === null || _a === void 0 ? void 0 : _a.productinfo) === null || _b === void 0 ? void 0 : _b.getDuid) === null || _c === void 0 ? void 0 : _c.call(_b);
|
|
62
|
+
if (id === null || id === void 0 ? void 0 : id.trim()) {
|
|
63
|
+
return id;
|
|
64
|
+
}
|
|
65
|
+
logger.error("[getDeviceId] Samsung getDuid returned empty");
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
logger.error({ error }, "[getDeviceId] Samsung getDuid failed");
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
const LG_LUNA_TIMEOUT = 5000;
|
|
73
|
+
async function getLGDeviceId(logger) {
|
|
74
|
+
var _a;
|
|
75
|
+
const webOSGlobal = typeof webOS !== "undefined" ? webOS : undefined;
|
|
76
|
+
if (!((_a = webOSGlobal === null || webOSGlobal === void 0 ? void 0 : webOSGlobal.service) === null || _a === void 0 ? void 0 : _a.request)) {
|
|
77
|
+
logger.error("[getDeviceId] webOS service not available");
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
return new Promise((resolve) => {
|
|
81
|
+
let resolved = false;
|
|
82
|
+
const timeoutId = setTimeout(() => {
|
|
83
|
+
if (!resolved) {
|
|
84
|
+
resolved = true;
|
|
85
|
+
logger.error("[getDeviceId] LG Luna service timed out");
|
|
86
|
+
resolve(null);
|
|
87
|
+
}
|
|
88
|
+
}, LG_LUNA_TIMEOUT);
|
|
89
|
+
const finish = (value) => {
|
|
90
|
+
if (resolved)
|
|
91
|
+
return;
|
|
92
|
+
resolved = true;
|
|
93
|
+
clearTimeout(timeoutId);
|
|
94
|
+
resolve(value);
|
|
95
|
+
};
|
|
96
|
+
try {
|
|
97
|
+
webOSGlobal.service.request("luna://com.webos.service.sm", {
|
|
98
|
+
method: "deviceid/getIDs",
|
|
99
|
+
parameters: { idType: ["LGUDID"] },
|
|
100
|
+
onSuccess: (response) => {
|
|
101
|
+
var _a, _b;
|
|
102
|
+
const id = (_b = (_a = response === null || response === void 0 ? void 0 : response.idList) === null || _a === void 0 ? void 0 : _a.find((item) => item.idType === "LGUDID")) === null || _b === void 0 ? void 0 : _b.idValue;
|
|
103
|
+
if (!id) {
|
|
104
|
+
logger.error("[getDeviceId] LG Luna returned no LGUDID");
|
|
105
|
+
}
|
|
106
|
+
finish(id || null);
|
|
107
|
+
},
|
|
108
|
+
onFailure: (error) => {
|
|
109
|
+
logger.error({ error }, "[getDeviceId] LG Luna service failed");
|
|
110
|
+
finish(null);
|
|
111
|
+
},
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
logger.error({ error }, "[getDeviceId] LG Luna service request threw");
|
|
116
|
+
finish(null);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
function getMobileDeviceId(logger) {
|
|
121
|
+
var _a, _b;
|
|
122
|
+
const win = window;
|
|
123
|
+
const iosId = (_a = win.iosAppContext) === null || _a === void 0 ? void 0 : _a.phoneDeviceId;
|
|
124
|
+
if (iosId === null || iosId === void 0 ? void 0 : iosId.trim()) {
|
|
125
|
+
return iosId;
|
|
126
|
+
}
|
|
127
|
+
const androidId = (_b = win.androidAppContext) === null || _b === void 0 ? void 0 : _b.phoneDeviceId;
|
|
128
|
+
if (androidId === null || androidId === void 0 ? void 0 : androidId.trim()) {
|
|
129
|
+
return androidId;
|
|
130
|
+
}
|
|
131
|
+
logger.error("[getDeviceId] Mobile phoneDeviceId not found", {
|
|
132
|
+
hasIosContext: !!win.iosAppContext,
|
|
133
|
+
hasAndroidContext: !!win.androidAppContext,
|
|
134
|
+
});
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=getDeviceId.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDeviceId.js","sourceRoot":"","sources":["../../../../../../vwr/src/native/device-info/getDeviceId.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ILogger } from "@volley/logger";
|
|
2
|
+
import type { NativeDeviceInfoData } from "./rpc";
|
|
3
|
+
/**
|
|
4
|
+
* Collect LG device info from native webOS APIs.
|
|
5
|
+
* Uses Luna services matching the SDK's LGTVDeviceInfo implementation.
|
|
6
|
+
*/
|
|
7
|
+
export declare function collectLgDeviceInfo(logger: ILogger, shellVersion: string): Promise<NativeDeviceInfoData>;
|
|
8
|
+
//# sourceMappingURL=lgCollector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lgCollector.d.ts","sourceRoot":"","sources":["../../../../../../vwr/src/native/device-info/lgCollector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAG7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAA;AAiJjD;;;GAGG;AACH,wBAAsB,mBAAmB,CACrC,MAAM,EAAE,OAAO,EACf,YAAY,EAAE,MAAM,GACrB,OAAO,CAAC,oBAAoB,CAAC,CAiE/B"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { getDeviceId } from "./getDeviceId";
|
|
2
|
+
const LUNA_TIMEOUT = 5000;
|
|
3
|
+
function callLunaService(serviceUri, method, parameters = {}) {
|
|
4
|
+
return new Promise((resolve) => {
|
|
5
|
+
if (typeof webOS === "undefined" || !webOS.service) {
|
|
6
|
+
resolve(null);
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
let request;
|
|
10
|
+
const timeoutId = setTimeout(() => {
|
|
11
|
+
request === null || request === void 0 ? void 0 : request.cancel();
|
|
12
|
+
resolve(null);
|
|
13
|
+
}, LUNA_TIMEOUT);
|
|
14
|
+
request = webOS.service.request(serviceUri, {
|
|
15
|
+
method,
|
|
16
|
+
parameters,
|
|
17
|
+
onSuccess: (response) => {
|
|
18
|
+
clearTimeout(timeoutId);
|
|
19
|
+
resolve(response);
|
|
20
|
+
},
|
|
21
|
+
onFailure: () => {
|
|
22
|
+
clearTimeout(timeoutId);
|
|
23
|
+
resolve(null);
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
function getLgVideoPlaybackResolution() {
|
|
29
|
+
return new Promise((resolve) => {
|
|
30
|
+
if (typeof webOS === "undefined" || !webOS.deviceInfo) {
|
|
31
|
+
resolve(undefined);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const timeoutId = setTimeout(() => resolve(undefined), LUNA_TIMEOUT);
|
|
35
|
+
webOS.deviceInfo((device) => {
|
|
36
|
+
clearTimeout(timeoutId);
|
|
37
|
+
if (device.screenWidth && device.screenHeight) {
|
|
38
|
+
resolve({
|
|
39
|
+
width: device.screenWidth,
|
|
40
|
+
height: device.screenHeight,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
resolve(undefined);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
function getWebViewVersion() {
|
|
50
|
+
const userAgent = navigator.userAgent;
|
|
51
|
+
const chromeMatch = userAgent.match(/Chrome\/(\d+(?:\.\d+)+)/);
|
|
52
|
+
if (chromeMatch) {
|
|
53
|
+
return chromeMatch[1];
|
|
54
|
+
}
|
|
55
|
+
// For older webOS versions using WebKit
|
|
56
|
+
const webkitMatch = userAgent.match(/WebKit\/(\d+(?:\.\d+)+)/);
|
|
57
|
+
if (webkitMatch) {
|
|
58
|
+
return `WebKit ${webkitMatch[1]}`;
|
|
59
|
+
}
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Map SDK major version to webOS version string.
|
|
64
|
+
* Matches the SDK's LGTVDeviceInfo.convertSDKToOSVersion.
|
|
65
|
+
*/
|
|
66
|
+
function convertSDKToOSVersion(sdkMajorVersion) {
|
|
67
|
+
var _a;
|
|
68
|
+
// TODO: LG might release new SDK versions in 2026
|
|
69
|
+
// Include mapping for SDK 11+ as webOS 26 for now
|
|
70
|
+
if (sdkMajorVersion >= 11) {
|
|
71
|
+
return "26";
|
|
72
|
+
}
|
|
73
|
+
const sdkToOSMap = {
|
|
74
|
+
10: "25",
|
|
75
|
+
9: "24",
|
|
76
|
+
8: "23",
|
|
77
|
+
7: "22",
|
|
78
|
+
6: "6.0",
|
|
79
|
+
5: "5.0",
|
|
80
|
+
4: "4.0",
|
|
81
|
+
3: "3.0",
|
|
82
|
+
2: "2.0",
|
|
83
|
+
1: "1.0",
|
|
84
|
+
};
|
|
85
|
+
return (_a = sdkToOSMap[sdkMajorVersion]) !== null && _a !== void 0 ? _a : "unknown";
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Collect LG device info from native webOS APIs.
|
|
89
|
+
* Uses Luna services matching the SDK's LGTVDeviceInfo implementation.
|
|
90
|
+
*/
|
|
91
|
+
export async function collectLgDeviceInfo(logger, shellVersion) {
|
|
92
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
93
|
+
const [deviceIdResult, videoPlaybackResolution, systemInfo, localeInfo] = await Promise.all([
|
|
94
|
+
getDeviceId("LG_TV", logger),
|
|
95
|
+
getLgVideoPlaybackResolution(),
|
|
96
|
+
callLunaService("luna://com.webos.service.tv.systemproperty", "getSystemInfo", { keys: ["modelName", "sdkVersion"] }),
|
|
97
|
+
callLunaService("luna://com.webos.settingsservice", "getSystemSettings", { keys: ["localeInfo"] }),
|
|
98
|
+
]);
|
|
99
|
+
const localeData = (_a = localeInfo === null || localeInfo === void 0 ? void 0 : localeInfo.settings) === null || _a === void 0 ? void 0 : _a.localeInfo;
|
|
100
|
+
const locale = (_f = (_e = (_c = (_b = localeData === null || localeData === void 0 ? void 0 : localeData.locales) === null || _b === void 0 ? void 0 : _b.UI) !== null && _c !== void 0 ? _c : (_d = localeData === null || localeData === void 0 ? void 0 : localeData.locales) === null || _d === void 0 ? void 0 : _d.TV) !== null && _e !== void 0 ? _e : localeData === null || localeData === void 0 ? void 0 : localeData.FMT) !== null && _f !== void 0 ? _f : "unknown";
|
|
101
|
+
const sdkVersionStr = systemInfo === null || systemInfo === void 0 ? void 0 : systemInfo.sdkVersion;
|
|
102
|
+
let sdkVersion = 0;
|
|
103
|
+
let sdkMajorVersion;
|
|
104
|
+
if (sdkVersionStr) {
|
|
105
|
+
const match = sdkVersionStr.match(/(\d+)\.(\d+)\.(\d+)/);
|
|
106
|
+
if ((match === null || match === void 0 ? void 0 : match[1]) && (match === null || match === void 0 ? void 0 : match[2]) && (match === null || match === void 0 ? void 0 : match[3])) {
|
|
107
|
+
sdkMajorVersion = parseInt(match[1], 10);
|
|
108
|
+
sdkVersion =
|
|
109
|
+
sdkMajorVersion * 10000 +
|
|
110
|
+
parseInt(match[2], 10) * 100 +
|
|
111
|
+
parseInt(match[3], 10);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
const screenResolution = {
|
|
115
|
+
width: window.innerWidth,
|
|
116
|
+
height: window.innerHeight,
|
|
117
|
+
};
|
|
118
|
+
const deviceId = deviceIdResult !== null && deviceIdResult !== void 0 ? deviceIdResult : "unknown";
|
|
119
|
+
logger.debug({ deviceId, screenResolution, videoPlaybackResolution, systemInfo, locale }, "LG device info collected");
|
|
120
|
+
return {
|
|
121
|
+
locale,
|
|
122
|
+
screenResolution,
|
|
123
|
+
videoPlaybackResolution: videoPlaybackResolution !== null && videoPlaybackResolution !== void 0 ? videoPlaybackResolution : undefined,
|
|
124
|
+
model: (_g = systemInfo === null || systemInfo === void 0 ? void 0 : systemInfo.modelName) !== null && _g !== void 0 ? _g : "unknown",
|
|
125
|
+
manufacturer: "LG Electronics",
|
|
126
|
+
operatingSystem: "webOS",
|
|
127
|
+
osVersion: sdkMajorVersion
|
|
128
|
+
? convertSDKToOSVersion(sdkMajorVersion)
|
|
129
|
+
: "unknown",
|
|
130
|
+
sdkVersion,
|
|
131
|
+
webViewVersion: getWebViewVersion(),
|
|
132
|
+
deviceId,
|
|
133
|
+
nativeShellAppVersion: shellVersion,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=lgCollector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lgCollector.js","sourceRoot":"","sources":["../../../../../../vwr/src/native/device-info/lgCollector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ILogger } from "@volley/logger";
|
|
2
|
+
import type { NativeDeviceInfoData } from "./rpc";
|
|
3
|
+
/**
|
|
4
|
+
* Collect mobile (iOS/Android) device info from injected app context.
|
|
5
|
+
* Must be called from the bootstrap's main window where iosAppContext/androidAppContext
|
|
6
|
+
* globals are available.
|
|
7
|
+
*/
|
|
8
|
+
export declare function collectMobileDeviceInfo(platform: string, logger: ILogger, shellVersion: string): Promise<NativeDeviceInfoData>;
|
|
9
|
+
//# sourceMappingURL=mobileCollector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mobileCollector.d.ts","sourceRoot":"","sources":["../../../../../../vwr/src/native/device-info/mobileCollector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAK7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAA;AAmBjD;;;;GAIG;AACH,wBAAsB,uBAAuB,CACzC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,EACf,YAAY,EAAE,MAAM,GACrB,OAAO,CAAC,oBAAoB,CAAC,CAiC/B"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { getDeviceId } from "./getDeviceId";
|
|
2
|
+
/**
|
|
3
|
+
* Detect the operating system from the user agent string.
|
|
4
|
+
*/
|
|
5
|
+
function detectOS(userAgent) {
|
|
6
|
+
const iosMatch = userAgent.match(/OS (\d+[_.\d]*)/);
|
|
7
|
+
if (iosMatch === null || iosMatch === void 0 ? void 0 : iosMatch[1]) {
|
|
8
|
+
return { os: "ios", version: iosMatch[1].replace(/_/g, ".") };
|
|
9
|
+
}
|
|
10
|
+
const androidMatch = userAgent.match(/Android (\d+[.\d]*)/);
|
|
11
|
+
if (androidMatch === null || androidMatch === void 0 ? void 0 : androidMatch[1]) {
|
|
12
|
+
return { os: "android", version: androidMatch[1] };
|
|
13
|
+
}
|
|
14
|
+
return { os: "unknown", version: "unknown" };
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Collect mobile (iOS/Android) device info from injected app context.
|
|
18
|
+
* Must be called from the bootstrap's main window where iosAppContext/androidAppContext
|
|
19
|
+
* globals are available.
|
|
20
|
+
*/
|
|
21
|
+
export async function collectMobileDeviceInfo(platform, logger, shellVersion) {
|
|
22
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
23
|
+
const win = window;
|
|
24
|
+
const iosContext = win.iosAppContext;
|
|
25
|
+
const androidContext = win.androidAppContext;
|
|
26
|
+
const { os, version } = detectOS(navigator.userAgent);
|
|
27
|
+
const deviceId = (_a = (await getDeviceId(platform, logger))) !== null && _a !== void 0 ? _a : "unknown";
|
|
28
|
+
const nativeShellAppVersion = (_c = (_b = iosContext === null || iosContext === void 0 ? void 0 : iosContext.appVersion) !== null && _b !== void 0 ? _b : androidContext === null || androidContext === void 0 ? void 0 : androidContext.appVersion) !== null && _c !== void 0 ? _c : shellVersion;
|
|
29
|
+
const deviceInfo = {
|
|
30
|
+
locale: (_d = navigator.language) !== null && _d !== void 0 ? _d : "unknown",
|
|
31
|
+
screenResolution: {
|
|
32
|
+
width: (_f = (_e = window.screen) === null || _e === void 0 ? void 0 : _e.width) !== null && _f !== void 0 ? _f : 0,
|
|
33
|
+
height: (_h = (_g = window.screen) === null || _g === void 0 ? void 0 : _g.height) !== null && _h !== void 0 ? _h : 0,
|
|
34
|
+
},
|
|
35
|
+
model: "unknown",
|
|
36
|
+
manufacturer: "unknown",
|
|
37
|
+
operatingSystem: os,
|
|
38
|
+
osVersion: version,
|
|
39
|
+
sdkVersion: 0,
|
|
40
|
+
webViewVersion: (_j = navigator.userAgent) !== null && _j !== void 0 ? _j : undefined,
|
|
41
|
+
deviceId,
|
|
42
|
+
nativeShellAppVersion,
|
|
43
|
+
};
|
|
44
|
+
logger.debug({ deviceInfo }, "Mobile device info collected");
|
|
45
|
+
return deviceInfo;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=mobileCollector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mobileCollector.js","sourceRoot":"","sources":["../../../../../../vwr/src/native/device-info/mobileCollector.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAG3C;;GAEG;AACH,SAAS,QAAQ,CAAC,SAAiB;IAC/B,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;IACnD,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,CAAC,CAAC,EAAE,CAAC;QAChB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAA;IACjE,CAAC;IAED,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAA;IAC3D,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAG,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAA;IACtD,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CACzC,QAAgB,EAChB,MAAe,EACf,YAAoB;;IAEpB,MAAM,GAAG,GAAG,MAA8B,CAAA;IAE1C,MAAM,UAAU,GAAG,GAAG,CAAC,aAAa,CAAA;IACpC,MAAM,cAAc,GAAG,GAAG,CAAC,iBAAiB,CAAA;IAE5C,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;IAErD,MAAM,QAAQ,GACV,MAAA,CAAC,MAAM,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,mCAAI,SAAS,CAAA;IAEtD,MAAM,qBAAqB,GACvB,MAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,UAAU,mCAAI,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,UAAU,mCAAI,YAAY,CAAA;IAExE,MAAM,UAAU,GAAyB;QACrC,MAAM,EAAE,MAAA,SAAS,CAAC,QAAQ,mCAAI,SAAS;QACvC,gBAAgB,EAAE;YACd,KAAK,EAAE,MAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,KAAK,mCAAI,CAAC;YAChC,MAAM,EAAE,MAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,MAAM,mCAAI,CAAC;SACrC;QACD,KAAK,EAAE,SAAS;QAChB,YAAY,EAAE,SAAS;QACvB,eAAe,EAAE,EAAE;QACnB,SAAS,EAAE,OAAO;QAClB,UAAU,EAAE,CAAC;QACb,cAAc,EAAE,MAAA,SAAS,CAAC,SAAS,mCAAI,SAAS;QAChD,QAAQ;QACR,qBAAqB;KACxB,CAAA;IAED,MAAM,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,EAAE,8BAA8B,CAAC,CAAA;IAE5D,OAAO,UAAU,CAAA;AACrB,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { BrowserIpcConnection } from "@volley/browser-ipc";
|
|
2
|
+
import type { ILogger } from "@volley/logger";
|
|
3
|
+
import type { InputDeviceType } from "@volley/platform-sdk/lib";
|
|
4
|
+
export interface NativeDeviceInfoData {
|
|
5
|
+
locale: string;
|
|
6
|
+
screenResolution: {
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
};
|
|
10
|
+
videoPlaybackResolution?: {
|
|
11
|
+
width: number;
|
|
12
|
+
height: number;
|
|
13
|
+
};
|
|
14
|
+
model: string;
|
|
15
|
+
manufacturer: string;
|
|
16
|
+
operatingSystem: string;
|
|
17
|
+
osVersion: string;
|
|
18
|
+
sdkVersion: number;
|
|
19
|
+
webViewVersion?: string;
|
|
20
|
+
deviceId: string;
|
|
21
|
+
nativeShellAppVersion: string;
|
|
22
|
+
/** FireTV: advertising ID and limit-ad-tracking flag */
|
|
23
|
+
adId?: {
|
|
24
|
+
advertisingId: string | null;
|
|
25
|
+
limitAdTracking: boolean;
|
|
26
|
+
} | null;
|
|
27
|
+
/** FireTV: human-readable OS display version */
|
|
28
|
+
osDisplayVersion?: string;
|
|
29
|
+
/** FireTV: connected input device sources (with inferred deviceType) */
|
|
30
|
+
inputDeviceSources?: {
|
|
31
|
+
devices: {
|
|
32
|
+
[deviceId: string]: {
|
|
33
|
+
name: string;
|
|
34
|
+
deviceType: InputDeviceType;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export declare class DeviceInfoRpcServer {
|
|
40
|
+
#private;
|
|
41
|
+
constructor(collectFn: () => Promise<NativeDeviceInfoData>, ipcConnection: BrowserIpcConnection, logger: ILogger);
|
|
42
|
+
destroy(): void;
|
|
43
|
+
}
|
|
44
|
+
export declare class DeviceInfoRpcClient {
|
|
45
|
+
#private;
|
|
46
|
+
constructor(ipcConnection: BrowserIpcConnection, logger: ILogger);
|
|
47
|
+
init(): Promise<void>;
|
|
48
|
+
getDeviceInfo(): Promise<NativeDeviceInfoData>;
|
|
49
|
+
destroy(): Promise<void>;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=rpc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../../../../../vwr/src/native/device-info/rpc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAO/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAK/D,MAAM,WAAW,oBAAoB;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,gBAAgB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IACnD,uBAAuB,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAC3D,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,wDAAwD;IACxD,IAAI,CAAC,EAAE;QAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,eAAe,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAA;IACxE,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,wEAAwE;IACxE,kBAAkB,CAAC,EAAE;QACjB,OAAO,EAAE;YACL,CAAC,QAAQ,EAAE,MAAM,GAAG;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,UAAU,EAAE,eAAe,CAAA;aAAE,CAAA;SACpE,CAAA;KACJ,CAAA;CACJ;AAED,qBAAa,mBAAmB;;gBAIxB,SAAS,EAAE,MAAM,OAAO,CAAC,oBAAoB,CAAC,EAC9C,aAAa,EAAE,oBAAoB,EACnC,MAAM,EAAE,OAAO;IAiBZ,OAAO,IAAI,IAAI;CAGzB;AAED,qBAAa,mBAAmB;;gBAOhB,aAAa,EAAE,oBAAoB,EAAE,MAAM,EAAE,OAAO;IASnD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,aAAa,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAI9C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAGxC"}
|