@volley/vwr-loader 1.0.4 → 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 CHANGED
@@ -72,6 +72,51 @@ The package includes a `vwr-loader.html` template that can be used as the entry
72
72
  - `__HUB_URL__` - Hub application URL
73
73
  - `__VWR_URL__` - Default VWR bundle URL
74
74
 
75
+ ## CLI: build-loader
76
+
77
+ The `build-loader` CLI builds platform-specific VWR loader bundles.
78
+
79
+ ```bash
80
+ npx build-loader --platform <platform> --output <path> [--env <env>] [options]
81
+ ```
82
+
83
+ ### Required Options
84
+
85
+ | Option | Description |
86
+ |--------|-------------|
87
+ | `--platform` | Platform: `FIRE_TV`, `SAMSUNG_TV`, `LG_TV`, `MOBILE`, `WEB` |
88
+ | `--output` | Output directory path |
89
+
90
+ ### Optional Options
91
+
92
+ | Option | Description |
93
+ |--------|-------------|
94
+ | `--env` | Environment: `local`, `dev`, `staging`, `prod` |
95
+ | `--hubUrl` | Override Hub URL |
96
+ | `--vwrUrl` | Override VWR URL |
97
+ | `--configUrl` | Override VWR Config URL |
98
+ | `--configFile` | Override VWR Config filename |
99
+ | `--amplitudeKey` | Override Amplitude deployment key |
100
+ | `--launchUrl` | Override launch URL |
101
+
102
+ ### Environment Handling
103
+
104
+ - **Fire TV**: `--env` is **optional**. If omitted, environment is read from native `BuildConfig.ENVIRONMENT` at runtime. This ensures prod APKs cannot accidentally run dev VWR.
105
+ - **Other platforms**: `--env` is **required** since they don't support native environment reading.
106
+
107
+ ### Examples
108
+
109
+ ```bash
110
+ # Fire TV (reads env from native at runtime)
111
+ npx build-loader --platform FIRE_TV --output ./www
112
+
113
+ # Fire TV with env override (for testing)
114
+ npx build-loader --platform FIRE_TV --env dev --output ./www
115
+
116
+ # Samsung TV (env required)
117
+ npx build-loader --platform SAMSUNG_TV --env prod --output ./www
118
+ ```
119
+
75
120
  ## Development Commands
76
121
 
77
122
  ```bash
@@ -1,3 +1,4 @@
1
+ import { type Logger } from "./logger";
1
2
  export interface AmplitudeConfig {
2
3
  apiKey: string;
3
4
  apiUrl?: string;
@@ -16,8 +17,9 @@ export interface FlagResult {
16
17
  * @param deviceId - Unique device identifier
17
18
  * @param platform - Platform name (samsung, lg, firetv, ios, android)
18
19
  * @param config - Amplitude configuration
19
- * @param shellVersion - Optional shell version (if not provided, will be fetched automatically)
20
+ * @param shellVersion - Shell version for flag targeting
21
+ * @param logger - Optional logger, defaults to console
20
22
  * @returns Flag values with safe defaults on error
21
23
  */
22
- export declare function fetchAmplitudeFlags(deviceId: string, platform: string, config: AmplitudeConfig, shellVersion?: string): Promise<FlagResult>;
24
+ export declare function fetchAmplitudeFlags(deviceId: string, platform: string, config: AmplitudeConfig, shellVersion: string, logger?: Logger): Promise<FlagResult>;
23
25
  //# sourceMappingURL=amplitudeFlagFetcher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"amplitudeFlagFetcher.d.ts","sourceRoot":"","sources":["../src/amplitudeFlagFetcher.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,UAAU;IACvB,aAAa,EAAE,OAAO,CAAA;CACzB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CACrC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,eAAe,EACvB,YAAY,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,UAAU,CAAC,CAyDrB"}
1
+ {"version":3,"file":"amplitudeFlagFetcher.d.ts","sourceRoot":"","sources":["../src/amplitudeFlagFetcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA;AAErD,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,UAAU;IACvB,aAAa,EAAE,OAAO,CAAA;CACzB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,mBAAmB,CACrC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,eAAe,EACvB,YAAY,EAAE,MAAM,EACpB,MAAM,GAAE,MAAsB,GAC/B,OAAO,CAAC,UAAU,CAAC,CAgErB"}
@@ -1,4 +1,4 @@
1
- import { getShellVersion } from "./getShellVersion";
1
+ import { defaultLogger } from "./logger";
2
2
  /**
3
3
  * Fetch feature flags from Amplitude Experiment REST API.
4
4
  *
@@ -9,30 +9,30 @@ import { getShellVersion } from "./getShellVersion";
9
9
  * @param deviceId - Unique device identifier
10
10
  * @param platform - Platform name (samsung, lg, firetv, ios, android)
11
11
  * @param config - Amplitude configuration
12
- * @param shellVersion - Optional shell version (if not provided, will be fetched automatically)
12
+ * @param shellVersion - Shell version for flag targeting
13
+ * @param logger - Optional logger, defaults to console
13
14
  * @returns Flag values with safe defaults on error
14
15
  */
15
- export async function fetchAmplitudeFlags(deviceId, platform, config, shellVersion) {
16
+ export async function fetchAmplitudeFlags(deviceId, platform, config, shellVersion, logger = defaultLogger) {
16
17
  var _a, _b, _c;
17
18
  const { apiKey, apiUrl = "https://api.lab.amplitude.com/v1/vardata", timeout = 2000, } = config;
19
+ // Build context with user_properties
20
+ const context = {
21
+ user_properties: {
22
+ platformEnum: platform,
23
+ nativeShellAppVersion: shellVersion,
24
+ },
25
+ };
26
+ // Build query parameters
27
+ const params = new URLSearchParams({
28
+ user_id: deviceId,
29
+ flag_keys: "vwr-enabled",
30
+ context: JSON.stringify(context),
31
+ });
32
+ // Start timeout immediately before the fetch call for accurate timing
18
33
  const controller = new AbortController();
19
34
  const timeoutId = setTimeout(() => controller.abort(), timeout);
20
35
  try {
21
- // Get shell version if not provided
22
- const version = shellVersion !== null && shellVersion !== void 0 ? shellVersion : (await getShellVersion(platform));
23
- // Build context with user_properties
24
- const context = {
25
- user_properties: {
26
- platformEnum: platform,
27
- nativeShellAppVersion: version,
28
- },
29
- };
30
- // Build query parameters
31
- const params = new URLSearchParams({
32
- user_id: deviceId,
33
- flag_keys: "vwr-enabled",
34
- context: JSON.stringify(context),
35
- });
36
36
  const response = await fetch(`${apiUrl}?${params}`, {
37
37
  method: "GET",
38
38
  headers: {
@@ -50,7 +50,14 @@ export async function fetchAmplitudeFlags(deviceId, platform, config, shellVersi
50
50
  };
51
51
  }
52
52
  catch (error) {
53
- console.error("[Shell] Amplitude flag fetch failed:", error);
53
+ clearTimeout(timeoutId);
54
+ // Provide clear warning message for abort vs other errors
55
+ if (error instanceof Error && error.name === "AbortError") {
56
+ logger.warn(`[Shell] Amplitude flag fetch aborted because it took longer than ${timeout}ms`);
57
+ }
58
+ else {
59
+ logger.warn("[Shell] Amplitude flag fetch failed:", { error });
60
+ }
54
61
  // Return safe defaults - runs legacy path
55
62
  return {
56
63
  "vwr-enabled": false,
@@ -1 +1 @@
1
- {"version":3,"file":"amplitudeFlagFetcher.js","sourceRoot":"","sources":["../src/amplitudeFlagFetcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAYnD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,QAAgB,EAChB,QAAgB,EAChB,MAAuB,EACvB,YAAqB;;IAErB,MAAM,EACF,MAAM,EACN,MAAM,GAAG,0CAA0C,EACnD,OAAO,GAAG,IAAI,GACjB,GAAG,MAAM,CAAA;IAEV,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IACxC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAA;IAE/D,IAAI,CAAC;QACD,oCAAoC;QACpC,MAAM,OAAO,GAAG,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,CAAC,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAA;QAEjE,qCAAqC;QACrC,MAAM,OAAO,GAAG;YACZ,eAAe,EAAE;gBACb,YAAY,EAAE,QAAQ;gBACtB,qBAAqB,EAAE,OAAO;aACjC;SACJ,CAAA;QAED,yBAAyB;QACzB,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YAC/B,OAAO,EAAE,QAAQ;YACjB,SAAS,EAAE,aAAa;YACxB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SACnC,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,IAAI,MAAM,EAAE,EAAE;YAChD,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACL,aAAa,EAAE,WAAW,MAAM,EAAE;aACrC;YACD,MAAM,EAAE,UAAU,CAAC,MAAM;SAC5B,CAAC,CAAA;QAEF,YAAY,CAAC,SAAS,CAAC,CAAA;QAEvB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;QAChE,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAElC,OAAO;YACH,aAAa,EACT,MAAA,MAAA,MAAA,IAAI,CAAC,aAAa,CAAC,0CAAE,OAAO,0CAAG,aAAa,CAAC,mCAAI,KAAK;SAC7D,CAAA;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAA;QAE5D,0CAA0C;QAC1C,OAAO;YACH,aAAa,EAAE,KAAK;SACvB,CAAA;IACL,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"amplitudeFlagFetcher.js","sourceRoot":"","sources":["../src/amplitudeFlagFetcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAe,MAAM,UAAU,CAAA;AAYrD;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,QAAgB,EAChB,QAAgB,EAChB,MAAuB,EACvB,YAAoB,EACpB,SAAiB,aAAa;;IAE9B,MAAM,EACF,MAAM,EACN,MAAM,GAAG,0CAA0C,EACnD,OAAO,GAAG,IAAI,GACjB,GAAG,MAAM,CAAA;IAEV,qCAAqC;IACrC,MAAM,OAAO,GAAG;QACZ,eAAe,EAAE;YACb,YAAY,EAAE,QAAQ;YACtB,qBAAqB,EAAE,YAAY;SACtC;KACJ,CAAA;IAED,yBAAyB;IACzB,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QAC/B,OAAO,EAAE,QAAQ;QACjB,SAAS,EAAE,aAAa;QACxB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;KACnC,CAAC,CAAA;IAEF,sEAAsE;IACtE,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IACxC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAA;IAE/D,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,IAAI,MAAM,EAAE,EAAE;YAChD,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACL,aAAa,EAAE,WAAW,MAAM,EAAE;aACrC;YACD,MAAM,EAAE,UAAU,CAAC,MAAM;SAC5B,CAAC,CAAA;QAEF,YAAY,CAAC,SAAS,CAAC,CAAA;QAEvB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;QAChE,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAElC,OAAO;YACH,aAAa,EACT,MAAA,MAAA,MAAA,IAAI,CAAC,aAAa,CAAC,0CAAE,OAAO,0CAAG,aAAa,CAAC,mCAAI,KAAK;SAC7D,CAAA;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,YAAY,CAAC,SAAS,CAAC,CAAA;QAEvB,0DAA0D;QAC1D,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACxD,MAAM,CAAC,IAAI,CACP,oEAAoE,OAAO,IAAI,CAClF,CAAA;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,IAAI,CAAC,sCAAsC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QAClE,CAAC;QAED,0CAA0C;QAC1C,OAAO;YACH,aAAa,EAAE,KAAK;SACvB,CAAA;IACL,CAAC;AACL,CAAC"}
package/dist/cli.js CHANGED
@@ -48,8 +48,18 @@ const ENV_DEFAULTS = {
48
48
  amplitudeKey: ""
49
49
  },
50
50
  prod: prodConfig,
51
- production: prodConfig
51
+ production: prodConfig,
52
52
  // Alias for prod
53
+ qa: {
54
+ // QA uses staging infrastructure
55
+ hubUrl: "https://game-clients-staging.volley.tv/hub",
56
+ vwrUrl: `https://vwr.volley.tv/staging/${VWR_URL_PATH_DEFAULT}`,
57
+ configUrl: CONFIG_URL_DEFAULT,
58
+ configFile: CONFIG_FILE_DEFAULT,
59
+ platformApiUrl: "https://platform-staging.volley-services.net",
60
+ platformAuthApiUrl: "https://auth-staging.volley.tv",
61
+ amplitudeKey: ""
62
+ }
53
63
  };
