@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/README.md
CHANGED
|
@@ -18,6 +18,27 @@ pnpm add @volley/vwr-loader
|
|
|
18
18
|
|
|
19
19
|
## Usage
|
|
20
20
|
|
|
21
|
+
### CLI Build (Recommended)
|
|
22
|
+
|
|
23
|
+
You can build the loader for a specific platform and environment using the CLI. This is useful for native shells (iOS, Android, FireTV, Samsung, LG) and CI/CD pipelines.
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# Using npx (if installed globally or in project)
|
|
27
|
+
npx build-loader --platform IOS_MOBILE --env dev --output ./dist-ios
|
|
28
|
+
|
|
29
|
+
# Or via pnpm
|
|
30
|
+
pnpm build-loader --platform IOS_MOBILE --env dev --output ./dist-ios
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**Options:**
|
|
34
|
+
|
|
35
|
+
- `--platform`: Target platform (`IOS_MOBILE`, `ANDROID_MOBILE`, `FIRE_TV`, `SAMSUNG_TV`, `LG_TV`, `WEB`)
|
|
36
|
+
- `--env`: Environment (`local`, `dev`, `staging`, `prod`)
|
|
37
|
+
- `--output`: Output directory for `index.html` and `main.js`
|
|
38
|
+
- `--hubUrl`: Override Hub URL (optional)
|
|
39
|
+
- `--vwrUrl`: Override VWR URL (optional)
|
|
40
|
+
- `--amplitudeKey`: Override Amplitude deployment key (optional)
|
|
41
|
+
|
|
21
42
|
### Fetching Amplitude Flags
|
|
22
43
|
|
|
23
44
|
```typescript
|
|
@@ -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 -
|
|
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?:
|
|
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":"
|
|
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 {
|
|
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 -
|
|
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
|
-
|
|
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,
|
|
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
ADDED
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from "commander";
|
|
3
|
+
import { config as config$1 } from "dotenv";
|
|
4
|
+
import fs from "fs-extra";
|
|
5
|
+
import os from "os";
|
|
6
|
+
import path from "path";
|
|
7
|
+
import { fileURLToPath } from "url";
|
|
8
|
+
import { build } from "vite";
|
|
9
|
+
const CONFIG_URL_DEFAULT = "https://vwr.volley.tv/config/";
|
|
10
|
+
const CONFIG_FILE_DEFAULT = "vwrConfig.json";
|
|
11
|
+
const VWR_URL_PATH_DEFAULT = "v1/latest/vwr.js";
|
|
12
|
+
const prodConfig = {
|
|
13
|
+
hubUrl: "https://game-clients.volley.tv/hub",
|
|
14
|
+
vwrUrl: `https://vwr.volley.tv/${VWR_URL_PATH_DEFAULT}`,
|
|
15
|
+
configUrl: CONFIG_URL_DEFAULT,
|
|
16
|
+
configFile: CONFIG_FILE_DEFAULT,
|
|
17
|
+
platformApiUrl: "https://platform.volley-services.net",
|
|
18
|
+
platformAuthApiUrl: "https://auth.volley.tv",
|
|
19
|
+
amplitudeKey: ""
|
|
20
|
+
};
|
|
21
|
+
const ENV_DEFAULTS = {
|
|
22
|
+
local: {
|
|
23
|
+
hubUrl: "http://localhost:5173",
|
|
24
|
+
vwrUrl: "http://localhost:5174/vwr.js",
|
|
25
|
+
configUrl: "http://localhost:5174/config/",
|
|
26
|
+
configFile: CONFIG_FILE_DEFAULT,
|
|
27
|
+
platformApiUrl: "https://platform-dev.volley-services.net",
|
|
28
|
+
platformAuthApiUrl: "https://auth-dev.volley.tv",
|
|
29
|
+
amplitudeKey: "client-uJJVW3zKPC1G9kqPhUumLnZN6eaY42iQ",
|
|
30
|
+
trustedOrigins: void 0
|
|
31
|
+
},
|
|
32
|
+
dev: {
|
|
33
|
+
hubUrl: "https://game-clients-dev.volley.tv/hub",
|
|
34
|
+
vwrUrl: `https://vwr.volley.tv/dev/${VWR_URL_PATH_DEFAULT}`,
|
|
35
|
+
configUrl: CONFIG_URL_DEFAULT,
|
|
36
|
+
configFile: CONFIG_FILE_DEFAULT,
|
|
37
|
+
platformApiUrl: "https://platform-dev.volley-services.net",
|
|
38
|
+
platformAuthApiUrl: "https://auth-dev.volley.tv",
|
|
39
|
+
amplitudeKey: "client-uJJVW3zKPC1G9kqPhUumLnZN6eaY42iQ"
|
|
40
|
+
},
|
|
41
|
+
staging: {
|
|
42
|
+
hubUrl: "https://game-clients-staging.volley.tv/hub",
|
|
43
|
+
vwrUrl: `https://vwr.volley.tv/staging/${VWR_URL_PATH_DEFAULT}`,
|
|
44
|
+
configUrl: CONFIG_URL_DEFAULT,
|
|
45
|
+
configFile: CONFIG_FILE_DEFAULT,
|
|
46
|
+
platformApiUrl: "https://platform-staging.volley-services.net",
|
|
47
|
+
platformAuthApiUrl: "https://auth-staging.volley.tv",
|
|
48
|
+
amplitudeKey: ""
|
|
49
|
+
},
|
|
50
|
+
prod: prodConfig,
|
|
51
|
+
production: prodConfig,
|
|
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
|
+
}
|
|
63
|
+
};
|
|
64
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
65
|
+
const cliPackageJson = JSON.parse(
|
|
66
|
+
fs.readFileSync(path.join(__dirname, "../package.json"), "utf-8")
|
|
67
|
+
);
|
|
68
|
+
const VALID_PLATFORMS = [
|
|
69
|
+
"FIRE_TV",
|
|
70
|
+
"ANDROID_MOBILE",
|
|
71
|
+
"IOS_MOBILE",
|
|
72
|
+
"SAMSUNG_TV",
|
|
73
|
+
"LG_TV",
|
|
74
|
+
"WEB"
|
|
75
|
+
];
|
|
76
|
+
const program = new Command();
|
|
77
|
+
const NATIVE_ENV_PLATFORMS = ["FIRE_TV"];
|
|
78
|
+
program.name("build-loader").version(cliPackageJson.version).description("Build vwr-loader with environment configuration").requiredOption(
|
|
79
|
+
"--platform <platform>",
|
|
80
|
+
"Platform: FIRE_TV, ANDROID_MOBILE, IOS_MOBILE, SAMSUNG_TV, LG_TV, WEB"
|
|
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();
|
|
85
|
+
const opts = program.opts();
|
|
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
|
+
}
|
|
111
|
+
if (!VALID_PLATFORMS.includes(normalizedPlatform)) {
|
|
112
|
+
console.error(`❌ Unknown platform: ${opts.platform}`);
|
|
113
|
+
console.error(` Valid: ${VALID_PLATFORMS.join(", ")}`);
|
|
114
|
+
process.exit(1);
|
|
115
|
+
}
|
|
116
|
+
opts.platform = normalizedPlatform;
|
|
117
|
+
let shellEnv = {};
|
|
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
|
+
}
|
|
127
|
+
}
|
|
128
|
+
let shellVersion = "unknown";
|
|
129
|
+
const packageJsonPath = path.join(process.cwd(), "package.json");
|
|
130
|
+
if (fs.existsSync(packageJsonPath)) {
|
|
131
|
+
try {
|
|
132
|
+
const packageJson = JSON.parse(
|
|
133
|
+
fs.readFileSync(packageJsonPath, "utf-8")
|
|
134
|
+
);
|
|
135
|
+
shellVersion = packageJson.version || "unknown";
|
|
136
|
+
} catch {
|
|
137
|
+
console.warn(`⚠️ Could not read version from package.json`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
const envDefaults = opts.env ? ENV_DEFAULTS[opts.env] : void 0;
|
|
141
|
+
if (opts.env && !envDefaults) {
|
|
142
|
+
console.error(`❌ Unknown environment: ${opts.env}`);
|
|
143
|
+
console.error(` Valid: local, dev, staging, prod`);
|
|
144
|
+
process.exit(1);
|
|
145
|
+
}
|
|
146
|
+
const effectiveDefaults = envDefaults ?? ENV_DEFAULTS["dev"];
|
|
147
|
+
const config = {
|
|
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
|
|
157
|
+
};
|
|
158
|
+
console.log("🔧 Build configuration:");
|
|
159
|
+
console.log(` Platform: ${config.VITE_PLATFORM}`);
|
|
160
|
+
console.log(
|
|
161
|
+
` Environment: ${config.VITE_ENVIRONMENT ?? "(from native at runtime)"}`
|
|
162
|
+
);
|
|
163
|
+
console.log(` Hub URL: ${config.VITE_HUB_URL}`);
|
|
164
|
+
console.log(` VWR URL: ${config.VITE_VWR_URL}`);
|
|
165
|
+
if (config.VITE_AMPLITUDE_DEPLOYMENT_KEY) {
|
|
166
|
+
console.log(` Amplitude: ***`);
|
|
167
|
+
} else {
|
|
168
|
+
console.warn(` Amplitude: (not set)`);
|
|
169
|
+
console.warn(
|
|
170
|
+
` ⚠️ VWR flag fetching will use safe defaults (vwr-enabled: false)`
|
|
171
|
+
);
|
|
172
|
+
}
|
|
173
|
+
const loaderSrcDir = path.join(__dirname, "../src");
|
|
174
|
+
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "vwr-loader-"));
|
|
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
|
+
}
|
|
193
|
+
try {
|
|
194
|
+
console.log(`⏳ Building loader...`);
|
|
195
|
+
await build({
|
|
196
|
+
configFile: false,
|
|
197
|
+
root: loaderSrcDir,
|
|
198
|
+
// Use relative paths so loader works when served from any subdirectory
|
|
199
|
+
base: "./",
|
|
200
|
+
mode: opts.env ?? "production",
|
|
201
|
+
// Use production mode for minification when env not specified
|
|
202
|
+
logLevel: "warn",
|
|
203
|
+
build: {
|
|
204
|
+
outDir: loaderDistDir,
|
|
205
|
+
emptyOutDir: true,
|
|
206
|
+
target: "es2017",
|
|
207
|
+
minify: opts.env === "prod" || !opts.env ? "esbuild" : false,
|
|
208
|
+
sourcemap: true,
|
|
209
|
+
rollupOptions: {
|
|
210
|
+
input: {
|
|
211
|
+
main: path.join(loaderSrcDir, "index.html")
|
|
212
|
+
},
|
|
213
|
+
output: {
|
|
214
|
+
entryFileNames: "[name].js",
|
|
215
|
+
assetFileNames: "[name].[ext]"
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
define: defineConfig
|
|
220
|
+
});
|
|
221
|
+
const outputPath = path.resolve(opts.output);
|
|
222
|
+
await fs.ensureDir(outputPath);
|
|
223
|
+
await fs.copy(loaderDistDir, outputPath, { overwrite: true });
|
|
224
|
+
console.log(`✅ VWR loader built successfully`);
|
|
225
|
+
console.log(` Output: ${outputPath}`);
|
|
226
|
+
console.log(` Files: index.html, main.js`);
|
|
227
|
+
} finally {
|
|
228
|
+
try {
|
|
229
|
+
await fs.remove(tmpDir);
|
|
230
|
+
} catch (e) {
|
|
231
|
+
console.warn("⚠️ Failed to cleanup temp dir:", e);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +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 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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"}
|
package/dist/envDefaults.d.ts
CHANGED
|
@@ -3,7 +3,10 @@ export interface EnvConfig {
|
|
|
3
3
|
vwrUrl: string;
|
|
4
4
|
configUrl: string;
|
|
5
5
|
configFile: string;
|
|
6
|
+
platformApiUrl: string;
|
|
7
|
+
platformAuthApiUrl: string;
|
|
6
8
|
amplitudeKey: string;
|
|
9
|
+
trustedOrigins?: string[];
|
|
7
10
|
}
|
|
8
11
|
export declare const ENV_DEFAULTS: Record<string, EnvConfig>;
|
|
9
12
|
//# sourceMappingURL=envDefaults.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envDefaults.d.ts","sourceRoot":"","sources":["../src/envDefaults.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,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"}
|
package/dist/envDefaults.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
var _a;
|
|
1
2
|
const CONFIG_URL_DEFAULT = "https://vwr.volley.tv/config/";
|
|
2
3
|
const CONFIG_FILE_DEFAULT = "vwrConfig.json";
|
|
3
4
|
const VWR_URL_PATH_DEFAULT = "v1/latest/vwr.js";
|
|
@@ -6,21 +7,30 @@ const prodConfig = {
|
|
|
6
7
|
vwrUrl: `https://vwr.volley.tv/${VWR_URL_PATH_DEFAULT}`,
|
|
7
8
|
configUrl: CONFIG_URL_DEFAULT,
|
|
8
9
|
configFile: CONFIG_FILE_DEFAULT,
|
|
10
|
+
platformApiUrl: "https://platform.volley-services.net",
|
|
11
|
+
platformAuthApiUrl: "https://auth.volley.tv",
|
|
9
12
|
amplitudeKey: "",
|
|
10
13
|
};
|
|
11
14
|
export const ENV_DEFAULTS = {
|
|
12
15
|
local: {
|
|
13
|
-
hubUrl: "http://localhost:5173",
|
|
14
|
-
vwrUrl: "http://localhost:5174/vwr.js",
|
|
15
|
-
configUrl: "http://localhost:5174/config/",
|
|
16
|
-
configFile: CONFIG_FILE_DEFAULT,
|
|
16
|
+
hubUrl: import.meta.env.VITE_HUB_URL || "http://localhost:5173",
|
|
17
|
+
vwrUrl: import.meta.env.VITE_VWR_URL || "http://localhost:5174/vwr.js",
|
|
18
|
+
configUrl: import.meta.env.VITE_CONFIG_URL || "http://localhost:5174/config/",
|
|
19
|
+
configFile: import.meta.env.VITE_CONFIG_FILE || CONFIG_FILE_DEFAULT,
|
|
20
|
+
platformApiUrl: import.meta.env.VITE_PLATFORM_API_URL ||
|
|
21
|
+
"https://platform-dev.volley-services.net",
|
|
22
|
+
platformAuthApiUrl: import.meta.env.VITE_PLATFORM_AUTH_API_URL ||
|
|
23
|
+
"https://auth-dev.volley.tv",
|
|
17
24
|
amplitudeKey: "client-uJJVW3zKPC1G9kqPhUumLnZN6eaY42iQ",
|
|
25
|
+
trustedOrigins: (_a = import.meta.env.VITE_TRUSTED_ORIGINS) === null || _a === void 0 ? void 0 : _a.split(",").filter(Boolean),
|
|
18
26
|
},
|
|
19
27
|
dev: {
|
|
20
28
|
hubUrl: "https://game-clients-dev.volley.tv/hub",
|
|
21
29
|
vwrUrl: `https://vwr.volley.tv/dev/${VWR_URL_PATH_DEFAULT}`,
|
|
22
30
|
configUrl: CONFIG_URL_DEFAULT,
|
|
23
31
|
configFile: CONFIG_FILE_DEFAULT,
|
|
32
|
+
platformApiUrl: "https://platform-dev.volley-services.net",
|
|
33
|
+
platformAuthApiUrl: "https://auth-dev.volley.tv",
|
|
24
34
|
amplitudeKey: "client-uJJVW3zKPC1G9kqPhUumLnZN6eaY42iQ",
|
|
25
35
|
},
|
|
26
36
|
staging: {
|
|
@@ -28,9 +38,21 @@ export const ENV_DEFAULTS = {
|
|
|
28
38
|
vwrUrl: `https://vwr.volley.tv/staging/${VWR_URL_PATH_DEFAULT}`,
|
|
29
39
|
configUrl: CONFIG_URL_DEFAULT,
|
|
30
40
|
configFile: CONFIG_FILE_DEFAULT,
|
|
41
|
+
platformApiUrl: "https://platform-staging.volley-services.net",
|
|
42
|
+
platformAuthApiUrl: "https://auth-staging.volley.tv",
|
|
31
43
|
amplitudeKey: "",
|
|
32
44
|
},
|
|
33
45
|
prod: prodConfig,
|
|
34
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
|
+
},
|
|
35
57
|
};
|
|
36
58
|
//# sourceMappingURL=envDefaults.js.map
|
package/dist/envDefaults.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envDefaults.js","sourceRoot":"","sources":["../src/envDefaults.ts"],"names":[],"mappings":"
|
|
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"}
|
package/dist/getDeviceId.d.ts
CHANGED
|
@@ -6,12 +6,12 @@ import { type Logger } from "./logger";
|
|
|
6
6
|
*
|
|
7
7
|
* Platform handling:
|
|
8
8
|
* - FireTV: DeviceInfo (Capacitor plugin)
|
|
9
|
-
* - Android/iOS:
|
|
9
|
+
* - Android/iOS: window.iosAppContext / window.androidAppContext (phoneDeviceId)
|
|
10
10
|
* - Samsung TV: webapis
|
|
11
11
|
* - LG TV: webOS Luna service
|
|
12
12
|
* - Web: localStorage (with generated UUID fallback)
|
|
13
13
|
*
|
|
14
|
-
* @param platform - Platform identifier ('FIRE_TV', 'SAMSUNG_TV', 'LG_TV', '
|
|
14
|
+
* @param platform - Platform identifier ('FIRE_TV', 'SAMSUNG_TV', 'LG_TV', 'ANDROID_MOBILE', 'IOS_MOBILE', 'WEB')
|
|
15
15
|
* @param logger - Optional logger for error reporting. Defaults to defaultLogger.
|
|
16
16
|
* @returns A promise that resolves to a unique device identifier string, or null if retrieval fails
|
|
17
17
|
*
|
|
@@ -31,14 +31,6 @@ interface LGDeviceIdResponse {
|
|
|
31
31
|
}
|
|
32
32
|
declare global {
|
|
33
33
|
interface Window {
|
|
34
|
-
DeviceInfo?: {
|
|
35
|
-
getAndroidId: () => Promise<{
|
|
36
|
-
androidId: string;
|
|
37
|
-
}>;
|
|
38
|
-
};
|
|
39
|
-
NativeBridge?: {
|
|
40
|
-
getDeviceId: () => Promise<string>;
|
|
41
|
-
};
|
|
42
34
|
webapis?: {
|
|
43
35
|
productinfo?: {
|
|
44
36
|
getDuid: () => string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDeviceId.d.ts","sourceRoot":"","sources":["../src/getDeviceId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA;AAErD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,WAAW,CAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,MAAsB,GAC/B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,
|
|
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"}
|
package/dist/getDeviceId.js
CHANGED
|
@@ -6,12 +6,12 @@ import { defaultLogger } from "./logger";
|
|
|
6
6
|
*
|
|
7
7
|
* Platform handling:
|
|
8
8
|
* - FireTV: DeviceInfo (Capacitor plugin)
|
|
9
|
-
* - Android/iOS:
|
|
9
|
+
* - Android/iOS: window.iosAppContext / window.androidAppContext (phoneDeviceId)
|
|
10
10
|
* - Samsung TV: webapis
|
|
11
11
|
* - LG TV: webOS Luna service
|
|
12
12
|
* - Web: localStorage (with generated UUID fallback)
|
|
13
13
|
*
|
|
14
|
-
* @param platform - Platform identifier ('FIRE_TV', 'SAMSUNG_TV', 'LG_TV', '
|
|
14
|
+
* @param platform - Platform identifier ('FIRE_TV', 'SAMSUNG_TV', 'LG_TV', 'ANDROID_MOBILE', 'IOS_MOBILE', 'WEB')
|
|
15
15
|
* @param logger - Optional logger for error reporting. Defaults to defaultLogger.
|
|
16
16
|
* @returns A promise that resolves to a unique device identifier string, or null if retrieval fails
|
|
17
17
|
*
|
|
@@ -32,7 +32,9 @@ export async function getDeviceId(platform, logger = defaultLogger) {
|
|
|
32
32
|
return await getSamsungDeviceId(logger);
|
|
33
33
|
case "LG_TV":
|
|
34
34
|
return await getLGDeviceId(logger);
|
|
35
|
-
case "
|
|
35
|
+
case "ANDROID_MOBILE":
|
|
36
|
+
case "IOS_MOBILE":
|
|
37
|
+
case "MOBILE": // Legacy/Generic
|
|
36
38
|
return await getMobileDeviceId(logger);
|
|
37
39
|
case "WEB":
|
|
38
40
|
return getLocalStorageDeviceId();
|
|
@@ -77,26 +79,37 @@ async function getFireTVDeviceId(logger) {
|
|
|
77
79
|
return null;
|
|
78
80
|
}
|
|
79
81
|
/**
|
|
80
|
-
* Attempt to get device ID from
|
|
82
|
+
* Attempt to get device ID from mobile app context (Android/iOS)
|
|
83
|
+
*
|
|
84
|
+
* iOS exposes phoneDeviceId via window.iosAppContext
|
|
85
|
+
* Android exposes phoneDeviceId via window.androidAppContext (also check window.top for iframes)
|
|
81
86
|
*/
|
|
82
|
-
|
|
83
|
-
var _a;
|
|
87
|
+
function getMobileDeviceId(logger) {
|
|
88
|
+
var _a, _b, _c, _d;
|
|
89
|
+
// Try iOS first
|
|
90
|
+
const iosId = (_a = window.iosAppContext) === null || _a === void 0 ? void 0 : _a.phoneDeviceId;
|
|
91
|
+
if (iosId && iosId.trim()) {
|
|
92
|
+
return iosId;
|
|
93
|
+
}
|
|
94
|
+
// Try Android (check both window and window.top for iframe scenarios)
|
|
95
|
+
const androidContext = window.androidAppContext;
|
|
84
96
|
try {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
const id = await window.NativeBridge.getDeviceId();
|
|
89
|
-
if (id && id.trim()) {
|
|
90
|
-
return id;
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
logger.error("NativeBridge.getDeviceId returned empty");
|
|
97
|
+
const androidId = (_b = androidContext === null || androidContext === void 0 ? void 0 : androidContext.phoneDeviceId) !== null && _b !== void 0 ? _b : (_d = (_c = window.top) === null || _c === void 0 ? void 0 : _c.androidAppContext) === null || _d === void 0 ? void 0 : _d.phoneDeviceId;
|
|
98
|
+
if (androidId && androidId.trim()) {
|
|
99
|
+
return androidId;
|
|
94
100
|
}
|
|
95
101
|
}
|
|
96
|
-
catch (
|
|
97
|
-
|
|
98
|
-
|
|
102
|
+
catch (_e) {
|
|
103
|
+
// window.top access can throw if cross-origin
|
|
104
|
+
const androidId = androidContext === null || androidContext === void 0 ? void 0 : androidContext.phoneDeviceId;
|
|
105
|
+
if (androidId && androidId.trim()) {
|
|
106
|
+
return androidId;
|
|
107
|
+
}
|
|
99
108
|
}
|
|
109
|
+
logger.error("[VWR:MobileDeviceId] phoneDeviceId not found", {
|
|
110
|
+
iosAppContext: !!window.iosAppContext,
|
|
111
|
+
androidAppContext: !!androidContext,
|
|
112
|
+
});
|
|
100
113
|
return null;
|
|
101
114
|
}
|
|
102
115
|
/**
|
package/dist/getDeviceId.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDeviceId.js","sourceRoot":"","sources":["../src/getDeviceId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAe,MAAM,UAAU,CAAA;AAErD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC7B,QAAgB,EAChB,SAAiB,aAAa;IAE9B,MAAM,kBAAkB,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;IACjD,QAAQ,kBAAkB,EAAE,CAAC;QACzB,KAAK,SAAS;YACV,OAAO,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAA;QAC1C,KAAK,YAAY;YACb,OAAO,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAA;QAC3C,KAAK,OAAO;YACR,OAAO,MAAM,aAAa,CAAC,MAAM,CAAC,CAAA;QACtC,KAAK,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"getDeviceId.js","sourceRoot":"","sources":["../src/getDeviceId.ts"],"names":[],"mappings":"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"}
|