@jetstart/cli 1.1.4 → 1.4.0

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 (68) hide show
  1. package/dist/cli.js +18 -1
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/android-emulator.d.ts +8 -0
  4. package/dist/commands/android-emulator.d.ts.map +1 -0
  5. package/dist/commands/android-emulator.js +280 -0
  6. package/dist/commands/android-emulator.js.map +1 -0
  7. package/dist/commands/create.d.ts +1 -6
  8. package/dist/commands/create.d.ts.map +1 -1
  9. package/dist/commands/create.js +119 -0
  10. package/dist/commands/create.js.map +1 -1
  11. package/dist/commands/dev.d.ts +1 -7
  12. package/dist/commands/dev.d.ts.map +1 -1
  13. package/dist/commands/dev.js +69 -10
  14. package/dist/commands/dev.js.map +1 -1
  15. package/dist/commands/index.d.ts +2 -0
  16. package/dist/commands/index.d.ts.map +1 -1
  17. package/dist/commands/index.js +5 -1
  18. package/dist/commands/index.js.map +1 -1
  19. package/dist/commands/install-audit.d.ts +9 -0
  20. package/dist/commands/install-audit.d.ts.map +1 -0
  21. package/dist/commands/install-audit.js +185 -0
  22. package/dist/commands/install-audit.js.map +1 -0
  23. package/dist/types/index.d.ts +22 -0
  24. package/dist/types/index.d.ts.map +1 -1
  25. package/dist/types/index.js +8 -0
  26. package/dist/types/index.js.map +1 -1
  27. package/dist/utils/android-sdk.d.ts +81 -0
  28. package/dist/utils/android-sdk.d.ts.map +1 -0
  29. package/dist/utils/android-sdk.js +432 -0
  30. package/dist/utils/android-sdk.js.map +1 -0
  31. package/dist/utils/downloader.d.ts +35 -0
  32. package/dist/utils/downloader.d.ts.map +1 -0
  33. package/dist/utils/downloader.js +214 -0
  34. package/dist/utils/downloader.js.map +1 -0
  35. package/dist/utils/emulator-deployer.d.ts +29 -0
  36. package/dist/utils/emulator-deployer.d.ts.map +1 -0
  37. package/dist/utils/emulator-deployer.js +224 -0
  38. package/dist/utils/emulator-deployer.js.map +1 -0
  39. package/dist/utils/emulator.d.ts +101 -0
  40. package/dist/utils/emulator.d.ts.map +1 -0
  41. package/dist/utils/emulator.js +410 -0
  42. package/dist/utils/emulator.js.map +1 -0
  43. package/dist/utils/java.d.ts +25 -0
  44. package/dist/utils/java.d.ts.map +1 -0
  45. package/dist/utils/java.js +363 -0
  46. package/dist/utils/java.js.map +1 -0
  47. package/dist/utils/system-tools.d.ts +93 -0
  48. package/dist/utils/system-tools.d.ts.map +1 -0
  49. package/dist/utils/system-tools.js +599 -0
  50. package/dist/utils/system-tools.js.map +1 -0
  51. package/dist/utils/template.d.ts.map +1 -1
  52. package/dist/utils/template.js +777 -748
  53. package/dist/utils/template.js.map +1 -1
  54. package/package.json +7 -3
  55. package/src/cli.ts +20 -2
  56. package/src/commands/android-emulator.ts +304 -0
  57. package/src/commands/create.ts +128 -5
  58. package/src/commands/dev.ts +71 -18
  59. package/src/commands/index.ts +3 -1
  60. package/src/commands/install-audit.ts +227 -0
  61. package/src/types/index.ts +30 -0
  62. package/src/utils/android-sdk.ts +478 -0
  63. package/src/utils/downloader.ts +201 -0
  64. package/src/utils/emulator-deployer.ts +210 -0
  65. package/src/utils/emulator.ts +463 -0
  66. package/src/utils/java.ts +369 -0
  67. package/src/utils/system-tools.ts +648 -0
  68. package/src/utils/template.ts +875 -867
