vaderjs-native 1.0.36 → 1.0.38

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.
@@ -1,129 +1,129 @@
1
- import path from "path";
2
- import { execSync, spawn } from "child_process";
3
- import fsSync from "fs";
4
-
5
- import { ensureAndroidInstalled } from "../../cli/android/sdk.js";
6
- import { buildAndroid } from "../../cli/android/build.js";
7
- import { logger } from "../../cli/logger.js";
8
- import runDevServer from "../../cli/web/server.js";
9
- import { loadConfig } from "../../main.js";
10
- import { Config } from "../../config";
11
-
12
- export async function androidDev() {
13
- const config: Config = await loadConfig();
14
- const { sdkPath, adbPath } = ensureAndroidInstalled();
15
-
16
- const emulatorBin = path.join(
17
- sdkPath,
18
- "emulator",
19
- process.platform === "win32" ? "emulator.exe" : "emulator"
20
- );
21
-
22
- // ----------------------------
23
- // Start dev server
24
- // ----------------------------
25
- logger.info("Starting dev server...");
26
- const devServerPromise = runDevServer();
27
-
28
- await new Promise(resolve => setTimeout(resolve, 2000));
29
-
30
- // ----------------------------
31
- // Build Android (dev)
32
- // ----------------------------
33
- await buildAndroid(true);
34
-
35
- const appId = config.app?.id || "com.vaderjs.app";
36
- const APK_PATH = path.join(process.cwd(), "build", `${appId}-debug.apk`);
37
-
38
- if (!fsSync.existsSync(APK_PATH)) {
39
- throw new Error(`APK not found at ${APK_PATH}`);
40
- }
41
-
42
- // ----------------------------
43
- // Check connected devices
44
- // ----------------------------
45
- const getDevices = () =>
46
- execSync(`"${adbPath}" devices`, { encoding: "utf8" })
47
- .split("\n")
48
- .map(l => l.trim())
49
- .filter(l => l && !l.startsWith("List"))
50
- .filter(l => l.includes("device") && !l.includes("offline"));
51
-
52
- let devices = getDevices();
53
-
54
- // ----------------------------
55
- // List available AVDs
56
- // ----------------------------
57
- let emulators: string[] = [];
58
- try {
59
- emulators = execSync(`"${emulatorBin}" -list-avds`, { encoding: "utf8" })
60
- .split("\n")
61
- .map(e => e.trim())
62
- .filter(Boolean);
63
- } catch {
64
- logger.warn("Could not list Android emulators");
65
- }
66
-
67
- // ----------------------------
68
- // Start emulator if needed
69
- // ----------------------------
70
- if (!devices.length && emulators.length > 0) {
71
- const avd = emulators[0];
72
- logger.warn(`No devices found, starting emulator: ${avd}`);
73
-
74
- spawn(
75
- emulatorBin,
76
- ["-avd", avd, "-netdelay", "none", "-netspeed", "full"],
77
- {
78
- detached: true,
79
- stdio: "ignore",
80
- }
81
- );
82
-
83
- // Wait for emulator to connect
84
- logger.info("Waiting for emulator device...");
85
- execSync(`"${adbPath}" wait-for-device`);
86
-
87
- // Wait for Android to fully boot
88
- logger.info("Waiting for Android to boot...");
89
- execSync(
90
- `"${adbPath}" shell while [ "$(getprop sys.boot_completed)" != "1" ]; do sleep 1; done`,
91
- { stdio: "inherit" }
92
- );
93
-
94
- logger.success("Emulator booted");
95
- }
96
-
97
- // ----------------------------
98
- // Verify device exists
99
- // ----------------------------
100
- devices = getDevices();
101
- if (!devices.length) {
102
- throw new Error("No Android devices available");
103
- }
104
-
105
- // ----------------------------
106
- // Install APK
107
- // ----------------------------
108
- logger.step("Installing APK");
109
- execSync(`"${adbPath}" install -r "${APK_PATH}"`, { stdio: "inherit" });
110
- logger.success("APK installed");
111
-
112
- // ----------------------------
113
- // Launch app
114
- // ----------------------------
115
- const activity = `${appId}/.MainActivity`;
116
-
117
-
118
- logger.step("Launching app");
119
- execSync(`"${adbPath}" shell am start -n "${activity}"`, {
120
- stdio: "inherit",
121
- });
122
-
123
- logger.success("Android dev running 🚀 — HMR active");
124
-
125
- // ----------------------------
126
- // Keep dev server alive
127
- // ----------------------------
128
- await devServerPromise;
129
- }
1
+ import path from "path";
2
+ import { execSync, spawn } from "child_process";
3
+ import fsSync from "fs";
4
+
5
+ import { ensureAndroidInstalled } from "../../cli/android/sdk.js";
6
+ import { buildAndroid } from "../../cli/android/build.js";
7
+ import { logger } from "../../cli/logger.js";
8
+ import runDevServer from "../../cli/web/server.js";
9
+ import { loadConfig } from "../../main.js";
10
+ import { Config } from "../../config";
11
+
12
+ export async function androidDev() {
13
+ const config: Config = await loadConfig();
14
+ const { sdkPath, adbPath } = ensureAndroidInstalled();
15
+
16
+ const emulatorBin = path.join(
17
+ sdkPath,
18
+ "emulator",
19
+ process.platform === "win32" ? "emulator.exe" : "emulator"
20
+ );
21
+
22
+ // ----------------------------
23
+ // Start dev server
24
+ // ----------------------------
25
+ logger.info("Starting dev server...");
26
+ const devServerPromise = runDevServer();
27
+
28
+ await new Promise(resolve => setTimeout(resolve, 2000));
29
+
30
+ // ----------------------------
31
+ // Build Android (dev)
32
+ // ----------------------------
33
+ await buildAndroid(true);
34
+
35
+ const appId = config.app?.id || "com.vaderjs.app";
36
+ const APK_PATH = path.join(process.cwd(), "build", `${appId}-debug.apk`);
37
+
38
+ if (!fsSync.existsSync(APK_PATH)) {
39
+ throw new Error(`APK not found at ${APK_PATH}`);
40
+ }
41
+
42
+ // ----------------------------
43
+ // Check connected devices
44
+ // ----------------------------
45
+ const getDevices = () =>
46
+ execSync(`"${adbPath}" devices`, { encoding: "utf8" })
47
+ .split("\n")
48
+ .map(l => l.trim())
49
+ .filter(l => l && !l.startsWith("List"))
50
+ .filter(l => l.includes("device") && !l.includes("offline"));
51
+
52
+ let devices = getDevices();
53
+
54
+ // ----------------------------
55
+ // List available AVDs
56
+ // ----------------------------
57
+ let emulators: string[] = [];
58
+ try {
59
+ emulators = execSync(`"${emulatorBin}" -list-avds`, { encoding: "utf8" })
60
+ .split("\n")
61
+ .map(e => e.trim())
62
+ .filter(Boolean);
63
+ } catch {
64
+ logger.warn("Could not list Android emulators");
65
+ }
66
+
67
+ // ----------------------------
68
+ // Start emulator if needed
69
+ // ----------------------------
70
+ if (!devices.length && emulators.length > 0) {
71
+ const avd = emulators[0];
72
+ logger.warn(`No devices found, starting emulator: ${avd}`);
73
+
74
+ spawn(
75
+ emulatorBin,
76
+ ["-avd", avd, "-netdelay", "none", "-netspeed", "full"],
77
+ {
78
+ detached: true,
79
+ stdio: "ignore",
80
+ }
81
+ );
82
+
83
+ // Wait for emulator to connect
84
+ logger.info("Waiting for emulator device...");
85
+ execSync(`"${adbPath}" wait-for-device`);
86
+
87
+ // Wait for Android to fully boot
88
+ logger.info("Waiting for Android to boot...");
89
+ execSync(
90
+ `"${adbPath}" shell while [ "$(getprop sys.boot_completed)" != "1" ]; do sleep 1; done`,
91
+ { stdio: "inherit" }
92
+ );
93
+
94
+ logger.success("Emulator booted");
95
+ }
96
+
97
+ // ----------------------------
98
+ // Verify device exists
99
+ // ----------------------------
100
+ devices = getDevices();
101
+ if (!devices.length) {
102
+ throw new Error("No Android devices available");
103
+ }
104
+
105
+ // ----------------------------
106
+ // Install APK
107
+ // ----------------------------
108
+ logger.step("Installing APK");
109
+ execSync(`"${adbPath}" install -r "${APK_PATH}"`, { stdio: "inherit" });
110
+ logger.success("APK installed");
111
+
112
+ // ----------------------------
113
+ // Launch app
114
+ // ----------------------------
115
+ const activity = `${appId}/.MainActivity`;
116
+
117
+
118
+ logger.step("Launching app");
119
+ execSync(`"${adbPath}" shell am start -n "${activity}"`, {
120
+ stdio: "inherit",
121
+ });
122
+
123
+ logger.success("Android dev running 🚀 — HMR active");
124
+
125
+ // ----------------------------
126
+ // Keep dev server alive
127
+ // ----------------------------
128
+ await devServerPromise;
129
+ }