@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
@@ -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":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAe,MAAM,UAAU,CAAA;AAErD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE1D,mCAAmC;AACnC,uFAAuF;AACvF,MAAM,sBAAsB,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,gBAEhC,CAAA;AACf,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAA;AAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAA;AAClD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAA;AAEpD,+EAA+E;AAC/E,uEAAuE;AACvE,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,6BAA6B,CAAA;AAInE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAAE,SAAiB,aAAa,EAAE,EAAE;IAC5D,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;IACjE,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,sDAAsD,QAAQ,EAAE,CAAA;QAChF,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACrB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;IACD,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAE5D,gEAAgE;IAChE,yDAAyD;IACzD,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,MAAM,cAAc,CACrD,QAAQ,EACR,sBAAsB,EACtB,MAAM,CACT,CAAA;IAED,gEAAgE;IAChE,iDAAiD;IACjD,IAAI,YAAY,GAAG,aAAa,CAAA;IAChC,IAAI,CAAC,YAAY,EAAE,CAAC;QAChB,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QAC7C,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,gCAAgC,WAAW,EAAE,CAAC,CAAA;QAClE,CAAC;QACD,YAAY,GAAG,WAAW,CAAC,YAAY,CAAA;IAC3C,CAAC;IAED,kDAAkD;IAClD,qEAAqE;IACrE,MAAM,KAAK,GAAG,MAAM,mBAAmB,CACnC,QAAQ,EACR,QAAQ,EACR;QACI,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,IAAI;KAChB,EACD,YAAY,CACf,CAAA;IAED,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;IAE/C,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;QACxB,+CAA+C;QAC/C,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAClE,CAAC;IAED,4CAA4C;IAC5C,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAA;IAE3D,MAAM,gBAAgB,GAAqB;QACvC,SAAS,EAAE,UAAU;QACrB,UAAU,EAAE,WAAW;QACvB,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,WAAW;QACxB,YAAY,EAAE,YAAY;KAC7B,CAAA;IAED,MAAM,SAAS,GAAc,MAAM,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;IAEzE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAClE,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,qCAAqC,EAAE;QAC/C,MAAM,EAAE,SAAS,CAAC,MAAM;KAC3B,CAAC,CAAA;IACF,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QAC7D,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAA;QAErD,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;QACjE,CAAC;QAED,MAAM,GAAG,CAAC,IAAI,CAAC;YACX,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,QAAQ,EAAE,QAAQ;YAClB,QAAQ;YACR,WAAW,EAAE,WAAW;YACxB,cAAc,EAAE,SAAS,CAAC,cAAc;YACxC,kBAAkB,EAAE,YAAY;SACnC,CAAC,CAAA;QACF,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAA;IACvD,CAAC;IAAC,OAAO,QAAQ,EAAE,CAAC;QAChB,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE;YACpC,KAAK,EACD,QAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;YACnE,MAAM,EAAE,SAAS,CAAC,MAAM;SAC3B,CAAC,CAAA;QACF,MAAM,QAAQ,CAAA,CAAC,uCAAuC;IAC1D,CAAC;AACL,CAAC,CAAA"}
package/dist/main.js CHANGED
@@ -1,2 +1,2 @@
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();
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();
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 type * as VWR from \"@volley/vwr\"\n\nimport { fetchAmplitudeFlags } from \"./amplitudeFlagFetcher\"\nimport { ENV_DEFAULTS } from \"./envDefaults\"\nimport { getDeviceId } from \"./getDeviceId\"\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\nconst ENVIRONMENT = import.meta.env.VITE_ENVIRONMENT\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 (fast, local)\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 * @param logger - Optional logger, defaults to console\n */\nexport const loadVwr = async (logger: Logger = defaultLogger) => {\n if (!ENVIRONMENT || !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 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(\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,ECwBaE,EAAU,MAAOC,EAAiBJ,IAAkB,CAEzD,MAAM,IAAI,MAAM,4CAA4C,CA4FpE,ECjIMK,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"}
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"}
@@ -3,8 +3,6 @@ export type VWRConfig = {
3
3
  hubUrl: string;
4
4
  vwrUrl: string;
5
5
  launchUrl: string | undefined;
6
- platformApiUrl: string;
7
- platformAuthApiUrl: string;
8
6
  trustedDomains: Array<string>;
9
7
  };
