@volley/vwr-loader 1.6.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 (133) hide show
  1. package/dist/cli.js +51 -25
  2. package/dist/cli.js.map +1 -1
  3. package/dist/vwr/src/envDefaults.d.ts.map +1 -1
  4. package/dist/vwr/src/envDefaults.js +6 -39
  5. package/dist/vwr/src/envDefaults.js.map +1 -1
  6. package/dist/vwr/src/iframe.d.ts +25 -0
  7. package/dist/vwr/src/iframe.d.ts.map +1 -0
  8. package/dist/vwr/src/iframe.js +82 -0
  9. package/dist/vwr/src/iframe.js.map +1 -0
  10. package/dist/vwr/src/native/app-lifecycle/factory.d.ts +7 -0
  11. package/dist/vwr/src/native/app-lifecycle/factory.d.ts.map +1 -0
  12. package/dist/vwr/src/native/app-lifecycle/factory.js +68 -0
  13. package/dist/vwr/src/native/app-lifecycle/factory.js.map +1 -0
  14. package/dist/vwr/src/native/app-lifecycle/rpc.d.ts +15 -0
  15. package/dist/vwr/src/native/app-lifecycle/rpc.d.ts.map +1 -0
  16. package/dist/vwr/src/native/app-lifecycle/rpc.js +46 -0
  17. package/dist/vwr/src/native/app-lifecycle/rpc.js.map +1 -0
  18. package/dist/vwr/src/native/capacitor-bridge/rpc.d.ts +33 -0
  19. package/dist/vwr/src/native/capacitor-bridge/rpc.d.ts.map +1 -0
  20. package/dist/vwr/src/native/capacitor-bridge/rpc.js +129 -0
  21. package/dist/vwr/src/native/capacitor-bridge/rpc.js.map +1 -0
  22. package/dist/vwr/src/native/device-info/factory.d.ts +9 -0
  23. package/dist/vwr/src/native/device-info/factory.d.ts.map +1 -0
  24. package/dist/vwr/src/native/device-info/factory.js +28 -0
  25. package/dist/vwr/src/native/device-info/factory.js.map +1 -0
  26. package/dist/vwr/src/native/device-info/firetvCollector.d.ts +9 -0
  27. package/dist/vwr/src/native/device-info/firetvCollector.d.ts.map +1 -0
  28. package/dist/vwr/src/native/device-info/firetvCollector.js +180 -0
  29. package/dist/vwr/src/native/device-info/firetvCollector.js.map +1 -0
  30. package/dist/vwr/src/native/device-info/lgCollector.d.ts +8 -0
  31. package/dist/vwr/src/native/device-info/lgCollector.d.ts.map +1 -0
  32. package/dist/vwr/src/native/device-info/lgCollector.js +136 -0
  33. package/dist/vwr/src/native/device-info/lgCollector.js.map +1 -0
  34. package/dist/vwr/src/native/device-info/mobileCollector.d.ts +9 -0
  35. package/dist/vwr/src/native/device-info/mobileCollector.d.ts.map +1 -0
  36. package/dist/vwr/src/native/device-info/mobileCollector.js +47 -0
  37. package/dist/vwr/src/native/device-info/mobileCollector.js.map +1 -0
  38. package/dist/vwr/src/native/device-info/rpc.d.ts +51 -0
  39. package/dist/vwr/src/native/device-info/rpc.d.ts.map +1 -0
  40. package/dist/vwr/src/native/device-info/rpc.js +46 -0
  41. package/dist/vwr/src/native/device-info/rpc.js.map +1 -0
  42. package/dist/vwr/src/native/device-info/samsungCollector.d.ts +9 -0
  43. package/dist/vwr/src/native/device-info/samsungCollector.d.ts.map +1 -0
  44. package/dist/vwr/src/native/device-info/samsungCollector.js +86 -0
  45. package/dist/vwr/src/native/device-info/samsungCollector.js.map +1 -0
  46. package/dist/vwr/src/native/device-info/webCollector.d.ts +4 -0
  47. package/dist/vwr/src/native/device-info/webCollector.d.ts.map +1 -0
  48. package/dist/vwr/src/native/device-info/webCollector.js +56 -0
  49. package/dist/vwr/src/native/device-info/webCollector.js.map +1 -0
  50. package/dist/vwr/src/native/native-bridge/rpc.d.ts +33 -0
  51. package/dist/vwr/src/native/native-bridge/rpc.d.ts.map +1 -0
  52. package/dist/vwr/src/native/native-bridge/rpc.js +114 -0
  53. package/dist/vwr/src/native/native-bridge/rpc.js.map +1 -0
  54. package/dist/vwr/src/native/screensaver-prevention/LGLunaService.d.ts +14 -0
  55. package/dist/vwr/src/native/screensaver-prevention/LGLunaService.d.ts.map +1 -0
  56. package/dist/vwr/src/native/screensaver-prevention/LGLunaService.js +187 -0
  57. package/dist/vwr/src/native/screensaver-prevention/LGLunaService.js.map +1 -0
  58. package/dist/vwr/src/native/screensaver-prevention/rpc.d.ts +27 -0
  59. package/dist/vwr/src/native/screensaver-prevention/rpc.d.ts.map +1 -0
  60. package/dist/vwr/src/native/screensaver-prevention/rpc.js +71 -0
  61. package/dist/vwr/src/native/screensaver-prevention/rpc.js.map +1 -0
  62. package/dist/vwr/src/observability.d.ts +35 -0
  63. package/dist/vwr/src/observability.d.ts.map +1 -0
  64. package/dist/vwr/src/observability.js +68 -0
  65. package/dist/vwr/src/observability.js.map +1 -0
  66. package/dist/vwr/src/shellEnvDefaults.d.ts +15 -0
  67. package/dist/vwr/src/shellEnvDefaults.d.ts.map +1 -0
  68. package/dist/vwr/src/shellEnvDefaults.js +34 -0
  69. package/dist/vwr/src/shellEnvDefaults.js.map +1 -0
  70. package/dist/vwr/src/types.d.ts +56 -0
  71. package/dist/vwr/src/types.d.ts.map +1 -0
  72. package/dist/vwr/src/types.js +27 -0
  73. package/dist/vwr/src/types.js.map +1 -0
  74. package/dist/vwr/src/urlUtils.d.ts +17 -0
  75. package/dist/vwr/src/urlUtils.d.ts.map +1 -0
  76. package/dist/vwr/src/urlUtils.js +42 -0
  77. package/dist/vwr/src/urlUtils.js.map +1 -0
  78. package/dist/vwr/src/vwrBootstrap.d.ts +26 -0
  79. package/dist/vwr/src/vwrBootstrap.d.ts.map +1 -0
  80. package/dist/vwr/src/vwrBootstrap.js +176 -0
  81. package/dist/vwr/src/vwrBootstrap.js.map +1 -0
  82. package/dist/vwr/src/vwrConfig.d.ts.map +1 -1
  83. package/dist/vwr/src/vwrConfig.js +11 -2
  84. package/dist/vwr/src/vwrConfig.js.map +1 -1
  85. package/{src → dist/vwr-loader}/index.html +1 -1
  86. package/dist/vwr-loader/src/__mocks__/invalidVwrModule.d.ts +2 -0
  87. package/dist/vwr-loader/src/__mocks__/invalidVwrModule.d.ts.map +1 -0
  88. package/dist/vwr-loader/src/__mocks__/invalidVwrModule.js +2 -0
  89. package/dist/vwr-loader/src/__mocks__/invalidVwrModule.js.map +1 -0
  90. package/dist/vwr-loader/src/index.d.ts +3 -3
  91. package/dist/vwr-loader/src/index.d.ts.map +1 -1
  92. package/dist/vwr-loader/src/index.js +2 -2
  93. package/dist/vwr-loader/src/index.js.map +1 -1
  94. package/dist/vwr-loader/src/loadVwr.d.ts.map +1 -1
  95. package/dist/vwr-loader/src/loadVwr.js +28 -22
  96. package/dist/vwr-loader/src/loadVwr.js.map +1 -1
  97. package/dist/vwr-loader/src/logger.d.ts +1 -1
  98. package/dist/vwr-loader/src/logger.d.ts.map +1 -1
  99. package/dist/vwr-loader/src/logger.js +1 -1
  100. package/dist/vwr-loader/src/logger.js.map +1 -1
  101. package/dist/vwr-loader/src/main.js +1 -1
  102. package/dist/vwr-loader/src/main.js.map +1 -1
  103. package/package.json +4 -5
  104. package/dist/assets/profiler-BRmTNL9s.js +0 -2
  105. package/dist/assets/profiler-BRmTNL9s.js.map +0 -1
  106. package/dist/assets/startRecording-CuFdVhxx.js +0 -3
  107. package/dist/assets/startRecording-CuFdVhxx.js.map +0 -1
  108. package/dist/index.html +0 -25
  109. package/dist/main.js +0 -12
  110. package/dist/main.js.map +0 -1
  111. package/src/__mocks__/@datadog/browser-logs.ts +0 -35
  112. package/src/__mocks__/@datadog/browser-rum.ts +0 -27
  113. package/src/__mocks__/vwrModule.ts +0 -3
  114. package/src/amplitudeFlagFetcher.test.ts +0 -175
  115. package/src/amplitudeFlagFetcher.ts +0 -105
  116. package/src/errors/InitializationError.ts +0 -105
  117. package/src/errors/ensureError.ts +0 -6
  118. package/src/errors/index.ts +0 -16
  119. package/src/exitHandler.test.ts +0 -417
  120. package/src/exitHandler.ts +0 -233
  121. package/src/getEnvironment.test.ts +0 -417
  122. package/src/getEnvironment.ts +0 -144
  123. package/src/getShellVersion.test.ts +0 -403
  124. package/src/getShellVersion.ts +0 -133
  125. package/src/index.ts +0 -7
  126. package/src/loadVwr.test.ts +0 -554
  127. package/src/loadVwr.ts +0 -363
  128. package/src/logger.ts +0 -11
  129. package/src/main.test.ts +0 -157
  130. package/src/main.ts +0 -128
  131. package/src/polyfills.ts +0 -32
  132. package/src/test-setup.ts +0 -5
  133. package/src/vite-env.d.ts +0 -33
