@volley/vwr-loader 1.0.5 → 1.1.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 (60) hide show
  1. package/README.md +21 -0
  2. package/dist/amplitudeFlagFetcher.d.ts +4 -2
  3. package/dist/amplitudeFlagFetcher.d.ts.map +1 -1
  4. package/dist/amplitudeFlagFetcher.js +26 -19
  5. package/dist/amplitudeFlagFetcher.js.map +1 -1
  6. package/dist/cli.js +213 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/envDefaults.d.ts +3 -0
  9. package/dist/envDefaults.d.ts.map +1 -1
  10. package/dist/envDefaults.js +16 -4
  11. package/dist/envDefaults.js.map +1 -1
  12. package/dist/getDeviceId.d.ts +2 -40
  13. package/dist/getDeviceId.d.ts.map +1 -1
  14. package/dist/getDeviceId.js +31 -18
  15. package/dist/getDeviceId.js.map +1 -1
  16. package/dist/getEnvironment.d.ts +1 -1
  17. package/dist/getEnvironment.d.ts.map +1 -1
  18. package/dist/getEnvironment.js +15 -7
  19. package/dist/getEnvironment.js.map +1 -1
  20. package/dist/getShellVersion.d.ts +2 -19
  21. package/dist/getShellVersion.d.ts.map +1 -1
  22. package/dist/getShellVersion.js +41 -6
  23. package/dist/getShellVersion.js.map +1 -1
  24. package/dist/index.html +1 -1
  25. package/dist/loadVwr.d.ts.map +1 -1
  26. package/dist/loadVwr.js +8 -6
  27. package/dist/loadVwr.js.map +1 -1
  28. package/dist/main.js +1 -1
  29. package/dist/main.js.map +1 -1
  30. package/dist/types.d.ts +87 -0
  31. package/dist/types.d.ts.map +1 -0
  32. package/dist/types.js +5 -0
  33. package/dist/types.js.map +1 -0
  34. package/dist/vwrConfig.d.ts +2 -0
  35. package/dist/vwrConfig.d.ts.map +1 -1
  36. package/dist/vwrConfig.js +148 -119
  37. package/dist/vwrConfig.js.map +1 -1
  38. package/package.json +16 -5
  39. package/src/amplitudeFlagFetcher.test.ts +36 -59
  40. package/src/amplitudeFlagFetcher.ts +31 -22
  41. package/src/envDefaults.ts +23 -4
  42. package/src/getDeviceId.test.ts +89 -27
  43. package/src/getDeviceId.ts +35 -58
  44. package/src/getEnvironment.test.ts +479 -0
  45. package/src/getEnvironment.ts +16 -8
  46. package/src/getShellVersion.test.ts +123 -4
  47. package/src/getShellVersion.ts +46 -21
  48. package/src/loadVwr.ts +13 -6
  49. package/src/main.ts +3 -1
  50. package/src/types.ts +88 -0
  51. package/src/vite-env.d.ts +3 -0
  52. package/src/vwrConfig.test.ts +2 -2
  53. package/src/vwrConfig.ts +202 -199
  54. package/eslint.config.mjs +0 -23
  55. package/scripts/build.js +0 -2
  56. package/scripts/build.ts +0 -207
  57. package/tsconfig.eslint.json +0 -16
  58. package/tsconfig.json +0 -17
  59. package/vite.config.ts +0 -24
  60. package/vitest.config.ts +0 -8
@@ -16,7 +16,7 @@ export interface EnvironmentResult {
16
16
  * This ensures production APKs cannot accidentally run dev VWR,
17
17
  * since the native Android build variant determines the environment.
18
18
  *
19
- * @param platform - Platform identifier ('FIRE_TV', 'SAMSUNG_TV', 'LG_TV', 'MOBILE', 'WEB')
19
+ * @param platform - Platform identifier ('FIRE_TV', 'SAMSUNG_TV', 'LG_TV', 'ANDROID_MOBILE', 'IOS_MOBILE', 'WEB')
20
20
  * @param buildTimeEnv - Optional build-time injected environment (from CLI)
21
21
  * @param logger - Optional logger for reporting
22
22
  * @returns Environment result with source information for logging
@@ -1 +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"}
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,CAuC5B"}
@@ -10,7 +10,7 @@ import { defaultLogger } from "./logger";
10
10
  * This ensures production APKs cannot accidentally run dev VWR,
11
11
  * since the native Android build variant determines the environment.
12
12
  *
13
- * @param platform - Platform identifier ('FIRE_TV', 'SAMSUNG_TV', 'LG_TV', 'MOBILE', 'WEB')
13
+ * @param platform - Platform identifier ('FIRE_TV', 'SAMSUNG_TV', 'LG_TV', 'ANDROID_MOBILE', 'IOS_MOBILE', 'WEB')
14
14
  * @param buildTimeEnv - Optional build-time injected environment (from CLI)
15
15
  * @param logger - Optional logger for reporting
16
16
  * @returns Environment result with source information for logging
@@ -29,12 +29,15 @@ export async function getEnvironment(platform, buildTimeEnv, logger = defaultLog
29
29
  logger.warn("[Shell] Failed to read environment from native, falling back to build-time");
30
30
  }
31
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
- };
32
+ if (buildTimeEnv) {
33
+ const normalizedBuildTimeEnv = buildTimeEnv.toLowerCase();
34
+ if (isValidEnvironment(normalizedBuildTimeEnv)) {
35
+ logger.info(`[Shell] Environment: "${normalizedBuildTimeEnv}" (source: build-time CLI injection)`);
36
+ return {
37
+ environment: normalizedBuildTimeEnv,
38
+ source: "build-time",
39
+ };
40
+ }
38
41
  }
