@volley/vwr-loader 1.0.4 → 1.0.5

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 (49) hide show
  1. package/README.md +45 -21
  2. package/dist/envDefaults.d.ts +0 -3
  3. package/dist/envDefaults.d.ts.map +1 -1
  4. package/dist/envDefaults.js +4 -16
  5. package/dist/envDefaults.js.map +1 -1
  6. package/dist/getDeviceId.d.ts +10 -2
  7. package/dist/getDeviceId.d.ts.map +1 -1
  8. package/dist/getDeviceId.js +23 -39
  9. package/dist/getDeviceId.js.map +1 -1
  10. package/dist/getEnvironment.d.ts +25 -0
  11. package/dist/getEnvironment.d.ts.map +1 -0
  12. package/dist/getEnvironment.js +102 -0
  13. package/dist/getEnvironment.js.map +1 -0
  14. package/dist/getShellVersion.d.ts +2 -2
  15. package/dist/getShellVersion.d.ts.map +1 -1
  16. package/dist/getShellVersion.js +3 -5
  17. package/dist/getShellVersion.js.map +1 -1
  18. package/dist/index.html +1 -1
  19. package/dist/loadVwr.d.ts +6 -1
  20. package/dist/loadVwr.d.ts.map +1 -1
  21. package/dist/loadVwr.js +18 -10
  22. package/dist/loadVwr.js.map +1 -1
  23. package/dist/main.js +1 -1
  24. package/dist/main.js.map +1 -1
  25. package/dist/vwrConfig.d.ts +0 -2
  26. package/dist/vwrConfig.d.ts.map +1 -1
  27. package/dist/vwrConfig.js +7 -25
  28. package/dist/vwrConfig.js.map +1 -1
  29. package/eslint.config.mjs +23 -0
  30. package/package.json +4 -15
  31. package/scripts/build.js +2 -0
  32. package/scripts/build.ts +207 -0
  33. package/src/amplitudeFlagFetcher.test.ts +0 -5
  34. package/src/envDefaults.ts +4 -23
  35. package/src/getDeviceId.test.ts +24 -79
  36. package/src/getDeviceId.ts +31 -56
  37. package/src/getEnvironment.ts +137 -0
  38. package/src/getShellVersion.test.ts +1 -1
  39. package/src/getShellVersion.ts +3 -7
  40. package/src/loadVwr.ts +25 -14
  41. package/src/main.ts +1 -3
  42. package/src/vite-env.d.ts +0 -3
  43. package/src/vwrConfig.ts +7 -28
  44. package/tsconfig.eslint.json +16 -0
  45. package/tsconfig.json +17 -0
  46. package/vite.config.ts +24 -0
  47. package/vitest.config.ts +8 -0
  48. package/dist/cli.js +0 -190
  49. package/dist/cli.js.map +0 -1
package/README.md CHANGED
@@ -18,27 +18,6 @@ pnpm add @volley/vwr-loader
18
18
 
19
19
  ## Usage
20
20
 
21
- ### CLI Build (Recommended)
22
-
23
- You can build the loader for a specific platform and environment using the CLI. This is useful for native shells (iOS, Android, FireTV, Samsung, LG) and CI/CD pipelines.
24
-
25
- ```bash
26
- # Using npx (if installed globally or in project)
27
- npx build-loader --platform IOS_MOBILE --env dev --output ./dist-ios
28
-
29
- # Or via pnpm
30
- pnpm build-loader --platform IOS_MOBILE --env dev --output ./dist-ios
31
- ```
32
-
33
- **Options:**
34
-
35
- - `--platform`: Target platform (`IOS_MOBILE`, `ANDROID_MOBILE`, `FIRE_TV`, `SAMSUNG_TV`, `LG_TV`, `WEB`)
36
- - `--env`: Environment (`local`, `dev`, `staging`, `prod`)
37
- - `--output`: Output directory for `index.html` and `main.js`
38
- - `--hubUrl`: Override Hub URL (optional)
39
- - `--vwrUrl`: Override VWR URL (optional)
40
- - `--amplitudeKey`: Override Amplitude deployment key (optional)
41
-
42
21
  ### Fetching Amplitude Flags
43
22
 
44
23
  ```typescript
@@ -72,6 +51,51 @@ The package includes a `vwr-loader.html` template that can be used as the entry
72
51
  - `__HUB_URL__` - Hub application URL
73
52
  - `__VWR_URL__` - Default VWR bundle URL
74
53
 
54
+ ## CLI: build-loader
55
+
56
+ The `build-loader` CLI builds platform-specific VWR loader bundles.
57
+
58
+ ```bash
59
+ npx build-loader --platform <platform> --output <path> [--env <env>] [options]
60
+ ```
61
+
62
+ ### Required Options
63
+
64
+ | Option | Description |
65
+ |--------|-------------|
66
+ | `--platform` | Platform: `FIRE_TV`, `SAMSUNG_TV`, `LG_TV`, `MOBILE`, `WEB` |
67
+ | `--output` | Output directory path |
68
+
69
+ ### Optional Options
70
+
71
+ | Option | Description |
72
+ |--------|-------------|
73
+ | `--env` | Environment: `local`, `dev`, `staging`, `prod` |
74
+ | `--hubUrl` | Override Hub URL |
75
+ | `--vwrUrl` | Override VWR URL |
76
+ | `--configUrl` | Override VWR Config URL |
77
+ | `--configFile` | Override VWR Config filename |
78
+ | `--amplitudeKey` | Override Amplitude deployment key |
79
+ | `--launchUrl` | Override launch URL |
80
+
81
+ ### Environment Handling
82
+
83
+ - **Fire TV**: `--env` is **optional**. If omitted, environment is read from native `BuildConfig.ENVIRONMENT` at runtime. This ensures prod APKs cannot accidentally run dev VWR.
84
+ - **Other platforms**: `--env` is **required** since they don't support native environment reading.
85
+
86
+ ### Examples
87
+
88
+ ```bash
89
+ # Fire TV (reads env from native at runtime)
90
+ npx build-loader --platform FIRE_TV --output ./www
91
+
92
+ # Fire TV with env override (for testing)
93
+ npx build-loader --platform FIRE_TV --env dev --output ./www
94
+
95
+ # Samsung TV (env required)
96
+ npx build-loader --platform SAMSUNG_TV --env prod --output ./www
97
+ ```
98
+
75
99
  ## Development Commands
76
100
 
77
101
  ```bash
