@volley/vwr-loader 1.0.4 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +45 -21
  2. package/dist/envDefaults.d.ts +0 -3
  3. package/dist/envDefaults.d.ts.map +1 -1
  4. package/dist/envDefaults.js +4 -16
  5. package/dist/envDefaults.js.map +1 -1
  6. package/dist/getDeviceId.d.ts +10 -2
  7. package/dist/getDeviceId.d.ts.map +1 -1
  8. package/dist/getDeviceId.js +23 -39
  9. package/dist/getDeviceId.js.map +1 -1
  10. package/dist/getEnvironment.d.ts +25 -0
  11. package/dist/getEnvironment.d.ts.map +1 -0
  12. package/dist/getEnvironment.js +102 -0
  13. package/dist/getEnvironment.js.map +1 -0
  14. package/dist/getShellVersion.d.ts +2 -2
  15. package/dist/getShellVersion.d.ts.map +1 -1
  16. package/dist/getShellVersion.js +3 -5
  17. package/dist/getShellVersion.js.map +1 -1
  18. package/dist/index.html +1 -1
  19. package/dist/loadVwr.d.ts +6 -1
  20. package/dist/loadVwr.d.ts.map +1 -1
  21. package/dist/loadVwr.js +18 -10
  22. package/dist/loadVwr.js.map +1 -1
  23. package/dist/main.js +1 -1
  24. package/dist/main.js.map +1 -1
  25. package/dist/vwrConfig.d.ts +0 -2
  26. package/dist/vwrConfig.d.ts.map +1 -1
  27. package/dist/vwrConfig.js +7 -25
  28. package/dist/vwrConfig.js.map +1 -1
  29. package/eslint.config.mjs +23 -0
  30. package/package.json +4 -15
  31. package/scripts/build.js +2 -0
  32. package/scripts/build.ts +207 -0
  33. package/src/amplitudeFlagFetcher.test.ts +0 -5
  34. package/src/envDefaults.ts +4 -23
  35. package/src/getDeviceId.test.ts +24 -79
  36. package/src/getDeviceId.ts +31 -56
  37. package/src/getEnvironment.ts +137 -0
  38. package/src/getShellVersion.test.ts +1 -1
  39. package/src/getShellVersion.ts +3 -7
  40. package/src/loadVwr.ts +25 -14
  41. package/src/main.ts +1 -3
  42. package/src/vite-env.d.ts +0 -3
  43. package/src/vwrConfig.ts +7 -28
  44. package/tsconfig.eslint.json +16 -0
  45. package/tsconfig.json +17 -0
  46. package/vite.config.ts +24 -0
  47. package/vitest.config.ts +8 -0
  48. package/dist/cli.js +0 -190
  49. package/dist/cli.js.map +0 -1