39
42
  // Default fallback
40
43
  const defaultEnv = "dev";
@@ -76,12 +79,17 @@ async function getFireTVEnvironment(logger) {
76
79
  * - "dev"
77
80
  * - "staging"
78
81
  * - "prod"
82
+ *
83
+ * Note: Legacy "qa" values are mapped to "staging".
79
84
  */
80
85
  function mapNativeEnvironment(nativeEnv) {
81
86
  const normalized = nativeEnv.toLowerCase();
82
87
  switch (normalized) {
83
88
  case "development":
84
89
  return "dev";
90
+ case "qa":
91
+ // Legacy: map qa to staging
92
+ return "staging";
85
93
  case "staging":
86
94
  return "staging";
87
95
  case "production":
@@ -1 +1 @@
1
- {"version":3,"file":"getEnvironment.js","sourceRoot":"","sources":["../src/getEnvironment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getEnvironment.js","sourceRoot":"","sources":["../src/getEnvironment.ts"],"names":[],"mappings":"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"}
@@ -6,29 +6,12 @@ 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
- * - MOBILE: Native bridge (future implementation)
9
+ * - ANDROID_MOBILE/IOS_MOBILE: Native app context `window.iosAppContext.appVersion` / `window.androidAppContext.appVersion`
10
10
  * - WEB/Unknown: Returns 'unknown'
11
11
  *
12
- * @param platform - Platform identifier (SAMSUNG_TV, LG_TV, FIRE_TV, MOBILE, WEB)
12
+ * @param platform - Platform identifier (SAMSUNG_TV, LG_TV, FIRE_TV, ANDROID_MOBILE, IOS_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
  */
16
16
  export declare function getShellVersion(platform: string, logger?: Logger): Promise<string>;
17
- declare global {
18
- interface Window {
19
- Capacitor?: {
20
- Plugins?: {
21
- DeviceInfo?: {
22
- getDeviceInfo(): Promise<{
23
- versionName?: string;
24
- [key: string]: any;
25
- }>;
26
- [key: string]: any;
27
- };
28
- [key: string]: any;
29
- };
30
- [key: string]: any;
31
- };
32
- }
33
- }
34
17
  //# sourceMappingURL=getShellVersion.d.ts.map
@@ -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,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"}
1
+ {"version":3,"file":"getShellVersion.d.ts","sourceRoot":"","sources":["../src/getShellVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA;AAGrD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,eAAe,CACjC,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,MAAsB,GAC/B,OAAO,CAAC,MAAM,CAAC,CAyEjB"}
@@ -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
- * - MOBILE: Native bridge (future implementation)
9
+ * - ANDROID_MOBILE/IOS_MOBILE: Native app context `window.iosAppContext.appVersion` / `window.androidAppContext.appVersion`
10
10
  * - WEB/Unknown: Returns 'unknown'
11
11
  *
12
- * @param platform - Platform identifier (SAMSUNG_TV, LG_TV, FIRE_TV, MOBILE, WEB)
12
+ * @param platform - Platform identifier (SAMSUNG_TV, LG_TV, FIRE_TV, ANDROID_MOBILE, IOS_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
  */
@@ -58,10 +58,10 @@ export async function getShellVersion(platform, logger = defaultLogger) {
58
58
  }
59
59
  return "unknown";
60
60
  }
61
- // Mobile: Future implementation via native bridge
62
- if (normalizedPlatform === "MOBILE") {
63
- // TODO: Implement native bridge version retrieval when available
64
- return "unknown";
61
+ // Mobile: Get version from native app context
62
+ if (normalizedPlatform === "ANDROID_MOBILE" ||
63
+ normalizedPlatform === "IOS_MOBILE") {
64
+ return getMobileAppVersion(logger);
65
65
  }
66
66
  // Web platform: Check for injected version at build time
67
67
  if (normalizedPlatform === "WEB") {
@@ -79,4 +79,39 @@ export async function getShellVersion(platform, logger = defaultLogger) {
79
79
  return "unknown";
80
80
  }
81
81
  }
82
+ /**
83
+ * Get app version from mobile native app context (iOS/Android)
84
+ *
85
+ * iOS exposes appVersion via window.iosAppContext
86
+ * Android exposes appVersion via window.androidAppContext (also check window.top for iframes)
87
+ */
88
+ function getMobileAppVersion(logger) {
89
+ var _a, _b, _c, _d;
90
+ // Try iOS first
91
+ const iosVersion = (_a = window.iosAppContext) === null || _a === void 0 ? void 0 : _a.appVersion;
92
+ if (iosVersion && iosVersion.trim()) {
93
+ return iosVersion;
94
+ }
95
+ // Try Android (check both window and window.top for iframe scenarios)
96
+ const androidContext = window.androidAppContext;
97
+ try {
98
+ const androidVersion = (_b = androidContext === null || androidContext === void 0 ? void 0 : androidContext.appVersion) !== null && _b !== void 0 ? _b : (_d = (_c = window.top) === null || _c === void 0 ? void 0 : _c.androidAppContext) === null || _d === void 0 ? void 0 : _d.appVersion;
99
+ if (androidVersion && androidVersion.trim()) {
100
+ return androidVersion;
101
+ }
102
+ }
103
+ catch (_e) {
104
+ // window.top access can throw if cross-origin
105
+ const androidVersion = androidContext === null || androidContext === void 0 ? void 0 : androidContext.appVersion;
106
+ if (androidVersion && androidVersion.trim()) {
107
+ return androidVersion;
108
+ }
109
+ }
110
+ logger.warn("[VWR:MobileAppVersion] appVersion not found", {
111
+ iosAppContext: !!window.iosAppContext,
112
+ androidAppContext: !!androidContext,
113
+ });
114
+ return "unknown";
115
+ }
116
+ // Types imported from ./types.ts
82
117
  //# sourceMappingURL=getShellVersion.js.map
@@ -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>
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"loadVwr.d.ts","sourceRoot":"","sources":["../src/loadVwr.ts"],"names":[],"mappings":"AAOA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA;AAiBrD,YAAY,EAAE,MAAM,EAAE,CAAA;AAEtB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,OAAO,GAAU,SAAQ,MAAsB,kBAuG3D,CAAA"}
package/dist/loadVwr.js CHANGED
@@ -63,7 +63,7 @@ export const loadVwr = async (logger = defaultLogger) => {
63
63
  const flags = await fetchAmplitudeFlags(deviceId, PLATFORM, {
64
64
  apiKey: amplitudeKey,
65
65
  timeout: 2000,
66
- }, shellVersion);
66
+ }, shellVersion, logger);
67
67
  logger.info("[Shell] Flags fetched", { flags });
68
68
  if (!flags["vwr-enabled"]) {
69
69
  // Flag OFF: skip all config fetches, fail fast
@@ -87,18 +87,20 @@ export const loadVwr = async (logger = defaultLogger) => {
87
87
  vwrUrl: vwrConfig.vwrUrl,
88
88
  });
89
89
  try {
90
- const vwr = await import(/* @vite-ignore */ vwrConfig.vwrUrl);
90
+ const vwr = (await import(
91
+ /* @vite-ignore */ vwrConfig.vwrUrl));
91
92
  logger.info("[Shell] VWR module loaded successfully");
92
93
  if (typeof vwr.init !== "function") {
93
94
  throw new Error("[Shell] VWR module missing init() function");
94
95
  }
95
96
  await vwr.init({
96
97
  hubUrl: vwrConfig.hubUrl,
97
- launchUrl: vwrConfig.launchUrl,
98
98
  platform: PLATFORM,
99
- deviceId,
100
- environment: ENVIRONMENT,
101
- trustedDomains: vwrConfig.trustedDomains,
99
+ stage: ENVIRONMENT,
100
+ appVersion: shellVersion,
101
+ platformApiUrl: vwrConfig.platformApiUrl,
102
+ platformAuthApiUrl: vwrConfig.platformAuthApiUrl,
103
+ trustedOrigins: new Set(vwrConfig.trustedDomains),
102
104
  nativeShellVersion: shellVersion,
103
105
  });
104
106
  logger.info("[Shell] VWR initialized successfully");
@@ -1 +1 @@
1
- {"version":3,"file":"loadVwr.js","sourceRoot":"","sources":["../src/loadVwr.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loadVwr.js","sourceRoot":"","sources":["../src/loadVwr.ts"],"names":[],"mappings":"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"}
package/dist/main.js CHANGED
@@ -1,2 +1,2 @@
1
- (function(){const o=document.createElement("link").relList;if(o&&o.supports&&o.supports("modulepreload"))return;for(const e of document.querySelectorAll('link[rel="modulepreload"]'))i(e);new MutationObserver(e=>{for(const t of e)if(t.type==="childList")for(const n of t.addedNodes)n.tagName==="LINK"&&n.rel==="modulepreload"&&i(n)}).observe(document,{childList:!0,subtree:!0});function l(e){const t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin==="use-credentials"?t.credentials="include":e.crossOrigin==="anonymous"?t.credentials="omit":t.credentials="same-origin",t}function i(e){if(e.ep)return;e.ep=!0;const t=l(e);fetch(e.href,t)}})();const c={info:(r,o)=>o?console.log(r,o):console.log(r),warn:(r,o)=>o?console.warn(r,o):console.warn(r),error:(r,o)=>o?console.error(r,o):console.error(r)},s=async(r=c)=>{throw new Error("[Shell] Build config not injected properly")},f=void 0,d=void 0;async function u(){try{await s()}catch(r){try{console.error("[Shell] ⚠️ FALLBACK TO HUB - Init failed:",r),window.DD_LOGS&&window.DD_LOGS.logger.error("shell_init_failed",{error:r.message,platform:f})}finally{window.location.href=d}}}u();
1
+ (function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))i(r);new MutationObserver(r=>{for(const t of r)if(t.type==="childList")for(const n of t.addedNodes)n.tagName==="LINK"&&n.rel==="modulepreload"&&i(n)}).observe(document,{childList:!0,subtree:!0});function c(r){const t={};return r.integrity&&(t.integrity=r.integrity),r.referrerPolicy&&(t.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?t.credentials="include":r.crossOrigin==="anonymous"?t.credentials="omit":t.credentials="same-origin",t}function i(r){if(r.ep)return;r.ep=!0;const t=c(r);fetch(r.href,t)}})();const s={info:(o,e)=>e?console.log(o,e):console.log(o),warn:(o,e)=>e?console.warn(o,e):console.warn(o),error:(o,e)=>e?console.error(o,e):console.error(o)},f=async(o=s)=>{throw new Error("[Shell] Build config not injected properly")},l=void 0,a=void 0;async function d(){try{await f()}catch(o){try{console.error("[Shell] ⚠️ FALLBACK TO HUB - Init failed:",o),window.DD_LOGS&&window.DD_LOGS.logger.error("shell_init_failed",{error:o.message,platform:l})}finally{const e=new URL(a);e.searchParams.set("volley_platform",l),window.location.href=e.toString()}}}d();
2
2
  //# sourceMappingURL=main.js.map
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sources":["../src/logger.ts","../src/loadVwr.ts","../src/main.ts"],"sourcesContent":["export interface Logger {\n info: (message: string, context?: Record<string, unknown>) => void\n warn: (message: string, context?: Record<string, unknown>) => void\n error: (message: string, context?: Record<string, unknown>) => void\n}\n\nexport const defaultLogger: Logger = {\n info: (message, context) =>\n context ? console.log(message, context) : console.log(message),\n warn: (message, context) =>\n context ? console.warn(message, context) : console.warn(message),\n error: (message, context) =>\n context ? console.error(message, context) : console.error(message),\n}\n","import { fetchAmplitudeFlags } from \"./amplitudeFlagFetcher\"\nimport { ENV_DEFAULTS } from \"./envDefaults\"\nimport { getDeviceId } from \"./getDeviceId\"\nimport { getEnvironment } from \"./getEnvironment\"\nimport { getShellVersion } from \"./getShellVersion\"\nimport { defaultLogger, type Logger } from \"./logger\"\nimport type { VWRConfig, VWRConfigRequest } from \"./vwrConfig\"\nimport { getVWRConfig, validateConfig } from \"./vwrConfig\"\n\n// Vite injects these at build time\n// VITE_ENVIRONMENT is optional for platforms that support native env reading (Fire TV)\nconst BUILD_TIME_ENVIRONMENT = import.meta.env.VITE_ENVIRONMENT as\n | string\n | undefined\nconst PLATFORM = import.meta.env.VITE_PLATFORM\nconst CONFIG_URL = import.meta.env.VITE_CONFIG_URL\nconst CONFIG_FILE = import.meta.env.VITE_CONFIG_FILE\n\n// AMPLITUDE_KEY can be optionally injected at build time (via build.ts script)\n// Falls back to envDefaults if not injected (e.g., vite.config.dev.ts)\nconst AMPLITUDE_KEY = import.meta.env.VITE_AMPLITUDE_DEPLOYMENT_KEY\n\nexport type { Logger }\n\n/**\n * Load VWR runtime.\n *\n * Optimized flow: checks vwr-enabled flag FIRST using baked-in Amplitude key,\n * before doing any config fetches. For flag-OFF users (100% at initial launch),\n * this reduces startup latency from ~2-4s to ~500ms by skipping config fetches.\n *\n * Flow:\n * 1. Get deviceId, shellVersion, environment (fast, local/native)\n * 2. Check vwr-enabled flag (single request, ~500ms)\n * 3. If OFF → throw immediately (no config fetches)\n * 4. If ON → fetch config, load VWR module, initialize\n *\n * Environment resolution:\n * - Fire TV: reads from native BuildConfig.ENVIRONMENT (prevents env mismatch)\n * - Other platforms: uses build-time injected VITE_ENVIRONMENT\n * - Fallback: \"dev\"\n *\n * @param logger - Optional logger, defaults to console\n */\nexport const loadVwr = async (logger: Logger = defaultLogger) => {\n if (!PLATFORM || !CONFIG_URL || !CONFIG_FILE) {\n throw new Error(\"[Shell] Build config not injected properly\")\n }\n\n const deviceId = await getDeviceId(PLATFORM, logger)\n if (!deviceId) {\n const message = `[Shell] Failed to retrieve device ID for platform: ${PLATFORM}`\n logger.error(message)\n throw new Error(message)\n }\n const shellVersion = await getShellVersion(PLATFORM, logger)\n\n // Get environment from native (Fire TV) or build-time injection\n // This ensures prod APKs cannot accidentally run dev VWR\n const { environment: ENVIRONMENT } = await getEnvironment(\n PLATFORM,\n BUILD_TIME_ENVIRONMENT,\n logger\n )\n\n // Get amplitude key: injected at build time OR from envDefaults\n // Precedence: build-time injection > envDefaults\n let amplitudeKey = AMPLITUDE_KEY\n if (!amplitudeKey) {\n const envDefaults = ENV_DEFAULTS[ENVIRONMENT]\n if (!envDefaults) {\n throw new Error(`[Shell] Unknown environment: ${ENVIRONMENT}`)\n }\n amplitudeKey = envDefaults.amplitudeKey\n }\n\n // FAST PATH: Check flag first using amplitude key\n // This avoids config fetches for flag-OFF users (majority at launch)\n const flags = await fetchAmplitudeFlags(\n deviceId,\n PLATFORM,\n {\n apiKey: amplitudeKey,\n timeout: 2000,\n },\n shellVersion\n )\n\n logger.info(\"[Shell] Flags fetched\", { flags })\n\n if (!flags[\"vwr-enabled\"]) {\n // Flag OFF: skip all config fetches, fail fast\n throw new Error(\"[Shell] VWR not enabled via Amplitude flags\")\n }\n\n // Flag ON: proceed with full config loading\n logger.info(\"[Shell] VWR flag enabled, fetching config...\")\n\n const vwrConfigRequest: VWRConfigRequest = {\n configUrl: CONFIG_URL,\n configFile: CONFIG_FILE,\n platform: PLATFORM,\n deviceId: deviceId,\n environment: ENVIRONMENT,\n shellVersion: shellVersion,\n }\n\n const vwrConfig: VWRConfig = await getVWRConfig(vwrConfigRequest, logger)\n\n if (!validateConfig(vwrConfig)) {\n throw new Error(\"Invalid config, falling back to default hub\")\n }\n\n logger.info(\"[Shell] VWR enabled, loading module\", {\n vwrUrl: vwrConfig.vwrUrl,\n })\n try {\n const vwr = await import(/* @vite-ignore */ vwrConfig.vwrUrl)\n logger.info(\"[Shell] VWR module loaded successfully\")\n\n if (typeof vwr.init !== \"function\") {\n throw new Error(\"[Shell] VWR module missing init() function\")\n }\n\n await vwr.init({\n hubUrl: vwrConfig.hubUrl,\n launchUrl: vwrConfig.launchUrl,\n platform: PLATFORM,\n deviceId,\n environment: ENVIRONMENT,\n trustedDomains: vwrConfig.trustedDomains,\n nativeShellVersion: shellVersion,\n })\n logger.info(\"[Shell] VWR initialized successfully\")\n } catch (vwrError) {\n logger.error(\"[Shell] VWR load failed\", {\n error:\n vwrError instanceof Error ? vwrError.message : String(vwrError),\n vwrUrl: vwrConfig.vwrUrl,\n })\n throw vwrError // Re-throw to outer catch for fallback\n }\n}\n","import { loadVwr } from \"./loadVwr\"\n\nconst PLATFORM = import.meta.env.VITE_PLATFORM\nconst HUB_URL = import.meta.env.VITE_HUB_URL\n\nasync function init() {\n try {\n await loadVwr()\n } catch (error) {\n try {\n console.error(\"[Shell] ⚠️ FALLBACK TO HUB - Init failed:\", error)\n\n if ((window as any).DD_LOGS) {\n ;(window as any).DD_LOGS.logger.error(\"shell_init_failed\", {\n error: (error as Error).message,\n platform: PLATFORM,\n })\n }\n } finally {\n //Fallback, can't trust config exists\n window.location.href = HUB_URL\n }\n }\n}\n\ninit()\n"],"names":["defaultLogger","message","context","loadVwr","logger","PLATFORM","HUB_URL","init","error"],"mappings":"ssBAMO,MAAMA,EAAwB,CACjC,KAAM,CAACC,EAASC,IACZA,EAAU,QAAQ,IAAID,EAASC,CAAO,EAAI,QAAQ,IAAID,CAAO,EACjE,KAAM,CAACA,EAASC,IACZA,EAAU,QAAQ,KAAKD,EAASC,CAAO,EAAI,QAAQ,KAAKD,CAAO,EACnE,MAAO,CAACA,EAASC,IACbA,EAAU,QAAQ,MAAMD,EAASC,CAAO,EAAI,QAAQ,MAAMD,CAAO,CACzE,EC+BaE,EAAU,MAAOC,EAAiBJ,IAAkB,CAEzD,MAAM,IAAI,MAAM,4CAA4C,CAgGpE,EC5IMK,EAAW,OACXC,EAAU,OAEhB,eAAeC,GAAO,CAClB,GAAI,CACA,MAAMJ,EAAA,CACV,OAASK,EAAO,CACZ,GAAI,CACA,QAAQ,MAAM,6CAA8CA,CAAK,EAE5D,OAAe,SACd,OAAe,QAAQ,OAAO,MAAM,oBAAqB,CACvD,MAAQA,EAAgB,QACxB,SAAUH,CAAA,CACb,CAET,QAAA,CAEI,OAAO,SAAS,KAAOC,CAC3B,CACJ,CACJ,CAEAC,EAAA"}
1
+ {"version":3,"file":"main.js","sources":["../src/logger.ts","../src/loadVwr.ts","../src/main.ts"],"sourcesContent":["export interface Logger {\n info: (message: string, context?: Record<string, unknown>) => void\n warn: (message: string, context?: Record<string, unknown>) => void\n error: (message: string, context?: Record<string, unknown>) => void\n}\n\nexport const defaultLogger: Logger = {\n info: (message, context) =>\n context ? console.log(message, context) : console.log(message),\n warn: (message, context) =>\n context ? console.warn(message, context) : console.warn(message),\n error: (message, context) =>\n context ? console.error(message, context) : console.error(message),\n}\n","import type * as VWR from \"@volley/vwr\"\n\nimport { fetchAmplitudeFlags } from \"./amplitudeFlagFetcher\"\nimport { ENV_DEFAULTS } from \"./envDefaults\"\nimport { getDeviceId } from \"./getDeviceId\"\nimport { getEnvironment } from \"./getEnvironment\"\nimport { getShellVersion } from \"./getShellVersion\"\nimport { defaultLogger, type Logger } from \"./logger\"\nimport type { VWRConfig, VWRConfigRequest } from \"./vwrConfig\"\nimport { getVWRConfig, validateConfig } from \"./vwrConfig\"\n\n// Vite injects these at build time\n// VITE_ENVIRONMENT is optional for platforms that support native env reading (Fire TV)\nconst BUILD_TIME_ENVIRONMENT = import.meta.env.VITE_ENVIRONMENT as\n | string\n | undefined\nconst PLATFORM = import.meta.env.VITE_PLATFORM\nconst CONFIG_URL = import.meta.env.VITE_CONFIG_URL\nconst CONFIG_FILE = import.meta.env.VITE_CONFIG_FILE\n\n// AMPLITUDE_KEY can be optionally injected at build time (via build.ts script)\n// Falls back to envDefaults if not injected (e.g., vite.config.dev.ts)\nconst AMPLITUDE_KEY = import.meta.env.VITE_AMPLITUDE_DEPLOYMENT_KEY\n\nexport type { Logger }\n\n/**\n * Load VWR runtime.\n *\n * Optimized flow: checks vwr-enabled flag FIRST using baked-in Amplitude key,\n * before doing any config fetches. For flag-OFF users (100% at initial launch),\n * this reduces startup latency from ~2-4s to ~500ms by skipping config fetches.\n *\n * Flow:\n * 1. Get deviceId, shellVersion, environment (fast, local/native)\n * 2. Check vwr-enabled flag (single request, ~500ms)\n * 3. If OFF → throw immediately (no config fetches)\n * 4. If ON → fetch config, load VWR module, initialize\n *\n * Environment resolution:\n * - Fire TV: reads from native BuildConfig.ENVIRONMENT (prevents env mismatch)\n * - Other platforms: uses build-time injected VITE_ENVIRONMENT\n * - Fallback: \"dev\"\n *\n * @param logger - Optional logger, defaults to console\n */\nexport const loadVwr = async (logger: Logger = defaultLogger) => {\n if (!PLATFORM || !CONFIG_URL || !CONFIG_FILE) {\n throw new Error(\"[Shell] Build config not injected properly\")\n }\n\n const deviceId = await getDeviceId(PLATFORM, logger)\n if (!deviceId) {\n const message = `[Shell] Failed to retrieve device ID for platform: ${PLATFORM}`\n logger.error(message)\n throw new Error(message)\n }\n const shellVersion = await getShellVersion(PLATFORM, logger)\n\n // Get environment from native (Fire TV) or build-time injection\n // This ensures prod APKs cannot accidentally run dev VWR\n const { environment: ENVIRONMENT } = await getEnvironment(\n PLATFORM,\n BUILD_TIME_ENVIRONMENT,\n logger\n )\n\n // Get amplitude key: injected at build time OR from envDefaults\n // Precedence: build-time injection > envDefaults\n let amplitudeKey = AMPLITUDE_KEY\n if (!amplitudeKey) {\n const envDefaults = ENV_DEFAULTS[ENVIRONMENT]\n if (!envDefaults) {\n throw new Error(`[Shell] Unknown environment: ${ENVIRONMENT}`)\n }\n amplitudeKey = envDefaults.amplitudeKey\n }\n\n // FAST PATH: Check flag first using amplitude key\n // This avoids config fetches for flag-OFF users (majority at launch)\n const flags = await fetchAmplitudeFlags(\n deviceId,\n PLATFORM,\n {\n apiKey: amplitudeKey,\n timeout: 2000,\n },\n shellVersion,\n logger\n )\n\n logger.info(\"[Shell] Flags fetched\", { flags })\n\n if (!flags[\"vwr-enabled\"]) {\n // Flag OFF: skip all config fetches, fail fast\n throw new Error(\"[Shell] VWR not enabled via Amplitude flags\")\n }\n\n // Flag ON: proceed with full config loading\n logger.info(\"[Shell] VWR flag enabled, fetching config...\")\n\n const vwrConfigRequest: VWRConfigRequest = {\n configUrl: CONFIG_URL,\n configFile: CONFIG_FILE,\n platform: PLATFORM,\n deviceId: deviceId,\n environment: ENVIRONMENT,\n shellVersion: shellVersion,\n }\n\n const vwrConfig: VWRConfig = await getVWRConfig(vwrConfigRequest, logger)\n\n if (!validateConfig(vwrConfig)) {\n throw new Error(\"Invalid config, falling back to default hub\")\n }\n\n logger.info(\"[Shell] VWR enabled, loading module\", {\n vwrUrl: vwrConfig.vwrUrl,\n })\n try {\n const vwr = (await import(\n /* @vite-ignore */ vwrConfig.vwrUrl\n )) as typeof VWR\n\n logger.info(\"[Shell] VWR module loaded successfully\")\n\n if (typeof vwr.init !== \"function\") {\n throw new Error(\"[Shell] VWR module missing init() function\")\n }\n\n await vwr.init({\n hubUrl: vwrConfig.hubUrl,\n platform: PLATFORM,\n stage: ENVIRONMENT,\n appVersion: shellVersion,\n platformApiUrl: vwrConfig.platformApiUrl,\n platformAuthApiUrl: vwrConfig.platformAuthApiUrl,\n trustedOrigins: new Set(vwrConfig.trustedDomains),\n nativeShellVersion: shellVersion,\n })\n logger.info(\"[Shell] VWR initialized successfully\")\n } catch (vwrError) {\n logger.error(\"[Shell] VWR load failed\", {\n error:\n vwrError instanceof Error ? vwrError.message : String(vwrError),\n vwrUrl: vwrConfig.vwrUrl,\n })\n throw vwrError // Re-throw to outer catch for fallback\n }\n}\n","import { loadVwr } from \"./loadVwr\"\n\nconst PLATFORM = import.meta.env.VITE_PLATFORM\nconst HUB_URL = import.meta.env.VITE_HUB_URL\n\nasync function init() {\n try {\n await loadVwr()\n } catch (error) {\n try {\n console.error(\"[Shell] ⚠️ FALLBACK TO HUB - Init failed:\", error)\n\n if ((window as any).DD_LOGS) {\n ;(window as any).DD_LOGS.logger.error(\"shell_init_failed\", {\n error: (error as Error).message,\n platform: PLATFORM,\n })\n }\n } finally {\n //Fallback, can't trust config exists\n const fallbackUrl = new URL(HUB_URL)\n fallbackUrl.searchParams.set(\"volley_platform\", PLATFORM)\n window.location.href = fallbackUrl.toString()\n }\n }\n}\n\ninit()\n"],"names":["defaultLogger","message","context","loadVwr","logger","PLATFORM","HUB_URL","init","error","fallbackUrl"],"mappings":"ssBAMO,MAAMA,EAAwB,CACjC,KAAM,CAACC,EAASC,IACZA,EAAU,QAAQ,IAAID,EAASC,CAAO,EAAI,QAAQ,IAAID,CAAO,EACjE,KAAM,CAACA,EAASC,IACZA,EAAU,QAAQ,KAAKD,EAASC,CAAO,EAAI,QAAQ,KAAKD,CAAO,EACnE,MAAO,CAACA,EAASC,IACbA,EAAU,QAAQ,MAAMD,EAASC,CAAO,EAAI,QAAQ,MAAMD,CAAO,CACzE,ECiCaE,EAAU,MAAOC,EAAiBJ,IAAkB,CAEzD,MAAM,IAAI,MAAM,4CAA4C,CAqGpE,ECnJMK,EAAW,OACXC,EAAU,OAEhB,eAAeC,GAAO,CAClB,GAAI,CACA,MAAMJ,EAAA,CACV,OAASK,EAAO,CACZ,GAAI,CACA,QAAQ,MAAM,6CAA8CA,CAAK,EAE5D,OAAe,SACd,OAAe,QAAQ,OAAO,MAAM,oBAAqB,CACvD,MAAQA,EAAgB,QACxB,SAAUH,CAAA,CACb,CAET,QAAA,CAEI,MAAMI,EAAc,IAAI,IAAIH,CAAO,EACnCG,EAAY,aAAa,IAAI,kBAAmBJ,CAAQ,EACxD,OAAO,SAAS,KAAOI,EAAY,SAAA,CACvC,CACJ,CACJ,CAEAF,EAAA"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Shared type definitions for vwr-loader platform APIs
3
+ */
4
+ /**
5
+ * Extended window interface for mobile app context.
6
+ * Matches the types from @volley/sdk ExtendedWindow.ts
7
+ */
8
+ export interface MobileExtendedWindow extends Window {
9
+ iosAppContext?: {
10
+ appVersion: string;
11
+ environment?: string;
12
+ phoneDeviceId?: string;
13
+ };
14
+ androidAppContext?: {
15
+ appVersion: string;
16
+ environment?: string;
17
+ phoneDeviceId?: string;
18
+ };
19
+ }
20
+ /**
21
+ * Global type declarations for platform APIs
22
+ */
23
+ declare global {
24
+ interface Window {
25
+ Capacitor?: {
26
+ Plugins?: {
27
+ DeviceInfo?: {
28
+ getDeviceInfo(): Promise<{
29
+ versionName?: string;
30
+ [key: string]: any;
31
+ }>;
32
+ getAndroidId(): Promise<{
33
+ androidId?: string;
34
+ [key: string]: any;
35
+ }>;
36
+ getNativeShellAppEnvironment(): Promise<{
37
+ environment?: string;
38
+ }>;
39
+ [key: string]: any;
40
+ };
41
+ [key: string]: any;
42
+ };
43
+ [key: string]: any;
44
+ };
45
+ webapis?: {
46
+ productinfo?: {
47
+ getDuid: () => string;
48
+ };
49
+ };
50
+ webOS?: {
51
+ service?: {
52
+ request: (uri: string, options: {
53
+ method?: string;
54
+ parameters?: Record<string, unknown>;
55
+ onSuccess?: (response: LGDeviceIdResponse) => void;
56
+ onFailure?: (error: {
57
+ errorText?: string;
58
+ }) => void;
59
+ subscribe?: boolean;
60
+ }) => {
61
+ cancel: () => void;
62
+ };
63
+ };
64
+ fetchAppInfo?: (callback: (appInfo?: {
65
+ version?: string;
66
+ }) => void) => void;
67
+ };
68
+ tizen?: {
69
+ application?: {
70
+ getAppInfo: () => {
71
+ version?: string;
72
+ };
73
+ };
74
+ };
75
+ }
76
+ }
77
+ /**
78
+ * LG Luna service response for device ID
79
+ */
80
+ export interface LGDeviceIdResponse {
81
+ idList?: Array<{
82
+ idType?: string;
83
+ idValue?: string;
84
+ }>;
85
+ returnValue?: boolean;
86
+ }
87
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,MAAM,WAAW,oBAAqB,SAAQ,MAAM;IAChD,aAAa,CAAC,EAAE;QACZ,UAAU,EAAE,MAAM,CAAA;QAClB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,aAAa,CAAC,EAAE,MAAM,CAAA;KACzB,CAAA;IACD,iBAAiB,CAAC,EAAE;QAChB,UAAU,EAAE,MAAM,CAAA;QAClB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,aAAa,CAAC,EAAE,MAAM,CAAA;KACzB,CAAA;CACJ;AAED;;GAEG;AACH,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,YAAY,IAAI,OAAO,CAAC;wBACpB,SAAS,CAAC,EAAE,MAAM,CAAA;wBAClB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;qBACrB,CAAC,CAAA;oBACF,4BAA4B,IAAI,OAAO,CAAC;wBACpC,WAAW,CAAC,EAAE,MAAM,CAAA;qBACvB,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;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;YACD,YAAY,CAAC,EAAE,CACX,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE;gBAAE,OAAO,CAAC,EAAE,MAAM,CAAA;aAAE,KAAK,IAAI,KACjD,IAAI,CAAA;SACZ,CAAA;QACD,KAAK,CAAC,EAAE;YACJ,WAAW,CAAC,EAAE;gBACV,UAAU,EAAE,MAAM;oBAAE,OAAO,CAAC,EAAE,MAAM,CAAA;iBAAE,CAAA;aACzC,CAAA;SACJ,CAAA;KACJ;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,MAAM,CAAC,EAAE,KAAK,CAAC;QACX,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,OAAO,CAAC,EAAE,MAAM,CAAA;KACnB,CAAC,CAAA;IACF,WAAW,CAAC,EAAE,OAAO,CAAA;CACxB"}
package/dist/types.js ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Shared type definitions for vwr-loader platform APIs
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -3,6 +3,8 @@ export type VWRConfig = {
3
3
  hubUrl: string;
4
4
  vwrUrl: string;
5
5
  launchUrl: string | undefined;
6
+ platformApiUrl: string;
7
+ platformAuthApiUrl: string;
6
8
  trustedDomains: Array<string>;
7
9
  };
8
10
  export type VWRConfigRequest = {
@@ -1 +1 @@
1
- {"version":3,"file":"vwrConfig.d.ts","sourceRoot":"","sources":["../src/vwrConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA;AAErD,MAAM,MAAM,SAAS,GAAG;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAsBD,eAAO,MAAM,YAAY,GACrB,SAAS,gBAAgB,EACzB,SAAQ,MAAsB,KAC/B,OAAO,CAAC,SAAS,CAmEnB,CAAA;AAyJD,eAAO,MAAM,cAAc,GAAI,QAAQ,SAAS,KAAG,OAWlD,CAAA"}
1
+ {"version":3,"file":"vwrConfig.d.ts","sourceRoot":"","sources":["../src/vwrConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA;AAErD,MAAM,MAAM,SAAS,GAAG;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,cAAc,EAAE,MAAM,CAAA;IACtB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AA0OD,eAAO,MAAM,YAAY,GACrB,SAAS,gBAAgB,EACzB,SAAQ,MAAsB,KAC/B,OAAO,CAAC,SAAS,CAEnB,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,QAAQ,SAAS,KAAG,OAWlD,CAAA"}