@@ -3,10 +3,7 @@ export interface EnvConfig {
3
3
  vwrUrl: string;
4
4
  configUrl: string;
5
5
  configFile: string;
6
- platformApiUrl: string;
7
- platformAuthApiUrl: string;
8
6
  amplitudeKey: string;
9
- trustedOrigins?: string[];
10
7
  }
11
8
  export declare const ENV_DEFAULTS: Record<string, EnvConfig>;
12
9
  //# sourceMappingURL=envDefaults.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"envDefaults.d.ts","sourceRoot":"","sources":["../src/envDefaults.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;CAC5B;AAgBD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAsClD,CAAA"}
1
+ {"version":3,"file":"envDefaults.d.ts","sourceRoot":"","sources":["../src/envDefaults.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;CACvB;AAcD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAwBlD,CAAA"}
@@ -1,4 +1,3 @@
1
- var _a;
2
1
  const CONFIG_URL_DEFAULT = "https://vwr.volley.tv/config/";
3
2
  const CONFIG_FILE_DEFAULT = "vwrConfig.json";
4
3
  const VWR_URL_PATH_DEFAULT = "v1/latest/vwr.js";
@@ -7,30 +6,21 @@ const prodConfig = {
7
6
  vwrUrl: `https://vwr.volley.tv/${VWR_URL_PATH_DEFAULT}`,
8
7
  configUrl: CONFIG_URL_DEFAULT,
9
8
  configFile: CONFIG_FILE_DEFAULT,
10
- platformApiUrl: "https://platform.volley-services.net",
11
- platformAuthApiUrl: "https://auth.volley.tv",
12
9
  amplitudeKey: "",
13
10
  };
14
11
  export const ENV_DEFAULTS = {
15
12
  local: {
16
- hubUrl: import.meta.env.VITE_HUB_URL || "http://localhost:5173",
17
- vwrUrl: import.meta.env.VITE_VWR_URL || "http://localhost:5174/vwr.js",
18
- configUrl: import.meta.env.VITE_CONFIG_URL || "http://localhost:5174/config/",
19
- configFile: import.meta.env.VITE_CONFIG_FILE || CONFIG_FILE_DEFAULT,
20
- platformApiUrl: import.meta.env.VITE_PLATFORM_API_URL ||
21
- "https://platform-dev.volley-services.net",
22
- platformAuthApiUrl: import.meta.env.VITE_PLATFORM_AUTH_API_URL ||
23
- "https://auth-dev.volley.tv",
13
+ hubUrl: "http://localhost:5173",
14
+ vwrUrl: "http://localhost:5174/vwr.js",
15
+ configUrl: "http://localhost:5174/config/",
16
+ configFile: CONFIG_FILE_DEFAULT,
24
17
  amplitudeKey: "client-uJJVW3zKPC1G9kqPhUumLnZN6eaY42iQ",
25
- trustedOrigins: (_a = import.meta.env.VITE_TRUSTED_ORIGINS) === null || _a === void 0 ? void 0 : _a.split(",").filter(Boolean),
26
18
  },
27
19
  dev: {
28
20
  hubUrl: "https://game-clients-dev.volley.tv/hub",
29
21
  vwrUrl: `https://vwr.volley.tv/dev/${VWR_URL_PATH_DEFAULT}`,
30
22
  configUrl: CONFIG_URL_DEFAULT,
31
23
  configFile: CONFIG_FILE_DEFAULT,
32
- platformApiUrl: "https://platform-dev.volley-services.net",
33
- platformAuthApiUrl: "https://auth-dev.volley.tv",
34
24
  amplitudeKey: "client-uJJVW3zKPC1G9kqPhUumLnZN6eaY42iQ",
35
25
  },
36
26
  staging: {
@@ -38,8 +28,6 @@ export const ENV_DEFAULTS = {
38
28
  vwrUrl: `https://vwr.volley.tv/staging/${VWR_URL_PATH_DEFAULT}`,
39
29
  configUrl: CONFIG_URL_DEFAULT,
40
30
  configFile: CONFIG_FILE_DEFAULT,
41
- platformApiUrl: "https://platform-staging.volley-services.net",
42
- platformAuthApiUrl: "https://auth-staging.volley.tv",
43
31
  amplitudeKey: "",
44
32
  },
45
33
  prod: prodConfig,
@@ -1 +1 @@
1
- {"version":3,"file":"envDefaults.js","sourceRoot":"","sources":["../src/envDefaults.ts"],"names":[],"mappings":";AAWA,MAAM,kBAAkB,GAAG,+BAA+B,CAAA;AAC1D,MAAM,mBAAmB,GAAG,gBAAgB,CAAA;AAC5C,MAAM,oBAAoB,GAAG,kBAAkB,CAAA;AAE/C,MAAM,UAAU,GAAc;IAC1B,MAAM,EAAE,oCAAoC;IAC5C,MAAM,EAAE,yBAAyB,oBAAoB,EAAE;IACvD,SAAS,EAAE,kBAAkB;IAC7B,UAAU,EAAE,mBAAmB;IAC/B,cAAc,EAAE,sCAAsC;IACtD,kBAAkB,EAAE,wBAAwB;IAC5C,YAAY,EAAE,EAAE;CACnB,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAA8B;IACnD,KAAK,EAAE;QACH,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,uBAAuB;QAC/D,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,8BAA8B;QACtE,SAAS,EACL,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,IAAI,+BAA+B;QACtE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,IAAI,mBAAmB;QACnE,cAAc,EACV,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB;YACrC,0CAA0C;QAC9C,kBAAkB,EACd,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,0BAA0B;YAC1C,4BAA4B;QAChC,YAAY,EAAE,yCAAyC;QACvD,cAAc,EAAE,MAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,0CAAE,KAAK,CAAC,GAAG,EAAE,MAAM,CACnE,OAAO,CACV;KACJ;IACD,GAAG,EAAE;QACD,MAAM,EAAE,wCAAwC;QAChD,MAAM,EAAE,6BAA6B,oBAAoB,EAAE;QAC3D,SAAS,EAAE,kBAAkB;QAC7B,UAAU,EAAE,mBAAmB;QAC/B,cAAc,EAAE,0CAA0C;QAC1D,kBAAkB,EAAE,4BAA4B;QAChD,YAAY,EAAE,yCAAyC;KAC1D;IACD,OAAO,EAAE;QACL,MAAM,EAAE,4CAA4C;QACpD,MAAM,EAAE,iCAAiC,oBAAoB,EAAE;QAC/D,SAAS,EAAE,kBAAkB;QAC7B,UAAU,EAAE,mBAAmB;QAC/B,cAAc,EAAE,8CAA8C;QAC9D,kBAAkB,EAAE,gCAAgC;QACpD,YAAY,EAAE,EAAE;KACnB;IACD,IAAI,EAAE,UAAU;IAChB,UAAU,EAAE,UAAU,EAAE,iBAAiB;CAC5C,CAAA"}
1
+ {"version":3,"file":"envDefaults.js","sourceRoot":"","sources":["../src/envDefaults.ts"],"names":[],"mappings":"AAQA,MAAM,kBAAkB,GAAG,+BAA+B,CAAA;AAC1D,MAAM,mBAAmB,GAAG,gBAAgB,CAAA;AAC5C,MAAM,oBAAoB,GAAG,kBAAkB,CAAA;AAE/C,MAAM,UAAU,GAAc;IAC1B,MAAM,EAAE,oCAAoC;IAC5C,MAAM,EAAE,yBAAyB,oBAAoB,EAAE;IACvD,SAAS,EAAE,kBAAkB;IAC7B,UAAU,EAAE,mBAAmB;IAC/B,YAAY,EAAE,EAAE;CACnB,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAA8B;IACnD,KAAK,EAAE;QACH,MAAM,EAAE,uBAAuB;QAC/B,MAAM,EAAE,8BAA8B;QACtC,SAAS,EAAE,+BAA+B;QAC1C,UAAU,EAAE,mBAAmB;QAC/B,YAAY,EAAE,yCAAyC;KAC1D;IACD,GAAG,EAAE;QACD,MAAM,EAAE,wCAAwC;QAChD,MAAM,EAAE,6BAA6B,oBAAoB,EAAE;QAC3D,SAAS,EAAE,kBAAkB;QAC7B,UAAU,EAAE,mBAAmB;QAC/B,YAAY,EAAE,yCAAyC;KAC1D;IACD,OAAO,EAAE;QACL,MAAM,EAAE,4CAA4C;QACpD,MAAM,EAAE,iCAAiC,oBAAoB,EAAE;QAC/D,SAAS,EAAE,kBAAkB;QAC7B,UAAU,EAAE,mBAAmB;QAC/B,YAAY,EAAE,EAAE;KACnB;IACD,IAAI,EAAE,UAAU;IAChB,UAAU,EAAE,UAAU,EAAE,iBAAiB;CAC5C,CAAA"}
@@ -6,12 +6,12 @@ import { type Logger } from "./logger";
6
6
  *
7
7
  * Platform handling:
8
8
  * - FireTV: DeviceInfo (Capacitor plugin)
9
- * - Android/iOS: window.iosAppContext / window.androidAppContext (phoneDeviceId)
9
+ * - Android/iOS: NativeBridge
10
10
  * - Samsung TV: webapis
11
11
  * - LG TV: webOS Luna service
12
12
  * - Web: localStorage (with generated UUID fallback)
13
13
  *
14
- * @param platform - Platform identifier ('FIRE_TV', 'SAMSUNG_TV', 'LG_TV', 'ANDROID_MOBILE', 'IOS_MOBILE', 'WEB')
14
+ * @param platform - Platform identifier ('FIRE_TV', 'SAMSUNG_TV', 'LG_TV', 'MOBILE', 'WEB')
15
15
  * @param logger - Optional logger for error reporting. Defaults to defaultLogger.
16
16
  * @returns A promise that resolves to a unique device identifier string, or null if retrieval fails
17
17
  *
@@ -31,6 +31,14 @@ interface LGDeviceIdResponse {
31
31
  }
32
32
  declare global {
33
33
  interface Window {
34
+ DeviceInfo?: {
35
+ getAndroidId: () => Promise<{
36
+ androidId: string;
37
+ }>;
38
+ };
39
+ NativeBridge?: {
40
+ getDeviceId: () => Promise<string>;
41
+ };
34
42
  webapis?: {
35
43
  productinfo?: {
36
44
  getDuid: () => string;
@@ -1 +1 @@
1
- {"version":3,"file":"getDeviceId.d.ts","sourceRoot":"","sources":["../src/getDeviceId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA;AAErD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,WAAW,CAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,MAAsB,GAC/B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoBxB;AAgLD,UAAU,kBAAkB;IACxB,MAAM,CAAC,EAAE,KAAK,CAAC;QACX,OAAO,CAAC,EAAE,MAAM,CAAA;KACnB,CAAC,CAAA;CACL;AAiBD,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,OAAO,CAAC,EAAE;YACN,WAAW,CAAC,EAAE;gBACV,OAAO,EAAE,MAAM,MAAM,CAAA;aACxB,CAAA;SACJ,CAAA;QACD,KAAK,CAAC,EAAE;YACJ,OAAO,CAAC,EAAE;gBACN,OAAO,EAAE,CACL,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;oBACL,MAAM,CAAC,EAAE,MAAM,CAAA;oBACf,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;oBACpC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAA;oBAClD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;wBAAE,SAAS,CAAC,EAAE,MAAM,CAAA;qBAAE,KAAK,IAAI,CAAA;oBACnD,SAAS,CAAC,EAAE,OAAO,CAAA;iBACtB,KACA;oBACD,MAAM,EAAE,MAAM,IAAI,CAAA;iBACrB,CAAA;aACJ,CAAA;SACJ,CAAA;KACJ;CACJ"}
1
+ {"version":3,"file":"getDeviceId.d.ts","sourceRoot":"","sources":["../src/getDeviceId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA;AAErD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,WAAW,CAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,MAAsB,GAC/B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAkBxB;AA8JD,UAAU,kBAAkB;IACxB,MAAM,CAAC,EAAE,KAAK,CAAC;QACX,OAAO,CAAC,EAAE,MAAM,CAAA;KACnB,CAAC,CAAA;CACL;AAMD,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,UAAU,CAAC,EAAE;YACT,YAAY,EAAE,MAAM,OAAO,CAAC;gBAAE,SAAS,EAAE,MAAM,CAAA;aAAE,CAAC,CAAA;SACrD,CAAA;QACD,YAAY,CAAC,EAAE;YACX,WAAW,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;SACrC,CAAA;QACD,OAAO,CAAC,EAAE;YACN,WAAW,CAAC,EAAE;gBACV,OAAO,EAAE,MAAM,MAAM,CAAA;aACxB,CAAA;SACJ,CAAA;QACD,KAAK,CAAC,EAAE;YACJ,OAAO,CAAC,EAAE;gBACN,OAAO,EAAE,CACL,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;oBACL,MAAM,CAAC,EAAE,MAAM,CAAA;oBACf,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;oBACpC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAA;oBAClD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;wBAAE,SAAS,CAAC,EAAE,MAAM,CAAA;qBAAE,KAAK,IAAI,CAAA;oBACnD,SAAS,CAAC,EAAE,OAAO,CAAA;iBACtB,KACA;oBACD,MAAM,EAAE,MAAM,IAAI,CAAA;iBACrB,CAAA;aACJ,CAAA;SACJ,CAAA;KACJ;CACJ"}
@@ -6,12 +6,12 @@ import { defaultLogger } from "./logger";
6
6
  *
7
7
  * Platform handling:
8
8
  * - FireTV: DeviceInfo (Capacitor plugin)
9
- * - Android/iOS: window.iosAppContext / window.androidAppContext (phoneDeviceId)
9
+ * - Android/iOS: NativeBridge
10
10
  * - Samsung TV: webapis
11
11
  * - LG TV: webOS Luna service
12
12
  * - Web: localStorage (with generated UUID fallback)
13
13
  *
14
- * @param platform - Platform identifier ('FIRE_TV', 'SAMSUNG_TV', 'LG_TV', 'ANDROID_MOBILE', 'IOS_MOBILE', 'WEB')
14
+ * @param platform - Platform identifier ('FIRE_TV', 'SAMSUNG_TV', 'LG_TV', 'MOBILE', 'WEB')
15
15
  * @param logger - Optional logger for error reporting. Defaults to defaultLogger.
16
16
  * @returns A promise that resolves to a unique device identifier string, or null if retrieval fails
17
17
  *
@@ -32,9 +32,7 @@ export async function getDeviceId(platform, logger = defaultLogger) {
32
32
  return await getSamsungDeviceId(logger);
33
33
  case "LG_TV":
34
34
  return await getLGDeviceId(logger);
35
- case "ANDROID_MOBILE":
36
- case "IOS_MOBILE":
37
- case "MOBILE": // Legacy/Generic
35
+ case "MOBILE": // iOS and Android
38
36
  return await getMobileDeviceId(logger);
39
37
  case "WEB":
40
38
  return getLocalStorageDeviceId();
@@ -59,60 +57,46 @@ function getLocalStorageDeviceId() {
59
57
  * Attempt to get device ID from Capacitor DeviceInfo plugin (FireTV)
60
58
  */
61
59
  async function getFireTVDeviceId(logger) {
62
- var _a;
60
+ var _a, _b, _c;
63
61
  try {
64
- // Access via Capacitor.Plugins (standard Capacitor plugin access)
65
- const Capacitor = window.Capacitor;
66
- const DeviceInfo = (_a = Capacitor === null || Capacitor === void 0 ? void 0 : Capacitor.Plugins) === null || _a === void 0 ? void 0 : _a.DeviceInfo;
67
- if (!(DeviceInfo === null || DeviceInfo === void 0 ? void 0 : DeviceInfo.getAndroidId)) {
62
+ if (!((_c = (_b = (_a = window.Capacitor) === null || _a === void 0 ? void 0 : _a.Plugins) === null || _b === void 0 ? void 0 : _b.DeviceInfo) === null || _c === void 0 ? void 0 : _c.getAndroidId)) {
68
63
  return null;
69
64
  }
70
- const result = await DeviceInfo.getAndroidId();
65
+ const result = await window.Capacitor.Plugins.DeviceInfo.getAndroidId();
71
66
  if ((result === null || result === void 0 ? void 0 : result.androidId) && result.androidId.trim()) {
72
67
  return result.androidId;
73
68
  }
74
69
  else {
75
- logger.error("DeviceInfo.getAndroidId returned empty");
70
+ logger.error("Capacitor.Plugins.DeviceInfo.getAndroidId returned empty");
76
71
  }
77
72
  }
78
73
  catch (error) {
79
- const message = "DeviceInfo.getAndroidId failed:";
74
+ const message = "Capacitor.Plugins.DeviceInfo.getAndroidId failed:";
80
75
  logger.error(message, { error });
81
76
  }
82
77
  return null;
83
78
  }
84
79
  /**
85
- * Attempt to get device ID from mobile app context (Android/iOS)
86
- *
87
- * iOS exposes phoneDeviceId via window.iosAppContext
88
- * Android exposes phoneDeviceId via window.androidAppContext (also check window.top for iframes)
80
+ * Attempt to get device ID from Native Bridge (Android/iOS)
89
81
  */
90
- function getMobileDeviceId(logger) {
91
- var _a, _b, _c, _d;
92
- // Try iOS first
93
- const iosId = (_a = window.iosAppContext) === null || _a === void 0 ? void 0 : _a.phoneDeviceId;
94
- if (iosId && iosId.trim()) {
95
- return iosId;
96
- }
97
- // Try Android (check both window and window.top for iframe scenarios)
98
- const androidContext = window.androidAppContext;
82
+ async function getMobileDeviceId(logger) {
83
+ var _a;
99
84
  try {
100
- const androidId = (_b = androidContext === null || androidContext === void 0 ? void 0 : androidContext.phoneDeviceId) !== null && _b !== void 0 ? _b : (_d = (_c = window.top) === null || _c === void 0 ? void 0 : _c.androidAppContext) === null || _d === void 0 ? void 0 : _d.phoneDeviceId;
101
- if (androidId && androidId.trim()) {
102
- return androidId;
85
+ if (!((_a = window.NativeBridge) === null || _a === void 0 ? void 0 : _a.getDeviceId)) {
86
+ return null;
103
87
  }
104
- }
105
- catch (_e) {
106
- // window.top access can throw if cross-origin
107
- const androidId = androidContext === null || androidContext === void 0 ? void 0 : androidContext.phoneDeviceId;
108
- if (androidId && androidId.trim()) {
109
- return androidId;
88
+ const id = await window.NativeBridge.getDeviceId();
89
+ if (id && id.trim()) {
90
+ return id;
91
+ }
92
+ else {
93
+ logger.error("NativeBridge.getDeviceId returned empty");
110
94
  }
111
95
  }
112
- logger.error("[VWR:MobileDeviceId] phoneDeviceId not found", {
113
- iosAppContext: !!window.iosAppContext,
114
- androidAppContext: !!androidContext,
115
- });
96
+ catch (error) {
97
+ const message = "NativeBridge.getDeviceId failed:";
98
+ logger.error(message, { error });
99
+ }
116
100
  return null;
117
101
  }
118
102
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"getDeviceId.js","sourceRoot":"","sources":["../src/getDeviceId.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getDeviceId.js","sourceRoot":"","sources":["../src/getDeviceId.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { type Logger } from "./logger";
2
+ export type Environment = "local" | "dev" | "staging" | "prod";
3
+ export type EnvironmentSource = "native" | "build-time" | "default";
4
+ export interface EnvironmentResult {
5
+ environment: Environment;
6
+ source: EnvironmentSource;
7
+ }
8
+ /**
9
+ * Get the environment for the current platform.
10
+ *
11
+ * Precedence:
12
+ * 1. Native shell (Fire TV only) - reads from BuildConfig.ENVIRONMENT
13
+ * 2. Build-time injection (VITE_ENVIRONMENT) - CLI override
14
+ * 3. Default fallback ("dev")
15
+ *
16
+ * This ensures production APKs cannot accidentally run dev VWR,
17
+ * since the native Android build variant determines the environment.
18
+ *
19
+ * @param platform - Platform identifier ('FIRE_TV', 'SAMSUNG_TV', 'LG_TV', 'MOBILE', 'WEB')
20
+ * @param buildTimeEnv - Optional build-time injected environment (from CLI)
21
+ * @param logger - Optional logger for reporting
22
+ * @returns Environment result with source information for logging
23
+ */
24
+ export declare function getEnvironment(platform: string, buildTimeEnv: string | undefined, logger?: Logger): Promise<EnvironmentResult>;
25
+ //# sourceMappingURL=getEnvironment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getEnvironment.d.ts","sourceRoot":"","sources":["../src/getEnvironment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA;AAErD,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,CAAA;AAC9D,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,YAAY,GAAG,SAAS,CAAA;AAEnE,MAAM,WAAW,iBAAiB;IAC9B,WAAW,EAAE,WAAW,CAAA;IACxB,MAAM,EAAE,iBAAiB,CAAA;CAC5B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,cAAc,CAChC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,MAAM,GAAE,MAAsB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAoC5B"}
@@ -0,0 +1,102 @@
1
+ import { defaultLogger } from "./logger";
2
+ /**
3
+ * Get the environment for the current platform.
4
+ *
5
+ * Precedence:
6
+ * 1. Native shell (Fire TV only) - reads from BuildConfig.ENVIRONMENT
7
+ * 2. Build-time injection (VITE_ENVIRONMENT) - CLI override
8
+ * 3. Default fallback ("dev")
9
+ *
10
+ * This ensures production APKs cannot accidentally run dev VWR,
11
+ * since the native Android build variant determines the environment.
12
+ *
13
+ * @param platform - Platform identifier ('FIRE_TV', 'SAMSUNG_TV', 'LG_TV', 'MOBILE', 'WEB')
14
+ * @param buildTimeEnv - Optional build-time injected environment (from CLI)
15
+ * @param logger - Optional logger for reporting
16
+ * @returns Environment result with source information for logging
17
+ */
18
+ export async function getEnvironment(platform, buildTimeEnv, logger = defaultLogger) {
19
+ const normalizedPlatform = platform.toUpperCase();
20
+ // For Fire TV, try to read from native first (safest - prevents env mismatch)
21
+ if (normalizedPlatform === "FIRE_TV") {
22
+ const nativeEnv = await getFireTVEnvironment(logger);
23
+ if (nativeEnv) {
24
+ const mapped = mapNativeEnvironment(nativeEnv);
25
+ logger.info(`[Shell] Environment: "${mapped}" (source: native BuildConfig.ENVIRONMENT="${nativeEnv}")`);
26
+ return { environment: mapped, source: "native" };
27
+ }
28
+ // Fall through to build-time if native fails
29
+ logger.warn("[Shell] Failed to read environment from native, falling back to build-time");
30
+ }
31
+ // Build-time injection (CLI --env flag)
32
+ if (buildTimeEnv && isValidEnvironment(buildTimeEnv)) {
33
+ logger.info(`[Shell] Environment: "${buildTimeEnv}" (source: build-time CLI injection)`);
34
+ return {
35
+ environment: buildTimeEnv,
36
+ source: "build-time",
37
+ };
38
+ }
39
+ // Default fallback
40
+ const defaultEnv = "dev";
41
+ logger.warn(`[Shell] Environment: "${defaultEnv}" (source: default fallback - no native or build-time env found)`);
42
+ return { environment: defaultEnv, source: "default" };
43
+ }
44
+ /**
45
+ * Read environment from Fire TV native shell via Capacitor plugin.
46
+ */
47
+ async function getFireTVEnvironment(logger) {
48
+ var _a, _b, _c;
49
+ try {
50
+ if (!((_c = (_b = (_a = window.Capacitor) === null || _a === void 0 ? void 0 : _a.Plugins) === null || _b === void 0 ? void 0 : _b.DeviceInfo) === null || _c === void 0 ? void 0 : _c.getNativeShellAppEnvironment)) {
51
+ logger.warn("[Shell] DeviceInfo.getNativeShellAppEnvironment not available");
52
+ return null;
53
+ }
54
+ const result = await window.Capacitor.Plugins.DeviceInfo.getNativeShellAppEnvironment();
55
+ if ((result === null || result === void 0 ? void 0 : result.environment) && result.environment.trim()) {
56
+ return result.environment;
57
+ }
58
+ else {
59
+ logger.error("[Shell] DeviceInfo.getNativeShellAppEnvironment returned empty");
60
+ }
61
+ }
62
+ catch (error) {
63
+ logger.error("[Shell] DeviceInfo.getNativeShellAppEnvironment failed:", { error });
64
+ }
65
+ return null;
66
+ }
67
+ /**
68
+ * Map native Android BuildConfig.ENVIRONMENT values to vwr-loader environment names.
69
+ *
70
+ * Android BuildConfig values:
71
+ * - "development" (debug build)
72
+ * - "staging" (staging build)
73
+ * - "production" (release build)
74
+ *
75
+ * VWR environment names:
76
+ * - "dev"
77
+ * - "staging"
78
+ * - "prod"
79
+ */
80
+ function mapNativeEnvironment(nativeEnv) {
81
+ const normalized = nativeEnv.toLowerCase();
82
+ switch (normalized) {
83
+ case "development":
84
+ return "dev";
85
+ case "staging":
86
+ return "staging";
87
+ case "production":
88
+ return "prod";
89
+ default:
90
+ // If it's already in vwr format, use it
91
+ if (isValidEnvironment(normalized)) {
92
+ return normalized;
93
+ }
94
+ return "dev";
95
+ }
96
+ }
97
+ function isValidEnvironment(env) {
98
+ return ["local", "dev", "staging", "prod"].includes(env);
99
+ }
100
+ // Note: Window.Capacitor type is declared in getDeviceId.ts
101
+ // We just need to add the getNativeShellAppEnvironment method type there
102
+ //# sourceMappingURL=getEnvironment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getEnvironment.js","sourceRoot":"","sources":["../src/getEnvironment.ts"],"names":[],"mappings":"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"}
@@ -6,10 +6,10 @@ import { type Logger } from "./logger";
6
6
  * - SAMSUNG_TV: Tizen Application API `tizen.application.getAppInfo().version`
7
7
  * - LG_TV: webOS Application API `webOS.fetchAppInfo()`
8
8
  * - FIRE_TV: Native bridge via Capacitor DeviceInfo plugin
9
- * - ANDROID_MOBILE/IOS_MOBILE: Native bridge (future implementation)
9
+ * - MOBILE: Native bridge (future implementation)
10
10
  * - WEB/Unknown: Returns 'unknown'
11
11
  *
12
- * @param platform - Platform identifier (SAMSUNG_TV, LG_TV, FIRE_TV, ANDROID_MOBILE, IOS_MOBILE, WEB)
12
+ * @param platform - Platform identifier (SAMSUNG_TV, LG_TV, FIRE_TV, MOBILE, WEB)
13
13
  * @param logger - Optional logger for warning reporting. Defaults to defaultLogger.
14
14
  * @returns Shell version string or 'unknown' if not available
15
15
  */
@@ -1 +1 @@
1
- {"version":3,"file":"getShellVersion.d.ts","sourceRoot":"","sources":["../src/getShellVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA;AAErD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,eAAe,CACjC,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,MAAsB,GAC/B,OAAO,CAAC,MAAM,CAAC,CA2EjB;AAGD,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,SAAS,CAAC,EAAE;YACR,OAAO,CAAC,EAAE;gBACN,UAAU,CAAC,EAAE;oBACT,aAAa,IAAI,OAAO,CAAC;wBACrB,WAAW,CAAC,EAAE,MAAM,CAAA;wBACpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;qBACrB,CAAC,CAAA;oBACF,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;iBACrB,CAAA;gBACD,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;aACrB,CAAA;YACD,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;SACrB,CAAA;KACJ;CACJ"}
1
+ {"version":3,"file":"getShellVersion.d.ts","sourceRoot":"","sources":["../src/getShellVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA;AAErD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,eAAe,CACjC,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,MAAsB,GAC/B,OAAO,CAAC,MAAM,CAAC,CAuEjB;AAGD,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,SAAS,CAAC,EAAE;YACR,OAAO,CAAC,EAAE;gBACN,UAAU,CAAC,EAAE;oBACT,aAAa,IAAI,OAAO,CAAC;wBACrB,WAAW,CAAC,EAAE,MAAM,CAAA;wBACpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;qBACrB,CAAC,CAAA;oBACF,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;iBACrB,CAAA;gBACD,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;aACrB,CAAA;YACD,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;SACrB,CAAA;KACJ;CACJ"}
@@ -6,10 +6,10 @@ import { defaultLogger } from "./logger";
6
6
  * - SAMSUNG_TV: Tizen Application API `tizen.application.getAppInfo().version`
7
7
  * - LG_TV: webOS Application API `webOS.fetchAppInfo()`
8
8
  * - FIRE_TV: Native bridge via Capacitor DeviceInfo plugin
9
- * - ANDROID_MOBILE/IOS_MOBILE: Native bridge (future implementation)
9
+ * - MOBILE: Native bridge (future implementation)
10
10
  * - WEB/Unknown: Returns 'unknown'
11
11
  *
12
- * @param platform - Platform identifier (SAMSUNG_TV, LG_TV, FIRE_TV, ANDROID_MOBILE, IOS_MOBILE, WEB)
12
+ * @param platform - Platform identifier (SAMSUNG_TV, LG_TV, FIRE_TV, MOBILE, WEB)
13
13
  * @param logger - Optional logger for warning reporting. Defaults to defaultLogger.
14
14
  * @returns Shell version string or 'unknown' if not available
15
15
  */
@@ -59,9 +59,7 @@ export async function getShellVersion(platform, logger = defaultLogger) {
59
59
  return "unknown";
60
60
  }
61
61
  // Mobile: Future implementation via native bridge
62
- if (normalizedPlatform === "ANDROID_MOBILE" ||
63
- normalizedPlatform === "IOS_MOBILE" ||
64
- normalizedPlatform === "MOBILE") {
62
+ if (normalizedPlatform === "MOBILE") {
65
63
  // TODO: Implement native bridge version retrieval when available
66
64
  return "unknown";
67
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"getShellVersion.js","sourceRoot":"","sources":["../src/getShellVersion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getShellVersion.js","sourceRoot":"","sources":["../src/getShellVersion.ts"],"names":[],"mappings":"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"}
package/dist/index.html CHANGED
@@ -17,7 +17,7 @@
17
17
  font-family: sans-serif;
18
18
  }
19
19
  </style>
20
- <script type="module" crossorigin src="./main.js"></script>
20
+ <script type="module" crossorigin src="/main.js"></script>
21
21
  </head>
22
22
  <body>
23
23
  <div id="loading">Loading...</div>
package/dist/loadVwr.d.ts CHANGED
@@ -8,11 +8,16 @@ export type { Logger };
8
8
  * this reduces startup latency from ~2-4s to ~500ms by skipping config fetches.
9
9
  *
10
10
  * Flow:
11
- * 1. Get deviceId, shellVersion (fast, local)
11
+ * 1. Get deviceId, shellVersion, environment (fast, local/native)
12
12
  * 2. Check vwr-enabled flag (single request, ~500ms)
13
13
  * 3. If OFF → throw immediately (no config fetches)
14
14
  * 4. If ON → fetch config, load VWR module, initialize
15
15
  *
16
+ * Environment resolution:
17
+ * - Fire TV: reads from native BuildConfig.ENVIRONMENT (prevents env mismatch)
18
+ * - Other platforms: uses build-time injected VITE_ENVIRONMENT
19
+ * - Fallback: "dev"
20
+ *
16
21
  * @param logger - Optional logger, defaults to console
17
22
  */
18
23
  export declare const loadVwr: (logger?: Logger) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"loadVwr.d.ts","sourceRoot":"","sources":["../src/loadVwr.ts"],"names":[],"mappings":"AAMA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA;AAcrD,YAAY,EAAE,MAAM,EAAE,CAAA;AAEtB;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,OAAO,GAAU,SAAQ,MAAsB,kBA8F3D,CAAA"}
1
+ {"version":3,"file":"loadVwr.d.ts","sourceRoot":"","sources":["../src/loadVwr.ts"],"names":[],"mappings":"AAKA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA;AAiBrD,YAAY,EAAE,MAAM,EAAE,CAAA;AAEtB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,OAAO,GAAU,SAAQ,MAAsB,kBAkG3D,CAAA"}
package/dist/loadVwr.js CHANGED
@@ -1,11 +1,13 @@
1
1
  import { fetchAmplitudeFlags } from "./amplitudeFlagFetcher";
2
2
  import { ENV_DEFAULTS } from "./envDefaults";
3
3
  import { getDeviceId } from "./getDeviceId";
4
+ import { getEnvironment } from "./getEnvironment";
4
5
  import { getShellVersion } from "./getShellVersion";
5
6
  import { defaultLogger } from "./logger";
6
7
  import { getVWRConfig, validateConfig } from "./vwrConfig";
7
8
  // Vite injects these at build time
8
- const ENVIRONMENT = import.meta.env.VITE_ENVIRONMENT;
9
+ // VITE_ENVIRONMENT is optional for platforms that support native env reading (Fire TV)
10
+ const BUILD_TIME_ENVIRONMENT = import.meta.env.VITE_ENVIRONMENT;
9
11
  const PLATFORM = import.meta.env.VITE_PLATFORM;
10
12
  const CONFIG_URL = import.meta.env.VITE_CONFIG_URL;
11
13
  const CONFIG_FILE = import.meta.env.VITE_CONFIG_FILE;
@@ -20,15 +22,20 @@ const AMPLITUDE_KEY = import.meta.env.VITE_AMPLITUDE_DEPLOYMENT_KEY;
20
22
  * this reduces startup latency from ~2-4s to ~500ms by skipping config fetches.
21
23
  *
22
24
  * Flow:
23
- * 1. Get deviceId, shellVersion (fast, local)
25
+ * 1. Get deviceId, shellVersion, environment (fast, local/native)
24
26
  * 2. Check vwr-enabled flag (single request, ~500ms)
25
27
  * 3. If OFF → throw immediately (no config fetches)
26
28
  * 4. If ON → fetch config, load VWR module, initialize
27
29
  *
30
+ * Environment resolution:
31
+ * - Fire TV: reads from native BuildConfig.ENVIRONMENT (prevents env mismatch)
32
+ * - Other platforms: uses build-time injected VITE_ENVIRONMENT
33
+ * - Fallback: "dev"
34
+ *
28
35
  * @param logger - Optional logger, defaults to console
29
36
  */
30
37
  export const loadVwr = async (logger = defaultLogger) => {
31
- if (!ENVIRONMENT || !PLATFORM || !CONFIG_URL || !CONFIG_FILE) {
38
+ if (!PLATFORM || !CONFIG_URL || !CONFIG_FILE) {
32
39
  throw new Error("[Shell] Build config not injected properly");
33
40
  }
34
41
  const deviceId = await getDeviceId(PLATFORM, logger);
@@ -38,6 +45,9 @@ export const loadVwr = async (logger = defaultLogger) => {
38
45
  throw new Error(message);
39
46
  }
40
47
  const shellVersion = await getShellVersion(PLATFORM, logger);
48
+ // Get environment from native (Fire TV) or build-time injection
49
+ // This ensures prod APKs cannot accidentally run dev VWR
50
+ const { environment: ENVIRONMENT } = await getEnvironment(PLATFORM, BUILD_TIME_ENVIRONMENT, logger);
41
51
  // Get amplitude key: injected at build time OR from envDefaults
42
52
  // Precedence: build-time injection > envDefaults
43
53
  let amplitudeKey = AMPLITUDE_KEY;
@@ -77,20 +87,18 @@ export const loadVwr = async (logger = defaultLogger) => {
77
87
  vwrUrl: vwrConfig.vwrUrl,
78
88
  });
79
89
  try {
80
- const vwr = (await import(
81
- /* @vite-ignore */ vwrConfig.vwrUrl));
90
+ const vwr = await import(/* @vite-ignore */ vwrConfig.vwrUrl);
82
91
  logger.info("[Shell] VWR module loaded successfully");
83
92
  if (typeof vwr.init !== "function") {
84
93
  throw new Error("[Shell] VWR module missing init() function");
85
94
  }
86
95
  await vwr.init({
87
96
  hubUrl: vwrConfig.hubUrl,
97
+ launchUrl: vwrConfig.launchUrl,
88
98
  platform: PLATFORM,
89
- stage: ENVIRONMENT,
90
- appVersion: shellVersion,
91
- platformApiUrl: vwrConfig.platformApiUrl,
92
- platformAuthApiUrl: vwrConfig.platformAuthApiUrl,
93
- trustedOrigins: new Set(vwrConfig.trustedDomains),
99
+ deviceId,
100
+ environment: ENVIRONMENT,
101
+ trustedDomains: vwrConfig.trustedDomains,
94
102
  nativeShellVersion: shellVersion,
95
103
  });
96
104
  logger.info("[Shell] VWR initialized successfully");