@@ -0,0 +1,410 @@
1
+ "use strict";
2
+ /**
3
+ * Android AVD and Emulator management utilities
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.AVDManager = void 0;
40
+ exports.createAVDManager = createAVDManager;
41
+ const child_process_1 = require("child_process");
42
+ const util_1 = require("util");
43
+ const fs = __importStar(require("fs-extra"));
44
+ const path = __importStar(require("path"));
45
+ const os = __importStar(require("os"));
46
+ const system_tools_1 = require("./system-tools");
47
+ const android_sdk_1 = require("./android-sdk");
48
+ const spinner_1 = require("./spinner");
49
+ const logger_1 = require("./logger");
50
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
51
+ /**
52
+ * AVD Manager class
53
+ */
54
+ class AVDManager {
55
+ sdkRoot;
56
+ constructor(sdkRoot) {
57
+ this.sdkRoot = sdkRoot || '';
58
+ }
59
+ /**
60
+ * Ensure SDK root is set
61
+ */
62
+ async ensureSDKRoot() {
63
+ if (this.sdkRoot && await fs.pathExists(this.sdkRoot)) {
64
+ return;
65
+ }
66
+ const existingSDK = await (0, system_tools_1.findAndroidSDK)();
67
+ if (!existingSDK) {
68
+ throw new Error('Android SDK not found. Run "jetstart install-audit" to check installation.');
69
+ }
70
+ this.sdkRoot = existingSDK;
71
+ }
72
+ /**
73
+ * Get path to avdmanager executable
74
+ */
75
+ getAVDManagerPath() {
76
+ const avdmanagerName = os.platform() === 'win32' ? 'avdmanager.bat' : 'avdmanager';
77
+ return path.join(this.sdkRoot, 'cmdline-tools', 'latest', 'bin', avdmanagerName);
78
+ }
79
+ /**
80
+ * Get path to emulator executable
81
+ */
82
+ getEmulatorPath() {
83
+ const emulatorName = os.platform() === 'win32' ? 'emulator.exe' : 'emulator';
84
+ return path.join(this.sdkRoot, 'emulator', emulatorName);
85
+ }
86
+ /**
87
+ * Get path to adb executable
88
+ */
89
+ getADBPath() {
90
+ const adbName = os.platform() === 'win32' ? 'adb.exe' : 'adb';
91
+ return path.join(this.sdkRoot, 'platform-tools', adbName);
92
+ }
93
+ /**
94
+ * Run avdmanager command
95
+ */
96
+ async runAVDManager(args) {
97
+ await this.ensureSDKRoot();
98
+ const avdmanagerPath = this.getAVDManagerPath();
99
+ if (!await fs.pathExists(avdmanagerPath)) {
100
+ throw new Error('avdmanager not found. Install Android cmdline-tools first.');
101
+ }
102
+ return new Promise((resolve, reject) => {
103
+ const proc = (0, child_process_1.spawn)(avdmanagerPath, args, {
104
+ env: {
105
+ ...process.env,
106
+ ANDROID_HOME: this.sdkRoot,
107
+ ANDROID_SDK_ROOT: this.sdkRoot,
108
+ },
109
+ shell: true,
110
+ });
111
+ let output = '';
112
+ let errorOutput = '';
113
+ proc.stdout?.on('data', (data) => {
114
+ output += data.toString();
115
+ });
116
+ proc.stderr?.on('data', (data) => {
117
+ errorOutput += data.toString();
118
+ });
119
+ proc.on('close', (code) => {
120
+ if (code === 0) {
121
+ resolve(output);
122
+ }
123
+ else {
124
+ reject(new Error(`avdmanager exited with code ${code}: ${errorOutput || output}`));
125
+ }
126
+ });
127
+ proc.on('error', (err) => {
128
+ reject(err);
129
+ });
130
+ });
131
+ }
132
+ /**
133
+ * List all AVDs
134
+ */
135
+ async listAVDs() {
136
+ try {
137
+ const output = await this.runAVDManager(['list', 'avd']);
138
+ const avds = this.parseAVDList(output);
139
+ // Check which AVDs are running
140
+ for (const avd of avds) {
141
+ avd.running = await this.isEmulatorRunning(avd.name);
142
+ }
143
+ return avds;
144
+ }
145
+ catch (error) {
146
+ return [];
147
+ }
148
+ }
149
+ /**
150
+ * Parse avdmanager list avd output
151
+ */
152
+ parseAVDList(output) {
153
+ const avds = [];
154
+ const lines = output.split('\n');
155
+ let currentAVD = {};
156
+ for (const line of lines) {
157
+ const trimmed = line.trim();
158
+ if (trimmed.startsWith('Name:')) {
159
+ if (currentAVD.name) {
160
+ avds.push(currentAVD);
161
+ }
162
+ currentAVD = {
163
+ name: trimmed.split(':')[1]?.trim() || '',
164
+ snapshot: false,
165
+ };
166
+ }
167
+ else if (trimmed.startsWith('Device:')) {
168
+ currentAVD.device = trimmed.split(':')[1]?.trim() || '';
169
+ }
170
+ else if (trimmed.startsWith('Path:')) {
171
+ currentAVD.path = trimmed.split(':')[1]?.trim() || '';
172
+ }
173
+ else if (trimmed.startsWith('Target:')) {
174
+ currentAVD.target = trimmed.split(':')[1]?.trim() || '';
175
+ }
176
+ else if (trimmed.startsWith('Based on:')) {
177
+ currentAVD.basedOn = trimmed.split(':')[1]?.trim() || '';
178
+ }
179
+ else if (trimmed.startsWith('Skin:')) {
180
+ currentAVD.skin = trimmed.split(':')[1]?.trim() || '';
181
+ }
182
+ else if (trimmed.startsWith('Sdcard:')) {
183
+ currentAVD.sdcard = trimmed.split(':')[1]?.trim() || '';
184
+ }
185
+ else if (trimmed.includes('Snapshot')) {
186
+ currentAVD.snapshot = true;
187
+ }
188
+ }
189
+ if (currentAVD.name) {
190
+ avds.push(currentAVD);
191
+ }
192
+ return avds;
193
+ }
194
+ /**
195
+ * Create a new AVD
196
+ */
197
+ async createAVD(options) {
198
+ const { name, device = 'pixel_5', apiLevel = 34, abi = os.arch() === 'arm64' ? 'arm64-v8a' : 'x86_64', force = false, } = options;
199
+ const spinner = (0, spinner_1.startSpinner)(`Creating AVD: ${name}...`);
200
+ try {
201
+ // Check if system image is installed
202
+ const systemImagePackage = `system-images;android-${apiLevel};google_apis;${abi}`;
203
+ const sdkManager = new android_sdk_1.AndroidSDKManager(this.sdkRoot);
204
+ const isInstalled = await sdkManager.isComponentInstalled(systemImagePackage);
205
+ if (!isInstalled) {
206
+ (0, spinner_1.stopSpinner)(spinner, false, 'System image not installed');
207
+ (0, logger_1.info)(`Installing system image: ${systemImagePackage}`);
208
+ await sdkManager.installComponent(systemImagePackage);
209
+ }
210
+ // Create AVD
211
+ const args = [
212
+ 'create', 'avd',
213
+ '--name', name,
214
+ '--package', systemImagePackage,
215
+ '--device', device,
216
+ ];
217
+ if (force) {
218
+ args.push('--force');
219
+ }
220
+ // Use spawn for interactive input
221
+ await new Promise((resolve, reject) => {
222
+ const avdmanagerPath = this.getAVDManagerPath();
223
+ const proc = (0, child_process_1.spawn)(avdmanagerPath, args, {
224
+ env: {
225
+ ...process.env,
226
+ ANDROID_HOME: this.sdkRoot,
227
+ ANDROID_SDK_ROOT: this.sdkRoot,
228
+ },
229
+ shell: true,
230
+ });
231
+ // Auto-answer prompts with defaults
232
+ proc.stdin?.write('no\n'); // Hardware profile
233
+ proc.stdin?.end();
234
+ let output = '';
235
+ proc.stdout?.on('data', (data) => {
236
+ output += data.toString();
237
+ });
238
+ proc.stderr?.on('data', (data) => {
239
+ output += data.toString();
240
+ });
241
+ proc.on('close', (code) => {
242
+ if (code === 0) {
243
+ resolve();
244
+ }
245
+ else {
246
+ reject(new Error(`Failed to create AVD: ${output}`));
247
+ }
248
+ });
249
+ proc.on('error', (err) => {
250
+ reject(err);
251
+ });
252
+ });
253
+ (0, spinner_1.stopSpinner)(spinner, true, `AVD "${name}" created successfully`);
254
+ }
255
+ catch (error) {
256
+ (0, spinner_1.stopSpinner)(spinner, false, `Failed to create AVD: ${error.message}`);
257
+ throw error;
258
+ }
259
+ }
260
+ /**
261
+ * Delete an AVD
262
+ */
263
+ async deleteAVD(name) {
264
+ const spinner = (0, spinner_1.startSpinner)(`Deleting AVD: ${name}...`);
265
+ try {
266
+ await this.runAVDManager(['delete', 'avd', '--name', name]);
267
+ (0, spinner_1.stopSpinner)(spinner, true, `AVD "${name}" deleted`);
268
+ }
269
+ catch (error) {
270
+ (0, spinner_1.stopSpinner)(spinner, false, `Failed to delete AVD`);
271
+ throw error;
272
+ }
273
+ }
274
+ /**
275
+ * Start an emulator
276
+ */
277
+ async startEmulator(options) {
278
+ await this.ensureSDKRoot();
279
+ const emulatorPath = this.getEmulatorPath();
280
+ if (!await fs.pathExists(emulatorPath)) {
281
+ throw new Error('Emulator not found. Install Android emulator package first.');
282
+ }
283
+ const { avdName, gpu = 'auto', noSnapshot = true, noBootAnim = true, wipeData = false, } = options;
284
+ const args = ['-avd', avdName];
285
+ if (gpu)
286
+ args.push('-gpu', gpu);
287
+ if (noSnapshot)
288
+ args.push('-no-snapshot-load');
289
+ if (noBootAnim)
290
+ args.push('-no-boot-anim');
291
+ if (wipeData)
292
+ args.push('-wipe-data');
293
+ (0, logger_1.info)(`Starting emulator: ${avdName}...`);
294
+ const proc = (0, child_process_1.spawn)(emulatorPath, args, {
295
+ env: {
296
+ ...process.env,
297
+ ANDROID_HOME: this.sdkRoot,
298
+ ANDROID_SDK_ROOT: this.sdkRoot,
299
+ },
300
+ detached: true,
301
+ stdio: 'ignore',
302
+ shell: false,
303
+ });
304
+ proc.unref();
305
+ // Wait a moment for emulator to start
306
+ await new Promise(resolve => setTimeout(resolve, 2000));
307
+ (0, logger_1.success)(`Emulator "${avdName}" started`);
308
+ (0, logger_1.info)('Emulator is booting. This may take a few minutes...');
309
+ return proc;
310
+ }
311
+ /**
312
+ * Stop an emulator
313
+ */
314
+ async stopEmulator(avdName) {
315
+ const serial = await this.findEmulatorSerial(avdName);
316
+ if (!serial) {
317
+ throw new Error(`Emulator "${avdName}" is not running`);
318
+ }
319
+ const spinner = (0, spinner_1.startSpinner)(`Stopping emulator: ${avdName}...`);
320
+ try {
321
+ const adbPath = this.getADBPath();
322
+ await execAsync(`"${adbPath}" -s ${serial} emu kill`);
323
+ (0, spinner_1.stopSpinner)(spinner, true, `Emulator "${avdName}" stopped`);
324
+ }
325
+ catch (error) {
326
+ (0, spinner_1.stopSpinner)(spinner, false, 'Failed to stop emulator');
327
+ throw error;
328
+ }
329
+ }
330
+ /**
331
+ * Check if an emulator is running
332
+ */
333
+ async isEmulatorRunning(avdName) {
334
+ const serial = await this.findEmulatorSerial(avdName);
335
+ return serial !== null;
336
+ }
337
+ /**
338
+ * Find emulator serial number by AVD name
339
+ */
340
+ async findEmulatorSerial(avdName) {
341
+ try {
342
+ const adbPath = this.getADBPath();
343
+ const { stdout } = await execAsync(`"${adbPath}" devices`);
344
+ const lines = stdout.split('\n');
345
+ for (const line of lines) {
346
+ const match = line.match(/^(emulator-\d+)\s+device$/);
347
+ if (match) {
348
+ const serial = match[1];
349
+ // Check AVD name
350
+ try {
351
+ const { stdout: nameOutput } = await execAsync(`"${adbPath}" -s ${serial} emu avd name`);
352
+ if (nameOutput.trim() === avdName) {
353
+ return serial;
354
+ }
355
+ }
356
+ catch {
357
+ continue;
358
+ }
359
+ }
360
+ }
361
+ return null;
362
+ }
363
+ catch {
364
+ return null;
365
+ }
366
+ }
367
+ /**
368
+ * Get list of available system images for emulator
369
+ */
370
+ async listSystemImages() {
371
+ try {
372
+ const sdkManager = new android_sdk_1.AndroidSDKManager(this.sdkRoot);
373
+ const output = await sdkManager.listInstalled();
374
+ return output
375
+ .filter(c => c.name.startsWith('system-images;'))
376
+ .map(c => c.name);
377
+ }
378
+ catch {
379
+ return [];
380
+ }
381
+ }
382
+ /**
383
+ * Create JetStart-optimized AVD
384
+ */
385
+ async createJetStartAVD() {
386
+ const avdName = 'JetStart-Pixel5-API34';
387
+ // Check if already exists
388
+ const avds = await this.listAVDs();
389
+ if (avds.some(a => a.name === avdName)) {
390
+ (0, logger_1.info)(`AVD "${avdName}" already exists`);
391
+ return;
392
+ }
393
+ await this.createAVD({
394
+ name: avdName,
395
+ device: 'pixel_5',
396
+ apiLevel: 34,
397
+ abi: os.arch() === 'arm64' ? 'arm64-v8a' : 'x86_64',
398
+ force: false,
399
+ });
400
+ (0, logger_1.success)(`JetStart-optimized AVD created: ${avdName}`);
401
+ }
402
+ }
403
+ exports.AVDManager = AVDManager;
404
+ /**
405
+ * Create an AVD manager instance
406
+ */
407
+ function createAVDManager(sdkRoot) {
408
+ return new AVDManager(sdkRoot);
409
+ }
410
+ //# sourceMappingURL=emulator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emulator.js","sourceRoot":"","sources":["../../src/utils/emulator.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0cH,4CAEC;AA1cD,iDAA0D;AAC1D,+BAAiC;AACjC,6CAA+B;AAC/B,2CAA6B;AAC7B,uCAAyB;AACzB,iDAAgD;AAChD,+CAAkD;AAClD,uCAAsD;AACtD,qCAAqE;AAErE,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAI,CAAC,CAAC;AA8BlC;;GAEG;AACH,MAAa,UAAU;IACb,OAAO,CAAS;IAExB,YAAY,OAAgB;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa;QACzB,IAAI,IAAI,CAAC,OAAO,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACtD,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAA,6BAAc,GAAE,CAAC;QAC3C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;QAChG,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,iBAAiB;QACvB,MAAM,cAAc,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC;QACnF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;IACnF,CAAC;IAED;;OAEG;IACK,eAAe;QACrB,MAAM,YAAY,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC;QAC7E,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACK,UAAU;QAChB,MAAM,OAAO,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CAAC,IAAc;QACxC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAE3B,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEhD,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,IAAA,qBAAK,EAAC,cAAc,EAAE,IAAI,EAAE;gBACvC,GAAG,EAAE;oBACH,GAAG,OAAO,CAAC,GAAG;oBACd,YAAY,EAAE,IAAI,CAAC,OAAO;oBAC1B,gBAAgB,EAAE,IAAI,CAAC,OAAO;iBAC/B;gBACD,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;YAEH,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,WAAW,GAAG,EAAE,CAAC;YAErB,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC/B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC/B,WAAW,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACxB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,OAAO,CAAC,MAAM,CAAC,CAAC;gBAClB,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,IAAI,KAAK,WAAW,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC;gBACrF,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACvB,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;YACzD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAEvC,+BAA+B;YAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,GAAG,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvD,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,MAAc;QACjC,MAAM,IAAI,GAAc,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEjC,IAAI,UAAU,GAAqB,EAAE,CAAC;QAEtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAE5B,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChC,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;oBACpB,IAAI,CAAC,IAAI,CAAC,UAAqB,CAAC,CAAC;gBACnC,CAAC;gBACD,UAAU,GAAG;oBACX,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;oBACzC,QAAQ,EAAE,KAAK;iBAChB,CAAC;YACJ,CAAC;iBAAM,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzC,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAC1D,CAAC;iBAAM,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvC,UAAU,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACxD,CAAC;iBAAM,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzC,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAC1D,CAAC;iBAAM,IAAI,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC3C,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAC3D,CAAC;iBAAM,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvC,UAAU,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACxD,CAAC;iBAAM,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzC,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAC1D,CAAC;iBAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACxC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,UAAqB,CAAC,CAAC;QACnC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,OAAyB;QACvC,MAAM,EACJ,IAAI,EACJ,MAAM,GAAG,SAAS,EAClB,QAAQ,GAAG,EAAE,EACb,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EACpD,KAAK,GAAG,KAAK,GACd,GAAG,OAAO,CAAC;QAEZ,MAAM,OAAO,GAAG,IAAA,sBAAY,EAAC,iBAAiB,IAAI,KAAK,CAAC,CAAC;QAEzD,IAAI,CAAC;YACH,qCAAqC;YACrC,MAAM,kBAAkB,GAAG,yBAAyB,QAAQ,gBAAgB,GAAG,EAAE,CAAC;YAClF,MAAM,UAAU,GAAG,IAAI,+BAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEvD,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;YAC9E,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,IAAA,qBAAW,EAAC,OAAO,EAAE,KAAK,EAAE,4BAA4B,CAAC,CAAC;gBAC1D,IAAA,aAAI,EAAC,4BAA4B,kBAAkB,EAAE,CAAC,CAAC;gBACvD,MAAM,UAAU,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;YACxD,CAAC;YAED,aAAa;YACb,MAAM,IAAI,GAAG;gBACX,QAAQ,EAAE,KAAK;gBACf,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,kBAAkB;gBAC/B,UAAU,EAAE,MAAM;aACnB,CAAC;YAEF,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvB,CAAC;YAED,kCAAkC;YAClC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC1C,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAChD,MAAM,IAAI,GAAG,IAAA,qBAAK,EAAC,cAAc,EAAE,IAAI,EAAE;oBACvC,GAAG,EAAE;wBACH,GAAG,OAAO,CAAC,GAAG;wBACd,YAAY,EAAE,IAAI,CAAC,OAAO;wBAC1B,gBAAgB,EAAE,IAAI,CAAC,OAAO;qBAC/B;oBACD,KAAK,EAAE,IAAI;iBACZ,CAAC,CAAC;gBAEH,oCAAoC;gBACpC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB;gBAC9C,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;gBAElB,IAAI,MAAM,GAAG,EAAE,CAAC;gBAEhB,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;oBAC/B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC5B,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;oBAC/B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC5B,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;oBACxB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;wBACf,OAAO,EAAE,CAAC;oBACZ,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,MAAM,EAAE,CAAC,CAAC,CAAC;oBACvD,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;oBACvB,MAAM,CAAC,GAAG,CAAC,CAAC;gBACd,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,IAAA,qBAAW,EAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,IAAI,wBAAwB,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,qBAAW,EAAC,OAAO,EAAE,KAAK,EAAE,yBAA0B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YACjF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,MAAM,OAAO,GAAG,IAAA,sBAAY,EAAC,iBAAiB,IAAI,KAAK,CAAC,CAAC;QAEzD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;YAC5D,IAAA,qBAAW,EAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,IAAI,WAAW,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,qBAAW,EAAC,OAAO,EAAE,KAAK,EAAE,sBAAsB,CAAC,CAAC;YACpD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,OAAwB;QAC1C,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAE3B,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAE5C,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC;QAED,MAAM,EACJ,OAAO,EACP,GAAG,GAAG,MAAM,EACZ,UAAU,GAAG,IAAI,EACjB,UAAU,GAAG,IAAI,EACjB,QAAQ,GAAG,KAAK,GACjB,GAAG,OAAO,CAAC;QAEZ,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE/B,IAAI,GAAG;YAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,IAAI,UAAU;YAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC/C,IAAI,UAAU;YAAE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC3C,IAAI,QAAQ;YAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEtC,IAAA,aAAI,EAAC,sBAAsB,OAAO,KAAK,CAAC,CAAC;QAEzC,MAAM,IAAI,GAAG,IAAA,qBAAK,EAAC,YAAY,EAAE,IAAI,EAAE;YACrC,GAAG,EAAE;gBACH,GAAG,OAAO,CAAC,GAAG;gBACd,YAAY,EAAE,IAAI,CAAC,OAAO;gBAC1B,gBAAgB,EAAE,IAAI,CAAC,OAAO;aAC/B;YACD,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,QAAQ;YACf,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,sCAAsC;QACtC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAExD,IAAA,gBAAO,EAAC,aAAa,OAAO,WAAW,CAAC,CAAC;QACzC,IAAA,aAAI,EAAC,qDAAqD,CAAC,CAAC;QAE5D,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,OAAe;QAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAEtD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,aAAa,OAAO,kBAAkB,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,OAAO,GAAG,IAAA,sBAAY,EAAC,sBAAsB,OAAO,KAAK,CAAC,CAAC;QAEjE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,SAAS,CAAC,IAAI,OAAO,QAAQ,MAAM,WAAW,CAAC,CAAC;YACtD,IAAA,qBAAW,EAAC,OAAO,EAAE,IAAI,EAAE,aAAa,OAAO,WAAW,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,qBAAW,EAAC,OAAO,EAAE,KAAK,EAAE,yBAAyB,CAAC,CAAC;YACvD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,OAAe;QACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACtD,OAAO,MAAM,KAAK,IAAI,CAAC;IACzB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB,CAAC,OAAe;QAC9C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,IAAI,OAAO,WAAW,CAAC,CAAC;YAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAEjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;gBACtD,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBAExB,iBAAiB;oBACjB,IAAI,CAAC;wBACH,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,SAAS,CAAC,IAAI,OAAO,QAAQ,MAAM,eAAe,CAAC,CAAC;wBACzF,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;4BAClC,OAAO,MAAM,CAAC;wBAChB,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC;wBACP,SAAS;oBACX,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB;QACpB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,+BAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,aAAa,EAAE,CAAC;YAEhD,OAAO,MAAM;iBACV,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;iBAChD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB;QACrB,MAAM,OAAO,GAAG,uBAAuB,CAAC;QAExC,0BAA0B;QAC1B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,CAAC;YACvC,IAAA,aAAI,EAAC,QAAQ,OAAO,kBAAkB,CAAC,CAAC;YACxC,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,SAAS,CAAC;YACnB,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,EAAE;YACZ,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;YACnD,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;QAEH,IAAA,gBAAO,EAAC,mCAAmC,OAAO,EAAE,CAAC,CAAC;IACxD,CAAC;CACF;AAxZD,gCAwZC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,OAAgB;IAC/C,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Java/JDK detection and installation utilities
3
+ */
4
+ export interface JavaInfo {
5
+ version: string;
6
+ path: string;
7
+ vendor: string;
8
+ }
9
+ /**
10
+ * Detect Java/JDK installation
11
+ */
12
+ export declare function detectJava(): Promise<JavaInfo | null>;
13
+ /**
14
+ * Check if Java version is compatible (>= 17)
15
+ */
16
+ export declare function isJavaCompatible(version: string): Promise<boolean>;
17
+ /**
18
+ * Install Java/JDK
19
+ */
20
+ export declare function installJava(): Promise<void>;
21
+ /**
22
+ * Verify Java installation
23
+ */
24
+ export declare function verifyJavaInstallation(): Promise<boolean>;
25
+ //# sourceMappingURL=java.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"java.d.ts","sourceRoot":"","sources":["../../src/utils/java.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAuCD;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAmB3D;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGxE;AAyED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAwBjD;AAmKD;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,OAAO,CAAC,CAc/D"}