@volley/vwr-loader 1.0.5 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -0
- package/dist/amplitudeFlagFetcher.d.ts +4 -2
- package/dist/amplitudeFlagFetcher.d.ts.map +1 -1
- package/dist/amplitudeFlagFetcher.js +26 -19
- package/dist/amplitudeFlagFetcher.js.map +1 -1
- package/dist/cli.js +234 -0
- package/dist/cli.js.map +1 -0
- package/dist/envDefaults.d.ts +3 -0
- package/dist/envDefaults.d.ts.map +1 -1
- package/dist/envDefaults.js +26 -4
- package/dist/envDefaults.js.map +1 -1
- package/dist/getDeviceId.d.ts +2 -10
- package/dist/getDeviceId.d.ts.map +1 -1
- package/dist/getDeviceId.js +31 -18
- package/dist/getDeviceId.js.map +1 -1
- package/dist/getEnvironment.d.ts +1 -1
- package/dist/getEnvironment.d.ts.map +1 -1
- package/dist/getEnvironment.js +10 -7
- package/dist/getEnvironment.js.map +1 -1
- package/dist/getShellVersion.d.ts +2 -2
- package/dist/getShellVersion.d.ts.map +1 -1
- package/dist/getShellVersion.js +5 -3
- package/dist/getShellVersion.js.map +1 -1
- package/dist/index.html +1 -1
- package/dist/loadVwr.d.ts.map +1 -1
- package/dist/loadVwr.js +8 -6
- package/dist/loadVwr.js.map +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/vwrConfig.d.ts +2 -0
- package/dist/vwrConfig.d.ts.map +1 -1
- package/dist/vwrConfig.js +148 -119
- package/dist/vwrConfig.js.map +1 -1
- package/package.json +16 -5
- package/src/amplitudeFlagFetcher.test.ts +36 -59
- package/src/amplitudeFlagFetcher.ts +31 -22
- package/src/envDefaults.ts +33 -4
- package/src/getDeviceId.test.ts +79 -24
- package/src/getDeviceId.ts +47 -22
- package/src/getEnvironment.test.ts +457 -0
- package/src/getEnvironment.ts +12 -9
- package/src/getShellVersion.test.ts +1 -1
- package/src/getShellVersion.ts +7 -3
- package/src/loadVwr.ts +13 -6
- package/src/main.ts +3 -1
- package/src/vite-env.d.ts +3 -0
- package/src/vwrConfig.test.ts +2 -2
- package/src/vwrConfig.ts +202 -199
- package/eslint.config.mjs +0 -23
- package/scripts/build.js +0 -2
- package/scripts/build.ts +0 -207
- package/tsconfig.eslint.json +0 -16
- package/tsconfig.json +0 -17
- package/vite.config.ts +0 -24
- package/vitest.config.ts +0 -8
package/dist/getEnvironment.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Logger } from "./logger";
|
|
2
|
-
export type Environment = "local" | "dev" | "staging" | "prod";
|
|
2
|
+
export type Environment = "local" | "dev" | "qa" | "staging" | "prod";
|
|
3
3
|
export type EnvironmentSource = "native" | "build-time" | "default";
|
|
4
4
|
export interface EnvironmentResult {
|
|
5
5
|
environment: Environment;
|
|
@@ -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;
|
|
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,IAAI,GAAG,SAAS,GAAG,MAAM,CAAA;AACrE,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"}
|
package/dist/getEnvironment.js
CHANGED
|
@@ -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
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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";
|
|
@@ -95,7 +98,7 @@ function mapNativeEnvironment(nativeEnv) {
|
|
|
95
98
|
}
|
|
96
99
|
}
|
|
97
100
|
function isValidEnvironment(env) {
|
|
98
|
-
return ["local", "dev", "staging", "prod"].includes(env);
|
|
101
|
+
return ["local", "dev", "qa", "staging", "prod"].includes(env);
|
|
99
102
|
}
|
|
100
103
|
// Note: Window.Capacitor type is declared in getDeviceId.ts
|
|
101
104
|
// We just need to add the getNativeShellAppEnvironment method type there
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getEnvironment.js","sourceRoot":"","sources":["../src/getEnvironment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAe,MAAM,UAAU,CAAA;AAUrD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAChC,QAAgB,EAChB,YAAgC,EAChC,SAAiB,aAAa;IAE9B,MAAM,kBAAkB,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;IAEjD,8EAA8E;IAC9E,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,CAAA;QACpD,IAAI,SAAS,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAA;YAC9C,MAAM,CAAC,IAAI,CACP,yBAAyB,MAAM,8CAA8C,SAAS,IAAI,CAC7F,CAAA;YACD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;QACpD,CAAC;QACD,6CAA6C;QAC7C,MAAM,CAAC,IAAI,CACP,4EAA4E,CAC/E,CAAA;IACL,CAAC;IAED,wCAAwC;IACxC,IAAI,YAAY,IAAI,kBAAkB,CAAC,
|
|
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
|
-
* -
|
|
9
|
+
* - ANDROID_MOBILE/IOS_MOBILE: Native bridge (future implementation)
|
|
10
10
|
* - WEB/Unknown: Returns 'unknown'
|
|
11
11
|
*
|
|
12
|
-
* @param platform - Platform identifier (SAMSUNG_TV, LG_TV, FIRE_TV,
|
|
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
|
*/
|
|
@@ -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,
|
|
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"}
|
package/dist/getShellVersion.js
CHANGED
|
@@ -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
|
-
* -
|
|
9
|
+
* - ANDROID_MOBILE/IOS_MOBILE: Native bridge (future implementation)
|
|
10
10
|
* - WEB/Unknown: Returns 'unknown'
|
|
11
11
|
*
|
|
12
|
-
* @param platform - Platform identifier (SAMSUNG_TV, LG_TV, FIRE_TV,
|
|
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
|
*/
|
|
@@ -59,7 +59,9 @@ export async function getShellVersion(platform, logger = defaultLogger) {
|
|
|
59
59
|
return "unknown";
|
|
60
60
|
}
|
|
61
61
|
// Mobile: Future implementation via native bridge
|
|
62
|
-
if (normalizedPlatform === "
|
|
62
|
+
if (normalizedPlatform === "ANDROID_MOBILE" ||
|
|
63
|
+
normalizedPlatform === "IOS_MOBILE" ||
|
|
64
|
+
normalizedPlatform === "MOBILE") {
|
|
63
65
|
// TODO: Implement native bridge version retrieval when available
|
|
64
66
|
return "unknown";
|
|
65
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getShellVersion.js","sourceRoot":"","sources":["../src/getShellVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAe,MAAM,UAAU,CAAA;AAErD;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACjC,QAAgB,EAChB,SAAiB,aAAa;;IAE9B,IAAI,CAAC;QACD,MAAM,kBAAkB,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;QAEjD,qDAAqD;QACrD,IAAI,kBAAkB,KAAK,YAAY,EAAE,CAAC;YACtC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAK,MAAc,CAAC,KAAK,EAAE,CAAC;gBACzD,MAAM,KAAK,GAAI,MAAc,CAAC,KAAK,CAAA;gBACnC,IAAI,MAAA,KAAK,CAAC,WAAW,0CAAE,UAAU,EAAE,CAAC;oBAChC,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,UAAU,EAAE,CAAA;oBAC9C,OAAO,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,mCAAI,SAAS,CAAA;gBACxC,CAAC;YACL,CAAC;YACD,OAAO,SAAS,CAAA;QACpB,CAAC;QAED,oCAAoC;QACpC,sFAAsF;QACtF,yEAAyE;QACzE,IAAI,kBAAkB,KAAK,OAAO,EAAE,CAAC;YACjC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAK,MAAc,CAAC,KAAK,EAAE,CAAC;gBACzD,MAAM,KAAK,GAAI,MAAc,CAAC,KAAK,CAAA;gBACnC,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;oBACrB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;wBAC3B,KAAK,CAAC,YAAY,CAAC,CAAC,OAA8B,EAAE,EAAE;;4BAClD,OAAO,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,mCAAI,SAAS,CAAC,CAAA;wBAC1C,CAAC,CAAC,CAAA;oBACN,CAAC,CAAC,CAAA;gBACN,CAAC;YACL,CAAC;YACD,OAAO,SAAS,CAAA;QACpB,CAAC;QAED,uDAAuD;QACvD,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACnC,kCAAkC;YAClC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAK,MAAc,CAAC,SAAS,EAAE,CAAC;gBAC7D,MAAM,SAAS,GAAI,MAAc,CAAC,SAAS,CAAA;gBAC3C,MAAM,UAAU,GAAG,MAAA,SAAS,CAAC,OAAO,0CAAE,UAAU,CAAA;gBAEhD,IAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,aAAa,EAAE,CAAC;oBAC5B,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,aAAa,EAAE,CAAA;oBACnD,OAAO,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW,mCAAI,SAAS,CAAA;gBAC/C,CAAC;YACL,CAAC;YACD,OAAO,SAAS,CAAA;QACpB,CAAC;QAED,kDAAkD;QAClD,
|
|
1
|
+
{"version":3,"file":"getShellVersion.js","sourceRoot":"","sources":["../src/getShellVersion.ts"],"names":[],"mappings":"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"}
|
package/dist/index.html
CHANGED
package/dist/loadVwr.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadVwr.d.ts","sourceRoot":"","sources":["../src/loadVwr.ts"],"names":[],"mappings":"
|
|
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(
|
|
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
|
-
|
|
100
|
-
|
|
101
|
-
|
|
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");
|
package/dist/loadVwr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadVwr.js","sourceRoot":"","sources":["../src/loadVwr.ts"],"names":[],"mappings":"
|
|
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
|
|
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
|
|
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"}
|
package/dist/vwrConfig.d.ts
CHANGED
package/dist/vwrConfig.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/vwrConfig.js
CHANGED
|
@@ -18,131 +18,154 @@ const buildUrl = (path, base) => {
|
|
|
18
18
|
const normalizedBase = base.endsWith("/") ? base : `${base}/`;
|
|
19
19
|
return new URL(path, normalizedBase);
|
|
20
20
|
};
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
76
|
-
};
|
|
77
|
-
const tryGetEnvironmentConfig = async (configUrl, configFile, environment, timeout, logger) => {
|
|
78
|
-
try {
|
|
79
|
-
const url = buildUrl(`environments/${environment}/${configFile}`, configUrl);
|
|
80
|
-
logger.info(`[VWR Config] Trying environment: ${url}`);
|
|
81
|
-
return tryGetVWRConfig(url, timeout);
|
|
21
|
+
class VWRConfigFetcher {
|
|
22
|
+
constructor(request, logger) {
|
|
23
|
+
var _a;
|
|
24
|
+
this.defaults = getDefaultConfig(request.environment);
|
|
25
|
+
this.timeout = (_a = request.timeout) !== null && _a !== void 0 ? _a : DEFAULT_CONFIG_TIMEOUT;
|
|
26
|
+
this.logger = logger;
|
|
27
|
+
this.configUrl = request.configUrl;
|
|
28
|
+
this.configFile = request.configFile;
|
|
29
|
+
this.platform = request.platform;
|
|
30
|
+
this.deviceId = request.deviceId;
|
|
31
|
+
this.environment = request.environment;
|
|
32
|
+
this.shellVersion = request.shellVersion;
|
|
33
|
+
}
|
|
34
|
+
async fetch() {
|
|
35
|
+
this.logger.info("[VWR Config] Fetching config with priority: local → device → shellVersion → environment → defaults");
|
|
36
|
+
// Fetch all configs in parallel for performance
|
|
37
|
+
const [localConfig, deviceConfig, shellVersionConfig, environmentConfig,] = await Promise.all([
|
|
38
|
+
this.tryGetLocalConfig(),
|
|
39
|
+
this.tryGetDeviceConfig(),
|
|
40
|
+
this.tryGetShellVersionConfig(),
|
|
41
|
+
this.tryGetEnvironmentConfig(),
|
|
42
|
+
]);
|
|
43
|
+
// Return first successful config in priority order
|
|
44
|
+
if (localConfig !== null) {
|
|
45
|
+
this.logger.info("[VWR Config] ✓ Using config from: local", localConfig);
|
|
46
|
+
return localConfig;
|
|
47
|
+
}
|
|
48
|
+
if (deviceConfig !== null) {
|
|
49
|
+
this.logger.info("[VWR Config] ✓ Using config from: device", deviceConfig);
|
|
50
|
+
return deviceConfig;
|
|
51
|
+
}
|
|
52
|
+
if (shellVersionConfig !== null) {
|
|
53
|
+
this.logger.info("[VWR Config] ✓ Using config from: shellVersion", shellVersionConfig);
|
|
54
|
+
return shellVersionConfig;
|
|
55
|
+
}
|
|
56
|
+
if (environmentConfig !== null) {
|
|
57
|
+
this.logger.info("[VWR Config] ✓ Using config from: environment", environmentConfig);
|
|
58
|
+
return environmentConfig;
|
|
59
|
+
}
|
|
60
|
+
// All fetches failed, use defaults
|
|
61
|
+
this.logger.warn("[VWR Config] All config fetches failed, using built-in defaults");
|
|
62
|
+
return this.defaults;
|
|
63
|
+
}
|
|
64
|
+
async tryGetLocalConfig() {
|
|
65
|
+
var _a, _b;
|
|
66
|
+
try {
|
|
67
|
+
const url = buildUrl(this.configFile, (_b = (_a = ENV_DEFAULTS["local"]) === null || _a === void 0 ? void 0 : _a.configUrl) !== null && _b !== void 0 ? _b : "");
|
|
68
|
+
this.logger.info(`[VWR Config] Trying local: ${url}`);
|
|
69
|
+
return this.tryFetchConfig(url);
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
this.logger.error(`[VWR Config] URL construction failed for local config: ${error}`);
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
82
75
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
76
|
+
async tryGetDeviceConfig() {
|
|
77
|
+
try {
|
|
78
|
+
const url = buildUrl(`device/${this.platform}/${this.deviceId}/${this.configFile}`, this.configUrl);
|
|
79
|
+
this.logger.info(`[VWR Config] Trying device: ${url}`);
|
|
80
|
+
return this.tryFetchConfig(url);
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
this.logger.error(`[VWR Config] URL construction failed for device config: ${error}`);
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
86
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
87
|
+
async tryGetEnvironmentConfig() {
|
|
88
|
+
try {
|
|
89
|
+
const url = buildUrl(`environments/${this.environment}/${this.configFile}`, this.configUrl);
|
|
90
|
+
this.logger.info(`[VWR Config] Trying environment: ${url}`);
|
|
91
|
+
return this.tryFetchConfig(url);
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
this.logger.error(`[VWR Config] URL construction failed for environment config: ${error}`);
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
93
97
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
98
|
+
async tryGetShellVersionConfig() {
|
|
99
|
+
try {
|
|
100
|
+
const url = buildUrl(`shellVersion/${this.environment}/${this.platform}/${this.shellVersion}/${this.configFile}`, this.configUrl);
|
|
101
|
+
this.logger.info(`[VWR Config] Trying shellVersion: ${url}`);
|
|
102
|
+
return this.tryFetchConfig(url);
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
this.logger.error(`[VWR Config] URL construction failed for shellVersion config: ${error}`);
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
97
108
|
}
|
|
98
|
-
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
109
|
+
async tryFetchConfig(url) {
|
|
110
|
+
const controller = new AbortController();
|
|
111
|
+
const timeoutId = setTimeout(() => controller.abort(), this.timeout);
|
|
112
|
+
try {
|
|
113
|
+
const response = await fetch(new Request(url, {
|
|
114
|
+
headers: { "Content-Type": "application/json" },
|
|
115
|
+
signal: controller.signal,
|
|
116
|
+
}));
|
|
117
|
+
if (!response.ok) {
|
|
118
|
+
clearTimeout(timeoutId);
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
const config = await response.json();
|
|
122
|
+
clearTimeout(timeoutId);
|
|
123
|
+
return this.parseConfig(config);
|
|
124
|
+
}
|
|
125
|
+
catch (_a) {
|
|
110
126
|
clearTimeout(timeoutId);
|
|
111
127
|
return null;
|
|
112
128
|
}
|
|
113
|
-
let config = await response.json();
|
|
114
|
-
config = parseConfig(config);
|
|
115
|
-
clearTimeout(timeoutId);
|
|
116
|
-
return config;
|
|
117
|
-
}
|
|
118
|
-
catch (_a) {
|
|
119
|
-
clearTimeout(timeoutId);
|
|
120
|
-
return null;
|
|
121
|
-
}
|
|
122
|
-
};
|
|
123
|
-
const parseConfig = (config) => {
|
|
124
|
-
const defaultConfig = getDefaultConfig();
|
|
125
|
-
if (!Array.isArray(config.trustedDomains) ||
|
|
126
|
-
config.trustedDomains.length === 0) {
|
|
127
|
-
config.trustedDomains = defaultConfig.trustedDomains;
|
|
128
129
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
config.
|
|
130
|
+
parseConfig(config) {
|
|
131
|
+
const result = {
|
|
132
|
+
hubUrl: config.hubUrl || this.defaults.hubUrl,
|
|
133
|
+
vwrUrl: config.vwrUrl || this.defaults.vwrUrl,
|
|
134
|
+
launchUrl: config.launchUrl,
|
|
135
|
+
platformApiUrl: config.platformApiUrl || this.defaults.platformApiUrl,
|
|
136
|
+
platformAuthApiUrl: config.platformAuthApiUrl || this.defaults.platformAuthApiUrl,
|
|
137
|
+
trustedDomains: Array.isArray(config.trustedDomains) &&
|
|
138
|
+
config.trustedDomains.length > 0
|
|
139
|
+
? [...config.trustedDomains]
|
|
140
|
+
: [...this.defaults.trustedDomains],
|
|
141
|
+
};
|
|
142
|
+
// Ensure vwrUrl origin is in trustedDomains
|
|
143
|
+
const vwrUrlOrigin = new URL(result.vwrUrl).origin;
|
|
144
|
+
if (!result.trustedDomains.includes(vwrUrlOrigin)) {
|
|
145
|
+
result.trustedDomains.push(vwrUrlOrigin);
|
|
133
146
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
config.trustedDomains.push(defaultConfig.hubUrl);
|
|
147
|
+
// Ensure hubUrl origin is in trustedDomains
|
|
148
|
+
const hubUrlOrigin = new URL(result.hubUrl).origin;
|
|
149
|
+
if (!result.trustedDomains.includes(hubUrlOrigin)) {
|
|
150
|
+
result.trustedDomains.push(hubUrlOrigin);
|
|
139
151
|
}
|
|
152
|
+
// launchUrl is optional - only add to trustedDomains if explicitly set
|
|
153
|
+
if (result.launchUrl) {
|
|
154
|
+
try {
|
|
155
|
+
const launchUrlOrigin = new URL(result.launchUrl).origin;
|
|
156
|
+
if (!result.trustedDomains.includes(launchUrlOrigin)) {
|
|
157
|
+
result.trustedDomains.push(launchUrlOrigin);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
catch (_a) {
|
|
161
|
+
// Invalid launchUrl - skip adding to trustedDomains
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return result;
|
|
140
165
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
}
|
|
145
|
-
return config;
|
|
166
|
+
}
|
|
167
|
+
export const getVWRConfig = async (request, logger = defaultLogger) => {
|
|
168
|
+
return new VWRConfigFetcher(request, logger).fetch();
|
|
146
169
|
};
|
|
147
170
|
export const validateConfig = (config) => {
|
|
148
171
|
if (!config.vwrUrl)
|
|
@@ -156,17 +179,23 @@ export const validateConfig = (config) => {
|
|
|
156
179
|
return false;
|
|
157
180
|
return true;
|
|
158
181
|
};
|
|
159
|
-
const getDefaultConfig = () => {
|
|
160
|
-
|
|
161
|
-
const defaults = ENV_DEFAULTS[
|
|
182
|
+
const getDefaultConfig = (environment) => {
|
|
183
|
+
var _a;
|
|
184
|
+
const defaults = ENV_DEFAULTS[environment];
|
|
162
185
|
if (!defaults) {
|
|
163
|
-
throw new Error(`[VWR Config] Unknown environment: ${
|
|
186
|
+
throw new Error(`[VWR Config] Unknown environment: ${environment}. Valid: local, dev, staging, prod`);
|
|
164
187
|
}
|
|
165
188
|
return {
|
|
166
189
|
hubUrl: defaults.hubUrl,
|
|
167
190
|
vwrUrl: defaults.vwrUrl,
|
|
168
191
|
launchUrl: undefined,
|
|
169
|
-
|
|
192
|
+
platformApiUrl: defaults.platformApiUrl,
|
|
193
|
+
platformAuthApiUrl: defaults.platformAuthApiUrl,
|
|
194
|
+
trustedDomains: [
|
|
195
|
+
new URL(defaults.hubUrl).origin,
|
|
196
|
+
new URL(defaults.vwrUrl).origin,
|
|
197
|
+
...((_a = defaults.trustedOrigins) !== null && _a !== void 0 ? _a : []),
|
|
198
|
+
],
|
|
170
199
|
};
|
|
171
200
|
};
|
|
172
201
|
//# sourceMappingURL=vwrConfig.js.map
|
package/dist/vwrConfig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vwrConfig.js","sourceRoot":"","sources":["../src/vwrConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAe,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"vwrConfig.js","sourceRoot":"","sources":["../src/vwrConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAe,MAAM,UAAU,CAAA;AAqBrD,MAAM,sBAAsB,GAAG,IAAI,CAAA;AAEnC;;;;;;;;;;;;GAYG;AACH,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,IAAY,EAAO,EAAE;IACjD,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAA;IAC7D,OAAO,IAAI,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;AACxC,CAAC,CAAA;AAED,MAAM,gBAAgB;IAWlB,YAAY,OAAyB,EAAE,MAAc;;QACjD,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;QACrD,IAAI,CAAC,OAAO,GAAG,MAAA,OAAO,CAAC,OAAO,mCAAI,sBAAsB,CAAA;QACxD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;QAClC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;QACpC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;QAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;QAChC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAA;QACtC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAA;IAC5C,CAAC;IAED,KAAK,CAAC,KAAK;QACP,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,oGAAoG,CACvG,CAAA;QAED,gDAAgD;QAChD,MAAM,CACF,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACpB,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAClB,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,wBAAwB,EAAE;YAC/B,IAAI,CAAC,uBAAuB,EAAE;SACjC,CAAC,CAAA;QAEF,mDAAmD;QACnD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,yCAAyC,EACzC,WAAW,CACd,CAAA;YACD,OAAO,WAAW,CAAA;QACtB,CAAC;QACD,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,0CAA0C,EAC1C,YAAY,CACf,CAAA;YACD,OAAO,YAAY,CAAA;QACvB,CAAC;QACD,IAAI,kBAAkB,KAAK,IAAI,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,gDAAgD,EAChD,kBAAkB,CACrB,CAAA;YACD,OAAO,kBAAkB,CAAA;QAC7B,CAAC;QACD,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,+CAA+C,EAC/C,iBAAiB,CACpB,CAAA;YACD,OAAO,iBAAiB,CAAA;QAC5B,CAAC;QAED,mCAAmC;QACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,iEAAiE,CACpE,CAAA;QACD,OAAO,IAAI,CAAC,QAAQ,CAAA;IACxB,CAAC;IAEO,KAAK,CAAC,iBAAiB;;QAC3B,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,QAAQ,CAChB,IAAI,CAAC,UAAU,EACf,MAAA,MAAA,YAAY,CAAC,OAAO,CAAC,0CAAE,SAAS,mCAAI,EAAE,CACzC,CAAA;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAA;YACrD,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,0DAA0D,KAAK,EAAE,CACpE,CAAA;YACD,OAAO,IAAI,CAAA;QACf,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC5B,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,QAAQ,CAChB,UAAU,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,EAC7D,IAAI,CAAC,SAAS,CACjB,CAAA;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAA;YACtD,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,2DAA2D,KAAK,EAAE,CACrE,CAAA;YACD,OAAO,IAAI,CAAA;QACf,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,uBAAuB;QACjC,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,QAAQ,CAChB,gBAAgB,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,EAAE,EACrD,IAAI,CAAC,SAAS,CACjB,CAAA;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAA;YAC3D,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,gEAAgE,KAAK,EAAE,CAC1E,CAAA;YACD,OAAO,IAAI,CAAA;QACf,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,wBAAwB;QAClC,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,QAAQ,CAChB,gBAAgB,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE,EAC3F,IAAI,CAAC,SAAS,CACjB,CAAA;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAqC,GAAG,EAAE,CAAC,CAAA;YAC5D,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,iEAAiE,KAAK,EAAE,CAC3E,CAAA;YACD,OAAO,IAAI,CAAA;QACf,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,GAAQ;QACjC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QACxC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAEpE,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CACxB,IAAI,OAAO,CAAC,GAAG,EAAE;gBACb,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,MAAM,EAAE,UAAU,CAAC,MAAM;aAC5B,CAAC,CACL,CAAA;YAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACf,YAAY,CAAC,SAAS,CAAC,CAAA;gBACvB,OAAO,IAAI,CAAA;YACf,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;YACpC,YAAY,CAAC,SAAS,CAAC,CAAA;YACvB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QACnC,CAAC;QAAC,WAAM,CAAC;YACL,YAAY,CAAC,SAAS,CAAC,CAAA;YACvB,OAAO,IAAI,CAAA;QACf,CAAC;IACL,CAAC;IAEO,WAAW,CAAC,MAA0B;QAC1C,MAAM,MAAM,GAAc;YACtB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM;YAC7C,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM;YAC7C,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,cAAc,EACV,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc;YACzD,kBAAkB,EACd,MAAM,CAAC,kBAAkB,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB;YACjE,cAAc,EACV,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;gBACpC,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;gBAC5B,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC;gBAC5B,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;SAC9C,CAAA;QAED,4CAA4C;QAC5C,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAA;QAClD,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAChD,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC5C,CAAC;QAED,4CAA4C;QAC5C,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAA;QAClD,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAChD,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC5C,CAAC;QAED,uEAAuE;QACvE,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC;gBACD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAA;gBACxD,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;oBACnD,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;gBAC/C,CAAC;YACL,CAAC;YAAC,WAAM,CAAC;gBACL,oDAAoD;YACxD,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAA;IACjB,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC7B,OAAyB,EACzB,SAAiB,aAAa,EACZ,EAAE;IACpB,OAAO,IAAI,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAA;AACxD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAiB,EAAW,EAAE;IACzD,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IAEhC,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IAEhC,yCAAyC;IAEzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;QAAE,OAAO,KAAK,CAAA;SAClD,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAEzD,OAAO,IAAI,CAAA;AACf,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG,CAAC,WAAmB,EAAa,EAAE;;IACxD,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;IAE1C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACX,qCAAqC,WAAW,oCAAoC,CACvF,CAAA;IACL,CAAC;IAED,OAAO;QACH,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,SAAS,EAAE,SAAS;QACpB,cAAc,EAAE,QAAQ,CAAC,cAAc;QACvC,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;QAC/C,cAAc,EAAE;YACZ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM;YAC/B,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM;YAC/B,GAAG,CAAC,MAAA,QAAQ,CAAC,cAAc,mCAAI,EAAE,CAAC;SACrC;KACJ,CAAA;AACL,CAAC,CAAA"}
|