10
8
  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,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;AAsBD,eAAO,MAAM,YAAY,GACrB,SAAS,gBAAgB,EACzB,SAAQ,MAAsB,KAC/B,OAAO,CAAC,SAAS,CAmEnB,CAAA;AAsKD,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,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"}
package/dist/vwrConfig.js CHANGED
@@ -122,36 +122,25 @@ const tryGetVWRConfig = async (url, timeout) => {
122
122
  };
123
123
  const parseConfig = (config) => {
124
124
  const defaultConfig = getDefaultConfig();
125
- if (!config.platformApiUrl) {
126
- config.platformApiUrl = defaultConfig.platformApiUrl;
127
- }
128
- if (!config.platformAuthApiUrl) {
129
- config.platformAuthApiUrl = defaultConfig.platformAuthApiUrl;
130
- }
131
125
  if (!Array.isArray(config.trustedDomains) ||
132
126
  config.trustedDomains.length === 0) {
133
127
  config.trustedDomains = defaultConfig.trustedDomains;
134
128
  }
135
129
  if (!config.vwrUrl) {
136
130
  config.vwrUrl = defaultConfig.vwrUrl;
137
- const vwrUrlOrigin = new URL(defaultConfig.vwrUrl).origin;
138
- if (!config.trustedDomains.includes(vwrUrlOrigin)) {
139
- config.trustedDomains.push(vwrUrlOrigin);
131
+ if (!config.trustedDomains.includes(defaultConfig.vwrUrl)) {
132
+ config.trustedDomains.push(defaultConfig.vwrUrl);
140
133
  }
141
134
  }
142
135
  if (!config.hubUrl) {
143
136
  config.hubUrl = defaultConfig.hubUrl;
144
- const hubUrlOrigin = new URL(defaultConfig.hubUrl).origin;
145
- if (!config.trustedDomains.includes(hubUrlOrigin)) {
146
- config.trustedDomains.push(hubUrlOrigin);
137
+ if (!config.trustedDomains.includes(defaultConfig.hubUrl)) {
138
+ config.trustedDomains.push(defaultConfig.hubUrl);
147
139
  }
148
140
  }
149
141
  // launchUrl is optional - only add to trustedDomains if explicitly set
150
- if (config.launchUrl) {
151
- const launchUrlOrigin = new URL(config.launchUrl).origin;
152
- if (!config.trustedDomains.includes(launchUrlOrigin)) {
153
- config.trustedDomains.push(launchUrlOrigin);
154
- }
142
+ if (config.launchUrl && !config.trustedDomains.includes(config.launchUrl)) {
143
+ config.trustedDomains.push(config.launchUrl);
155
144
  }
156
145
  return config;
157
146
  };
@@ -168,7 +157,6 @@ export const validateConfig = (config) => {
168
157
  return true;
169
158
  };
170
159
  const getDefaultConfig = () => {
171
- var _a;
172
160
  const ENVIRONMENT = import.meta.env.VITE_ENVIRONMENT || "dev";
173
161
  const defaults = ENV_DEFAULTS[ENVIRONMENT];
174
162
  if (!defaults) {
@@ -178,13 +166,7 @@ const getDefaultConfig = () => {
178
166
  hubUrl: defaults.hubUrl,
179
167
  vwrUrl: defaults.vwrUrl,
180
168
  launchUrl: undefined,
181
- platformApiUrl: defaults.platformApiUrl,
182
- platformAuthApiUrl: defaults.platformAuthApiUrl,
183
- trustedDomains: [
184
- new URL(defaults.hubUrl).origin,
185
- new URL(defaults.vwrUrl).origin,
186
- ...((_a = defaults.trustedOrigins) !== null && _a !== void 0 ? _a : []),
187
- ],
169
+ trustedDomains: [defaults.hubUrl, defaults.vwrUrl],
188
170
  };
189
171
  };
190
172
  //# sourceMappingURL=vwrConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vwrConfig.js","sourceRoot":"","sources":["../src/vwrConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vwrConfig.js","sourceRoot":"","sources":["../src/vwrConfig.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import baseConfig from "@platform/eslint-config"
2
+
3
+ export default [
4
+ ...baseConfig,
5
+ {
6
+ ignores: ["dist/**", "node_modules/**"],
7
+ },
8
+ {
9
+ languageOptions: {
10
+ parserOptions: {
11
+ project: ["tsconfig.json", "tsconfig.eslint.json"],
12
+ tsconfigRootDir: import.meta.dirname,
13
+ },
14
+ },
15
+ rules: {
16
+ "no-console": "off",
17
+ "@typescript-eslint/explicit-function-return-type": "off",
18
+ "@typescript-eslint/prefer-nullish-coalescing": "off",
19
+ "@typescript-eslint/prefer-optional-chain": "off",
20
+ "@typescript-eslint/no-explicit-any": "off",
21
+ },
22
+ },
23
+ ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volley/vwr-loader",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "type": "module",
5
5
  "description": "Vite-based VWR loader for all Volley platforms",
6
6
  "main": "dist/index.js",
@@ -13,22 +13,16 @@
13
13
  "./envDefaults": "./dist/envDefaults.js"
14
14
  },
15
15
  "bin": {
16
- "build-loader": "./dist/cli.js"
16
+ "build-loader": "./scripts/build.js"
17
17
  },
18
- "files": [
19
- "dist",
20
- "src"
21
- ],
22
18
  "scripts": {
23
- "build": "tsc && vite build && vite build -c vite.cli.config.ts && chmod +x dist/cli.js",
24
- "build:cli": "vite build -c vite.cli.config.ts",
19
+ "build": "tsc && vite build",
25
20
  "build:loader": "vite build",
26
21
  "typecheck": "tsc --noEmit",
27
22
  "test": "vitest run",
28
23
  "test:watch": "vitest",
29
24
  "format": "eslint . --fix",
30
- "lint": "eslint .",
31
- "semantic-release": "semantic-release"
25
+ "lint": "eslint ."
32
26
  },
33
27
  "dependencies": {
34
28
  "commander": "^12.0.0",
@@ -39,16 +33,11 @@
39
33
  },
40
34
  "devDependencies": {
41
35
  "@platform/eslint-config": "workspace:*",
42
- "@semantic-release/git": "^10.0.1",
43
- "@semantic-release/npm": "^12.0.1",
44
36
  "@types/fs-extra": "^11.0.0",
45
37
  "@types/node": "^20.0.0",
46
- "@volley/vwr": "workspace:*",
47
38
  "eslint": "^9.25.1",
48
39
  "jsdom": "^24.1.3",
49
40
  "prettier": "~3.0.3",
50
- "semantic-release": "^24.2.3",
51
- "semantic-release-monorepo": "^8.0.2",
52
41
  "typescript": "^5.0.0",
53
42
  "vitest": "^1.0.0"
54
43
  }
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env -S node --import tsx
2
+ import "./build.ts"
@@ -0,0 +1,207 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from "commander"
3
+ import { config as loadDotenv } from "dotenv"
4
+ import fs from "fs-extra"
5
+ import path from "path"
6
+ import { fileURLToPath } from "url"
7
+ import { build } from "vite"
8
+
9
+ import { ENV_DEFAULTS } from "../src/envDefaults.js"
10
+
11
+ const __dirname = path.dirname(fileURLToPath(import.meta.url))
12
+
13
+ const program = new Command()
14
+
15
+ // Platforms that support reading environment from native shell at runtime
16
+ // These platforms don't require --env flag (it's optional as an override)
17
+ const NATIVE_ENV_PLATFORMS = ["FIRE_TV", "FIRETV"]
18
+
19
+ program
20
+ .name("build-loader")
21
+ .description("Build vwr-loader with environment configuration")
22
+ .requiredOption(
23
+ "--platform <platform>",
24
+ "Platform: FIRE_TV, SAMSUNG_TV, LG_TV, MOBILE, WEB"
25
+ )
26
+ .option(
27
+ "--env <env>",
28
+ "Environment: local, dev, staging, prod (required for non-Fire TV platforms)"
29
+ )
30
+ .requiredOption("--output <path>", "Output directory")
31
+ .option("--hubUrl <url>", "Override Hub URL")
32
+ .option("--amplitudeKey <key>", "Override Amplitude deployment key")
33
+ .option("--vwrUrl <url>", "Override VWR URL")
34
+ .option("--configUrl <url>", "Override VWR Config URL")
35
+ .option("--configFile <filename>", "Override VWR Config Filename")
36
+ .option("--launchUrl <url>", "Override launch url")
37
+ .parse()
38
+
39
+ const opts = program.opts()
40
+ const normalizedPlatform = opts.platform.toUpperCase()
41
+ const supportsNativeEnv = NATIVE_ENV_PLATFORMS.includes(normalizedPlatform)
42
+
43
+ // Validate --env is provided for platforms that don't support native env reading
44
+ if (!opts.env && !supportsNativeEnv) {
45
+ console.error(
46
+ `❌ --env is required for platform "${opts.platform}"\n` +
47
+ ` Only Fire TV can read environment from native shell at runtime.\n` +
48
+ ` Valid environments: local, dev, staging, prod`
49
+ )
50
+ process.exit(1)
51
+ }
52
+
53
+ // For platforms with native env support, log that env will be read at runtime
54
+ if (!opts.env && supportsNativeEnv) {
55
+ console.log(
56
+ `ℹ️ --env not provided. ${opts.platform} will read environment from native shell at runtime.`
57
+ )
58
+ }
59
+
60
+ // Try to read from shell's .env file (run from shell directory)
61
+ let shellEnv: Record<string, string> = {}
62
+ if (opts.env) {
63
+ const envFile = path.join(process.cwd(), `.env.${opts.env}`)
64
+ if (fs.existsSync(envFile)) {
65
+ console.log(`📄 Reading config from ${envFile}`)
66
+ const result = loadDotenv({ path: envFile })
67
+ shellEnv = result.parsed || {}
68
+ } else {
69
+ console.log(`ℹ️ No .env.${opts.env} found, using defaults/CLI flags`)
70
+ }
71
+ }
72
+
73
+ // Read shell version from package.json (for web shell)
74
+ let shellVersion = "unknown"
75
+ const packageJsonPath = path.join(process.cwd(), "package.json")
76
+ if (fs.existsSync(packageJsonPath)) {
77
+ try {
78
+ const packageJson = JSON.parse(
79
+ fs.readFileSync(packageJsonPath, "utf-8")
80
+ )
81
+ shellVersion = packageJson.version || "unknown"
82
+ } catch {
83
+ console.warn(`⚠️ Could not read version from package.json`)
84
+ }
85
+ }
86
+
87
+ // Get predefined defaults (use "dev" as fallback for config URL defaults when env not specified)
88
+ const envDefaults = opts.env ? ENV_DEFAULTS[opts.env] : undefined
89
+ if (opts.env && !envDefaults) {
90
+ console.error(`❌ Unknown environment: ${opts.env}`)
91
+ console.error(` Valid: local, dev, staging, prod`)
92
+ process.exit(1)
93
+ }
94
+
95
+ // For Fire TV without --env, use dev defaults for config URLs (actual env comes from native at runtime)
96
+ const fallbackDefaults = ENV_DEFAULTS["dev"]
97
+
98
+ // Config precedence: CLI > shell .env > defaults
99
+ const config = {
100
+ VITE_PLATFORM: normalizedPlatform,
101
+ VITE_ENVIRONMENT: opts.env, // undefined for Fire TV without --env (reads from native)
102
+ VITE_HUB_URL:
103
+ opts.hubUrl ||
104
+ shellEnv.VITE_HUB_URL ||
105
+ envDefaults?.hubUrl ||
106
+ fallbackDefaults.hubUrl,
107
+ VITE_AMPLITUDE_DEPLOYMENT_KEY:
108
+ opts.amplitudeKey ||
109
+ shellEnv.VITE_AMPLITUDE_DEPLOYMENT_KEY ||
110
+ envDefaults?.amplitudeKey ||
111
+ fallbackDefaults.amplitudeKey ||
112
+ "",
113
+ VITE_VWR_URL:
114
+ opts.vwrUrl ||
115
+ shellEnv.VITE_VWR_URL ||
116
+ envDefaults?.vwrUrl ||
117
+ fallbackDefaults.vwrUrl,
118
+ VITE_CONFIG_URL:
119
+ opts.configUrl ||
120
+ shellEnv.VITE_CONFIG_URL ||
121
+ envDefaults?.configUrl ||
122
+ fallbackDefaults.configUrl,
123
+ VITE_CONFIG_FILE:
124
+ opts.configFile ||
125
+ shellEnv.VITE_CONFIG_FILE ||
126
+ envDefaults?.configFile ||
127
+ fallbackDefaults.configFile,
128
+ VITE_LAUNCH_URL:
129
+ opts.launchUrl ||
130
+ shellEnv.VITE_LAUNCH_URL ||
131
+ opts.hubUrl ||
132
+ shellEnv.VITE_HUB_URL ||
133
+ envDefaults?.hubUrl ||
134
+ fallbackDefaults.hubUrl,
135
+ }
136
+
137
+ console.log("🔧 Build configuration:")
138
+ console.log(` Platform: ${config.VITE_PLATFORM}`)
139
+ console.log(
140
+ ` Environment: ${config.VITE_ENVIRONMENT ?? "(from native at runtime)"}`
141
+ )
142
+ console.log(` Hub URL: ${config.VITE_HUB_URL}`)
143
+ console.log(` VWR URL: ${config.VITE_VWR_URL}`)
144
+ console.log(
145
+ ` Amplitude: ${
146
+ config.VITE_AMPLITUDE_DEPLOYMENT_KEY ? "***" : "(not set)"
147
+ }`
148
+ )
149
+
150
+ // Build with Vite (inline config to avoid path resolution issues)
151
+ const loaderSrcDir = path.join(__dirname, "../src")
152
+ const loaderDistDir = path.join(__dirname, "../dist")
153
+
154
+ // Build define config - VITE_ENVIRONMENT is undefined for Fire TV (reads from native)
155
+ const defineConfig: Record<string, string> = {
156
+ "import.meta.env.VITE_PLATFORM": JSON.stringify(config.VITE_PLATFORM),
157
+ "import.meta.env.VITE_SHELL_VERSION": JSON.stringify(shellVersion),
158
+ "import.meta.env.VITE_HUB_URL": JSON.stringify(config.VITE_HUB_URL),
159
+ "import.meta.env.VITE_AMPLITUDE_DEPLOYMENT_KEY": JSON.stringify(
160
+ config.VITE_AMPLITUDE_DEPLOYMENT_KEY
161
+ ),
162
+ "import.meta.env.VITE_VWR_URL": JSON.stringify(config.VITE_VWR_URL),
163
+ "import.meta.env.VITE_CONFIG_URL": JSON.stringify(config.VITE_CONFIG_URL),
164
+ "import.meta.env.VITE_CONFIG_FILE": JSON.stringify(config.VITE_CONFIG_FILE),
165
+ "import.meta.env.VITE_LAUNCH_URL": JSON.stringify(config.VITE_LAUNCH_URL),
166
+ }
167
+
168
+ // Only inject VITE_ENVIRONMENT if provided (Fire TV reads from native otherwise)
169
+ if (config.VITE_ENVIRONMENT) {
170
+ defineConfig["import.meta.env.VITE_ENVIRONMENT"] = JSON.stringify(
171
+ config.VITE_ENVIRONMENT
172
+ )
173
+ }
174
+
175
+ await build({
176
+ configFile: false,
177
+ root: loaderSrcDir,
178
+ mode: opts.env ?? "production", // Use production mode for minification when env not specified
179
+ build: {
180
+ outDir: loaderDistDir,
181
+ emptyOutDir: true,
182
+ target: "es2017",
183
+ minify: opts.env === "prod" || !opts.env ? "esbuild" : false,
184
+ sourcemap: true,
185
+ rollupOptions: {
186
+ input: {
187
+ main: path.join(loaderSrcDir, "index.html"),
188
+ },
189
+ output: {
190
+ entryFileNames: "[name].js",
191
+ assetFileNames: "[name].[ext]",
192
+ },
193
+ },
194
+ },
195
+ define: defineConfig,
196
+ })
197
+
198
+ // Copy build output to specified directory
199
+ const distPath = path.join(__dirname, "../dist")
200
+ const outputPath = path.resolve(opts.output)
201
+
202
+ await fs.ensureDir(outputPath)
203
+ await fs.copy(distPath, outputPath, { overwrite: true })
204
+
205
+ console.log(`✅ VWR loader built successfully`)
206
+ console.log(` Output: ${outputPath}`)
207
+ console.log(` Files: index.html, main.js`)
@@ -25,11 +25,6 @@ describe("fetchAmplitudeFlags", () => {
25
25
  })
26
26
 
27
27
  it("fetches flags successfully from Amplitude with context", async () => {
28
- // Mock getShellVersion to return expected version for SAMSUNG_TV
29
- vi.spyOn(getShellVersionModule, "getShellVersion").mockResolvedValue(
30
- "1.0.0"
31
- )
32
-
33
28
  mockFetch.mockResolvedValueOnce({
34
29
  ok: true,
35
30
  json: async () => ({
@@ -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 // Used for amplitude flag fetch, not part of VWRConfig
9
- trustedOrigins?: string[]
10
7
  }
11
8
 
12
9
  const CONFIG_URL_DEFAULT = "https://vwr.volley.tv/config/"
@@ -18,36 +15,22 @@ const prodConfig: EnvConfig = {
18
15
  vwrUrl: `https://vwr.volley.tv/${VWR_URL_PATH_DEFAULT}`,
19
16
  configUrl: CONFIG_URL_DEFAULT,
20
17
  configFile: CONFIG_FILE_DEFAULT,
21
- platformApiUrl: "https://platform.volley-services.net",
22
- platformAuthApiUrl: "https://auth.volley.tv",
23
18
  amplitudeKey: "",
24
19
  }
25
20
 
26
21
  export const ENV_DEFAULTS: Record<string, EnvConfig> = {
27
22
  local: {
28
- hubUrl: import.meta.env.VITE_HUB_URL || "http://localhost:5173",
29
- vwrUrl: import.meta.env.VITE_VWR_URL || "http://localhost:5174/vwr.js",
30
- configUrl:
31
- import.meta.env.VITE_CONFIG_URL || "http://localhost:5174/config/",
32
- configFile: import.meta.env.VITE_CONFIG_FILE || CONFIG_FILE_DEFAULT,
33
- platformApiUrl:
34
- import.meta.env.VITE_PLATFORM_API_URL ||
35
- "https://platform-dev.volley-services.net",
36
- platformAuthApiUrl:
37
- import.meta.env.VITE_PLATFORM_AUTH_API_URL ||
38
- "https://auth-dev.volley.tv",
23
+ hubUrl: "http://localhost:5173",
24
+ vwrUrl: "http://localhost:5174/vwr.js",
25
+ configUrl: "http://localhost:5174/config/",
26
+ configFile: CONFIG_FILE_DEFAULT,
39
27
  amplitudeKey: "client-uJJVW3zKPC1G9kqPhUumLnZN6eaY42iQ",
40
- trustedOrigins: import.meta.env.VITE_TRUSTED_ORIGINS?.split(",").filter(
41
- Boolean
42
- ),
43
28
  },
44
29
  dev: {
45
30
  hubUrl: "https://game-clients-dev.volley.tv/hub",
46
31
  vwrUrl: `https://vwr.volley.tv/dev/${VWR_URL_PATH_DEFAULT}`,
47
32
  configUrl: CONFIG_URL_DEFAULT,
48
33
  configFile: CONFIG_FILE_DEFAULT,
49
- platformApiUrl: "https://platform-dev.volley-services.net",
50
- platformAuthApiUrl: "https://auth-dev.volley.tv",
51
34
  amplitudeKey: "client-uJJVW3zKPC1G9kqPhUumLnZN6eaY42iQ",
52
35
  },
53
36
  staging: {
@@ -55,8 +38,6 @@ export const ENV_DEFAULTS: Record<string, EnvConfig> = {
55
38
  vwrUrl: `https://vwr.volley.tv/staging/${VWR_URL_PATH_DEFAULT}`,
56
39
  configUrl: CONFIG_URL_DEFAULT,
57
40
  configFile: CONFIG_FILE_DEFAULT,
58
- platformApiUrl: "https://platform-staging.volley-services.net",
59
- platformAuthApiUrl: "https://auth-staging.volley.tv",
60
41
  amplitudeKey: "",
61
42
  },
62
43
  prod: prodConfig,