package/tsconfig.json ADDED
@@ -0,0 +1,17 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2017",
4
+ "module": "ESNext",
5
+ "lib": ["ES2017", "DOM"],
6
+ "outDir": "dist",
7
+ "declaration": true,
8
+ "declarationMap": true,
9
+ "sourceMap": true,
10
+ "strict": true,
11
+ "esModuleInterop": true,
12
+ "skipLibCheck": true,
13
+ "moduleResolution": "bundler"
14
+ },
15
+ "include": ["src/**/*"],
16
+ "exclude": ["node_modules", "dist", "**/*.test.ts", "src/main.ts", "src/index.html"]
17
+ }
package/vite.config.ts ADDED
@@ -0,0 +1,24 @@
1
+ import path from "path"
2
+ import { defineConfig } from "vite"
3
+
4
+ // This config is used by build-loader CLI to build index.html + main.ts
5
+ // The library exports (amplitudeFlagFetcher, getDeviceId) are built by TypeScript
6
+ export default defineConfig({
7
+ root: "./src",
8
+ build: {
9
+ outDir: "../dist",
10
+ emptyOutDir: false, // Keep TypeScript outputs (tsc runs before vite)
11
+ target: "es2017",
12
+ minify: "esbuild",
13
+ sourcemap: true,
14
+ rollupOptions: {
15
+ input: {
16
+ main: path.resolve(__dirname, "src/index.html"),
17
+ },
18
+ output: {
19
+ entryFileNames: "[name].js",
20
+ assetFileNames: "[name].[ext]",
21
+ },
22
+ },
23
+ },
24
+ })
@@ -0,0 +1,8 @@
1
+ import { defineConfig } from "vitest/config"
2
+
3
+ export default defineConfig({
4
+ test: {
5
+ environment: "jsdom",
6
+ globals: true,
7
+ },
8
+ })
package/dist/cli.js DELETED
@@ -1,190 +0,0 @@
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
- };
54
- const __dirname = path.dirname(fileURLToPath(import.meta.url));
55
- const cliPackageJson = JSON.parse(
56
- fs.readFileSync(path.join(__dirname, "../package.json"), "utf-8")
57
- );
58
- const VALID_PLATFORMS = [
59
- "FIRE_TV",
60
- "ANDROID_MOBILE",
61
- "IOS_MOBILE",
62
- "SAMSUNG_TV",
63
- "LG_TV",
64
- "WEB"
65
- ];
66
- const program = new Command();
67
- program.name("build-loader").version(cliPackageJson.version).description("Build vwr-loader with environment configuration").requiredOption(
68
- "--platform <platform>",
69
- "Platform: FIRE_TV, ANDROID_MOBILE, IOS_MOBILE, SAMSUNG_TV, LG_TV, WEB"
70
- ).requiredOption("--env <env>", "Environment: local, dev, staging, prod").requiredOption("--output <path>", "Output directory").option("--hubUrl <url>", "Override Hub URL").option("--amplitudeKey <key>", "Override Amplitude deployment key").option("--vwrUrl <url>", "Override VWR URL").option("--configUrl <url>", "Override VWR Config URL").option("--configFile <filename>", "Override VWR Config Filename").option("--launchUrl <url>", "Override launch url").parse();
71
- const opts = program.opts();
72
- const normalizedPlatform = opts.platform.toUpperCase();
73
- if (!VALID_PLATFORMS.includes(normalizedPlatform)) {
74
- console.error(`❌ Unknown platform: ${opts.platform}`);
75
- console.error(` Valid: ${VALID_PLATFORMS.join(", ")}`);
76
- process.exit(1);
77
- }
78
- opts.platform = normalizedPlatform;
79
- const envFile = path.join(process.cwd(), `.env.${opts.env}`);
80
- let shellEnv = {};
81
- if (fs.existsSync(envFile)) {
82
- console.log(`📄 Reading config from ${envFile}`);
83
- const result = config$1({ path: envFile });
84
- shellEnv = result.parsed || {};
85
- } else {
86
- console.log(`â„šī¸ No .env.${opts.env} found, using defaults/CLI flags`);
87
- }
88
- let shellVersion = "unknown";
89
- const packageJsonPath = path.join(process.cwd(), "package.json");
90
- if (fs.existsSync(packageJsonPath)) {
91
- try {
92
- const packageJson = JSON.parse(
93
- fs.readFileSync(packageJsonPath, "utf-8")
94
- );
95
- shellVersion = packageJson.version || "unknown";
96
- } catch {
97
- console.warn(`âš ī¸ Could not read version from package.json`);
98
- }
99
- }
100
- const envDefaults = ENV_DEFAULTS[opts.env];
101
- if (!envDefaults) {
102
- console.error(`❌ Unknown environment: ${opts.env}`);
103
- console.error(` Valid: local, dev, staging, prod`);
104
- process.exit(1);
105
- }
106
- const config = {
107
- VITE_PLATFORM: opts.platform,
108
- VITE_HUB_URL: opts.hubUrl || shellEnv.VITE_HUB_URL || envDefaults.hubUrl,
109
- VITE_AMPLITUDE_DEPLOYMENT_KEY: opts.amplitudeKey || shellEnv.VITE_AMPLITUDE_DEPLOYMENT_KEY || envDefaults.amplitudeKey || "",
110
- VITE_VWR_URL: opts.vwrUrl || shellEnv.VITE_VWR_URL || envDefaults.vwrUrl || "https://vwr.volley.tv/v1/latest/vwr.js",
111
- VITE_CONFIG_URL: opts.configUrl || shellEnv.VITE_CONFIG_URL || envDefaults.configUrl,
112
- VITE_CONFIG_FILE: opts.configFile || shellEnv.VITE_CONFIG_FILE || envDefaults.configFile,
113
- VITE_LAUNCH_URL: opts.launchUrl || shellEnv.VITE_LAUNCH_URL || opts.hubUrl || shellEnv.VITE_HUB_URL || envDefaults.hubUrl
114
- };
115
- console.log("🔧 Build configuration:");
116
- console.log(` Platform: ${config.VITE_PLATFORM}`);
117
- console.log(` Hub URL: ${config.VITE_HUB_URL}`);
118
- console.log(` VWR URL: ${config.VITE_VWR_URL}`);
119
- if (config.VITE_AMPLITUDE_DEPLOYMENT_KEY) {
120
- console.log(` Amplitude: ***`);
121
- } else {
122
- console.warn(` Amplitude: (not set)`);
123
- console.warn(
124
- ` âš ī¸ VWR flag fetching will use safe defaults (vwr-enabled: false)`
125
- );
126
- }
127
- const loaderSrcDir = path.join(__dirname, "../src");
128
- const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "vwr-loader-"));
129
- const loaderDistDir = tmpDir;
130
- try {
131
- console.log(`âŗ Building loader...`);
132
- await build({
133
- configFile: false,
134
- root: loaderSrcDir,
135
- // Use relative paths so loader works when served from any subdirectory
136
- base: "./",
137
- mode: opts.env,
138
- logLevel: "warn",
139
- build: {
140
- outDir: loaderDistDir,
141
- emptyOutDir: true,
142
- target: "es2017",
143
- minify: opts.env === "prod" ? "esbuild" : false,
144
- sourcemap: true,
145
- rollupOptions: {
146
- input: {
147
- main: path.join(loaderSrcDir, "index.html")
148
- },
149
- output: {
150
- entryFileNames: "[name].js",
151
- assetFileNames: "[name].[ext]"
152
- }
153
- }
154
- },
155
- define: {
156
- "import.meta.env.VITE_ENVIRONMENT": JSON.stringify(opts.env),
157
- "import.meta.env.VITE_PLATFORM": JSON.stringify(
158
- config.VITE_PLATFORM
159
- ),
160
- "import.meta.env.VITE_SHELL_VERSION": JSON.stringify(shellVersion),
161
- "import.meta.env.VITE_HUB_URL": JSON.stringify(config.VITE_HUB_URL),
162
- "import.meta.env.VITE_AMPLITUDE_DEPLOYMENT_KEY": JSON.stringify(
163
- config.VITE_AMPLITUDE_DEPLOYMENT_KEY
164
- ),
165
- "import.meta.env.VITE_VWR_URL": JSON.stringify(config.VITE_VWR_URL),
166
- "import.meta.env.VITE_CONFIG_URL": JSON.stringify(
167
- config.VITE_CONFIG_URL
168
- ),
169
- "import.meta.env.VITE_CONFIG_FILE": JSON.stringify(
170
- config.VITE_CONFIG_FILE
171
- ),
172
- "import.meta.env.VITE_LAUNCH_URL": JSON.stringify(
173
- config.VITE_LAUNCH_URL
174
- )
175
- }
176
- });
177
- const outputPath = path.resolve(opts.output);
178
- await fs.ensureDir(outputPath);
179
- await fs.copy(loaderDistDir, outputPath, { overwrite: true });
180
- console.log(`✅ VWR loader built successfully`);
181
- console.log(` Output: ${outputPath}`);
182
- console.log(` Files: index.html, main.js`);
183
- } finally {
184
- try {
185
- await fs.remove(tmpDir);
186
- } catch (e) {
187
- console.warn("âš ī¸ Failed to cleanup temp dir:", e);
188
- }
189
- }
190
- //# sourceMappingURL=cli.js.map
package/dist/cli.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sources":["../src/envDefaults.ts","../scripts/build.ts"],"sourcesContent":["export interface EnvConfig {\n hubUrl: string\n vwrUrl: string\n configUrl: string\n configFile: string\n platformApiUrl: string\n platformAuthApiUrl: string\n amplitudeKey: string // Used for amplitude flag fetch, not part of VWRConfig\n trustedOrigins?: string[]\n}\n\nconst CONFIG_URL_DEFAULT = \"https://vwr.volley.tv/config/\"\nconst CONFIG_FILE_DEFAULT = \"vwrConfig.json\"\nconst VWR_URL_PATH_DEFAULT = \"v1/latest/vwr.js\"\n\nconst prodConfig: EnvConfig = {\n hubUrl: \"https://game-clients.volley.tv/hub\",\n vwrUrl: `https://vwr.volley.tv/${VWR_URL_PATH_DEFAULT}`,\n configUrl: CONFIG_URL_DEFAULT,\n configFile: CONFIG_FILE_DEFAULT,\n platformApiUrl: \"https://platform.volley-services.net\",\n platformAuthApiUrl: \"https://auth.volley.tv\",\n amplitudeKey: \"\",\n}\n\nexport const ENV_DEFAULTS: Record<string, EnvConfig> = {\n local: {\n hubUrl: import.meta.env.VITE_HUB_URL || \"http://localhost:5173\",\n vwrUrl: import.meta.env.VITE_VWR_URL || \"http://localhost:5174/vwr.js\",\n configUrl:\n import.meta.env.VITE_CONFIG_URL || \"http://localhost:5174/config/\",\n configFile: import.meta.env.VITE_CONFIG_FILE || CONFIG_FILE_DEFAULT,\n platformApiUrl:\n import.meta.env.VITE_PLATFORM_API_URL ||\n \"https://platform-dev.volley-services.net\",\n platformAuthApiUrl:\n import.meta.env.VITE_PLATFORM_AUTH_API_URL ||\n \"https://auth-dev.volley.tv\",\n amplitudeKey: \"client-uJJVW3zKPC1G9kqPhUumLnZN6eaY42iQ\",\n trustedOrigins: import.meta.env.VITE_TRUSTED_ORIGINS?.split(\",\").filter(\n Boolean\n ),\n },\n dev: {\n hubUrl: \"https://game-clients-dev.volley.tv/hub\",\n vwrUrl: `https://vwr.volley.tv/dev/${VWR_URL_PATH_DEFAULT}`,\n configUrl: CONFIG_URL_DEFAULT,\n configFile: CONFIG_FILE_DEFAULT,\n platformApiUrl: \"https://platform-dev.volley-services.net\",\n platformAuthApiUrl: \"https://auth-dev.volley.tv\",\n amplitudeKey: \"client-uJJVW3zKPC1G9kqPhUumLnZN6eaY42iQ\",\n },\n staging: {\n hubUrl: \"https://game-clients-staging.volley.tv/hub\",\n vwrUrl: `https://vwr.volley.tv/staging/${VWR_URL_PATH_DEFAULT}`,\n configUrl: CONFIG_URL_DEFAULT,\n configFile: CONFIG_FILE_DEFAULT,\n platformApiUrl: \"https://platform-staging.volley-services.net\",\n platformAuthApiUrl: \"https://auth-staging.volley.tv\",\n amplitudeKey: \"\",\n },\n prod: prodConfig,\n production: prodConfig, // Alias for prod\n}\n","import { Command } from \"commander\"\nimport { config as loadDotenv } from \"dotenv\"\nimport fs from \"fs-extra\"\nimport os from \"os\"\nimport path from \"path\"\nimport { fileURLToPath } from \"url\"\nimport { build } from \"vite\"\n\nimport { ENV_DEFAULTS } from \"../src/envDefaults.js\"\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url))\n\n// Read package version for --version flag\nconst cliPackageJson = JSON.parse(\n fs.readFileSync(path.join(__dirname, \"../package.json\"), \"utf-8\")\n)\n\nconst VALID_PLATFORMS = [\n \"FIRE_TV\",\n \"ANDROID_MOBILE\",\n \"IOS_MOBILE\",\n \"SAMSUNG_TV\",\n \"LG_TV\",\n \"WEB\",\n]\n\nconst program = new Command()\n\nprogram\n .name(\"build-loader\")\n .version(cliPackageJson.version)\n .description(\"Build vwr-loader with environment configuration\")\n .requiredOption(\n \"--platform <platform>\",\n \"Platform: FIRE_TV, ANDROID_MOBILE, IOS_MOBILE, SAMSUNG_TV, LG_TV, WEB\"\n )\n .requiredOption(\"--env <env>\", \"Environment: local, dev, staging, prod\")\n .requiredOption(\"--output <path>\", \"Output directory\")\n .option(\"--hubUrl <url>\", \"Override Hub URL\")\n .option(\"--amplitudeKey <key>\", \"Override Amplitude deployment key\")\n .option(\"--vwrUrl <url>\", \"Override VWR URL\")\n .option(\"--configUrl <url>\", \"Override VWR Config URL\")\n .option(\"--configFile <filename>\", \"Override VWR Config Filename\")\n .option(\"--launchUrl <url>\", \"Override launch url\")\n .parse()\n\nconst opts = program.opts()\n\n// Validate platform\nconst normalizedPlatform = opts.platform.toUpperCase()\nif (!VALID_PLATFORMS.includes(normalizedPlatform)) {\n console.error(`❌ Unknown platform: ${opts.platform}`)\n console.error(` Valid: ${VALID_PLATFORMS.join(\", \")}`)\n process.exit(1)\n}\nopts.platform = normalizedPlatform\n\n// Try to read from shell's .env file (run from shell directory)\nconst envFile = path.join(process.cwd(), `.env.${opts.env}`)\nlet shellEnv: Record<string, string> = {}\n\nif (fs.existsSync(envFile)) {\n console.log(`📄 Reading config from ${envFile}`)\n const result = loadDotenv({ path: envFile })\n shellEnv = result.parsed || {}\n} else {\n console.log(`â„šī¸ No .env.${opts.env} found, using defaults/CLI flags`)\n}\n\n// Read shell version from package.json (for web shell)\nlet shellVersion = \"unknown\"\nconst packageJsonPath = path.join(process.cwd(), \"package.json\")\nif (fs.existsSync(packageJsonPath)) {\n try {\n const packageJson = JSON.parse(\n fs.readFileSync(packageJsonPath, \"utf-8\")\n )\n shellVersion = packageJson.version || \"unknown\"\n } catch {\n console.warn(`âš ī¸ Could not read version from package.json`)\n }\n}\n\n// Get predefined defaults\nconst envDefaults = ENV_DEFAULTS[opts.env]\nif (!envDefaults) {\n console.error(`❌ Unknown environment: ${opts.env}`)\n console.error(` Valid: local, dev, staging, prod`)\n process.exit(1)\n}\n\n// Config precedence: CLI > shell .env > defaults\nconst config = {\n VITE_PLATFORM: opts.platform,\n VITE_HUB_URL: opts.hubUrl || shellEnv.VITE_HUB_URL || envDefaults.hubUrl,\n VITE_AMPLITUDE_DEPLOYMENT_KEY:\n opts.amplitudeKey ||\n shellEnv.VITE_AMPLITUDE_DEPLOYMENT_KEY ||\n envDefaults.amplitudeKey ||\n \"\",\n VITE_VWR_URL:\n opts.vwrUrl ||\n shellEnv.VITE_VWR_URL ||\n envDefaults.vwrUrl ||\n \"https://vwr.volley.tv/v1/latest/vwr.js\",\n VITE_CONFIG_URL:\n opts.configUrl || shellEnv.VITE_CONFIG_URL || envDefaults.configUrl,\n VITE_CONFIG_FILE:\n opts.configFile || shellEnv.VITE_CONFIG_FILE || envDefaults.configFile,\n VITE_LAUNCH_URL:\n opts.launchUrl ||\n shellEnv.VITE_LAUNCH_URL ||\n opts.hubUrl ||\n shellEnv.VITE_HUB_URL ||\n envDefaults.hubUrl,\n}\n\nconsole.log(\"🔧 Build configuration:\")\nconsole.log(` Platform: ${config.VITE_PLATFORM}`)\nconsole.log(` Hub URL: ${config.VITE_HUB_URL}`)\nconsole.log(` VWR URL: ${config.VITE_VWR_URL}`)\nif (config.VITE_AMPLITUDE_DEPLOYMENT_KEY) {\n console.log(` Amplitude: ***`)\n} else {\n console.warn(` Amplitude: (not set)`)\n console.warn(\n ` âš ī¸ VWR flag fetching will use safe defaults (vwr-enabled: false)`\n )\n}\n\n// Build with Vite (inline config to avoid path resolution issues)\nconst loaderSrcDir = path.join(__dirname, \"../src\")\nconst tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), \"vwr-loader-\"))\nconst loaderDistDir = tmpDir\n\ntry {\n console.log(`âŗ Building loader...`)\n await build({\n configFile: false,\n root: loaderSrcDir,\n // Use relative paths so loader works when served from any subdirectory\n base: \"./\",\n mode: opts.env,\n logLevel: \"warn\",\n build: {\n outDir: loaderDistDir,\n emptyOutDir: true,\n target: \"es2017\",\n minify: opts.env === \"prod\" ? \"esbuild\" : false,\n sourcemap: true,\n rollupOptions: {\n input: {\n main: path.join(loaderSrcDir, \"index.html\"),\n },\n output: {\n entryFileNames: \"[name].js\",\n assetFileNames: \"[name].[ext]\",\n },\n },\n },\n define: {\n \"import.meta.env.VITE_ENVIRONMENT\": JSON.stringify(opts.env),\n \"import.meta.env.VITE_PLATFORM\": JSON.stringify(\n config.VITE_PLATFORM\n ),\n \"import.meta.env.VITE_SHELL_VERSION\": JSON.stringify(shellVersion),\n \"import.meta.env.VITE_HUB_URL\": JSON.stringify(config.VITE_HUB_URL),\n \"import.meta.env.VITE_AMPLITUDE_DEPLOYMENT_KEY\": JSON.stringify(\n config.VITE_AMPLITUDE_DEPLOYMENT_KEY\n ),\n \"import.meta.env.VITE_VWR_URL\": JSON.stringify(config.VITE_VWR_URL),\n \"import.meta.env.VITE_CONFIG_URL\": JSON.stringify(\n config.VITE_CONFIG_URL\n ),\n \"import.meta.env.VITE_CONFIG_FILE\": JSON.stringify(\n config.VITE_CONFIG_FILE\n ),\n \"import.meta.env.VITE_LAUNCH_URL\": JSON.stringify(\n config.VITE_LAUNCH_URL\n ),\n },\n })\n\n // Copy build output to specified directory\n const outputPath = path.resolve(opts.output)\n\n await fs.ensureDir(outputPath)\n await fs.copy(loaderDistDir, outputPath, { overwrite: true })\n\n console.log(`✅ VWR loader built successfully`)\n console.log(` Output: ${outputPath}`)\n console.log(` Files: index.html, main.js`)\n} finally {\n // Cleanup temp dir\n try {\n await fs.remove(tmpDir)\n } catch (e) {\n console.warn(\"âš ī¸ Failed to cleanup temp dir:\", e)\n }\n}\n"],"names":["loadDotenv"],"mappings":"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"}