@@ -0,0 +1,33 @@
1
+ import type { BrowserIpcConnection } from "@volley/browser-ipc";
2
+ import type { ILogger } from "@volley/logger";
3
+ /**
4
+ * RPC server that runs in the bootstrap (shell's main window) where
5
+ * real Capacitor globals are available. Proxies plugin method calls
6
+ * and event listeners from the VWR iframe.
7
+ */
8
+ export declare class CapacitorProxyRpcServer {
9
+ #private;
10
+ constructor(ipcConnection: BrowserIpcConnection, logger: ILogger);
11
+ destroy(): void;
12
+ }
13
+ /**
14
+ * RPC client that runs in the VWR iframe. Installs a Proxy on
15
+ * `window.Capacitor` so that all Capacitor plugin calls from
16
+ * PlatformSDK modules (FireTVBridge) route through RPC to the
17
+ * bootstrap where real Capacitor is available.
18
+ *
19
+ * Must be called BEFORE PlatformSDK construction so FireTVBridge
20
+ * finds our proxy when it accesses `window.Capacitor.Plugins[name]`.
21
+ */
22
+ export declare class CapacitorProxyRpcClient {
23
+ #private;
24
+ constructor(ipcConnection: BrowserIpcConnection, logger: ILogger);
25
+ init(): Promise<void>;
26
+ /**
27
+ * Install a Proxy on `window.Capacitor` that intercepts all plugin
28
+ * access and routes calls through RPC to the bootstrap.
29
+ */
30
+ installProxy(): void;
31
+ destroy(): Promise<void>;
32
+ }
33
+ //# sourceMappingURL=rpc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../../../../../vwr/src/native/capacitor-bridge/rpc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,oBAAoB,EAGvB,MAAM,qBAAqB,CAAA;AAS5B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAiB7C;;;;GAIG;AACH,qBAAa,uBAAuB;;gBAGpB,aAAa,EAAE,oBAAoB,EAAE,MAAM,EAAE,OAAO;IAoEzD,OAAO,IAAI,IAAI;CAGzB;AAED;;;;;;;;GAQG;AACH,qBAAa,uBAAuB;;gBASpB,aAAa,EAAE,oBAAoB,EAAE,MAAM,EAAE,OAAO;IAoBnD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIlC;;;OAGG;IACI,YAAY,IAAI,IAAI;IAsDd,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAGxC"}
@@ -0,0 +1,129 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _CapacitorProxyRpcServer_rpcServer, _CapacitorProxyRpcClient_rpcClient, _CapacitorProxyRpcClient_callPlugin, _CapacitorProxyRpcClient_addPluginListener;
13
+ import { BrowserRpcClient, BrowserRpcServer, CallbackRpcClientMethod, CallbackRpcServerMethod, UnaryRpcClientMethod, UnaryRpcServerMethod, } from "@volley/browser-ipc";
14
+ const CAPACITOR_API = "Native::Capacitor";
15
+ const CALL_PLUGIN_METHOD = "callPlugin";
16
+ const ADD_PLUGIN_LISTENER_METHOD = "addPluginListener";
17
+ /**
18
+ * RPC server that runs in the bootstrap (shell's main window) where
19
+ * real Capacitor globals are available. Proxies plugin method calls
20
+ * and event listeners from the VWR iframe.
21
+ */
22
+ export class CapacitorProxyRpcServer {
23
+ constructor(ipcConnection, logger) {
24
+ _CapacitorProxyRpcServer_rpcServer.set(this, void 0);
25
+ const callPluginMethod = new UnaryRpcServerMethod(CALL_PLUGIN_METHOD, async (request) => {
26
+ var _a;
27
+ const capacitor = window.Capacitor;
28
+ const plugin = (_a = capacitor === null || capacitor === void 0 ? void 0 : capacitor.Plugins) === null || _a === void 0 ? void 0 : _a[request.plugin];
29
+ if (!plugin) {
30
+ throw new Error(`Capacitor plugin "${request.plugin}" not available`);
31
+ }
32
+ const method = plugin[request.method];
33
+ if (typeof method !== "function") {
34
+ throw new Error(`Method "${request.method}" not found on plugin "${request.plugin}"`);
35
+ }
36
+ return method.apply(plugin, request.args);
37
+ });
38
+ const addPluginListenerMethod = new CallbackRpcServerMethod(ADD_PLUGIN_LISTENER_METHOD, async (request) => {
39
+ var _a;
40
+ const capacitor = window.Capacitor;
41
+ const plugin = (_a = capacitor === null || capacitor === void 0 ? void 0 : capacitor.Plugins) === null || _a === void 0 ? void 0 : _a[request.requestData.plugin];
42
+ if (!plugin) {
43
+ throw new Error(`Capacitor plugin "${request.requestData.plugin}" not available`);
44
+ }
45
+ const handle = await plugin.addListener(request.requestData.event, (event) => {
46
+ request.callback(event, []);
47
+ });
48
+ return {
49
+ responseData: undefined,
50
+ unregisterCallback: () => {
51
+ var _a;
52
+ (_a = handle === null || handle === void 0 ? void 0 : handle.remove) === null || _a === void 0 ? void 0 : _a.call(handle);
53
+ },
54
+ };
55
+ });
56
+ __classPrivateFieldSet(this, _CapacitorProxyRpcServer_rpcServer, new BrowserRpcServer(CAPACITOR_API, new Set([callPluginMethod, addPluginListenerMethod]), ipcConnection, logger), "f");
57
+ }
58
+ destroy() {
59
+ __classPrivateFieldGet(this, _CapacitorProxyRpcServer_rpcServer, "f").destroy();
60
+ }
61
+ }
62
+ _CapacitorProxyRpcServer_rpcServer = new WeakMap();
63
+ /**
64
+ * RPC client that runs in the VWR iframe. Installs a Proxy on
65
+ * `window.Capacitor` so that all Capacitor plugin calls from
66
+ * PlatformSDK modules (FireTVBridge) route through RPC to the
67
+ * bootstrap where real Capacitor is available.
68
+ *
69
+ * Must be called BEFORE PlatformSDK construction so FireTVBridge
70
+ * finds our proxy when it accesses `window.Capacitor.Plugins[name]`.
71
+ */
72
+ export class CapacitorProxyRpcClient {
73
+ constructor(ipcConnection, logger) {
74
+ _CapacitorProxyRpcClient_rpcClient.set(this, void 0);
75
+ _CapacitorProxyRpcClient_callPlugin.set(this, void 0);
76
+ _CapacitorProxyRpcClient_addPluginListener.set(this, void 0);
77
+ __classPrivateFieldSet(this, _CapacitorProxyRpcClient_callPlugin, new UnaryRpcClientMethod(CALL_PLUGIN_METHOD), "f");
78
+ __classPrivateFieldSet(this, _CapacitorProxyRpcClient_addPluginListener, new CallbackRpcClientMethod(ADD_PLUGIN_LISTENER_METHOD), "f");
79
+ __classPrivateFieldSet(this, _CapacitorProxyRpcClient_rpcClient, new BrowserRpcClient(CAPACITOR_API, new Set([__classPrivateFieldGet(this, _CapacitorProxyRpcClient_callPlugin, "f"), __classPrivateFieldGet(this, _CapacitorProxyRpcClient_addPluginListener, "f")]), ipcConnection, logger), "f");
80
+ }
81
+ async init() {
82
+ await __classPrivateFieldGet(this, _CapacitorProxyRpcClient_rpcClient, "f").connect();
83
+ }
84
+ /**
85
+ * Install a Proxy on `window.Capacitor` that intercepts all plugin
86
+ * access and routes calls through RPC to the bootstrap.
87
+ */
88
+ installProxy() {
89
+ const callPlugin = __classPrivateFieldGet(this, _CapacitorProxyRpcClient_callPlugin, "f");
90
+ const addPluginListener = __classPrivateFieldGet(this, _CapacitorProxyRpcClient_addPluginListener, "f");
91
+ const pluginsProxy = new Proxy({}, {
92
+ get(_target, pluginName) {
93
+ // Return a proxy for the plugin that intercepts method calls
94
+ return new Proxy({}, {
95
+ get(_pluginTarget, methodName) {
96
+ if (methodName === "addListener") {
97
+ return async (event, callback) => {
98
+ const response = await addPluginListener.call({
99
+ plugin: pluginName,
100
+ event,
101
+ }, callback);
102
+ return {
103
+ remove: response.unregisterCallback,
104
+ };
105
+ };
106
+ }
107
+ // Regular method call → unary RPC
108
+ return async (...args) => {
109
+ return callPlugin.call({
110
+ plugin: pluginName,
111
+ method: methodName,
112
+ args,
113
+ });
114
+ };
115
+ },
116
+ });
117
+ },
118
+ });
119
+ window.Capacitor = {
120
+ Plugins: pluginsProxy,
121
+ isNativePlatform: () => true,
122
+ };
123
+ }
124
+ async destroy() {
125
+ await __classPrivateFieldGet(this, _CapacitorProxyRpcClient_rpcClient, "f").destroy();
126
+ }
127
+ }
128
+ _CapacitorProxyRpcClient_rpcClient = new WeakMap(), _CapacitorProxyRpcClient_callPlugin = new WeakMap(), _CapacitorProxyRpcClient_addPluginListener = new WeakMap();
129
+ //# sourceMappingURL=rpc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../../../../../vwr/src/native/capacitor-bridge/rpc.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
+ * Get a platform-specific function that collects device info from native APIs.
5
+ * Returns null if the platform doesn't need device info bridging.
6
+ * Used by bootstrap to create the DeviceInfoRpcServer.
7
+ */
8
+ export declare function getNativeDeviceInfoCollector(platform: string, logger: ILogger, shellVersion: string): (() => Promise<NativeDeviceInfoData>) | null;
9
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../../../vwr/src/native/device-info/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAK7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAA;AAIjD;;;;GAIG;AACH,wBAAgB,4BAA4B,CACxC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,EACf,YAAY,EAAE,MAAM,GACrB,CAAC,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAC,GAAG,IAAI,CAgB9C"}
@@ -0,0 +1,28 @@
1
+ import { collectFireTVDeviceInfo } from "./firetvCollector";
2
+ import { collectLgDeviceInfo } from "./lgCollector";
3
+ import { collectMobileDeviceInfo } from "./mobileCollector";
4
+ import { collectSamsungDeviceInfo } from "./samsungCollector";
5
+ import { collectWebDeviceInfo } from "./webCollector";
6
+ /**
7
+ * Get a platform-specific function that collects device info from native APIs.
8
+ * Returns null if the platform doesn't need device info bridging.
9
+ * Used by bootstrap to create the DeviceInfoRpcServer.
10
+ */
11
+ export function getNativeDeviceInfoCollector(platform, logger, shellVersion) {
12
+ switch (platform) {
13
+ case "SAMSUNG_TV":
14
+ return () => collectSamsungDeviceInfo(logger, shellVersion);
15
+ case "LG_TV":
16
+ return () => collectLgDeviceInfo(logger, shellVersion);
17
+ case "FIRE_TV":
18
+ return () => collectFireTVDeviceInfo(logger, shellVersion);
19
+ case "IOS_MOBILE":
20
+ case "ANDROID_MOBILE":
21
+ return () => collectMobileDeviceInfo(platform, logger, shellVersion);
22
+ case "WEB":
23
+ return () => collectWebDeviceInfo(logger, shellVersion);
24
+ default:
25
+ return null;
26
+ }
27
+ }
28
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../../../vwr/src/native/device-info/factory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAE3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAErD;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CACxC,QAAgB,EAChB,MAAe,EACf,YAAoB;IAEpB,QAAQ,QAAQ,EAAE,CAAC;QACf,KAAK,YAAY;YACb,OAAO,GAAG,EAAE,CAAC,wBAAwB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;QAC/D,KAAK,OAAO;YACR,OAAO,GAAG,EAAE,CAAC,mBAAmB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;QAC1D,KAAK,SAAS;YACV,OAAO,GAAG,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;QAC9D,KAAK,YAAY,CAAC;QAClB,KAAK,gBAAgB;YACjB,OAAO,GAAG,EAAE,CAAC,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,CAAA;QACxE,KAAK,KAAK;YACN,OAAO,GAAG,EAAE,CAAC,oBAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;QAC3D;YACI,OAAO,IAAI,CAAA;IACnB,CAAC;AACL,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { ILogger } from "@volley/logger";
2
+ import type { NativeDeviceInfoData } from "./rpc";
3
+ /**
4
+ * Collect FireTV device info from Capacitor plugins.
5
+ * Must be called from the bootstrap's main window where Capacitor globals are available
6
+ * (NOT from the VWR https:// iframe).
7
+ */
8
+ export declare function collectFireTVDeviceInfo(logger: ILogger, shellVersion: string): Promise<NativeDeviceInfoData>;
9
+ //# sourceMappingURL=firetvCollector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firetvCollector.d.ts","sourceRoot":"","sources":["../../../../../../vwr/src/native/device-info/firetvCollector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAI7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAA;AAuCjD;;;;GAIG;AACH,wBAAsB,uBAAuB,CACzC,MAAM,EAAE,OAAO,EACf,YAAY,EAAE,MAAM,GACrB,OAAO,CAAC,oBAAoB,CAAC,CAmL/B"}
@@ -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,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":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AA0C3C,MAAM,YAAY,GAAG,IAAI,CAAA;AAEzB,SAAS,eAAe,CACpB,UAAkB,EAClB,MAAc,EACd,aAAsC,EAAE;IAExC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,IAAI,OAAO,KAAK,KAAK,WAAW,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,CAAA;YACb,OAAM;QACV,CAAC;QAED,IAAI,OAA2C,CAAA;QAC/C,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,EAAE,CAAA;YACjB,OAAO,CAAC,IAAI,CAAC,CAAA;QACjB,CAAC,EAAE,YAAY,CAAC,CAAA;QAEhB,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE;YACxC,MAAM;YACN,UAAU;YACV,SAAS,EAAE,CAAC,QAAiB,EAAE,EAAE;gBAC7B,YAAY,CAAC,SAAS,CAAC,CAAA;gBACvB,OAAO,CAAC,QAAa,CAAC,CAAA;YAC1B,CAAC;YACD,SAAS,EAAE,GAAG,EAAE;gBACZ,YAAY,CAAC,SAAS,CAAC,CAAA;gBACvB,OAAO,CAAC,IAAI,CAAC,CAAA;YACjB,CAAC;SACJ,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACN,CAAC;AAGD,SAAS,4BAA4B;IAGjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,IAAI,OAAO,KAAK,KAAK,WAAW,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YACpD,OAAO,CAAC,SAAS,CAAC,CAAA;YAClB,OAAM;QACV,CAAC;QAED,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,CAAA;QAEpE,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,EAAE;YACxB,YAAY,CAAC,SAAS,CAAC,CAAA;YACvB,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBAC5C,OAAO,CAAC;oBACJ,KAAK,EAAE,MAAM,CAAC,WAAW;oBACzB,MAAM,EAAE,MAAM,CAAC,YAAY;iBAC9B,CAAC,CAAA;YACN,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,SAAS,CAAC,CAAA;YACtB,CAAC;QACL,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACN,CAAC;AAED,SAAS,iBAAiB;IACtB,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAA;IAErC,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC9D,IAAI,WAAW,EAAE,CAAC;QACd,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;IACzB,CAAC;IAED,wCAAwC;IACxC,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC9D,IAAI,WAAW,EAAE,CAAC;QACd,OAAO,UAAU,WAAW,CAAC,CAAC,CAAC,EAAE,CAAA;IACrC,CAAC;IAED,OAAO,SAAS,CAAA;AACpB,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAAC,eAAuB;;IAClD,kDAAkD;IAClD,kDAAkD;IAClD,IAAI,eAAe,IAAI,EAAE,EAAE,CAAC;QACxB,OAAO,IAAI,CAAA;IACf,CAAC;IAED,MAAM,UAAU,GAA2B;QACvC,EAAE,EAAE,IAAI;QACR,CAAC,EAAE,IAAI;QACP,CAAC,EAAE,IAAI;QACP,CAAC,EAAE,IAAI;QACP,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,KAAK;KACX,CAAA;IAED,OAAO,MAAA,UAAU,CAAC,eAAe,CAAC,mCAAI,SAAS,CAAA;AACnD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,MAAe,EACf,YAAoB;;IAEpB,MAAM,CAAC,cAAc,EAAE,uBAAuB,EAAE,UAAU,EAAE,UAAU,CAAC,GACnE,MAAM,OAAO,CAAC,GAAG,CAAC;QACd,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC;QAC5B,4BAA4B,EAAE;QAC9B,eAAe,CACf,4CAA4C,EAC5C,eAAe,EACf,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,CACxC;QACD,eAAe,CACX,kCAAkC,EAClC,mBAAmB,EACnB,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,CAC3B;KACJ,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,QAAQ,0CAAE,UAAU,CAAA;IACnD,MAAM,MAAM,GACR,MAAA,MAAA,MAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,OAAO,0CAAE,EAAE,mCACvB,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,OAAO,0CAAE,EAAE,mCACvB,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,GAAG,mCACf,SAAS,CAAA;IAEb,MAAM,aAAa,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,UAAU,CAAA;IAC5C,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,IAAI,eAAmC,CAAA;IACvC,IAAI,aAAa,EAAE,CAAC;QAChB,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAA;QACxD,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,CAAC,CAAC,MAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,CAAC,CAAC,CAAA,KAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,CAAC,CAAC,CAAA,EAAE,CAAC;YACzC,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YACxC,UAAU;gBACN,eAAe,GAAG,KAAK;oBACvB,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG;oBAC5B,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAC9B,CAAC;IACL,CAAC;IAED,MAAM,gBAAgB,GAAG;QACrB,KAAK,EAAE,MAAM,CAAC,UAAU;QACxB,MAAM,EAAE,MAAM,CAAC,WAAW;KAC7B,CAAA;IAED,MAAM,QAAQ,GAAG,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,SAAS,CAAA;IAE5C,MAAM,CAAC,KAAK,CACR,EAAE,QAAQ,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,EAAE,EAC3E,0BAA0B,CAC7B,CAAA;IAED,OAAO;QACH,MAAM;QACN,gBAAgB;QAChB,uBAAuB,EAAE,uBAAuB,aAAvB,uBAAuB,cAAvB,uBAAuB,GAAI,SAAS;QAC7D,KAAK,EAAE,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,mCAAI,SAAS;QACzC,YAAY,EAAE,gBAAgB;QAC9B,eAAe,EAAE,OAAO;QACxB,SAAS,EAAE,eAAe;YACtB,CAAC,CAAC,qBAAqB,CAAC,eAAe,CAAC;YACxC,CAAC,CAAC,SAAS;QACf,UAAU;QACV,cAAc,EAAE,iBAAiB,EAAE;QACnC,QAAQ;QACR,qBAAqB,EAAE,YAAY;KACtC,CAAA;AACL,CAAC"}
@@ -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"}