54
64
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
55
65
  const cliPackageJson = JSON.parse(
@@ -64,26 +74,56 @@ const VALID_PLATFORMS = [
64
74
  "WEB"
65
75
  ];
66
76
  const program = new Command();
77
+ const NATIVE_ENV_PLATFORMS = ["FIRE_TV"];
67
78
  program.name("build-loader").version(cliPackageJson.version).description("Build vwr-loader with environment configuration").requiredOption(
68
79
  "--platform <platform>",
69
80
  "Platform: FIRE_TV, ANDROID_MOBILE, IOS_MOBILE, SAMSUNG_TV, LG_TV, WEB"
70
- ).requiredOption("--env <env>", "Environment: local, dev, staging, prod").requiredOption("--output <path>", "Output directory").option("--hubUrl <url>", "Override Hub URL").option("--amplitudeKey <key>", "Override Amplitude deployment key").option("--vwrUrl <url>", "Override VWR URL").option("--configUrl <url>", "Override VWR Config URL").option("--configFile <filename>", "Override VWR Config Filename").option("--launchUrl <url>", "Override launch url").parse();
81
+ ).option(
82
+ "--env <env>",
83
+ "Environment: local, dev, staging, prod (required for non-Fire TV platforms)"
84
+ ).requiredOption("--output <path>", "Output directory").option("--hubUrl <url>", "Override Hub URL").option("--amplitudeKey <key>", "Override Amplitude deployment key").option("--vwrUrl <url>", "Override VWR URL").option("--configUrl <url>", "Override VWR Config URL").option("--configFile <filename>", "Override VWR Config Filename").option("--launchUrl <url>", "Override launch url").parse();
71
85
  const opts = program.opts();
72
- const normalizedPlatform = opts.platform.toUpperCase();
86
+ const normalizedPlatform = normalizePlatform(opts.platform.toUpperCase());
87
+ const supportsNativeEnv = NATIVE_ENV_PLATFORMS.includes(normalizedPlatform);
88
+ function normalizePlatform(platform) {
89
+ const aliases = {
90
+ FIRETV: "FIRE_TV",
91
+ SAMSUNGTV: "SAMSUNG_TV",
92
+ LGTV: "LG_TV",
93
+ ANDROIDMOBILE: "ANDROID_MOBILE",
94
+ IOSMOBILE: "IOS_MOBILE"
95
+ };
96
+ return aliases[platform] || platform;
97
+ }
98
+ if (!opts.env && !supportsNativeEnv) {
99
+ console.error(
100
+ `❌ --env is required for platform "${opts.platform}"
101
+ Only Fire TV can read environment from native shell at runtime.
102
+ Valid environments: local, dev, staging, prod`
103
+ );
104
+ process.exit(1);
105
+ }
106
+ if (!opts.env && supportsNativeEnv) {
107
+ console.log(
108
+ `ℹ️ --env not provided. ${opts.platform} will read environment from native shell at runtime.`
109
+ );
110
+ }
73
111
  if (!VALID_PLATFORMS.includes(normalizedPlatform)) {
74
112
  console.error(`❌ Unknown platform: ${opts.platform}`);
75
113
  console.error(` Valid: ${VALID_PLATFORMS.join(", ")}`);
76
114
  process.exit(1);
77
115
  }
78
116
  opts.platform = normalizedPlatform;
79
- const envFile = path.join(process.cwd(), `.env.${opts.env}`);
80
117
  let shellEnv = {};
