@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.
Files changed (252) hide show
  1. package/dist/cli.js +84 -24
  2. package/dist/cli.js.map +1 -1
  3. package/dist/{datadog.d.ts → vwr/src/datadog.d.ts} +7 -3
  4. package/dist/vwr/src/datadog.d.ts.map +1 -0
  5. package/dist/{datadog.js → vwr/src/datadog.js} +6 -5
  6. package/dist/vwr/src/datadog.js.map +1 -0
  7. package/dist/{envDefaults.d.ts → vwr/src/envDefaults.d.ts} +1 -0
  8. package/dist/vwr/src/envDefaults.d.ts.map +1 -0
  9. package/dist/vwr/src/envDefaults.js +67 -0
  10. package/dist/vwr/src/envDefaults.js.map +1 -0
  11. package/dist/vwr/src/iframe.d.ts +25 -0
  12. package/dist/vwr/src/iframe.d.ts.map +1 -0
  13. package/dist/vwr/src/iframe.js +82 -0
  14. package/dist/vwr/src/iframe.js.map +1 -0
  15. package/dist/vwr/src/logger.d.ts +15 -0
  16. package/dist/vwr/src/logger.d.ts.map +1 -0
  17. package/dist/{logger.js → vwr/src/logger.js} +30 -46
  18. package/dist/vwr/src/logger.js.map +1 -0
  19. package/dist/vwr/src/native/app-lifecycle/factory.d.ts +7 -0
  20. package/dist/vwr/src/native/app-lifecycle/factory.d.ts.map +1 -0
  21. package/dist/vwr/src/native/app-lifecycle/factory.js +68 -0
  22. package/dist/vwr/src/native/app-lifecycle/factory.js.map +1 -0
  23. package/dist/vwr/src/native/app-lifecycle/rpc.d.ts +15 -0
  24. package/dist/vwr/src/native/app-lifecycle/rpc.d.ts.map +1 -0
  25. package/dist/vwr/src/native/app-lifecycle/rpc.js +46 -0
  26. package/dist/vwr/src/native/app-lifecycle/rpc.js.map +1 -0
  27. package/dist/vwr/src/native/capacitor-bridge/rpc.d.ts +33 -0
  28. package/dist/vwr/src/native/capacitor-bridge/rpc.d.ts.map +1 -0
  29. package/dist/vwr/src/native/capacitor-bridge/rpc.js +129 -0
  30. package/dist/vwr/src/native/capacitor-bridge/rpc.js.map +1 -0
  31. package/dist/vwr/src/native/device-info/factory.d.ts +9 -0
  32. package/dist/vwr/src/native/device-info/factory.d.ts.map +1 -0
  33. package/dist/vwr/src/native/device-info/factory.js +28 -0
  34. package/dist/vwr/src/native/device-info/factory.js.map +1 -0
  35. package/dist/vwr/src/native/device-info/firetvCollector.d.ts +9 -0
  36. package/dist/vwr/src/native/device-info/firetvCollector.d.ts.map +1 -0
  37. package/dist/vwr/src/native/device-info/firetvCollector.js +180 -0
  38. package/dist/vwr/src/native/device-info/firetvCollector.js.map +1 -0
  39. package/dist/vwr/src/native/device-info/getDeviceId.d.ts +13 -0
  40. package/dist/vwr/src/native/device-info/getDeviceId.d.ts.map +1 -0
  41. package/dist/vwr/src/native/device-info/getDeviceId.js +137 -0
  42. package/dist/vwr/src/native/device-info/getDeviceId.js.map +1 -0
  43. package/dist/vwr/src/native/device-info/lgCollector.d.ts +8 -0
  44. package/dist/vwr/src/native/device-info/lgCollector.d.ts.map +1 -0
  45. package/dist/vwr/src/native/device-info/lgCollector.js +136 -0
  46. package/dist/vwr/src/native/device-info/lgCollector.js.map +1 -0
  47. package/dist/vwr/src/native/device-info/mobileCollector.d.ts +9 -0
  48. package/dist/vwr/src/native/device-info/mobileCollector.d.ts.map +1 -0
  49. package/dist/vwr/src/native/device-info/mobileCollector.js +47 -0
  50. package/dist/vwr/src/native/device-info/mobileCollector.js.map +1 -0
  51. package/dist/vwr/src/native/device-info/rpc.d.ts +51 -0
  52. package/dist/vwr/src/native/device-info/rpc.d.ts.map +1 -0
  53. package/dist/vwr/src/native/device-info/rpc.js +46 -0
  54. package/dist/vwr/src/native/device-info/rpc.js.map +1 -0
  55. package/dist/vwr/src/native/device-info/samsungCollector.d.ts +9 -0
  56. package/dist/vwr/src/native/device-info/samsungCollector.d.ts.map +1 -0
  57. package/dist/vwr/src/native/device-info/samsungCollector.js +86 -0
  58. package/dist/vwr/src/native/device-info/samsungCollector.js.map +1 -0
  59. package/dist/vwr/src/native/device-info/webCollector.d.ts +4 -0
  60. package/dist/vwr/src/native/device-info/webCollector.d.ts.map +1 -0
  61. package/dist/vwr/src/native/device-info/webCollector.js +56 -0
  62. package/dist/vwr/src/native/device-info/webCollector.js.map +1 -0
  63. package/dist/vwr/src/native/native-bridge/rpc.d.ts +33 -0
  64. package/dist/vwr/src/native/native-bridge/rpc.d.ts.map +1 -0
  65. package/dist/vwr/src/native/native-bridge/rpc.js +114 -0
  66. package/dist/vwr/src/native/native-bridge/rpc.js.map +1 -0
  67. package/dist/vwr/src/native/screensaver-prevention/LGLunaService.d.ts +14 -0
  68. package/dist/vwr/src/native/screensaver-prevention/LGLunaService.d.ts.map +1 -0
  69. package/dist/vwr/src/native/screensaver-prevention/LGLunaService.js +187 -0
  70. package/dist/vwr/src/native/screensaver-prevention/LGLunaService.js.map +1 -0
  71. package/dist/vwr/src/native/screensaver-prevention/rpc.d.ts +27 -0
  72. package/dist/vwr/src/native/screensaver-prevention/rpc.d.ts.map +1 -0
  73. package/dist/vwr/src/native/screensaver-prevention/rpc.js +71 -0
  74. package/dist/vwr/src/native/screensaver-prevention/rpc.js.map +1 -0
  75. package/dist/vwr/src/observability.d.ts +35 -0
  76. package/dist/vwr/src/observability.d.ts.map +1 -0
  77. package/dist/vwr/src/observability.js +68 -0
  78. package/dist/vwr/src/observability.js.map +1 -0
  79. package/dist/vwr/src/shellEnvDefaults.d.ts +15 -0
  80. package/dist/vwr/src/shellEnvDefaults.d.ts.map +1 -0
  81. package/dist/vwr/src/shellEnvDefaults.js +34 -0
  82. package/dist/vwr/src/shellEnvDefaults.js.map +1 -0
  83. package/dist/vwr/src/types.d.ts +56 -0
  84. package/dist/vwr/src/types.d.ts.map +1 -0
  85. package/dist/vwr/src/types.js +27 -0
  86. package/dist/vwr/src/types.js.map +1 -0
  87. package/dist/vwr/src/urlUtils.d.ts +17 -0
  88. package/dist/vwr/src/urlUtils.d.ts.map +1 -0
  89. package/dist/vwr/src/urlUtils.js +42 -0
  90. package/dist/vwr/src/urlUtils.js.map +1 -0
  91. package/dist/vwr/src/vwrBootstrap.d.ts +26 -0
  92. package/dist/vwr/src/vwrBootstrap.d.ts.map +1 -0
  93. package/dist/vwr/src/vwrBootstrap.js +176 -0
  94. package/dist/vwr/src/vwrBootstrap.js.map +1 -0
  95. package/dist/{vwrConfig.d.ts → vwr/src/vwrConfig.d.ts} +5 -0
  96. package/dist/vwr/src/vwrConfig.d.ts.map +1 -0
  97. package/dist/{vwrConfig.js → vwr/src/vwrConfig.js} +24 -7
  98. package/dist/vwr/src/vwrConfig.js.map +1 -0
  99. package/{src → dist/vwr-loader}/index.html +1 -1
  100. package/dist/vwr-loader/src/__mocks__/@datadog/browser-logs.d.ts.map +1 -0
  101. package/dist/vwr-loader/src/__mocks__/@datadog/browser-logs.js.map +1 -0
  102. package/dist/vwr-loader/src/__mocks__/@datadog/browser-rum.d.ts.map +1 -0
  103. package/dist/vwr-loader/src/__mocks__/@datadog/browser-rum.js.map +1 -0
  104. package/dist/vwr-loader/src/__mocks__/invalidVwrModule.d.ts +2 -0
  105. package/dist/vwr-loader/src/__mocks__/invalidVwrModule.d.ts.map +1 -0
  106. package/dist/vwr-loader/src/__mocks__/invalidVwrModule.js +2 -0
  107. package/dist/vwr-loader/src/__mocks__/invalidVwrModule.js.map +1 -0
  108. package/dist/vwr-loader/src/__mocks__/vwrModule.d.ts.map +1 -0
  109. package/dist/vwr-loader/src/__mocks__/vwrModule.js.map +1 -0
  110. package/dist/vwr-loader/src/amplitudeFlagFetcher.d.ts.map +1 -0
  111. package/dist/vwr-loader/src/amplitudeFlagFetcher.js.map +1 -0
  112. package/dist/vwr-loader/src/errors/InitializationError.d.ts.map +1 -0
  113. package/dist/vwr-loader/src/errors/InitializationError.js.map +1 -0
  114. package/dist/vwr-loader/src/errors/ensureError.d.ts.map +1 -0
  115. package/dist/vwr-loader/src/errors/ensureError.js.map +1 -0
  116. package/dist/vwr-loader/src/errors/index.d.ts.map +1 -0
  117. package/dist/vwr-loader/src/errors/index.js.map +1 -0
  118. package/dist/vwr-loader/src/exitHandler.d.ts.map +1 -0
  119. package/dist/{exitHandler.js → vwr-loader/src/exitHandler.js} +2 -3
  120. package/dist/vwr-loader/src/exitHandler.js.map +1 -0
  121. package/dist/vwr-loader/src/getEnvironment.d.ts.map +1 -0
  122. package/dist/vwr-loader/src/getEnvironment.js.map +1 -0
  123. package/dist/vwr-loader/src/getShellVersion.d.ts.map +1 -0
  124. package/dist/vwr-loader/src/getShellVersion.js.map +1 -0
  125. package/dist/vwr-loader/src/index.d.ts +8 -0
  126. package/dist/vwr-loader/src/index.d.ts.map +1 -0
  127. package/dist/vwr-loader/src/index.js +6 -0
  128. package/dist/vwr-loader/src/index.js.map +1 -0
  129. package/dist/vwr-loader/src/loadVwr.d.ts.map +1 -0
  130. package/dist/{loadVwr.js → vwr-loader/src/loadVwr.js} +36 -27
  131. package/dist/vwr-loader/src/loadVwr.js.map +1 -0
  132. package/dist/vwr-loader/src/logger.d.ts +4 -0
  133. package/dist/vwr-loader/src/logger.d.ts.map +1 -0
  134. package/dist/vwr-loader/src/logger.js +10 -0
  135. package/dist/vwr-loader/src/logger.js.map +1 -0
  136. package/dist/vwr-loader/src/main.d.ts +2 -0
  137. package/dist/vwr-loader/src/main.d.ts.map +1 -0
  138. package/dist/vwr-loader/src/main.js +96 -0
  139. package/dist/vwr-loader/src/main.js.map +1 -0
  140. package/dist/vwr-loader/src/polyfills.d.ts.map +1 -0
  141. package/dist/vwr-loader/src/polyfills.js.map +1 -0
  142. package/dist/{test-setup.d.ts.map → vwr-loader/src/test-setup.d.ts.map} +1 -1
  143. package/dist/vwr-loader/src/test-setup.js.map +1 -0
  144. package/package.json +13 -12
  145. package/dist/__mocks__/@datadog/browser-logs.d.ts.map +0 -1
  146. package/dist/__mocks__/@datadog/browser-logs.js.map +0 -1
  147. package/dist/__mocks__/@datadog/browser-rum.d.ts.map +0 -1
  148. package/dist/__mocks__/@datadog/browser-rum.js.map +0 -1
  149. package/dist/__mocks__/vwrModule.d.ts.map +0 -1
  150. package/dist/__mocks__/vwrModule.js.map +0 -1
  151. package/dist/amplitudeFlagFetcher.d.ts.map +0 -1
  152. package/dist/amplitudeFlagFetcher.js.map +0 -1
  153. package/dist/assets/profiler-BRmTNL9s.js +0 -2
  154. package/dist/assets/profiler-BRmTNL9s.js.map +0 -1
  155. package/dist/assets/startRecording-CuFdVhxx.js +0 -3
  156. package/dist/assets/startRecording-CuFdVhxx.js.map +0 -1
  157. package/dist/datadog.d.ts.map +0 -1
  158. package/dist/datadog.js.map +0 -1
  159. package/dist/envDefaults.d.ts.map +0 -1
  160. package/dist/envDefaults.js +0 -74
  161. package/dist/envDefaults.js.map +0 -1
  162. package/dist/errors/InitializationError.d.ts.map +0 -1
  163. package/dist/errors/InitializationError.js.map +0 -1
  164. package/dist/errors/ensureError.d.ts.map +0 -1
  165. package/dist/errors/ensureError.js.map +0 -1
  166. package/dist/errors/index.d.ts.map +0 -1
  167. package/dist/errors/index.js.map +0 -1
  168. package/dist/exitHandler.d.ts.map +0 -1
  169. package/dist/exitHandler.js.map +0 -1
  170. package/dist/getDeviceId.d.ts +0 -26
  171. package/dist/getDeviceId.d.ts.map +0 -1
  172. package/dist/getDeviceId.js +0 -209
  173. package/dist/getDeviceId.js.map +0 -1
  174. package/dist/getEnvironment.d.ts.map +0 -1
  175. package/dist/getEnvironment.js.map +0 -1
  176. package/dist/getShellVersion.d.ts.map +0 -1
  177. package/dist/getShellVersion.js.map +0 -1
  178. package/dist/index.d.ts +0 -8
  179. package/dist/index.d.ts.map +0 -1
  180. package/dist/index.html +0 -25
  181. package/dist/index.js +0 -6
  182. package/dist/index.js.map +0 -1
  183. package/dist/loadVwr.d.ts.map +0 -1
  184. package/dist/loadVwr.js.map +0 -1
  185. package/dist/logger.d.ts +0 -12
  186. package/dist/logger.d.ts.map +0 -1
  187. package/dist/logger.js.map +0 -1
  188. package/dist/main.js +0 -12
  189. package/dist/main.js.map +0 -1
  190. package/dist/polyfills.d.ts.map +0 -1
  191. package/dist/polyfills.js.map +0 -1
  192. package/dist/test-setup.js.map +0 -1
  193. package/dist/types.d.ts +0 -103
  194. package/dist/types.d.ts.map +0 -1
  195. package/dist/types.js +0 -5
  196. package/dist/types.js.map +0 -1
  197. package/dist/vwrConfig.d.ts.map +0 -1
  198. package/dist/vwrConfig.js.map +0 -1
  199. package/src/__mocks__/@datadog/browser-logs.ts +0 -35
  200. package/src/__mocks__/@datadog/browser-rum.ts +0 -27
  201. package/src/__mocks__/vwrModule.ts +0 -3
  202. package/src/amplitudeFlagFetcher.test.ts +0 -175
  203. package/src/amplitudeFlagFetcher.ts +0 -105
  204. package/src/datadog.ts +0 -55
  205. package/src/envDefaults.ts +0 -94
  206. package/src/errors/InitializationError.ts +0 -105
  207. package/src/errors/ensureError.ts +0 -6
  208. package/src/errors/index.ts +0 -16
  209. package/src/exitHandler.test.ts +0 -373
  210. package/src/exitHandler.ts +0 -232
  211. package/src/getDeviceId.test.ts +0 -298
  212. package/src/getDeviceId.ts +0 -224
  213. package/src/getEnvironment.test.ts +0 -417
  214. package/src/getEnvironment.ts +0 -144
  215. package/src/getShellVersion.test.ts +0 -403
  216. package/src/getShellVersion.ts +0 -132
  217. package/src/index.ts +0 -7
  218. package/src/loadVwr.test.ts +0 -549
  219. package/src/loadVwr.ts +0 -357
  220. package/src/logger.ts +0 -121
  221. package/src/main.test.ts +0 -157
  222. package/src/main.ts +0 -127
  223. package/src/polyfills.ts +0 -32
  224. package/src/test-setup.ts +0 -5
  225. package/src/types.ts +0 -105
  226. package/src/vite-env.d.ts +0 -32
  227. package/src/vwrConfig.test.ts +0 -386
  228. package/src/vwrConfig.ts +0 -374
  229. /package/dist/{__mocks__ → vwr-loader/src/__mocks__}/@datadog/browser-logs.d.ts +0 -0
  230. /package/dist/{__mocks__ → vwr-loader/src/__mocks__}/@datadog/browser-logs.js +0 -0
  231. /package/dist/{__mocks__ → vwr-loader/src/__mocks__}/@datadog/browser-rum.d.ts +0 -0
  232. /package/dist/{__mocks__ → vwr-loader/src/__mocks__}/@datadog/browser-rum.js +0 -0
  233. /package/dist/{__mocks__ → vwr-loader/src/__mocks__}/vwrModule.d.ts +0 -0
  234. /package/dist/{__mocks__ → vwr-loader/src/__mocks__}/vwrModule.js +0 -0
  235. /package/dist/{amplitudeFlagFetcher.d.ts → vwr-loader/src/amplitudeFlagFetcher.d.ts} +0 -0
  236. /package/dist/{amplitudeFlagFetcher.js → vwr-loader/src/amplitudeFlagFetcher.js} +0 -0
  237. /package/dist/{errors → vwr-loader/src/errors}/InitializationError.d.ts +0 -0
  238. /package/dist/{errors → vwr-loader/src/errors}/InitializationError.js +0 -0
  239. /package/dist/{errors → vwr-loader/src/errors}/ensureError.d.ts +0 -0
  240. /package/dist/{errors → vwr-loader/src/errors}/ensureError.js +0 -0
  241. /package/dist/{errors → vwr-loader/src/errors}/index.d.ts +0 -0
  242. /package/dist/{errors → vwr-loader/src/errors}/index.js +0 -0
  243. /package/dist/{exitHandler.d.ts → vwr-loader/src/exitHandler.d.ts} +0 -0
  244. /package/dist/{getEnvironment.d.ts → vwr-loader/src/getEnvironment.d.ts} +0 -0
  245. /package/dist/{getEnvironment.js → vwr-loader/src/getEnvironment.js} +0 -0
  246. /package/dist/{getShellVersion.d.ts → vwr-loader/src/getShellVersion.d.ts} +0 -0
  247. /package/dist/{getShellVersion.js → vwr-loader/src/getShellVersion.js} +0 -0
  248. /package/dist/{loadVwr.d.ts → vwr-loader/src/loadVwr.d.ts} +0 -0
  249. /package/dist/{polyfills.d.ts → vwr-loader/src/polyfills.d.ts} +0 -0
  250. /package/dist/{polyfills.js → vwr-loader/src/polyfills.js} +0 -0
  251. /package/dist/{test-setup.d.ts → vwr-loader/src/test-setup.d.ts} +0 -0
  252. /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"}