@volley/vwr-loader 1.0.0-feat-vwr-milestone-1.2 â 1.0.0-feat-vwr-milestone-1.3
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/dist/cli.js +14 -5
- package/dist/cli.js.map +1 -1
- package/dist/envDefaults.d.ts +3 -0
- package/dist/envDefaults.d.ts.map +1 -1
- package/dist/envDefaults.js +16 -4
- package/dist/envDefaults.js.map +1 -1
- package/dist/getDeviceId.d.ts +1 -4
- package/dist/getDeviceId.d.ts.map +1 -1
- package/dist/getDeviceId.js +27 -16
- package/dist/getDeviceId.js.map +1 -1
- package/dist/loadVwr.d.ts.map +1 -1
- package/dist/loadVwr.js +7 -5
- package/dist/loadVwr.js.map +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 +25 -7
- package/dist/vwrConfig.js.map +1 -1
- package/package.json +2 -1
- package/src/envDefaults.ts +23 -4
- package/src/getDeviceId.test.ts +56 -15
- package/src/getDeviceId.ts +43 -17
- package/src/loadVwr.ts +11 -5
- package/src/vite-env.d.ts +3 -0
- package/src/vwrConfig.ts +28 -7
package/dist/cli.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { Command } from "commander";
|
|
3
3
|
import { config as config$1 } from "dotenv";
|
|
4
4
|
import fs from "fs-extra";
|
|
5
|
-
import path from "path";
|
|
6
5
|
import os from "os";
|
|
6
|
+
import path from "path";
|
|
7
7
|
import { fileURLToPath } from "url";
|
|
8
8
|
import { build } from "vite";
|
|
9
9
|
const CONFIG_URL_DEFAULT = "https://vwr.volley.tv/config/";
|
|
@@ -14,6 +14,8 @@ const prodConfig = {
|
|
|
14
14
|
vwrUrl: `https://vwr.volley.tv/${VWR_URL_PATH_DEFAULT}`,
|
|
15
15
|
configUrl: CONFIG_URL_DEFAULT,
|
|
16
16
|
configFile: CONFIG_FILE_DEFAULT,
|
|
17
|
+
platformApiUrl: "https://platform.volley-services.net",
|
|
18
|
+
platformAuthApiUrl: "https://auth.volley.tv",
|
|
17
19
|
amplitudeKey: ""
|
|
18
20
|
};
|
|
19
21
|
const ENV_DEFAULTS = {
|
|
@@ -22,13 +24,18 @@ const ENV_DEFAULTS = {
|
|
|
22
24
|
vwrUrl: "http://localhost:5174/vwr.js",
|
|
23
25
|
configUrl: "http://localhost:5174/config/",
|
|
24
26
|
configFile: CONFIG_FILE_DEFAULT,
|
|
25
|
-
|
|
27
|
+
platformApiUrl: "https://platform-dev.volley-services.net",
|
|
28
|
+
platformAuthApiUrl: "https://auth-dev.volley.tv",
|
|
29
|
+
amplitudeKey: "client-uJJVW3zKPC1G9kqPhUumLnZN6eaY42iQ",
|
|
30
|
+
trustedOrigins: void 0
|
|
26
31
|
},
|
|
27
32
|
dev: {
|
|
28
33
|
hubUrl: "https://game-clients-dev.volley.tv/hub",
|
|
29
34
|
vwrUrl: `https://vwr.volley.tv/dev/${VWR_URL_PATH_DEFAULT}`,
|
|
30
35
|
configUrl: CONFIG_URL_DEFAULT,
|
|
31
36
|
configFile: CONFIG_FILE_DEFAULT,
|
|
37
|
+
platformApiUrl: "https://platform-dev.volley-services.net",
|
|
38
|
+
platformAuthApiUrl: "https://auth-dev.volley.tv",
|
|
32
39
|
amplitudeKey: "client-uJJVW3zKPC1G9kqPhUumLnZN6eaY42iQ"
|
|
33
40
|
},
|
|
34
41
|
staging: {
|
|
@@ -36,6 +43,8 @@ const ENV_DEFAULTS = {
|
|
|
36
43
|
vwrUrl: `https://vwr.volley.tv/staging/${VWR_URL_PATH_DEFAULT}`,
|
|
37
44
|
configUrl: CONFIG_URL_DEFAULT,
|
|
38
45
|
configFile: CONFIG_FILE_DEFAULT,
|
|
46
|
+
platformApiUrl: "https://platform-staging.volley-services.net",
|
|
47
|
+
platformAuthApiUrl: "https://auth-staging.volley.tv",
|
|
39
48
|
amplitudeKey: ""
|
|
40
49
|
},
|
|
41
50
|
prod: prodConfig,
|
|
@@ -123,8 +132,6 @@ try {
|
|
|
123
132
|
await build({
|
|
124
133
|
configFile: false,
|
|
125
134
|
root: loaderSrcDir,
|
|
126
|
-
// Use relative paths so loader works when served from any subdirectory
|
|
127
|
-
base: "./",
|
|
128
135
|
mode: opts.env,
|
|
129
136
|
logLevel: "warn",
|
|
130
137
|
build: {
|
|
@@ -145,7 +152,9 @@ try {
|
|
|
145
152
|
},
|
|
146
153
|
define: {
|
|
147
154
|
"import.meta.env.VITE_ENVIRONMENT": JSON.stringify(opts.env),
|
|
148
|
-
"import.meta.env.VITE_PLATFORM": JSON.stringify(
|
|
155
|
+
"import.meta.env.VITE_PLATFORM": JSON.stringify(
|
|
156
|
+
config.VITE_PLATFORM
|
|
157
|
+
),
|
|
149
158
|
"import.meta.env.VITE_SHELL_VERSION": JSON.stringify(shellVersion),
|
|
150
159
|
"import.meta.env.VITE_HUB_URL": JSON.stringify(config.VITE_HUB_URL),
|
|
151
160
|
"import.meta.env.VITE_AMPLITUDE_DEPLOYMENT_KEY": JSON.stringify(
|
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 amplitudeKey: string // Used for amplitude flag fetch, not part of VWRConfig\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 amplitudeKey: \"\",\n}\n\nexport const ENV_DEFAULTS: Record<string, EnvConfig> = {\n local: {\n hubUrl: \"http://localhost:5173\",\n vwrUrl: \"http://localhost:5174/vwr.js\",\n configUrl: \"http://localhost:5174/config/\",\n configFile: CONFIG_FILE_DEFAULT,\n amplitudeKey: \"client-uJJVW3zKPC1G9kqPhUumLnZN6eaY42iQ\",\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 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 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 path from \"path\"\nimport os from \"os\"\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(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(\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\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}\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 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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"}
|
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,CAsClD,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,6 +38,8 @@ 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,
|
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;CAC5C,CAAA"}
|
package/dist/getDeviceId.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ 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)
|
|
@@ -31,9 +31,6 @@ interface LGDeviceIdResponse {
|
|
|
31
31
|
}
|
|
32
32
|
declare global {
|
|
33
33
|
interface Window {
|
|
34
|
-
NativeBridge?: {
|
|
35
|
-
getDeviceId: () => Promise<string>;
|
|
36
|
-
};
|
|
37
34
|
webapis?: {
|
|
38
35
|
productinfo?: {
|
|
39
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,CAoBxB;
|
|
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"}
|
package/dist/getDeviceId.js
CHANGED
|
@@ -6,7 +6,7 @@ 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)
|
|
@@ -82,26 +82,37 @@ async function getFireTVDeviceId(logger) {
|
|
|
82
82
|
return null;
|
|
83
83
|
}
|
|
84
84
|
/**
|
|
85
|
-
* Attempt to get device ID from
|
|
85
|
+
* Attempt to get device ID from mobile app context (Android/iOS)
|
|
86
|
+
*
|
|
87
|
+
* iOS exposes phoneDeviceId via window.iosAppContext
|
|
88
|
+
* Android exposes phoneDeviceId via window.androidAppContext (also check window.top for iframes)
|
|
86
89
|
*/
|
|
87
|
-
|
|
88
|
-
var _a;
|
|
90
|
+
function getMobileDeviceId(logger) {
|
|
91
|
+
var _a, _b, _c, _d;
|
|
92
|
+
// Try iOS first
|
|
93
|
+
const iosId = (_a = window.iosAppContext) === null || _a === void 0 ? void 0 : _a.phoneDeviceId;
|
|
94
|
+
if (iosId && iosId.trim()) {
|
|
95
|
+
return iosId;
|
|
96
|
+
}
|
|
97
|
+
// Try Android (check both window and window.top for iframe scenarios)
|
|
98
|
+
const androidContext = window.androidAppContext;
|
|
89
99
|
try {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
const id = await window.NativeBridge.getDeviceId();
|
|
94
|
-
if (id && id.trim()) {
|
|
95
|
-
return id;
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
logger.error("NativeBridge.getDeviceId returned empty");
|
|
100
|
+
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;
|
|
101
|
+
if (androidId && androidId.trim()) {
|
|
102
|
+
return androidId;
|
|
99
103
|
}
|
|
100
104
|
}
|
|
101
|
-
catch (
|
|
102
|
-
|
|
103
|
-
|
|
105
|
+
catch (_e) {
|
|
106
|
+
// window.top access can throw if cross-origin
|
|
107
|
+
const androidId = androidContext === null || androidContext === void 0 ? void 0 : androidContext.phoneDeviceId;
|
|
108
|
+
if (androidId && androidId.trim()) {
|
|
109
|
+
return androidId;
|
|
110
|
+
}
|
|
104
111
|
}
|
|
112
|
+
logger.error("[VWR:MobileDeviceId] phoneDeviceId not found", {
|
|
113
|
+
iosAppContext: !!window.iosAppContext,
|
|
114
|
+
androidAppContext: !!androidContext,
|
|
115
|
+
});
|
|
105
116
|
return null;
|
|
106
117
|
}
|
|
107
118
|
/**
|
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,gBAAgB,CAAC;QACtB,KAAK,YAAY,CAAC;QAClB,KAAK,QAAQ,EAAE,iBAAiB;YAC5B,OAAO,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAA;QAC1C,KAAK,KAAK;YACN,OAAO,uBAAuB,EAAE,CAAA;QACpC;YACI,MAAM,OAAO,GAAG,mCAAmC,QAAQ,EAAE,CAAA;YAC7D,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACrB,OAAO,IAAI,CAAA;IACnB,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB;IAC5B,IAAI,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAA;IACvD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,QAAQ,GAAG,MAAM,CAAC,UAAU,EAAE,CAAA;QAC9B,YAAY,CAAC,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAA;IACtD,CAAC;IACD,OAAO,QAAQ,CAAA;AACnB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAAC,MAAc;;IAC3C,IAAI,CAAC;QACD,kEAAkE;QAClE,MAAM,SAAS,GAAI,MAAc,CAAC,SAAS,CAAA;QAC3C,MAAM,UAAU,GAAG,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,0CAAE,UAAU,CAAA;QAEjD,IAAI,CAAC,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,YAAY,CAAA,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAA;QACf,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,YAAY,EAAE,CAAA;QAC9C,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,KAAI,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;YAC/C,OAAO,MAAM,CAAC,SAAS,CAAA;QAC3B,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAA;QAC1D,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,iCAAiC,CAAA;QACjD,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;IACpC,CAAC;IACD,OAAO,IAAI,CAAA;AACf,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"getDeviceId.js","sourceRoot":"","sources":["../src/getDeviceId.ts"],"names":[],"mappings":"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"}
|
package/dist/loadVwr.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadVwr.d.ts","sourceRoot":"","sources":["../src/loadVwr.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"loadVwr.d.ts","sourceRoot":"","sources":["../src/loadVwr.ts"],"names":[],"mappings":"AAMA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA;AAcrD,YAAY,EAAE,MAAM,EAAE,CAAA;AAEtB;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,OAAO,GAAU,SAAQ,MAAsB,kBA8F3D,CAAA"}
|
package/dist/loadVwr.js
CHANGED
|
@@ -77,18 +77,20 @@ export const loadVwr = async (logger = defaultLogger) => {
|
|
|
77
77
|
vwrUrl: vwrConfig.vwrUrl,
|
|
78
78
|
});
|
|
79
79
|
try {
|
|
80
|
-
const vwr = await import(
|
|
80
|
+
const vwr = (await import(
|
|
81
|
+
/* @vite-ignore */ vwrConfig.vwrUrl));
|
|
81
82
|
logger.info("[Shell] VWR module loaded successfully");
|
|
82
83
|
if (typeof vwr.init !== "function") {
|
|
83
84
|
throw new Error("[Shell] VWR module missing init() function");
|
|
84
85
|
}
|
|
85
86
|
await vwr.init({
|
|
86
87
|
hubUrl: vwrConfig.hubUrl,
|
|
87
|
-
launchUrl: vwrConfig.launchUrl,
|
|
88
88
|
platform: PLATFORM,
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
89
|
+
stage: ENVIRONMENT,
|
|
90
|
+
appVersion: shellVersion,
|
|
91
|
+
platformApiUrl: vwrConfig.platformApiUrl,
|
|
92
|
+
platformAuthApiUrl: vwrConfig.platformAuthApiUrl,
|
|
93
|
+
trustedOrigins: new Set(vwrConfig.trustedDomains),
|
|
92
94
|
nativeShellVersion: shellVersion,
|
|
93
95
|
});
|
|
94
96
|
logger.info("[Shell] VWR initialized successfully");
|
package/dist/loadVwr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadVwr.js","sourceRoot":"","sources":["../src/loadVwr.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"loadVwr.js","sourceRoot":"","sources":["../src/loadVwr.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAe,MAAM,UAAU,CAAA;AAErD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE1D,mCAAmC;AACnC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAA;AACpD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAA;AAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAA;AAClD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAA;AAEpD,+EAA+E;AAC/E,uEAAuE;AACvE,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,6BAA6B,CAAA;AAInE;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAAE,SAAiB,aAAa,EAAE,EAAE;IAC5D,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;IACjE,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,sDAAsD,QAAQ,EAAE,CAAA;QAChF,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACrB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;IACD,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAE5D,gEAAgE;IAChE,iDAAiD;IACjD,IAAI,YAAY,GAAG,aAAa,CAAA;IAChC,IAAI,CAAC,YAAY,EAAE,CAAC;QAChB,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QAC7C,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,gCAAgC,WAAW,EAAE,CAAC,CAAA;QAClE,CAAC;QACD,YAAY,GAAG,WAAW,CAAC,YAAY,CAAA;IAC3C,CAAC;IAED,kDAAkD;IAClD,qEAAqE;IACrE,MAAM,KAAK,GAAG,MAAM,mBAAmB,CACnC,QAAQ,EACR,QAAQ,EACR;QACI,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,IAAI;KAChB,EACD,YAAY,CACf,CAAA;IAED,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;IAE/C,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;QACxB,+CAA+C;QAC/C,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAClE,CAAC;IAED,4CAA4C;IAC5C,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAA;IAE3D,MAAM,gBAAgB,GAAqB;QACvC,SAAS,EAAE,UAAU;QACrB,UAAU,EAAE,WAAW;QACvB,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,WAAW;QACxB,YAAY,EAAE,YAAY;KAC7B,CAAA;IAED,MAAM,SAAS,GAAc,MAAM,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;IAEzE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAClE,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,qCAAqC,EAAE;QAC/C,MAAM,EAAE,SAAS,CAAC,MAAM;KAC3B,CAAC,CAAA;IACF,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM;QACrB,kBAAkB,CAAC,SAAS,CAAC,MAAM,CACtC,CAAe,CAAA;QAEhB,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAA;QAErD,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;QACjE,CAAC;QAED,MAAM,GAAG,CAAC,IAAI,CAAC;YACX,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,WAAW;YAClB,UAAU,EAAE,YAAY;YACxB,cAAc,EAAE,SAAS,CAAC,cAAc;YACxC,kBAAkB,EAAE,SAAS,CAAC,kBAAkB;YAChD,cAAc,EAAE,IAAI,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC;YACjD,kBAAkB,EAAE,YAAY;SACnC,CAAC,CAAA;QACF,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAA;IACvD,CAAC;IAAC,OAAO,QAAQ,EAAE,CAAC;QAChB,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE;YACpC,KAAK,EACD,QAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;YACnE,MAAM,EAAE,SAAS,CAAC,MAAM;SAC3B,CAAC,CAAA;QACF,MAAM,QAAQ,CAAA,CAAC,uCAAuC;IAC1D,CAAC;AACL,CAAC,CAAA"}
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sources":["../src/logger.ts","../src/loadVwr.ts","../src/main.ts"],"sourcesContent":["export interface Logger {\n info: (message: string, context?: Record<string, unknown>) => void\n warn: (message: string, context?: Record<string, unknown>) => void\n error: (message: string, context?: Record<string, unknown>) => void\n}\n\nexport const defaultLogger: Logger = {\n info: (message, context) =>\n context ? console.log(message, context) : console.log(message),\n warn: (message, context) =>\n context ? console.warn(message, context) : console.warn(message),\n error: (message, context) =>\n context ? console.error(message, context) : console.error(message),\n}\n","import { fetchAmplitudeFlags } from \"./amplitudeFlagFetcher\"\nimport { ENV_DEFAULTS } from \"./envDefaults\"\nimport { getDeviceId } from \"./getDeviceId\"\nimport { getShellVersion } from \"./getShellVersion\"\nimport { defaultLogger, type Logger } from \"./logger\"\nimport type { VWRConfig, VWRConfigRequest } from \"./vwrConfig\"\nimport { getVWRConfig, validateConfig } from \"./vwrConfig\"\n\n// Vite injects these at build time\nconst ENVIRONMENT = import.meta.env.VITE_ENVIRONMENT\nconst PLATFORM = import.meta.env.VITE_PLATFORM\nconst CONFIG_URL = import.meta.env.VITE_CONFIG_URL\nconst CONFIG_FILE = import.meta.env.VITE_CONFIG_FILE\n\n// AMPLITUDE_KEY can be optionally injected at build time (via build.ts script)\n// Falls back to envDefaults if not injected (e.g., vite.config.dev.ts)\nconst AMPLITUDE_KEY = import.meta.env.VITE_AMPLITUDE_DEPLOYMENT_KEY\n\nexport type { Logger }\n\n/**\n * Load VWR runtime.\n *\n * Optimized flow: checks vwr-enabled flag FIRST using baked-in Amplitude key,\n * before doing any config fetches. For flag-OFF users (100% at initial launch),\n * this reduces startup latency from ~2-4s to ~500ms by skipping config fetches.\n *\n * Flow:\n * 1. Get deviceId, shellVersion (fast, local)\n * 2. Check vwr-enabled flag (single request, ~500ms)\n * 3. If OFF â throw immediately (no config fetches)\n * 4. If ON â fetch config, load VWR module, initialize\n *\n * @param logger - Optional logger, defaults to console\n */\nexport const loadVwr = async (logger: Logger = defaultLogger) => {\n if (!ENVIRONMENT || !PLATFORM || !CONFIG_URL || !CONFIG_FILE) {\n throw new Error(\"[Shell] Build config not injected properly\")\n }\n\n const deviceId = await getDeviceId(PLATFORM, logger)\n if (!deviceId) {\n const message = `[Shell] Failed to retrieve device ID for platform: ${PLATFORM}`\n logger.error(message)\n throw new Error(message)\n }\n const shellVersion = await getShellVersion(PLATFORM, logger)\n\n // Get amplitude key: injected at build time OR from envDefaults\n // Precedence: build-time injection > envDefaults\n let amplitudeKey = AMPLITUDE_KEY\n if (!amplitudeKey) {\n const envDefaults = ENV_DEFAULTS[ENVIRONMENT]\n if (!envDefaults) {\n throw new Error(`[Shell] Unknown environment: ${ENVIRONMENT}`)\n }\n amplitudeKey = envDefaults.amplitudeKey\n }\n\n // FAST PATH: Check flag first using amplitude key\n // This avoids config fetches for flag-OFF users (majority at launch)\n const flags = await fetchAmplitudeFlags(\n deviceId,\n PLATFORM,\n {\n apiKey: amplitudeKey,\n timeout: 2000,\n },\n shellVersion\n )\n\n logger.info(\"[Shell] Flags fetched\", { flags })\n\n if (!flags[\"vwr-enabled\"]) {\n // Flag OFF: skip all config fetches, fail fast\n throw new Error(\"[Shell] VWR not enabled via Amplitude flags\")\n }\n\n // Flag ON: proceed with full config loading\n logger.info(\"[Shell] VWR flag enabled, fetching config...\")\n\n const vwrConfigRequest: VWRConfigRequest = {\n configUrl: CONFIG_URL,\n configFile: CONFIG_FILE,\n platform: PLATFORM,\n deviceId: deviceId,\n environment: ENVIRONMENT,\n shellVersion: shellVersion,\n }\n\n const vwrConfig: VWRConfig = await getVWRConfig(vwrConfigRequest, logger)\n\n if (!validateConfig(vwrConfig)) {\n throw new Error(\"Invalid config, falling back to default hub\")\n }\n\n logger.info(\"[Shell] VWR enabled, loading module\", {\n vwrUrl: vwrConfig.vwrUrl,\n })\n try {\n const vwr = await import(/* @vite-ignore */ vwrConfig.vwrUrl)\n logger.info(\"[Shell] VWR module loaded successfully\")\n\n if (typeof vwr.init !== \"function\") {\n throw new Error(\"[Shell] VWR module missing init() function\")\n }\n\n await vwr.init({\n hubUrl: vwrConfig.hubUrl,\n
|
|
1
|
+
{"version":3,"file":"main.js","sources":["../src/logger.ts","../src/loadVwr.ts","../src/main.ts"],"sourcesContent":["export interface Logger {\n info: (message: string, context?: Record<string, unknown>) => void\n warn: (message: string, context?: Record<string, unknown>) => void\n error: (message: string, context?: Record<string, unknown>) => void\n}\n\nexport const defaultLogger: Logger = {\n info: (message, context) =>\n context ? console.log(message, context) : console.log(message),\n warn: (message, context) =>\n context ? console.warn(message, context) : console.warn(message),\n error: (message, context) =>\n context ? console.error(message, context) : console.error(message),\n}\n","import type * as VWR from \"@volley/vwr\"\n\nimport { fetchAmplitudeFlags } from \"./amplitudeFlagFetcher\"\nimport { ENV_DEFAULTS } from \"./envDefaults\"\nimport { getDeviceId } from \"./getDeviceId\"\nimport { getShellVersion } from \"./getShellVersion\"\nimport { defaultLogger, type Logger } from \"./logger\"\nimport type { VWRConfig, VWRConfigRequest } from \"./vwrConfig\"\nimport { getVWRConfig, validateConfig } from \"./vwrConfig\"\n\n// Vite injects these at build time\nconst ENVIRONMENT = import.meta.env.VITE_ENVIRONMENT\nconst PLATFORM = import.meta.env.VITE_PLATFORM\nconst CONFIG_URL = import.meta.env.VITE_CONFIG_URL\nconst CONFIG_FILE = import.meta.env.VITE_CONFIG_FILE\n\n// AMPLITUDE_KEY can be optionally injected at build time (via build.ts script)\n// Falls back to envDefaults if not injected (e.g., vite.config.dev.ts)\nconst AMPLITUDE_KEY = import.meta.env.VITE_AMPLITUDE_DEPLOYMENT_KEY\n\nexport type { Logger }\n\n/**\n * Load VWR runtime.\n *\n * Optimized flow: checks vwr-enabled flag FIRST using baked-in Amplitude key,\n * before doing any config fetches. For flag-OFF users (100% at initial launch),\n * this reduces startup latency from ~2-4s to ~500ms by skipping config fetches.\n *\n * Flow:\n * 1. Get deviceId, shellVersion (fast, local)\n * 2. Check vwr-enabled flag (single request, ~500ms)\n * 3. If OFF â throw immediately (no config fetches)\n * 4. If ON â fetch config, load VWR module, initialize\n *\n * @param logger - Optional logger, defaults to console\n */\nexport const loadVwr = async (logger: Logger = defaultLogger) => {\n if (!ENVIRONMENT || !PLATFORM || !CONFIG_URL || !CONFIG_FILE) {\n throw new Error(\"[Shell] Build config not injected properly\")\n }\n\n const deviceId = await getDeviceId(PLATFORM, logger)\n if (!deviceId) {\n const message = `[Shell] Failed to retrieve device ID for platform: ${PLATFORM}`\n logger.error(message)\n throw new Error(message)\n }\n const shellVersion = await getShellVersion(PLATFORM, logger)\n\n // Get amplitude key: injected at build time OR from envDefaults\n // Precedence: build-time injection > envDefaults\n let amplitudeKey = AMPLITUDE_KEY\n if (!amplitudeKey) {\n const envDefaults = ENV_DEFAULTS[ENVIRONMENT]\n if (!envDefaults) {\n throw new Error(`[Shell] Unknown environment: ${ENVIRONMENT}`)\n }\n amplitudeKey = envDefaults.amplitudeKey\n }\n\n // FAST PATH: Check flag first using amplitude key\n // This avoids config fetches for flag-OFF users (majority at launch)\n const flags = await fetchAmplitudeFlags(\n deviceId,\n PLATFORM,\n {\n apiKey: amplitudeKey,\n timeout: 2000,\n },\n shellVersion\n )\n\n logger.info(\"[Shell] Flags fetched\", { flags })\n\n if (!flags[\"vwr-enabled\"]) {\n // Flag OFF: skip all config fetches, fail fast\n throw new Error(\"[Shell] VWR not enabled via Amplitude flags\")\n }\n\n // Flag ON: proceed with full config loading\n logger.info(\"[Shell] VWR flag enabled, fetching config...\")\n\n const vwrConfigRequest: VWRConfigRequest = {\n configUrl: CONFIG_URL,\n configFile: CONFIG_FILE,\n platform: PLATFORM,\n deviceId: deviceId,\n environment: ENVIRONMENT,\n shellVersion: shellVersion,\n }\n\n const vwrConfig: VWRConfig = await getVWRConfig(vwrConfigRequest, logger)\n\n if (!validateConfig(vwrConfig)) {\n throw new Error(\"Invalid config, falling back to default hub\")\n }\n\n logger.info(\"[Shell] VWR enabled, loading module\", {\n vwrUrl: vwrConfig.vwrUrl,\n })\n try {\n const vwr = (await import(\n /* @vite-ignore */ vwrConfig.vwrUrl\n )) as typeof VWR\n\n logger.info(\"[Shell] VWR module loaded successfully\")\n\n if (typeof vwr.init !== \"function\") {\n throw new Error(\"[Shell] VWR module missing init() function\")\n }\n\n await vwr.init({\n hubUrl: vwrConfig.hubUrl,\n platform: PLATFORM,\n stage: ENVIRONMENT,\n appVersion: shellVersion,\n platformApiUrl: vwrConfig.platformApiUrl,\n platformAuthApiUrl: vwrConfig.platformAuthApiUrl,\n trustedOrigins: new Set(vwrConfig.trustedDomains),\n nativeShellVersion: shellVersion,\n })\n logger.info(\"[Shell] VWR initialized successfully\")\n } catch (vwrError) {\n logger.error(\"[Shell] VWR load failed\", {\n error:\n vwrError instanceof Error ? vwrError.message : String(vwrError),\n vwrUrl: vwrConfig.vwrUrl,\n })\n throw vwrError // Re-throw to outer catch for fallback\n }\n}\n","import { loadVwr } from \"./loadVwr\"\n\nconst PLATFORM = import.meta.env.VITE_PLATFORM\nconst HUB_URL = import.meta.env.VITE_HUB_URL\n\nasync function init() {\n try {\n await loadVwr()\n } catch (error) {\n try {\n console.error(\"[Shell] â ī¸ FALLBACK TO HUB - Init failed:\", error)\n\n if ((window as any).DD_LOGS) {\n ;(window as any).DD_LOGS.logger.error(\"shell_init_failed\", {\n error: (error as Error).message,\n platform: PLATFORM,\n })\n }\n } finally {\n //Fallback, can't trust config exists\n const fallbackUrl = new URL(HUB_URL)\n fallbackUrl.searchParams.set(\"volley_platform\", PLATFORM)\n window.location.href = fallbackUrl.toString()\n }\n }\n}\n\ninit()\n"],"names":["defaultLogger","message","context","loadVwr","logger","PLATFORM","HUB_URL","init","error","fallbackUrl"],"mappings":"ssBAMO,MAAMA,EAAwB,CACjC,KAAM,CAACC,EAASC,IACZA,EAAU,QAAQ,IAAID,EAASC,CAAO,EAAI,QAAQ,IAAID,CAAO,EACjE,KAAM,CAACA,EAASC,IACZA,EAAU,QAAQ,KAAKD,EAASC,CAAO,EAAI,QAAQ,KAAKD,CAAO,EACnE,MAAO,CAACA,EAASC,IACbA,EAAU,QAAQ,MAAMD,EAASC,CAAO,EAAI,QAAQ,MAAMD,CAAO,CACzE,ECwBaE,EAAU,MAAOC,EAAiBJ,IAAkB,CAEzD,MAAM,IAAI,MAAM,4CAA4C,CA4FpE,ECjIMK,EAAW,OACXC,EAAU,OAEhB,eAAeC,GAAO,CAClB,GAAI,CACA,MAAMJ,EAAA,CACV,OAASK,EAAO,CACZ,GAAI,CACA,QAAQ,MAAM,6CAA8CA,CAAK,EAE5D,OAAe,SACd,OAAe,QAAQ,OAAO,MAAM,oBAAqB,CACvD,MAAQA,EAAgB,QACxB,SAAUH,CAAA,CACb,CAET,QAAA,CAEI,MAAMI,EAAc,IAAI,IAAIH,CAAO,EACnCG,EAAY,aAAa,IAAI,kBAAmBJ,CAAQ,EACxD,OAAO,SAAS,KAAOI,EAAY,SAAA,CACvC,CACJ,CACJ,CAEAF,EAAA"}
|
package/dist/vwrConfig.d.ts
CHANGED
package/dist/vwrConfig.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vwrConfig.d.ts","sourceRoot":"","sources":["../src/vwrConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA;AAErD,MAAM,MAAM,SAAS,GAAG;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAsBD,eAAO,MAAM,YAAY,GACrB,SAAS,gBAAgB,EACzB,SAAQ,MAAsB,KAC/B,OAAO,CAAC,SAAS,CAmEnB,CAAA;
|
|
1
|
+
{"version":3,"file":"vwrConfig.d.ts","sourceRoot":"","sources":["../src/vwrConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA;AAErD,MAAM,MAAM,SAAS,GAAG;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,cAAc,EAAE,MAAM,CAAA;IACtB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAsBD,eAAO,MAAM,YAAY,GACrB,SAAS,gBAAgB,EACzB,SAAQ,MAAsB,KAC/B,OAAO,CAAC,SAAS,CAmEnB,CAAA;AAsKD,eAAO,MAAM,cAAc,GAAI,QAAQ,SAAS,KAAG,OAWlD,CAAA"}
|
package/dist/vwrConfig.js
CHANGED
|
@@ -122,25 +122,36 @@ const tryGetVWRConfig = async (url, timeout) => {
|
|
|
122
122
|
};
|
|
123
123
|
const parseConfig = (config) => {
|
|
124
124
|
const defaultConfig = getDefaultConfig();
|
|
125
|
+
if (!config.platformApiUrl) {
|
|
126
|
+
config.platformApiUrl = defaultConfig.platformApiUrl;
|
|
127
|
+
}
|
|
128
|
+
if (!config.platformAuthApiUrl) {
|
|
129
|
+
config.platformAuthApiUrl = defaultConfig.platformAuthApiUrl;
|
|
130
|
+
}
|
|
125
131
|
if (!Array.isArray(config.trustedDomains) ||
|
|
126
132
|
config.trustedDomains.length === 0) {
|
|
127
133
|
config.trustedDomains = defaultConfig.trustedDomains;
|
|
128
134
|
}
|
|
129
135
|
if (!config.vwrUrl) {
|
|
130
136
|
config.vwrUrl = defaultConfig.vwrUrl;
|
|
131
|
-
|
|
132
|
-
|
|
137
|
+
const vwrUrlOrigin = new URL(defaultConfig.vwrUrl).origin;
|
|
138
|
+
if (!config.trustedDomains.includes(vwrUrlOrigin)) {
|
|
139
|
+
config.trustedDomains.push(vwrUrlOrigin);
|
|
133
140
|
}
|
|
134
141
|
}
|
|
135
142
|
if (!config.hubUrl) {
|
|
136
143
|
config.hubUrl = defaultConfig.hubUrl;
|
|
137
|
-
|
|
138
|
-
|
|
144
|
+
const hubUrlOrigin = new URL(defaultConfig.hubUrl).origin;
|
|
145
|
+
if (!config.trustedDomains.includes(hubUrlOrigin)) {
|
|
146
|
+
config.trustedDomains.push(hubUrlOrigin);
|
|
139
147
|
}
|
|
140
148
|
}
|
|
141
149
|
// launchUrl is optional - only add to trustedDomains if explicitly set
|
|
142
|
-
if (config.launchUrl
|
|
143
|
-
|
|
150
|
+
if (config.launchUrl) {
|
|
151
|
+
const launchUrlOrigin = new URL(config.launchUrl).origin;
|
|
152
|
+
if (!config.trustedDomains.includes(launchUrlOrigin)) {
|
|
153
|
+
config.trustedDomains.push(launchUrlOrigin);
|
|
154
|
+
}
|
|
144
155
|
}
|
|
145
156
|
return config;
|
|
146
157
|
};
|
|
@@ -157,6 +168,7 @@ export const validateConfig = (config) => {
|
|
|
157
168
|
return true;
|
|
158
169
|
};
|
|
159
170
|
const getDefaultConfig = () => {
|
|
171
|
+
var _a;
|
|
160
172
|
const ENVIRONMENT = import.meta.env.VITE_ENVIRONMENT || "dev";
|
|
161
173
|
const defaults = ENV_DEFAULTS[ENVIRONMENT];
|
|
162
174
|
if (!defaults) {
|
|
@@ -166,7 +178,13 @@ const getDefaultConfig = () => {
|
|
|
166
178
|
hubUrl: defaults.hubUrl,
|
|
167
179
|
vwrUrl: defaults.vwrUrl,
|
|
168
180
|
launchUrl: undefined,
|
|
169
|
-
|
|
181
|
+
platformApiUrl: defaults.platformApiUrl,
|
|
182
|
+
platformAuthApiUrl: defaults.platformAuthApiUrl,
|
|
183
|
+
trustedDomains: [
|
|
184
|
+
new URL(defaults.hubUrl).origin,
|
|
185
|
+
new URL(defaults.vwrUrl).origin,
|
|
186
|
+
...((_a = defaults.trustedOrigins) !== null && _a !== void 0 ? _a : []),
|
|
187
|
+
],
|
|
170
188
|
};
|
|
171
189
|
};
|
|
172
190
|
//# sourceMappingURL=vwrConfig.js.map
|
package/dist/vwrConfig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vwrConfig.js","sourceRoot":"","sources":["../src/vwrConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAe,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"vwrConfig.js","sourceRoot":"","sources":["../src/vwrConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAe,MAAM,UAAU,CAAA;AAqBrD,MAAM,sBAAsB,GAAG,IAAI,CAAA;AAEnC;;;;;;;;;;;;GAYG;AACH,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,IAAY,EAAO,EAAE;IACjD,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAA;IAC7D,OAAO,IAAI,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;AACxC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC7B,OAAyB,EACzB,SAAiB,aAAa,EACZ,EAAE;;IACpB,MAAM,OAAO,GAAG,MAAA,OAAO,CAAC,OAAO,mCAAI,sBAAsB,CAAA;IAEzD,MAAM,CAAC,IAAI,CACP,oGAAoG,CACvG,CAAA;IAED,gDAAgD;IAChD,MAAM,CAAC,WAAW,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,GACpE,MAAM,OAAO,CAAC,GAAG,CAAC;QACd,iBAAiB,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC;QACtD,kBAAkB,CACd,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,QAAQ,EAChB,OAAO,EACP,MAAM,CACT;QACD,wBAAwB,CACpB,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,YAAY,EACpB,OAAO,EACP,MAAM,CACT;QACD,uBAAuB,CACnB,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,WAAW,EACnB,OAAO,EACP,MAAM,CACT;KACJ,CAAC,CAAA;IAEN,mDAAmD;IACnD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,yCAAyC,EAAE,WAAW,CAAC,CAAA;QACnE,OAAO,WAAW,CAAA;IACtB,CAAC;IACD,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,0CAA0C,EAAE,YAAY,CAAC,CAAA;QACrE,OAAO,YAAY,CAAA;IACvB,CAAC;IACD,IAAI,kBAAkB,KAAK,IAAI,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CACP,gDAAgD,EAChD,kBAAkB,CACrB,CAAA;QACD,OAAO,kBAAkB,CAAA;IAC7B,CAAC;IACD,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CACP,+CAA+C,EAC/C,iBAAiB,CACpB,CAAA;QACD,OAAO,iBAAiB,CAAA;IAC5B,CAAC;IAED,mCAAmC;IACnC,MAAM,CAAC,IAAI,CACP,iEAAiE,CACpE,CAAA;IACD,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAA;IACxC,OAAO,aAAa,CAAA;AACxB,CAAC,CAAA;AAED,MAAM,iBAAiB,GAAG,KAAK,EAC3B,UAAkB,EAClB,OAAe,EACf,MAAc,EACW,EAAE;;IAC3B,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,EAAE,MAAA,MAAA,YAAY,CAAC,OAAO,CAAC,0CAAE,SAAS,mCAAI,EAAE,CAAC,CAAA;QACxE,MAAM,CAAC,IAAI,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAA;QAChD,OAAO,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CACR,0DAA0D,KAAK,EAAE,CACpE,CAAA;QACD,OAAO,IAAI,CAAA;IACf,CAAC;AACL,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,KAAK,EAC5B,SAAiB,EACjB,UAAkB,EAClB,QAAgB,EAChB,QAAgB,EAChB,OAAe,EACf,MAAc,EACW,EAAE;IAC3B,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,QAAQ,CAChB,UAAU,QAAQ,IAAI,QAAQ,IAAI,UAAU,EAAE,EAC9C,SAAS,CACZ,CAAA;QACD,MAAM,CAAC,IAAI,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAA;QACjD,OAAO,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CACR,2DAA2D,KAAK,EAAE,CACrE,CAAA;QACD,OAAO,IAAI,CAAA;IACf,CAAC;AACL,CAAC,CAAA;AAED,MAAM,uBAAuB,GAAG,KAAK,EACjC,SAAiB,EACjB,UAAkB,EAClB,WAAmB,EACnB,OAAe,EACf,MAAc,EACW,EAAE;IAC3B,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,QAAQ,CAChB,gBAAgB,WAAW,IAAI,UAAU,EAAE,EAC3C,SAAS,CACZ,CAAA;QACD,MAAM,CAAC,IAAI,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAA;QACtD,OAAO,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CACR,gEAAgE,KAAK,EAAE,CAC1E,CAAA;QACD,OAAO,IAAI,CAAA;IACf,CAAC;AACL,CAAC,CAAA;AAED,MAAM,wBAAwB,GAAG,KAAK,EAClC,SAAiB,EACjB,UAAkB,EAClB,WAAmB,EACnB,QAAgB,EAChB,YAAoB,EACpB,OAAe,EACf,MAAc,EACW,EAAE;IAC3B,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,QAAQ,CAChB,gBAAgB,WAAW,IAAI,QAAQ,IAAI,YAAY,IAAI,UAAU,EAAE,EACvE,SAAS,CACZ,CAAA;QACD,MAAM,CAAC,IAAI,CAAC,qCAAqC,GAAG,EAAE,CAAC,CAAA;QACvD,OAAO,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CACR,iEAAiE,KAAK,EAAE,CAC3E,CAAA;QACD,OAAO,IAAI,CAAA;IACf,CAAC;AACL,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,KAAK,EACzB,GAAQ,EACR,OAAe,EACU,EAAE;IAC3B,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,CACxB,IAAI,OAAO,CAAC,GAAG,EAAE;YACb,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;aACrC;YACD,MAAM,EAAE,UAAU,CAAC,MAAM;SAC5B,CAAC,CACL,CAAA;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,YAAY,CAAC,SAAS,CAAC,CAAA;YACvB,OAAO,IAAI,CAAA;QACf,CAAC;QAED,IAAI,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAClC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;QAE5B,YAAY,CAAC,SAAS,CAAC,CAAA;QACvB,OAAO,MAAmB,CAAA;IAC9B,CAAC;IAAC,WAAM,CAAC;QACL,YAAY,CAAC,SAAS,CAAC,CAAA;QACvB,OAAO,IAAI,CAAA;IACf,CAAC;AACL,CAAC,CAAA;AAED,MAAM,WAAW,GAAG,CAAC,MAAiB,EAAa,EAAE;IACjD,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAA;IAExC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QACzB,MAAM,CAAC,cAAc,GAAG,aAAa,CAAC,cAAc,CAAA;IACxD,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC7B,MAAM,CAAC,kBAAkB,GAAG,aAAa,CAAC,kBAAkB,CAAA;IAChE,CAAC;IAED,IACI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;QACrC,MAAM,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EACpC,CAAC;QACC,MAAM,CAAC,cAAc,GAAG,aAAa,CAAC,cAAc,CAAA;IACxD,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAA;QACpC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,CAAA;QACzD,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAChD,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC5C,CAAC;IACL,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAA;QACpC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,CAAA;QACzD,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAChD,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC5C,CAAC;IACL,CAAC;IAED,uEAAuE;IACvE,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACnB,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAA;QACxD,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACnD,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC/C,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAA;AACjB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAiB,EAAW,EAAE;IACzD,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IAEhC,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IAEhC,yCAAyC;IAEzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;QAAE,OAAO,KAAK,CAAA;SAClD,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAEzD,OAAO,IAAI,CAAA;AACf,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG,GAAc,EAAE;;IACrC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,IAAI,KAAK,CAAA;IAC7D,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;IAE1C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACX,qCAAqC,WAAW,oCAAoC,CACvF,CAAA;IACL,CAAC;IAED,OAAO;QACH,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,SAAS,EAAE,SAAS;QACpB,cAAc,EAAE,QAAQ,CAAC,cAAc;QACvC,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;QAC/C,cAAc,EAAE;YACZ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM;YAC/B,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM;YAC/B,GAAG,CAAC,MAAA,QAAQ,CAAC,cAAc,mCAAI,EAAE,CAAC;SACrC;KACJ,CAAA;AACL,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@volley/vwr-loader",
|
|
3
|
-
"version": "1.0.0-feat-vwr-milestone-1.
|
|
3
|
+
"version": "1.0.0-feat-vwr-milestone-1.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Vite-based VWR loader for all Volley platforms",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
"@semantic-release/npm": "^12.0.1",
|
|
44
44
|
"@types/fs-extra": "^11.0.0",
|
|
45
45
|
"@types/node": "^20.0.0",
|
|
46
|
+
"@volley/vwr": "workspace:*",
|
|
46
47
|
"eslint": "^9.25.1",
|
|
47
48
|
"jsdom": "^24.1.3",
|
|
48
49
|
"prettier": "~3.0.3",
|
package/src/envDefaults.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 // Used for amplitude flag fetch, not part of VWRConfig
|
|
9
|
+
trustedOrigins?: string[]
|
|
7
10
|
}
|
|
8
11
|
|
|
9
12
|
const CONFIG_URL_DEFAULT = "https://vwr.volley.tv/config/"
|
|
@@ -15,22 +18,36 @@ const prodConfig: EnvConfig = {
|
|
|
15
18
|
vwrUrl: `https://vwr.volley.tv/${VWR_URL_PATH_DEFAULT}`,
|
|
16
19
|
configUrl: CONFIG_URL_DEFAULT,
|
|
17
20
|
configFile: CONFIG_FILE_DEFAULT,
|
|
21
|
+
platformApiUrl: "https://platform.volley-services.net",
|
|
22
|
+
platformAuthApiUrl: "https://auth.volley.tv",
|
|
18
23
|
amplitudeKey: "",
|
|
19
24
|
}
|
|
20
25
|
|
|
21
26
|
export const ENV_DEFAULTS: Record<string, EnvConfig> = {
|
|
22
27
|
local: {
|
|
23
|
-
hubUrl: "http://localhost:5173",
|
|
24
|
-
vwrUrl: "http://localhost:5174/vwr.js",
|
|
25
|
-
configUrl:
|
|
26
|
-
|
|
28
|
+
hubUrl: import.meta.env.VITE_HUB_URL || "http://localhost:5173",
|
|
29
|
+
vwrUrl: import.meta.env.VITE_VWR_URL || "http://localhost:5174/vwr.js",
|
|
30
|
+
configUrl:
|
|
31
|
+
import.meta.env.VITE_CONFIG_URL || "http://localhost:5174/config/",
|
|
32
|
+
configFile: import.meta.env.VITE_CONFIG_FILE || CONFIG_FILE_DEFAULT,
|
|
33
|
+
platformApiUrl:
|
|
34
|
+
import.meta.env.VITE_PLATFORM_API_URL ||
|
|
35
|
+
"https://platform-dev.volley-services.net",
|
|
36
|
+
platformAuthApiUrl:
|
|
37
|
+
import.meta.env.VITE_PLATFORM_AUTH_API_URL ||
|
|
38
|
+
"https://auth-dev.volley.tv",
|
|
27
39
|
amplitudeKey: "client-uJJVW3zKPC1G9kqPhUumLnZN6eaY42iQ",
|
|
40
|
+
trustedOrigins: import.meta.env.VITE_TRUSTED_ORIGINS?.split(",").filter(
|
|
41
|
+
Boolean
|
|
42
|
+
),
|
|
28
43
|
},
|
|
29
44
|
dev: {
|
|
30
45
|
hubUrl: "https://game-clients-dev.volley.tv/hub",
|
|
31
46
|
vwrUrl: `https://vwr.volley.tv/dev/${VWR_URL_PATH_DEFAULT}`,
|
|
32
47
|
configUrl: CONFIG_URL_DEFAULT,
|
|
33
48
|
configFile: CONFIG_FILE_DEFAULT,
|
|
49
|
+
platformApiUrl: "https://platform-dev.volley-services.net",
|
|
50
|
+
platformAuthApiUrl: "https://auth-dev.volley.tv",
|
|
34
51
|
amplitudeKey: "client-uJJVW3zKPC1G9kqPhUumLnZN6eaY42iQ",
|
|
35
52
|
},
|
|
36
53
|
staging: {
|
|
@@ -38,6 +55,8 @@ export const ENV_DEFAULTS: Record<string, EnvConfig> = {
|
|
|
38
55
|
vwrUrl: `https://vwr.volley.tv/staging/${VWR_URL_PATH_DEFAULT}`,
|
|
39
56
|
configUrl: CONFIG_URL_DEFAULT,
|
|
40
57
|
configFile: CONFIG_FILE_DEFAULT,
|
|
58
|
+
platformApiUrl: "https://platform-staging.volley-services.net",
|
|
59
|
+
platformAuthApiUrl: "https://auth-staging.volley.tv",
|
|
41
60
|
amplitudeKey: "",
|
|
42
61
|
},
|
|
43
62
|
prod: prodConfig,
|
package/src/getDeviceId.test.ts
CHANGED
|
@@ -7,7 +7,8 @@ describe("getDeviceId", () => {
|
|
|
7
7
|
vi.clearAllMocks()
|
|
8
8
|
// Clean up window properties
|
|
9
9
|
delete (window as any).Capacitor
|
|
10
|
-
delete (window as any).
|
|
10
|
+
delete (window as any).iosAppContext
|
|
11
|
+
delete (window as any).androidAppContext
|
|
11
12
|
delete (window as any).webapis
|
|
12
13
|
delete (window as any).webOSDev
|
|
13
14
|
delete (window as any).webOS
|
|
@@ -16,7 +17,8 @@ describe("getDeviceId", () => {
|
|
|
16
17
|
afterEach(() => {
|
|
17
18
|
vi.restoreAllMocks()
|
|
18
19
|
delete (window as any).Capacitor
|
|
19
|
-
delete (window as any).
|
|
20
|
+
delete (window as any).iosAppContext
|
|
21
|
+
delete (window as any).androidAppContext
|
|
20
22
|
delete (window as any).webapis
|
|
21
23
|
delete (window as any).webOSDev
|
|
22
24
|
delete (window as any).webOS
|
|
@@ -29,9 +31,9 @@ describe("getDeviceId", () => {
|
|
|
29
31
|
value: {
|
|
30
32
|
Plugins: {
|
|
31
33
|
DeviceInfo: {
|
|
32
|
-
getAndroidId: vi
|
|
33
|
-
|
|
34
|
-
|
|
34
|
+
getAndroidId: vi.fn().mockResolvedValue({
|
|
35
|
+
androidId: mockAndroidId,
|
|
36
|
+
}),
|
|
35
37
|
},
|
|
36
38
|
},
|
|
37
39
|
},
|
|
@@ -50,7 +52,9 @@ describe("getDeviceId", () => {
|
|
|
50
52
|
DeviceInfo: {
|
|
51
53
|
getAndroidId: vi
|
|
52
54
|
.fn()
|
|
53
|
-
.mockRejectedValue(
|
|
55
|
+
.mockRejectedValue(
|
|
56
|
+
new Error("DeviceInfo error")
|
|
57
|
+
),
|
|
54
58
|
},
|
|
55
59
|
},
|
|
56
60
|
},
|
|
@@ -162,11 +166,11 @@ describe("getDeviceId", () => {
|
|
|
162
166
|
})
|
|
163
167
|
|
|
164
168
|
describe("MOBILE platform", () => {
|
|
165
|
-
it("returns device ID from
|
|
166
|
-
const mockDeviceId = "
|
|
167
|
-
Object.defineProperty(window, "
|
|
169
|
+
it("returns device ID from iosAppContext when available", async () => {
|
|
170
|
+
const mockDeviceId = "ios-device-123"
|
|
171
|
+
Object.defineProperty(window, "iosAppContext", {
|
|
168
172
|
value: {
|
|
169
|
-
|
|
173
|
+
phoneDeviceId: mockDeviceId,
|
|
170
174
|
},
|
|
171
175
|
writable: true,
|
|
172
176
|
configurable: true,
|
|
@@ -176,12 +180,49 @@ describe("getDeviceId", () => {
|
|
|
176
180
|
expect(result).toBe(mockDeviceId)
|
|
177
181
|
})
|
|
178
182
|
|
|
179
|
-
it("returns
|
|
180
|
-
|
|
183
|
+
it("returns device ID from androidAppContext when available", async () => {
|
|
184
|
+
const mockDeviceId = "android-device-123"
|
|
185
|
+
Object.defineProperty(window, "androidAppContext", {
|
|
186
|
+
value: {
|
|
187
|
+
phoneDeviceId: mockDeviceId,
|
|
188
|
+
},
|
|
189
|
+
writable: true,
|
|
190
|
+
configurable: true,
|
|
191
|
+
})
|
|
192
|
+
|
|
193
|
+
const result = await getDeviceId("MOBILE")
|
|
194
|
+
expect(result).toBe(mockDeviceId)
|
|
195
|
+
})
|
|
196
|
+
|
|
197
|
+
it("prefers iosAppContext over androidAppContext", async () => {
|
|
198
|
+
Object.defineProperty(window, "iosAppContext", {
|
|
199
|
+
value: {
|
|
200
|
+
phoneDeviceId: "ios-id",
|
|
201
|
+
},
|
|
202
|
+
writable: true,
|
|
203
|
+
configurable: true,
|
|
204
|
+
})
|
|
205
|
+
Object.defineProperty(window, "androidAppContext", {
|
|
206
|
+
value: {
|
|
207
|
+
phoneDeviceId: "android-id",
|
|
208
|
+
},
|
|
209
|
+
writable: true,
|
|
210
|
+
configurable: true,
|
|
211
|
+
})
|
|
212
|
+
|
|
213
|
+
const result = await getDeviceId("MOBILE")
|
|
214
|
+
expect(result).toBe("ios-id")
|
|
215
|
+
})
|
|
216
|
+
|
|
217
|
+
it("returns null when no app context is available", async () => {
|
|
218
|
+
const result = await getDeviceId("MOBILE")
|
|
219
|
+
expect(result).toBeNull()
|
|
220
|
+
})
|
|
221
|
+
|
|
222
|
+
it("returns null when phoneDeviceId is empty", async () => {
|
|
223
|
+
Object.defineProperty(window, "iosAppContext", {
|
|
181
224
|
value: {
|
|
182
|
-
|
|
183
|
-
.fn()
|
|
184
|
-
.mockRejectedValue(new Error("Native error")),
|
|
225
|
+
phoneDeviceId: "",
|
|
185
226
|
},
|
|
186
227
|
writable: true,
|
|
187
228
|
configurable: true,
|
package/src/getDeviceId.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { defaultLogger, type Logger } from "./logger"
|
|
|
7
7
|
*
|
|
8
8
|
* Platform handling:
|
|
9
9
|
* - FireTV: DeviceInfo (Capacitor plugin)
|
|
10
|
-
* - Android/iOS:
|
|
10
|
+
* - Android/iOS: window.iosAppContext / window.androidAppContext (phoneDeviceId)
|
|
11
11
|
* - Samsung TV: webapis
|
|
12
12
|
* - LG TV: webOS Luna service
|
|
13
13
|
* - Web: localStorage (with generated UUID fallback)
|
|
@@ -88,24 +88,40 @@ async function getFireTVDeviceId(logger: Logger): Promise<string | null> {
|
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
/**
|
|
91
|
-
* Attempt to get device ID from
|
|
91
|
+
* Attempt to get device ID from mobile app context (Android/iOS)
|
|
92
|
+
*
|
|
93
|
+
* iOS exposes phoneDeviceId via window.iosAppContext
|
|
94
|
+
* Android exposes phoneDeviceId via window.androidAppContext (also check window.top for iframes)
|
|
92
95
|
*/
|
|
93
|
-
|
|
96
|
+
function getMobileDeviceId(logger: Logger): string | null {
|
|
97
|
+
// Try iOS first
|
|
98
|
+
const iosId = (window as ExtendedWindow).iosAppContext?.phoneDeviceId
|
|
99
|
+
if (iosId && iosId.trim()) {
|
|
100
|
+
return iosId
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Try Android (check both window and window.top for iframe scenarios)
|
|
104
|
+
const androidContext = (window as ExtendedWindow).androidAppContext
|
|
94
105
|
try {
|
|
95
|
-
|
|
96
|
-
|
|
106
|
+
const androidId =
|
|
107
|
+
androidContext?.phoneDeviceId ??
|
|
108
|
+
(window.top as ExtendedWindow | null)?.androidAppContext
|
|
109
|
+
?.phoneDeviceId
|
|
110
|
+
if (androidId && androidId.trim()) {
|
|
111
|
+
return androidId
|
|
97
112
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
logger.error("NativeBridge.getDeviceId returned empty")
|
|
113
|
+
} catch {
|
|
114
|
+
// window.top access can throw if cross-origin
|
|
115
|
+
const androidId = androidContext?.phoneDeviceId
|
|
116
|
+
if (androidId && androidId.trim()) {
|
|
117
|
+
return androidId
|
|
104
118
|
}
|
|
105
|
-
} catch (error) {
|
|
106
|
-
const message = "NativeBridge.getDeviceId failed:"
|
|
107
|
-
logger.error(message, { error })
|
|
108
119
|
}
|
|
120
|
+
|
|
121
|
+
logger.error("[VWR:MobileDeviceId] phoneDeviceId not found", {
|
|
122
|
+
iosAppContext: !!(window as ExtendedWindow).iosAppContext,
|
|
123
|
+
androidAppContext: !!androidContext,
|
|
124
|
+
})
|
|
109
125
|
return null
|
|
110
126
|
}
|
|
111
127
|
|
|
@@ -213,13 +229,23 @@ interface LGDeviceIdResponse {
|
|
|
213
229
|
}>
|
|
214
230
|
}
|
|
215
231
|
|
|
232
|
+
/**
|
|
233
|
+
* Extended window interface for mobile app context
|
|
234
|
+
* Matches the types from @volley/sdk ExtendedWindow.ts
|
|
235
|
+
*/
|
|
236
|
+
interface ExtendedWindow extends Window {
|
|
237
|
+
iosAppContext?: {
|
|
238
|
+
phoneDeviceId: string
|
|
239
|
+
}
|
|
240
|
+
androidAppContext?: {
|
|
241
|
+
phoneDeviceId: string
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
216
245
|
// Type augmentation for platform-specific APIs
|
|
217
246
|
// Note: Capacitor types are declared in getShellVersion.ts with flexible index signatures
|
|
218
247
|
declare global {
|
|
219
248
|
interface Window {
|
|
220
|
-
NativeBridge?: {
|
|
221
|
-
getDeviceId: () => Promise<string>
|
|
222
|
-
}
|
|
223
249
|
webapis?: {
|
|
224
250
|
productinfo?: {
|
|
225
251
|
getDuid: () => string
|
package/src/loadVwr.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type * as VWR from "@volley/vwr"
|
|
2
|
+
|
|
1
3
|
import { fetchAmplitudeFlags } from "./amplitudeFlagFetcher"
|
|
2
4
|
import { ENV_DEFAULTS } from "./envDefaults"
|
|
3
5
|
import { getDeviceId } from "./getDeviceId"
|
|
@@ -98,7 +100,10 @@ export const loadVwr = async (logger: Logger = defaultLogger) => {
|
|
|
98
100
|
vwrUrl: vwrConfig.vwrUrl,
|
|
99
101
|
})
|
|
100
102
|
try {
|
|
101
|
-
const vwr = await import(
|
|
103
|
+
const vwr = (await import(
|
|
104
|
+
/* @vite-ignore */ vwrConfig.vwrUrl
|
|
105
|
+
)) as typeof VWR
|
|
106
|
+
|
|
102
107
|
logger.info("[Shell] VWR module loaded successfully")
|
|
103
108
|
|
|
104
109
|
if (typeof vwr.init !== "function") {
|
|
@@ -107,11 +112,12 @@ export const loadVwr = async (logger: Logger = defaultLogger) => {
|
|
|
107
112
|
|
|
108
113
|
await vwr.init({
|
|
109
114
|
hubUrl: vwrConfig.hubUrl,
|
|
110
|
-
launchUrl: vwrConfig.launchUrl,
|
|
111
115
|
platform: PLATFORM,
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
116
|
+
stage: ENVIRONMENT,
|
|
117
|
+
appVersion: shellVersion,
|
|
118
|
+
platformApiUrl: vwrConfig.platformApiUrl,
|
|
119
|
+
platformAuthApiUrl: vwrConfig.platformAuthApiUrl,
|
|
120
|
+
trustedOrigins: new Set(vwrConfig.trustedDomains),
|
|
115
121
|
nativeShellVersion: shellVersion,
|
|
116
122
|
})
|
|
117
123
|
logger.info("[Shell] VWR initialized successfully")
|
package/src/vite-env.d.ts
CHANGED
|
@@ -8,6 +8,9 @@ interface ImportMetaEnv {
|
|
|
8
8
|
readonly VITE_SHELL_VERSION: string
|
|
9
9
|
readonly VITE_CONFIG_URL: string
|
|
10
10
|
readonly VITE_CONFIG_FILE: string
|
|
11
|
+
readonly VITE_PLATFORM_API_URL: string
|
|
12
|
+
readonly VITE_PLATFORM_AUTH_API_URL: string
|
|
13
|
+
readonly VITE_TRUSTED_ORIGINS: string
|
|
11
14
|
}
|
|
12
15
|
|
|
13
16
|
interface ImportMeta {
|
package/src/vwrConfig.ts
CHANGED
|
@@ -5,6 +5,8 @@ export type VWRConfig = {
|
|
|
5
5
|
hubUrl: string
|
|
6
6
|
vwrUrl: string
|
|
7
7
|
launchUrl: string | undefined
|
|
8
|
+
platformApiUrl: string
|
|
9
|
+
platformAuthApiUrl: string
|
|
8
10
|
trustedDomains: Array<string>
|
|
9
11
|
}
|
|
10
12
|
|
|
@@ -232,6 +234,14 @@ const tryGetVWRConfig = async (
|
|
|
232
234
|
const parseConfig = (config: VWRConfig): VWRConfig => {
|
|
233
235
|
const defaultConfig = getDefaultConfig()
|
|
234
236
|
|
|
237
|
+
if (!config.platformApiUrl) {
|
|
238
|
+
config.platformApiUrl = defaultConfig.platformApiUrl
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
if (!config.platformAuthApiUrl) {
|
|
242
|
+
config.platformAuthApiUrl = defaultConfig.platformAuthApiUrl
|
|
243
|
+
}
|
|
244
|
+
|
|
235
245
|
if (
|
|
236
246
|
!Array.isArray(config.trustedDomains) ||
|
|
237
247
|
config.trustedDomains.length === 0
|
|
@@ -241,21 +251,26 @@ const parseConfig = (config: VWRConfig): VWRConfig => {
|
|
|
241
251
|
|
|
242
252
|
if (!config.vwrUrl) {
|
|
243
253
|
config.vwrUrl = defaultConfig.vwrUrl
|
|
244
|
-
|
|
245
|
-
|
|
254
|
+
const vwrUrlOrigin = new URL(defaultConfig.vwrUrl).origin
|
|
255
|
+
if (!config.trustedDomains.includes(vwrUrlOrigin)) {
|
|
256
|
+
config.trustedDomains.push(vwrUrlOrigin)
|
|
246
257
|
}
|
|
247
258
|
}
|
|
248
259
|
|
|
249
260
|
if (!config.hubUrl) {
|
|
250
261
|
config.hubUrl = defaultConfig.hubUrl
|
|
251
|
-
|
|
252
|
-
|
|
262
|
+
const hubUrlOrigin = new URL(defaultConfig.hubUrl).origin
|
|
263
|
+
if (!config.trustedDomains.includes(hubUrlOrigin)) {
|
|
264
|
+
config.trustedDomains.push(hubUrlOrigin)
|
|
253
265
|
}
|
|
254
266
|
}
|
|
255
267
|
|
|
256
268
|
// launchUrl is optional - only add to trustedDomains if explicitly set
|
|
257
|
-
if (config.launchUrl
|
|
258
|
-
|
|
269
|
+
if (config.launchUrl) {
|
|
270
|
+
const launchUrlOrigin = new URL(config.launchUrl).origin
|
|
271
|
+
if (!config.trustedDomains.includes(launchUrlOrigin)) {
|
|
272
|
+
config.trustedDomains.push(launchUrlOrigin)
|
|
273
|
+
}
|
|
259
274
|
}
|
|
260
275
|
|
|
261
276
|
return config
|
|
@@ -288,6 +303,12 @@ const getDefaultConfig = (): VWRConfig => {
|
|
|
288
303
|
hubUrl: defaults.hubUrl,
|
|
289
304
|
vwrUrl: defaults.vwrUrl,
|
|
290
305
|
launchUrl: undefined,
|
|
291
|
-
|
|
306
|
+
platformApiUrl: defaults.platformApiUrl,
|
|
307
|
+
platformAuthApiUrl: defaults.platformAuthApiUrl,
|
|
308
|
+
trustedDomains: [
|
|
309
|
+
new URL(defaults.hubUrl).origin,
|
|
310
|
+
new URL(defaults.vwrUrl).origin,
|
|
311
|
+
...(defaults.trustedOrigins ?? []),
|
|
312
|
+
],
|
|
292
313
|
}
|
|
293
314
|
}
|