81
- if (fs.existsSync(envFile)) {
82
- console.log(`📄 Reading config from ${envFile}`);
83
- const result = config$1({ path: envFile });
84
- shellEnv = result.parsed || {};
85
- } else {
86
- console.log(`ℹ️ No .env.${opts.env} found, using defaults/CLI flags`);
118
+ if (opts.env) {
119
+ const envFile = path.join(process.cwd(), `.env.${opts.env}`);
120
+ if (fs.existsSync(envFile)) {
121
+ console.log(`📄 Reading config from ${envFile}`);
122
+ const result = config$1({ path: envFile });
123
+ shellEnv = result.parsed || {};
124
+ } else {
125
+ console.log(`ℹ️ No .env.${opts.env} found, using defaults/CLI flags`);
126
+ }
87
127
  }
88
128
  let shellVersion = "unknown";
89
129
  const packageJsonPath = path.join(process.cwd(), "package.json");
@@ -97,23 +137,29 @@ if (fs.existsSync(packageJsonPath)) {
97
137
  console.warn(`⚠️ Could not read version from package.json`);
98
138
  }
99
139
  }
100
- const envDefaults = ENV_DEFAULTS[opts.env];
101
- if (!envDefaults) {
140
+ const envDefaults = opts.env ? ENV_DEFAULTS[opts.env] : void 0;
141
+ if (opts.env && !envDefaults) {
102
142
  console.error(`❌ Unknown environment: ${opts.env}`);
103
143
  console.error(` Valid: local, dev, staging, prod`);
104
144
  process.exit(1);
105
145
  }
146
+ const effectiveDefaults = envDefaults ?? ENV_DEFAULTS["dev"];
106
147
  const config = {
107
- VITE_PLATFORM: opts.platform,
108
- VITE_HUB_URL: opts.hubUrl || shellEnv.VITE_HUB_URL || envDefaults.hubUrl,
109
- VITE_AMPLITUDE_DEPLOYMENT_KEY: opts.amplitudeKey || shellEnv.VITE_AMPLITUDE_DEPLOYMENT_KEY || envDefaults.amplitudeKey || "",
110
- VITE_VWR_URL: opts.vwrUrl || shellEnv.VITE_VWR_URL || envDefaults.vwrUrl || "https://vwr.volley.tv/v1/latest/vwr.js",
111
- VITE_CONFIG_URL: opts.configUrl || shellEnv.VITE_CONFIG_URL || envDefaults.configUrl,
112
- VITE_CONFIG_FILE: opts.configFile || shellEnv.VITE_CONFIG_FILE || envDefaults.configFile,
113
- VITE_LAUNCH_URL: opts.launchUrl || shellEnv.VITE_LAUNCH_URL || opts.hubUrl || shellEnv.VITE_HUB_URL || envDefaults.hubUrl
148
+ VITE_PLATFORM: normalizedPlatform,
149
+ VITE_ENVIRONMENT: opts.env,
150
+ // undefined for Fire TV without --env (reads from native)
151
+ VITE_HUB_URL: opts.hubUrl || shellEnv.VITE_HUB_URL || effectiveDefaults.hubUrl,
152
+ VITE_AMPLITUDE_DEPLOYMENT_KEY: opts.amplitudeKey || shellEnv.VITE_AMPLITUDE_DEPLOYMENT_KEY || effectiveDefaults.amplitudeKey || "",
153
+ VITE_VWR_URL: opts.vwrUrl || shellEnv.VITE_VWR_URL || effectiveDefaults.vwrUrl,
154
+ VITE_CONFIG_URL: opts.configUrl || shellEnv.VITE_CONFIG_URL || effectiveDefaults.configUrl,
155
+ VITE_CONFIG_FILE: opts.configFile || shellEnv.VITE_CONFIG_FILE || effectiveDefaults.configFile,
156
+ VITE_LAUNCH_URL: opts.launchUrl || shellEnv.VITE_LAUNCH_URL || opts.hubUrl || shellEnv.VITE_HUB_URL || effectiveDefaults.hubUrl
114
157
  };
115
158
  console.log("🔧 Build configuration:");
116
159
  console.log(` Platform: ${config.VITE_PLATFORM}`);
160
+ console.log(
161
+ ` Environment: ${config.VITE_ENVIRONMENT ?? "(from native at runtime)"}`
162
+ );
117
163
  console.log(` Hub URL: ${config.VITE_HUB_URL}`);
118
164
  console.log(` VWR URL: ${config.VITE_VWR_URL}`);
119
165
  if (config.VITE_AMPLITUDE_DEPLOYMENT_KEY) {
@@ -127,6 +173,23 @@ if (config.VITE_AMPLITUDE_DEPLOYMENT_KEY) {
127
173
  const loaderSrcDir = path.join(__dirname, "../src");
128
174
  const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "vwr-loader-"));
129
175
  const loaderDistDir = tmpDir;
176
+ const defineConfig = {
177
+ "import.meta.env.VITE_PLATFORM": JSON.stringify(config.VITE_PLATFORM),
178
+ "import.meta.env.VITE_SHELL_VERSION": JSON.stringify(shellVersion),
179
+ "import.meta.env.VITE_HUB_URL": JSON.stringify(config.VITE_HUB_URL),
180
+ "import.meta.env.VITE_AMPLITUDE_DEPLOYMENT_KEY": JSON.stringify(
181
+ config.VITE_AMPLITUDE_DEPLOYMENT_KEY
182
+ ),
183
+ "import.meta.env.VITE_VWR_URL": JSON.stringify(config.VITE_VWR_URL),
184
+ "import.meta.env.VITE_CONFIG_URL": JSON.stringify(config.VITE_CONFIG_URL),
185
+ "import.meta.env.VITE_CONFIG_FILE": JSON.stringify(config.VITE_CONFIG_FILE),
186
+ "import.meta.env.VITE_LAUNCH_URL": JSON.stringify(config.VITE_LAUNCH_URL)
187
+ };
188
+ if (config.VITE_ENVIRONMENT) {
189
+ defineConfig["import.meta.env.VITE_ENVIRONMENT"] = JSON.stringify(
190
+ config.VITE_ENVIRONMENT
191
+ );
192
+ }
130
193
  try {
131
194
  console.log(`⏳ Building loader...`);
132
195
  await build({
@@ -134,13 +197,14 @@ try {
134
197
  root: loaderSrcDir,
135
198
  // Use relative paths so loader works when served from any subdirectory
136
199
  base: "./",
137
- mode: opts.env,
200
+ mode: opts.env ?? "production",
201
+ // Use production mode for minification when env not specified
138
202
  logLevel: "warn",
139
203
  build: {
140
204
  outDir: loaderDistDir,
141
205
  emptyOutDir: true,
142
206
  target: "es2017",
143
- minify: opts.env === "prod" ? "esbuild" : false,
207
+ minify: opts.env === "prod" || !opts.env ? "esbuild" : false,
144
208
  sourcemap: true,
145
209
  rollupOptions: {
146
210
  input: {
@@ -152,27 +216,7 @@ try {
152
216
  }
153
217
  }
154
218
  },
155
- define: {
156
- "import.meta.env.VITE_ENVIRONMENT": JSON.stringify(opts.env),
157
- "import.meta.env.VITE_PLATFORM": JSON.stringify(
158
- config.VITE_PLATFORM
159
- ),
160
- "import.meta.env.VITE_SHELL_VERSION": JSON.stringify(shellVersion),
161
- "import.meta.env.VITE_HUB_URL": JSON.stringify(config.VITE_HUB_URL),
162
- "import.meta.env.VITE_AMPLITUDE_DEPLOYMENT_KEY": JSON.stringify(
163
- config.VITE_AMPLITUDE_DEPLOYMENT_KEY
164
- ),
165
- "import.meta.env.VITE_VWR_URL": JSON.stringify(config.VITE_VWR_URL),
166
- "import.meta.env.VITE_CONFIG_URL": JSON.stringify(
167
- config.VITE_CONFIG_URL
168
- ),
169
- "import.meta.env.VITE_CONFIG_FILE": JSON.stringify(
170
- config.VITE_CONFIG_FILE
171
- ),
172
- "import.meta.env.VITE_LAUNCH_URL": JSON.stringify(
173
- config.VITE_LAUNCH_URL
174
- )
175
- }
219
+ define: defineConfig
176
220
  });
177
221
  const outputPath = path.resolve(opts.output);
178
222
  await fs.ensureDir(outputPath);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sources":["../src/envDefaults.ts","../scripts/build.ts"],"sourcesContent":["export interface EnvConfig {\n hubUrl: string\n vwrUrl: string\n configUrl: string\n configFile: string\n platformApiUrl: string\n platformAuthApiUrl: string\n amplitudeKey: string // Used for amplitude flag fetch, not part of VWRConfig\n trustedOrigins?: string[]\n}\n\nconst CONFIG_URL_DEFAULT = \"https://vwr.volley.tv/config/\"\nconst CONFIG_FILE_DEFAULT = \"vwrConfig.json\"\nconst VWR_URL_PATH_DEFAULT = \"v1/latest/vwr.js\"\n\nconst prodConfig: EnvConfig = {\n hubUrl: \"https://game-clients.volley.tv/hub\",\n vwrUrl: `https://vwr.volley.tv/${VWR_URL_PATH_DEFAULT}`,\n configUrl: CONFIG_URL_DEFAULT,\n configFile: CONFIG_FILE_DEFAULT,\n platformApiUrl: \"https://platform.volley-services.net\",\n platformAuthApiUrl: \"https://auth.volley.tv\",\n amplitudeKey: \"\",\n}\n\nexport const ENV_DEFAULTS: Record<string, EnvConfig> = {\n local: {\n hubUrl: import.meta.env.VITE_HUB_URL || \"http://localhost:5173\",\n vwrUrl: import.meta.env.VITE_VWR_URL || \"http://localhost:5174/vwr.js\",\n configUrl:\n import.meta.env.VITE_CONFIG_URL || \"http://localhost:5174/config/\",\n configFile: import.meta.env.VITE_CONFIG_FILE || CONFIG_FILE_DEFAULT,\n platformApiUrl:\n import.meta.env.VITE_PLATFORM_API_URL ||\n \"https://platform-dev.volley-services.net\",\n platformAuthApiUrl:\n import.meta.env.VITE_PLATFORM_AUTH_API_URL ||\n \"https://auth-dev.volley.tv\",\n amplitudeKey: \"client-uJJVW3zKPC1G9kqPhUumLnZN6eaY42iQ\",\n trustedOrigins: import.meta.env.VITE_TRUSTED_ORIGINS?.split(\",\").filter(\n Boolean\n ),\n },\n dev: {\n hubUrl: \"https://game-clients-dev.volley.tv/hub\",\n vwrUrl: `https://vwr.volley.tv/dev/${VWR_URL_PATH_DEFAULT}`,\n configUrl: CONFIG_URL_DEFAULT,\n configFile: CONFIG_FILE_DEFAULT,\n platformApiUrl: \"https://platform-dev.volley-services.net\",\n platformAuthApiUrl: \"https://auth-dev.volley.tv\",\n amplitudeKey: \"client-uJJVW3zKPC1G9kqPhUumLnZN6eaY42iQ\",\n },\n staging: {\n hubUrl: \"https://game-clients-staging.volley.tv/hub\",\n vwrUrl: `https://vwr.volley.tv/staging/${VWR_URL_PATH_DEFAULT}`,\n configUrl: CONFIG_URL_DEFAULT,\n configFile: CONFIG_FILE_DEFAULT,\n platformApiUrl: \"https://platform-staging.volley-services.net\",\n platformAuthApiUrl: \"https://auth-staging.volley.tv\",\n amplitudeKey: \"\",\n },\n prod: prodConfig,\n production: prodConfig, // Alias for prod\n}\n","import { Command } from \"commander\"\nimport { config as loadDotenv } from \"dotenv\"\nimport fs from \"fs-extra\"\nimport os from \"os\"\nimport path from \"path\"\nimport { fileURLToPath } from \"url\"\nimport { build } from \"vite\"\n\nimport { ENV_DEFAULTS } from \"../src/envDefaults.js\"\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url))\n\n// Read package version for --version flag\nconst cliPackageJson = JSON.parse(\n fs.readFileSync(path.join(__dirname, \"../package.json\"), \"utf-8\")\n)\n\nconst VALID_PLATFORMS = [\n \"FIRE_TV\",\n \"ANDROID_MOBILE\",\n \"IOS_MOBILE\",\n \"SAMSUNG_TV\",\n \"LG_TV\",\n \"WEB\",\n]\n\nconst program = new Command()\n\nprogram\n .name(\"build-loader\")\n .version(cliPackageJson.version)\n .description(\"Build vwr-loader with environment configuration\")\n .requiredOption(\n \"--platform <platform>\",\n \"Platform: FIRE_TV, ANDROID_MOBILE, IOS_MOBILE, SAMSUNG_TV, LG_TV, WEB\"\n )\n .requiredOption(\"--env <env>\", \"Environment: local, dev, staging, prod\")\n .requiredOption(\"--output <path>\", \"Output directory\")\n .option(\"--hubUrl <url>\", \"Override Hub URL\")\n .option(\"--amplitudeKey <key>\", \"Override Amplitude deployment key\")\n .option(\"--vwrUrl <url>\", \"Override VWR URL\")\n .option(\"--configUrl <url>\", \"Override VWR Config URL\")\n .option(\"--configFile <filename>\", \"Override VWR Config Filename\")\n .option(\"--launchUrl <url>\", \"Override launch url\")\n .parse()\n\nconst opts = program.opts()\n\n// Validate platform\nconst normalizedPlatform = opts.platform.toUpperCase()\nif (!VALID_PLATFORMS.includes(normalizedPlatform)) {\n console.error(`❌ Unknown platform: ${opts.platform}`)\n console.error(` Valid: ${VALID_PLATFORMS.join(\", \")}`)\n process.exit(1)\n}\nopts.platform = normalizedPlatform\n\n// Try to read from shell's .env file (run from shell directory)\nconst envFile = path.join(process.cwd(), `.env.${opts.env}`)\nlet shellEnv: Record<string, string> = {}\n\nif (fs.existsSync(envFile)) {\n console.log(`📄 Reading config from ${envFile}`)\n const result = loadDotenv({ path: envFile })\n shellEnv = result.parsed || {}\n} else {\n console.log(`ℹ️ No .env.${opts.env} found, using defaults/CLI flags`)\n}\n\n// Read shell version from package.json (for web shell)\nlet shellVersion = \"unknown\"\nconst packageJsonPath = path.join(process.cwd(), \"package.json\")\nif (fs.existsSync(packageJsonPath)) {\n try {\n const packageJson = JSON.parse(\n fs.readFileSync(packageJsonPath, \"utf-8\")\n )\n shellVersion = packageJson.version || \"unknown\"\n } catch {\n console.warn(`⚠️ Could not read version from package.json`)\n }\n}\n\n// Get predefined defaults\nconst envDefaults = ENV_DEFAULTS[opts.env]\nif (!envDefaults) {\n console.error(`❌ Unknown environment: ${opts.env}`)\n console.error(` Valid: local, dev, staging, prod`)\n process.exit(1)\n}\n\n// Config precedence: CLI > shell .env > defaults\nconst config = {\n VITE_PLATFORM: opts.platform,\n VITE_HUB_URL: opts.hubUrl || shellEnv.VITE_HUB_URL || envDefaults.hubUrl,\n VITE_AMPLITUDE_DEPLOYMENT_KEY:\n opts.amplitudeKey ||\n shellEnv.VITE_AMPLITUDE_DEPLOYMENT_KEY ||\n envDefaults.amplitudeKey ||\n \"\",\n VITE_VWR_URL:\n opts.vwrUrl ||\n shellEnv.VITE_VWR_URL ||\n envDefaults.vwrUrl ||\n \"https://vwr.volley.tv/v1/latest/vwr.js\",\n VITE_CONFIG_URL:\n opts.configUrl || shellEnv.VITE_CONFIG_URL || envDefaults.configUrl,\n VITE_CONFIG_FILE:\n opts.configFile || shellEnv.VITE_CONFIG_FILE || envDefaults.configFile,\n VITE_LAUNCH_URL:\n opts.launchUrl ||\n shellEnv.VITE_LAUNCH_URL ||\n opts.hubUrl ||\n shellEnv.VITE_HUB_URL ||\n envDefaults.hubUrl,\n}\n\nconsole.log(\"🔧 Build configuration:\")\nconsole.log(` Platform: ${config.VITE_PLATFORM}`)\nconsole.log(` Hub URL: ${config.VITE_HUB_URL}`)\nconsole.log(` VWR URL: ${config.VITE_VWR_URL}`)\nif (config.VITE_AMPLITUDE_DEPLOYMENT_KEY) {\n console.log(` Amplitude: ***`)\n} else {\n console.warn(` Amplitude: (not set)`)\n console.warn(\n ` ⚠️ VWR flag fetching will use safe defaults (vwr-enabled: false)`\n )\n}\n\n// Build with Vite (inline config to avoid path resolution issues)\nconst loaderSrcDir = path.join(__dirname, \"../src\")\nconst tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), \"vwr-loader-\"))\nconst loaderDistDir = tmpDir\n\ntry {\n console.log(`⏳ Building loader...`)\n await build({\n configFile: false,\n root: loaderSrcDir,\n // Use relative paths so loader works when served from any subdirectory\n base: \"./\",\n mode: opts.env,\n logLevel: \"warn\",\n build: {\n outDir: loaderDistDir,\n emptyOutDir: true,\n target: \"es2017\",\n minify: opts.env === \"prod\" ? \"esbuild\" : false,\n sourcemap: true,\n rollupOptions: {\n input: {\n main: path.join(loaderSrcDir, \"index.html\"),\n },\n output: {\n entryFileNames: \"[name].js\",\n assetFileNames: \"[name].[ext]\",\n },\n },\n },\n define: {\n \"import.meta.env.VITE_ENVIRONMENT\": JSON.stringify(opts.env),\n \"import.meta.env.VITE_PLATFORM\": JSON.stringify(\n config.VITE_PLATFORM\n ),\n \"import.meta.env.VITE_SHELL_VERSION\": JSON.stringify(shellVersion),\n \"import.meta.env.VITE_HUB_URL\": JSON.stringify(config.VITE_HUB_URL),\n \"import.meta.env.VITE_AMPLITUDE_DEPLOYMENT_KEY\": JSON.stringify(\n config.VITE_AMPLITUDE_DEPLOYMENT_KEY\n ),\n \"import.meta.env.VITE_VWR_URL\": JSON.stringify(config.VITE_VWR_URL),\n \"import.meta.env.VITE_CONFIG_URL\": JSON.stringify(\n config.VITE_CONFIG_URL\n ),\n \"import.meta.env.VITE_CONFIG_FILE\": JSON.stringify(\n config.VITE_CONFIG_FILE\n ),\n \"import.meta.env.VITE_LAUNCH_URL\": JSON.stringify(\n config.VITE_LAUNCH_URL\n ),\n },\n })\n\n // Copy build output to specified directory\n const outputPath = path.resolve(opts.output)\n\n await fs.ensureDir(outputPath)\n await fs.copy(loaderDistDir, outputPath, { overwrite: true })\n\n console.log(`✅ VWR loader built successfully`)\n console.log(` Output: ${outputPath}`)\n console.log(` Files: index.html, main.js`)\n} finally {\n // Cleanup temp dir\n try {\n await fs.remove(tmpDir)\n } catch (e) {\n console.warn(\"⚠️ Failed to cleanup temp dir:\", e)\n }\n}\n"],"names":["loadDotenv"],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sources":["../src/envDefaults.ts","../scripts/build.ts"],"sourcesContent":["export interface EnvConfig {\n hubUrl: string\n vwrUrl: string\n configUrl: string\n configFile: string\n platformApiUrl: string\n platformAuthApiUrl: string\n amplitudeKey: string // Used for amplitude flag fetch, not part of VWRConfig\n trustedOrigins?: string[]\n}\n\nconst CONFIG_URL_DEFAULT = \"https://vwr.volley.tv/config/\"\nconst CONFIG_FILE_DEFAULT = \"vwrConfig.json\"\nconst VWR_URL_PATH_DEFAULT = \"v1/latest/vwr.js\"\n\nconst prodConfig: EnvConfig = {\n hubUrl: \"https://game-clients.volley.tv/hub\",\n vwrUrl: `https://vwr.volley.tv/${VWR_URL_PATH_DEFAULT}`,\n configUrl: CONFIG_URL_DEFAULT,\n configFile: CONFIG_FILE_DEFAULT,\n platformApiUrl: \"https://platform.volley-services.net\",\n platformAuthApiUrl: \"https://auth.volley.tv\",\n amplitudeKey: \"\",\n}\n\nexport const ENV_DEFAULTS: Record<string, EnvConfig> = {\n local: {\n hubUrl: import.meta.env.VITE_HUB_URL || \"http://localhost:5173\",\n vwrUrl: import.meta.env.VITE_VWR_URL || \"http://localhost:5174/vwr.js\",\n configUrl:\n import.meta.env.VITE_CONFIG_URL || \"http://localhost:5174/config/\",\n configFile: import.meta.env.VITE_CONFIG_FILE || CONFIG_FILE_DEFAULT,\n platformApiUrl:\n import.meta.env.VITE_PLATFORM_API_URL ||\n \"https://platform-dev.volley-services.net\",\n platformAuthApiUrl:\n import.meta.env.VITE_PLATFORM_AUTH_API_URL ||\n \"https://auth-dev.volley.tv\",\n amplitudeKey: \"client-uJJVW3zKPC1G9kqPhUumLnZN6eaY42iQ\",\n trustedOrigins: import.meta.env.VITE_TRUSTED_ORIGINS?.split(\",\").filter(\n Boolean\n ),\n },\n dev: {\n hubUrl: \"https://game-clients-dev.volley.tv/hub\",\n vwrUrl: `https://vwr.volley.tv/dev/${VWR_URL_PATH_DEFAULT}`,\n configUrl: CONFIG_URL_DEFAULT,\n configFile: CONFIG_FILE_DEFAULT,\n platformApiUrl: \"https://platform-dev.volley-services.net\",\n platformAuthApiUrl: \"https://auth-dev.volley.tv\",\n amplitudeKey: \"client-uJJVW3zKPC1G9kqPhUumLnZN6eaY42iQ\",\n },\n staging: {\n hubUrl: \"https://game-clients-staging.volley.tv/hub\",\n vwrUrl: `https://vwr.volley.tv/staging/${VWR_URL_PATH_DEFAULT}`,\n configUrl: CONFIG_URL_DEFAULT,\n configFile: CONFIG_FILE_DEFAULT,\n platformApiUrl: \"https://platform-staging.volley-services.net\",\n platformAuthApiUrl: \"https://auth-staging.volley.tv\",\n amplitudeKey: \"\",\n },\n prod: prodConfig,\n production: prodConfig, // Alias for prod\n qa: {\n // QA uses staging infrastructure\n hubUrl: \"https://game-clients-staging.volley.tv/hub\",\n vwrUrl: `https://vwr.volley.tv/staging/${VWR_URL_PATH_DEFAULT}`,\n configUrl: CONFIG_URL_DEFAULT,\n configFile: CONFIG_FILE_DEFAULT,\n platformApiUrl: \"https://platform-staging.volley-services.net\",\n platformAuthApiUrl: \"https://auth-staging.volley.tv\",\n amplitudeKey: \"\",\n },\n}\n","import { Command } from \"commander\"\nimport { config as loadDotenv } from \"dotenv\"\nimport fs from \"fs-extra\"\nimport os from \"os\"\nimport path from \"path\"\nimport { fileURLToPath } from \"url\"\nimport { build } from \"vite\"\n\nimport { ENV_DEFAULTS } from \"../src/envDefaults.js\"\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url))\n\n// Read package version for --version flag\nconst cliPackageJson = JSON.parse(\n fs.readFileSync(path.join(__dirname, \"../package.json\"), \"utf-8\")\n)\n\nconst VALID_PLATFORMS = [\n \"FIRE_TV\",\n \"ANDROID_MOBILE\",\n \"IOS_MOBILE\",\n \"SAMSUNG_TV\",\n \"LG_TV\",\n \"WEB\",\n]\n\nconst program = new Command()\n\n// Platforms that support reading environment from native shell at runtime\n// These platforms don't require --env flag (it's optional as an override)\nconst NATIVE_ENV_PLATFORMS = [\"FIRE_TV\"]\n\nprogram\n .name(\"build-loader\")\n .version(cliPackageJson.version)\n .description(\"Build vwr-loader with environment configuration\")\n .requiredOption(\n \"--platform <platform>\",\n \"Platform: FIRE_TV, ANDROID_MOBILE, IOS_MOBILE, SAMSUNG_TV, LG_TV, WEB\"\n )\n .option(\n \"--env <env>\",\n \"Environment: local, dev, staging, prod (required for non-Fire TV platforms)\"\n )\n .requiredOption(\"--output <path>\", \"Output directory\")\n .option(\"--hubUrl <url>\", \"Override Hub URL\")\n .option(\"--amplitudeKey <key>\", \"Override Amplitude deployment key\")\n .option(\"--vwrUrl <url>\", \"Override VWR URL\")\n .option(\"--configUrl <url>\", \"Override VWR Config URL\")\n .option(\"--configFile <filename>\", \"Override VWR Config Filename\")\n .option(\"--launchUrl <url>\", \"Override launch url\")\n .parse()\n\nconst opts = program.opts()\n// Normalize platform name (handle FIRETV -> FIRE_TV, etc.)\nconst normalizedPlatform = normalizePlatform(opts.platform.toUpperCase())\nconst supportsNativeEnv = NATIVE_ENV_PLATFORMS.includes(normalizedPlatform)\n\nfunction normalizePlatform(platform: string): string {\n // Handle common variants\n const aliases: Record<string, string> = {\n FIRETV: \"FIRE_TV\",\n SAMSUNGTV: \"SAMSUNG_TV\",\n LGTV: \"LG_TV\",\n ANDROIDMOBILE: \"ANDROID_MOBILE\",\n IOSMOBILE: \"IOS_MOBILE\",\n }\n return aliases[platform] || platform\n}\n\n// Validate --env is provided for platforms that don't support native env reading\nif (!opts.env && !supportsNativeEnv) {\n console.error(\n `❌ --env is required for platform \"${opts.platform}\"\\n` +\n ` Only Fire TV can read environment from native shell at runtime.\\n` +\n ` Valid environments: local, dev, staging, prod`\n )\n process.exit(1)\n}\n\n// For platforms with native env support, log that env will be read at runtime\nif (!opts.env && supportsNativeEnv) {\n console.log(\n `ℹ️ --env not provided. ${opts.platform} will read environment from native shell at runtime.`\n )\n}\n\n// Validate platform\nif (!VALID_PLATFORMS.includes(normalizedPlatform)) {\n console.error(`❌ Unknown platform: ${opts.platform}`)\n console.error(` Valid: ${VALID_PLATFORMS.join(\", \")}`)\n process.exit(1)\n}\nopts.platform = normalizedPlatform\n\n// Try to read from shell's .env file (run from shell directory)\nlet shellEnv: Record<string, string> = {}\nif (opts.env) {\n const envFile = path.join(process.cwd(), `.env.${opts.env}`)\n if (fs.existsSync(envFile)) {\n console.log(`📄 Reading config from ${envFile}`)\n const result = loadDotenv({ path: envFile })\n shellEnv = result.parsed || {}\n } else {\n console.log(`ℹ️ No .env.${opts.env} found, using defaults/CLI flags`)\n }\n}\n\n// Read shell version from package.json (for web shell)\nlet shellVersion = \"unknown\"\nconst packageJsonPath = path.join(process.cwd(), \"package.json\")\nif (fs.existsSync(packageJsonPath)) {\n try {\n const packageJson = JSON.parse(\n fs.readFileSync(packageJsonPath, \"utf-8\")\n )\n shellVersion = packageJson.version || \"unknown\"\n } catch {\n console.warn(`⚠️ Could not read version from package.json`)\n }\n}\n\n// Get predefined defaults for the specified environment\nconst envDefaults = opts.env ? ENV_DEFAULTS[opts.env] : undefined\nif (opts.env && !envDefaults) {\n console.error(`❌ Unknown environment: ${opts.env}`)\n console.error(` Valid: local, dev, staging, prod`)\n process.exit(1)\n}\n\n// Use env defaults if specified, otherwise fall back to dev defaults\n// (Fire TV without --env reads actual env from native at runtime, but needs URLs at build time)\nconst effectiveDefaults = envDefaults ?? ENV_DEFAULTS[\"dev\"]\n\n// Config precedence: CLI > shell .env > defaults\nconst config = {\n VITE_PLATFORM: normalizedPlatform,\n VITE_ENVIRONMENT: opts.env, // undefined for Fire TV without --env (reads from native)\n VITE_HUB_URL:\n opts.hubUrl || shellEnv.VITE_HUB_URL || effectiveDefaults.hubUrl,\n VITE_AMPLITUDE_DEPLOYMENT_KEY:\n opts.amplitudeKey ||\n shellEnv.VITE_AMPLITUDE_DEPLOYMENT_KEY ||\n effectiveDefaults.amplitudeKey ||\n \"\",\n VITE_VWR_URL:\n opts.vwrUrl || shellEnv.VITE_VWR_URL || effectiveDefaults.vwrUrl,\n VITE_CONFIG_URL:\n opts.configUrl ||\n shellEnv.VITE_CONFIG_URL ||\n effectiveDefaults.configUrl,\n VITE_CONFIG_FILE:\n opts.configFile ||\n shellEnv.VITE_CONFIG_FILE ||\n effectiveDefaults.configFile,\n VITE_LAUNCH_URL:\n opts.launchUrl ||\n shellEnv.VITE_LAUNCH_URL ||\n opts.hubUrl ||\n shellEnv.VITE_HUB_URL ||\n effectiveDefaults.hubUrl,\n}\n\nconsole.log(\"🔧 Build configuration:\")\nconsole.log(` Platform: ${config.VITE_PLATFORM}`)\nconsole.log(\n ` Environment: ${config.VITE_ENVIRONMENT ?? \"(from native at runtime)\"}`\n)\nconsole.log(` Hub URL: ${config.VITE_HUB_URL}`)\nconsole.log(` VWR URL: ${config.VITE_VWR_URL}`)\nif (config.VITE_AMPLITUDE_DEPLOYMENT_KEY) {\n console.log(` Amplitude: ***`)\n} else {\n console.warn(` Amplitude: (not set)`)\n console.warn(\n ` ⚠️ VWR flag fetching will use safe defaults (vwr-enabled: false)`\n )\n}\n\n// Build with Vite (inline config to avoid path resolution issues)\nconst loaderSrcDir = path.join(__dirname, \"../src\")\nconst tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), \"vwr-loader-\"))\nconst loaderDistDir = tmpDir\n\n// Build define config - VITE_ENVIRONMENT is undefined for Fire TV (reads from native)\nconst defineConfig: Record<string, string> = {\n \"import.meta.env.VITE_PLATFORM\": JSON.stringify(config.VITE_PLATFORM),\n \"import.meta.env.VITE_SHELL_VERSION\": JSON.stringify(shellVersion),\n \"import.meta.env.VITE_HUB_URL\": JSON.stringify(config.VITE_HUB_URL),\n \"import.meta.env.VITE_AMPLITUDE_DEPLOYMENT_KEY\": JSON.stringify(\n config.VITE_AMPLITUDE_DEPLOYMENT_KEY\n ),\n \"import.meta.env.VITE_VWR_URL\": JSON.stringify(config.VITE_VWR_URL),\n \"import.meta.env.VITE_CONFIG_URL\": JSON.stringify(config.VITE_CONFIG_URL),\n \"import.meta.env.VITE_CONFIG_FILE\": JSON.stringify(config.VITE_CONFIG_FILE),\n \"import.meta.env.VITE_LAUNCH_URL\": JSON.stringify(config.VITE_LAUNCH_URL),\n}\n\n// Only inject VITE_ENVIRONMENT if provided (Fire TV reads from native otherwise)\nif (config.VITE_ENVIRONMENT) {\n defineConfig[\"import.meta.env.VITE_ENVIRONMENT\"] = JSON.stringify(\n config.VITE_ENVIRONMENT\n )\n}\n\ntry {\n console.log(`⏳ Building loader...`)\n await build({\n configFile: false,\n root: loaderSrcDir,\n // Use relative paths so loader works when served from any subdirectory\n base: \"./\",\n mode: opts.env ?? \"production\", // Use production mode for minification when env not specified\n logLevel: \"warn\",\n build: {\n outDir: loaderDistDir,\n emptyOutDir: true,\n target: \"es2017\",\n minify: opts.env === \"prod\" || !opts.env ? \"esbuild\" : false,\n sourcemap: true,\n rollupOptions: {\n input: {\n main: path.join(loaderSrcDir, \"index.html\"),\n },\n output: {\n entryFileNames: \"[name].js\",\n assetFileNames: \"[name].[ext]\",\n },\n },\n },\n define: defineConfig,\n })\n\n // Copy build output to specified directory\n const outputPath = path.resolve(opts.output)\n\n await fs.ensureDir(outputPath)\n await fs.copy(loaderDistDir, outputPath, { overwrite: true })\n\n console.log(`✅ VWR loader built successfully`)\n console.log(` Output: ${outputPath}`)\n console.log(` Files: index.html, main.js`)\n} finally {\n // Cleanup temp dir\n try {\n await fs.remove(tmpDir)\n } catch (e) {\n console.warn(\"⚠️ Failed to cleanup temp dir:\", e)\n }\n}\n"],"names":["loadDotenv"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"envDefaults.d.ts","sourceRoot":"","sources":["../src/envDefaults.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;CAC5B;AAgBD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAsClD,CAAA"}
1
+ {"version":3,"file":"envDefaults.d.ts","sourceRoot":"","sources":["../src/envDefaults.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;CAC5B;AAgBD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAgDlD,CAAA"}
@@ -44,5 +44,15 @@ export const ENV_DEFAULTS = {
44
44
  },
45
45
  prod: prodConfig,
46
46
  production: prodConfig, // Alias for prod
47
+ qa: {
48
+ // QA uses staging infrastructure
49
+ hubUrl: "https://game-clients-staging.volley.tv/hub",
50
+ vwrUrl: `https://vwr.volley.tv/staging/${VWR_URL_PATH_DEFAULT}`,
51
+ configUrl: CONFIG_URL_DEFAULT,
52
+ configFile: CONFIG_FILE_DEFAULT,
53
+ platformApiUrl: "https://platform-staging.volley-services.net",
54
+ platformAuthApiUrl: "https://auth-staging.volley.tv",
55
+ amplitudeKey: "",
56
+ },
47
57
  };
48
58
  //# sourceMappingURL=envDefaults.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"envDefaults.js","sourceRoot":"","sources":["../src/envDefaults.ts"],"names":[],"mappings":";AAWA,MAAM,kBAAkB,GAAG,+BAA+B,CAAA;AAC1D,MAAM,mBAAmB,GAAG,gBAAgB,CAAA;AAC5C,MAAM,oBAAoB,GAAG,kBAAkB,CAAA;AAE/C,MAAM,UAAU,GAAc;IAC1B,MAAM,EAAE,oCAAoC;IAC5C,MAAM,EAAE,yBAAyB,oBAAoB,EAAE;IACvD,SAAS,EAAE,kBAAkB;IAC7B,UAAU,EAAE,mBAAmB;IAC/B,cAAc,EAAE,sCAAsC;IACtD,kBAAkB,EAAE,wBAAwB;IAC5C,YAAY,EAAE,EAAE;CACnB,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAA8B;IACnD,KAAK,EAAE;QACH,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,uBAAuB;QAC/D,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,8BAA8B;QACtE,SAAS,EACL,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,IAAI,+BAA+B;QACtE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,IAAI,mBAAmB;QACnE,cAAc,EACV,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB;YACrC,0CAA0C;QAC9C,kBAAkB,EACd,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,0BAA0B;YAC1C,4BAA4B;QAChC,YAAY,EAAE,yCAAyC;QACvD,cAAc,EAAE,MAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,0CAAE,KAAK,CAAC,GAAG,EAAE,MAAM,CACnE,OAAO,CACV;KACJ;IACD,GAAG,EAAE;QACD,MAAM,EAAE,wCAAwC;QAChD,MAAM,EAAE,6BAA6B,oBAAoB,EAAE;QAC3D,SAAS,EAAE,kBAAkB;QAC7B,UAAU,EAAE,mBAAmB;QAC/B,cAAc,EAAE,0CAA0C;QAC1D,kBAAkB,EAAE,4BAA4B;QAChD,YAAY,EAAE,yCAAyC;KAC1D;IACD,OAAO,EAAE;QACL,MAAM,EAAE,4CAA4C;QACpD,MAAM,EAAE,iCAAiC,oBAAoB,EAAE;QAC/D,SAAS,EAAE,kBAAkB;QAC7B,UAAU,EAAE,mBAAmB;QAC/B,cAAc,EAAE,8CAA8C;QAC9D,kBAAkB,EAAE,gCAAgC;QACpD,YAAY,EAAE,EAAE;KACnB;IACD,IAAI,EAAE,UAAU;IAChB,UAAU,EAAE,UAAU,EAAE,iBAAiB;CAC5C,CAAA"}
1
+ {"version":3,"file":"envDefaults.js","sourceRoot":"","sources":["../src/envDefaults.ts"],"names":[],"mappings":";AAWA,MAAM,kBAAkB,GAAG,+BAA+B,CAAA;AAC1D,MAAM,mBAAmB,GAAG,gBAAgB,CAAA;AAC5C,MAAM,oBAAoB,GAAG,kBAAkB,CAAA;AAE/C,MAAM,UAAU,GAAc;IAC1B,MAAM,EAAE,oCAAoC;IAC5C,MAAM,EAAE,yBAAyB,oBAAoB,EAAE;IACvD,SAAS,EAAE,kBAAkB;IAC7B,UAAU,EAAE,mBAAmB;IAC/B,cAAc,EAAE,sCAAsC;IACtD,kBAAkB,EAAE,wBAAwB;IAC5C,YAAY,EAAE,EAAE;CACnB,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAA8B;IACnD,KAAK,EAAE;QACH,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,uBAAuB;QAC/D,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,8BAA8B;QACtE,SAAS,EACL,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,IAAI,+BAA+B;QACtE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,IAAI,mBAAmB;QACnE,cAAc,EACV,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB;YACrC,0CAA0C;QAC9C,kBAAkB,EACd,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,0BAA0B;YAC1C,4BAA4B;QAChC,YAAY,EAAE,yCAAyC;QACvD,cAAc,EAAE,MAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,0CAAE,KAAK,CAAC,GAAG,EAAE,MAAM,CACnE,OAAO,CACV;KACJ;IACD,GAAG,EAAE;QACD,MAAM,EAAE,wCAAwC;QAChD,MAAM,EAAE,6BAA6B,oBAAoB,EAAE;QAC3D,SAAS,EAAE,kBAAkB;QAC7B,UAAU,EAAE,mBAAmB;QAC/B,cAAc,EAAE,0CAA0C;QAC1D,kBAAkB,EAAE,4BAA4B;QAChD,YAAY,EAAE,yCAAyC;KAC1D;IACD,OAAO,EAAE;QACL,MAAM,EAAE,4CAA4C;QACpD,MAAM,EAAE,iCAAiC,oBAAoB,EAAE;QAC/D,SAAS,EAAE,kBAAkB;QAC7B,UAAU,EAAE,mBAAmB;QAC/B,cAAc,EAAE,8CAA8C;QAC9D,kBAAkB,EAAE,gCAAgC;QACpD,YAAY,EAAE,EAAE;KACnB;IACD,IAAI,EAAE,UAAU;IAChB,UAAU,EAAE,UAAU,EAAE,iBAAiB;IACzC,EAAE,EAAE;QACA,iCAAiC;QACjC,MAAM,EAAE,4CAA4C;QACpD,MAAM,EAAE,iCAAiC,oBAAoB,EAAE;QAC/D,SAAS,EAAE,kBAAkB;QAC7B,UAAU,EAAE,mBAAmB;QAC/B,cAAc,EAAE,8CAA8C;QAC9D,kBAAkB,EAAE,gCAAgC;QACpD,YAAY,EAAE,EAAE;KACnB;CACJ,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getDeviceId.d.ts","sourceRoot":"","sources":["../src/getDeviceId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA;AAErD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,WAAW,CAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,MAAsB,GAC/B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoBxB;AAgLD,UAAU,kBAAkB;IACxB,MAAM,CAAC,EAAE,KAAK,CAAC;QACX,OAAO,CAAC,EAAE,MAAM,CAAA;KACnB,CAAC,CAAA;CACL;AAiBD,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,OAAO,CAAC,EAAE;YACN,WAAW,CAAC,EAAE;gBACV,OAAO,EAAE,MAAM,MAAM,CAAA;aACxB,CAAA;SACJ,CAAA;QACD,KAAK,CAAC,EAAE;YACJ,OAAO,CAAC,EAAE;gBACN,OAAO,EAAE,CACL,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;oBACL,MAAM,CAAC,EAAE,MAAM,CAAA;oBACf,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;oBACpC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAA;oBAClD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;wBAAE,SAAS,CAAC,EAAE,MAAM,CAAA;qBAAE,KAAK,IAAI,CAAA;oBACnD,SAAS,CAAC,EAAE,OAAO,CAAA;iBACtB,KACA;oBACD,MAAM,EAAE,MAAM,IAAI,CAAA;iBACrB,CAAA;aACJ,CAAA;SACJ,CAAA;KACJ;CACJ"}
1
+ {"version":3,"file":"getDeviceId.d.ts","sourceRoot":"","sources":["../src/getDeviceId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA;AAErD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,WAAW,CAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,MAAsB,GAC/B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoBxB;AA8KD,UAAU,kBAAkB;IACxB,MAAM,CAAC,EAAE,KAAK,CAAC;QACX,OAAO,CAAC,EAAE,MAAM,CAAA;KACnB,CAAC,CAAA;CACL;AAmBD,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,OAAO,CAAC,EAAE;YACN,WAAW,CAAC,EAAE;gBACV,OAAO,EAAE,MAAM,MAAM,CAAA;aACxB,CAAA;SACJ,CAAA;QACD,KAAK,CAAC,EAAE;YACJ,OAAO,CAAC,EAAE;gBACN,OAAO,EAAE,CACL,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;oBACL,MAAM,CAAC,EAAE,MAAM,CAAA;oBACf,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;oBACpC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAA;oBAClD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;wBAAE,SAAS,CAAC,EAAE,MAAM,CAAA;qBAAE,KAAK,IAAI,CAAA;oBACnD,SAAS,CAAC,EAAE,OAAO,CAAA;iBACtB,KACA;oBACD,MAAM,EAAE,MAAM,IAAI,CAAA;iBACrB,CAAA;aACJ,CAAA;SACJ,CAAA;KACJ;CACJ"}
@@ -59,24 +59,21 @@ function getLocalStorageDeviceId() {
59
59
  * Attempt to get device ID from Capacitor DeviceInfo plugin (FireTV)
60
60
  */
61
61
  async function getFireTVDeviceId(logger) {
62
- var _a;
62
+ var _a, _b, _c;
63
63
  try {
64
- // Access via Capacitor.Plugins (standard Capacitor plugin access)
65
- const Capacitor = window.Capacitor;
66
- const DeviceInfo = (_a = Capacitor === null || Capacitor === void 0 ? void 0 : Capacitor.Plugins) === null || _a === void 0 ? void 0 : _a.DeviceInfo;
67
- if (!(DeviceInfo === null || DeviceInfo === void 0 ? void 0 : DeviceInfo.getAndroidId)) {
64
+ if (!((_c = (_b = (_a = window.Capacitor) === null || _a === void 0 ? void 0 : _a.Plugins) === null || _b === void 0 ? void 0 : _b.DeviceInfo) === null || _c === void 0 ? void 0 : _c.getAndroidId)) {
68
65
  return null;
69
66
  }
70
- const result = await DeviceInfo.getAndroidId();
67
+ const result = await window.Capacitor.Plugins.DeviceInfo.getAndroidId();
71
68
  if ((result === null || result === void 0 ? void 0 : result.androidId) && result.androidId.trim()) {
72
69
  return result.androidId;
73
70
  }
74
71
  else {
75
- logger.error("DeviceInfo.getAndroidId returned empty");
72
+ logger.error("Capacitor.Plugins.DeviceInfo.getAndroidId returned empty");
76
73
  }
77
74
  }
78
75
  catch (error) {
79
- const message = "DeviceInfo.getAndroidId failed:";
76
+ const message = "Capacitor.Plugins.DeviceInfo.getAndroidId failed:";
80
77
  logger.error(message, { error });
81
78
  }
82
79
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"getDeviceId.js","sourceRoot":"","sources":["../src/getDeviceId.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getDeviceId.js","sourceRoot":"","sources":["../src/getDeviceId.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { type Logger } from "./logger";
2
+ export type Environment = "local" | "dev" | "qa" | "staging" | "prod";
3
+ export type EnvironmentSource = "native" | "build-time" | "default";
4
+ export interface EnvironmentResult {
5
+ environment: Environment;
6
+ source: EnvironmentSource;
7
+ }
8
+ /**
9
+ * Get the environment for the current platform.
10
+ *
11
+ * Precedence:
12
+ * 1. Native shell (Fire TV only) - reads from BuildConfig.ENVIRONMENT
13
+ * 2. Build-time injection (VITE_ENVIRONMENT) - CLI override
14
+ * 3. Default fallback ("dev")
15
+ *
16
+ * This ensures production APKs cannot accidentally run dev VWR,
17
+ * since the native Android build variant determines the environment.
18
+ *
19
+ * @param platform - Platform identifier ('FIRE_TV', 'SAMSUNG_TV', 'LG_TV', 'MOBILE', 'WEB')
20
+ * @param buildTimeEnv - Optional build-time injected environment (from CLI)
21
+ * @param logger - Optional logger for reporting
22
+ * @returns Environment result with source information for logging
23
+ */
24
+ export declare function getEnvironment(platform: string, buildTimeEnv: string | undefined, logger?: Logger): Promise<EnvironmentResult>;
25
+ //# sourceMappingURL=getEnvironment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getEnvironment.d.ts","sourceRoot":"","sources":["../src/getEnvironment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA;AAErD,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,KAAK,GAAG,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"}