@myerscarpenter/quest-dev 1.0.8 → 1.2.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.
- package/build/commands/battery.d.ts +9 -0
- package/build/commands/battery.d.ts.map +1 -0
- package/build/commands/battery.js +31 -0
- package/build/commands/battery.js.map +1 -0
- package/build/commands/logcat.d.ts +24 -0
- package/build/commands/logcat.d.ts.map +1 -0
- package/build/commands/logcat.js +261 -0
- package/build/commands/logcat.js.map +1 -0
- package/build/commands/open.d.ts +1 -1
- package/build/commands/open.d.ts.map +1 -1
- package/build/commands/open.js +14 -14
- package/build/commands/open.js.map +1 -1
- package/build/commands/screenshot.d.ts +1 -1
- package/build/commands/screenshot.d.ts.map +1 -1
- package/build/commands/screenshot.js +55 -9
- package/build/commands/screenshot.js.map +1 -1
- package/build/commands/stay-awake.d.ts +14 -0
- package/build/commands/stay-awake.d.ts.map +1 -0
- package/build/commands/stay-awake.js +234 -0
- package/build/commands/stay-awake.js.map +1 -0
- package/build/index.js +84 -5
- package/build/index.js.map +1 -1
- package/build/utils/adb.d.ts +12 -7
- package/build/utils/adb.d.ts.map +1 -1
- package/build/utils/adb.js +138 -31
- package/build/utils/adb.js.map +1 -1
- package/build/utils/filename.d.ts +9 -0
- package/build/utils/filename.d.ts.map +1 -0
- package/build/utils/filename.js +17 -0
- package/build/utils/filename.js.map +1 -0
- package/build/utils/filename.test.d.ts +5 -0
- package/build/utils/filename.test.d.ts.map +1 -0
- package/build/utils/filename.test.js +40 -0
- package/build/utils/filename.test.js.map +1 -0
- package/package.json +2 -1
- package/src/commands/battery.ts +34 -0
- package/src/commands/logcat.ts +288 -0
- package/src/commands/open.ts +18 -14
- package/src/commands/screenshot.ts +61 -9
- package/src/commands/stay-awake.ts +254 -0
- package/src/index.ts +119 -9
- package/src/utils/adb.ts +148 -31
- package/src/utils/filename.test.ts +55 -0
- package/src/utils/filename.ts +18 -0
- package/tests/adb.test.ts +2 -2
package/build/utils/adb.js
CHANGED
|
@@ -5,13 +5,67 @@ import which from 'which';
|
|
|
5
5
|
import net from 'net';
|
|
6
6
|
import { execCommand, execCommandFull } from './exec.js';
|
|
7
7
|
const CDP_PORT = 9223; // Chrome DevTools Protocol port (Quest browser default)
|
|
8
|
+
/**
|
|
9
|
+
* Get browser process PID
|
|
10
|
+
*/
|
|
11
|
+
async function getBrowserPID(packageName) {
|
|
12
|
+
try {
|
|
13
|
+
const result = await execCommandFull('adb', ['shell', `ps | grep ${packageName}`]);
|
|
14
|
+
if (!result.stdout)
|
|
15
|
+
return null;
|
|
16
|
+
// Parse ps output: USER PID PPID ... NAME
|
|
17
|
+
const lines = result.stdout.trim().split('\n');
|
|
18
|
+
for (const line of lines) {
|
|
19
|
+
if (line.includes('grep'))
|
|
20
|
+
continue; // Skip grep itself
|
|
21
|
+
const parts = line.trim().split(/\s+/);
|
|
22
|
+
if (parts.length >= 2) {
|
|
23
|
+
return parseInt(parts[1], 10); // PID is second column
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Detect CDP socket for a browser
|
|
34
|
+
* Returns socket name (e.g., "chrome_devtools_remote_12345")
|
|
35
|
+
*/
|
|
36
|
+
async function detectCDPSocket(packageName) {
|
|
37
|
+
const pid = await getBrowserPID(packageName);
|
|
38
|
+
if (pid) {
|
|
39
|
+
// Try PID-based socket first
|
|
40
|
+
try {
|
|
41
|
+
const result = await execCommandFull('adb', [
|
|
42
|
+
'shell',
|
|
43
|
+
`cat /proc/net/unix | grep chrome_devtools_remote_${pid}`
|
|
44
|
+
]);
|
|
45
|
+
if (result.stdout.includes(`chrome_devtools_remote_${pid}`)) {
|
|
46
|
+
return `chrome_devtools_remote_${pid}`;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// Fall through to default
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// Default: generic socket (Quest Browser)
|
|
54
|
+
return 'chrome_devtools_remote';
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Get CDP port for a socket
|
|
58
|
+
* Generic socket uses 9223, PID-based uses 9222
|
|
59
|
+
*/
|
|
60
|
+
function getCDPPortForSocket(socket) {
|
|
61
|
+
return socket === 'chrome_devtools_remote' ? 9223 : 9222;
|
|
62
|
+
}
|
|
8
63
|
/**
|
|
9
64
|
* Check if ADB is available on PATH
|
|
10
65
|
*/
|
|
11
66
|
export function checkADBPath() {
|
|
12
67
|
try {
|
|
13
68
|
const adbPath = which.sync('adb');
|
|
14
|
-
console.log(`Found ADB at: ${adbPath}`);
|
|
15
69
|
return adbPath;
|
|
16
70
|
}
|
|
17
71
|
catch (error) {
|
|
@@ -108,8 +162,11 @@ export function isPortListening(port) {
|
|
|
108
162
|
/**
|
|
109
163
|
* Idempotently set up ADB port forwarding for a given port
|
|
110
164
|
*/
|
|
111
|
-
export async function ensurePortForwarding(port) {
|
|
165
|
+
export async function ensurePortForwarding(port, browser = 'com.oculus.browser') {
|
|
112
166
|
try {
|
|
167
|
+
// Detect CDP socket and port for this browser
|
|
168
|
+
const cdpSocket = await detectCDPSocket(browser);
|
|
169
|
+
const cdpPort = getCDPPortForSocket(cdpSocket);
|
|
113
170
|
// Check reverse forwarding (Quest -> Host for dev server)
|
|
114
171
|
const reverseList = await execCommand('adb', ['reverse', '--list']);
|
|
115
172
|
const reverseExists = reverseList.includes(`tcp:${port}`);
|
|
@@ -123,26 +180,26 @@ export async function ensurePortForwarding(port) {
|
|
|
123
180
|
// Check forward forwarding (Host -> Quest for CDP)
|
|
124
181
|
// First check if ADB already has this forwarding set up
|
|
125
182
|
const forwardList = await execCommand('adb', ['forward', '--list']);
|
|
126
|
-
const forwardExists = forwardList.includes(`tcp:${
|
|
183
|
+
const forwardExists = forwardList.includes(`tcp:${cdpPort}`) && forwardList.includes(cdpSocket);
|
|
127
184
|
if (forwardExists) {
|
|
128
|
-
console.log(`CDP port ${
|
|
185
|
+
console.log(`CDP port ${cdpPort} forwarding already set up`);
|
|
129
186
|
}
|
|
130
187
|
else {
|
|
131
188
|
// Check if something else is using the port
|
|
132
|
-
const cdpPortListening = await isPortListening(
|
|
189
|
+
const cdpPortListening = await isPortListening(cdpPort);
|
|
133
190
|
if (cdpPortListening) {
|
|
134
|
-
console.error(`Error: Port ${
|
|
191
|
+
console.error(`Error: Port ${cdpPort} is already in use by another process`);
|
|
135
192
|
console.error('');
|
|
136
|
-
console.error(
|
|
193
|
+
console.error(`CDP port forwarding requires port ${cdpPort} to be free.`);
|
|
137
194
|
console.error('Please stop the process using this port and try again.');
|
|
138
195
|
console.error('');
|
|
139
196
|
console.error('To find what is using the port:');
|
|
140
|
-
console.error(` lsof -i :${
|
|
197
|
+
console.error(` lsof -i :${cdpPort}`);
|
|
141
198
|
console.error('');
|
|
142
199
|
process.exit(1);
|
|
143
200
|
}
|
|
144
|
-
await execCommand('adb', ['forward', `tcp:${
|
|
145
|
-
console.log(`ADB forward port forwarding set up: Host:${
|
|
201
|
+
await execCommand('adb', ['forward', `tcp:${cdpPort}`, `localabstract:${cdpSocket}`]);
|
|
202
|
+
console.log(`ADB forward port forwarding set up: Host:${cdpPort} -> Quest:${cdpSocket} (CDP)`);
|
|
146
203
|
}
|
|
147
204
|
}
|
|
148
205
|
catch (error) {
|
|
@@ -151,22 +208,22 @@ export async function ensurePortForwarding(port) {
|
|
|
151
208
|
}
|
|
152
209
|
}
|
|
153
210
|
/**
|
|
154
|
-
* Check if
|
|
211
|
+
* Check if browser is running
|
|
155
212
|
*/
|
|
156
|
-
export async function isBrowserRunning() {
|
|
213
|
+
export async function isBrowserRunning(browser = 'com.oculus.browser') {
|
|
157
214
|
try {
|
|
158
|
-
const result = await execCommandFull('adb', ['shell',
|
|
159
|
-
return result.stdout.includes(
|
|
215
|
+
const result = await execCommandFull('adb', ['shell', `ps | grep ${browser}`]);
|
|
216
|
+
return result.stdout.includes(browser);
|
|
160
217
|
}
|
|
161
218
|
catch (error) {
|
|
162
219
|
return false;
|
|
163
220
|
}
|
|
164
221
|
}
|
|
165
222
|
/**
|
|
166
|
-
* Launch
|
|
223
|
+
* Launch browser with a URL using am start
|
|
167
224
|
*/
|
|
168
|
-
export async function launchBrowser(url) {
|
|
169
|
-
console.log('Launching
|
|
225
|
+
export async function launchBrowser(url, browser = 'com.oculus.browser') {
|
|
226
|
+
console.log('Launching browser...');
|
|
170
227
|
try {
|
|
171
228
|
await execCommand('adb', [
|
|
172
229
|
'shell',
|
|
@@ -176,49 +233,53 @@ export async function launchBrowser(url) {
|
|
|
176
233
|
'android.intent.action.VIEW',
|
|
177
234
|
'-d',
|
|
178
235
|
url,
|
|
179
|
-
|
|
236
|
+
browser
|
|
180
237
|
]);
|
|
181
|
-
console.log(`
|
|
238
|
+
console.log(`Browser launched with URL: ${url}`);
|
|
182
239
|
return true;
|
|
183
240
|
}
|
|
184
241
|
catch (error) {
|
|
185
|
-
console.error('Failed to launch
|
|
242
|
+
console.error('Failed to launch browser:', error.message);
|
|
186
243
|
return false;
|
|
187
244
|
}
|
|
188
245
|
}
|
|
189
246
|
/**
|
|
190
247
|
* Get CDP port
|
|
191
248
|
*/
|
|
192
|
-
export function getCDPPort() {
|
|
193
|
-
|
|
249
|
+
export async function getCDPPort(browser = 'com.oculus.browser') {
|
|
250
|
+
const cdpSocket = await detectCDPSocket(browser);
|
|
251
|
+
return getCDPPortForSocket(cdpSocket);
|
|
194
252
|
}
|
|
195
253
|
/**
|
|
196
254
|
* Set up only CDP forwarding (for external URLs that don't need reverse forwarding)
|
|
197
255
|
*/
|
|
198
|
-
export async function ensureCDPForwarding() {
|
|
256
|
+
export async function ensureCDPForwarding(browser = 'com.oculus.browser') {
|
|
199
257
|
try {
|
|
258
|
+
// Detect CDP socket and port for this browser
|
|
259
|
+
const cdpSocket = await detectCDPSocket(browser);
|
|
260
|
+
const cdpPort = getCDPPortForSocket(cdpSocket);
|
|
200
261
|
// Check forward forwarding (Host -> Quest for CDP)
|
|
201
262
|
const forwardList = await execCommand('adb', ['forward', '--list']);
|
|
202
|
-
const forwardExists = forwardList.includes(`tcp:${
|
|
263
|
+
const forwardExists = forwardList.includes(`tcp:${cdpPort}`) && forwardList.includes(cdpSocket);
|
|
203
264
|
if (forwardExists) {
|
|
204
|
-
console.log(`CDP port ${
|
|
265
|
+
console.log(`CDP port ${cdpPort} forwarding already set up`);
|
|
205
266
|
}
|
|
206
267
|
else {
|
|
207
268
|
// Check if something else is using the port
|
|
208
|
-
const cdpPortListening = await isPortListening(
|
|
269
|
+
const cdpPortListening = await isPortListening(cdpPort);
|
|
209
270
|
if (cdpPortListening) {
|
|
210
|
-
console.error(`Error: Port ${
|
|
271
|
+
console.error(`Error: Port ${cdpPort} is already in use by another process`);
|
|
211
272
|
console.error('');
|
|
212
|
-
console.error(
|
|
273
|
+
console.error(`CDP port forwarding requires port ${cdpPort} to be free.`);
|
|
213
274
|
console.error('Please stop the process using this port and try again.');
|
|
214
275
|
console.error('');
|
|
215
276
|
console.error('To find what is using the port:');
|
|
216
|
-
console.error(` lsof -i :${
|
|
277
|
+
console.error(` lsof -i :${cdpPort}`);
|
|
217
278
|
console.error('');
|
|
218
279
|
process.exit(1);
|
|
219
280
|
}
|
|
220
|
-
await execCommand('adb', ['forward', `tcp:${
|
|
221
|
-
console.log(`ADB forward port forwarding set up: Host:${
|
|
281
|
+
await execCommand('adb', ['forward', `tcp:${cdpPort}`, `localabstract:${cdpSocket}`]);
|
|
282
|
+
console.log(`ADB forward port forwarding set up: Host:${cdpPort} -> Quest:${cdpSocket} (CDP)`);
|
|
222
283
|
}
|
|
223
284
|
}
|
|
224
285
|
catch (error) {
|
|
@@ -259,4 +320,50 @@ export async function checkQuestAwake() {
|
|
|
259
320
|
process.exit(1);
|
|
260
321
|
}
|
|
261
322
|
}
|
|
323
|
+
/**
|
|
324
|
+
* Get Quest battery status
|
|
325
|
+
* Returns percentage and charging state in one line
|
|
326
|
+
*/
|
|
327
|
+
export async function getBatteryStatus() {
|
|
328
|
+
const result = await execCommandFull('adb', ['shell', 'dumpsys', 'battery']);
|
|
329
|
+
if (result.code !== 0) {
|
|
330
|
+
throw new Error('Failed to get battery status');
|
|
331
|
+
}
|
|
332
|
+
// Parse battery info
|
|
333
|
+
let level = 0;
|
|
334
|
+
let acPowered = false;
|
|
335
|
+
let usbPowered = false;
|
|
336
|
+
let maxChargingCurrent = 0;
|
|
337
|
+
const lines = result.stdout.split('\n');
|
|
338
|
+
for (const line of lines) {
|
|
339
|
+
const trimmed = line.trim();
|
|
340
|
+
if (trimmed.startsWith('level: ')) {
|
|
341
|
+
level = parseInt(trimmed.substring(7), 10);
|
|
342
|
+
}
|
|
343
|
+
else if (trimmed.startsWith('AC powered: ')) {
|
|
344
|
+
acPowered = trimmed.substring(12) === 'true';
|
|
345
|
+
}
|
|
346
|
+
else if (trimmed.startsWith('USB powered: ')) {
|
|
347
|
+
usbPowered = trimmed.substring(13) === 'true';
|
|
348
|
+
}
|
|
349
|
+
else if (trimmed.startsWith('Max charging current: ')) {
|
|
350
|
+
maxChargingCurrent = parseInt(trimmed.substring(22), 10);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
// Determine charging state
|
|
354
|
+
let state;
|
|
355
|
+
if (acPowered || usbPowered) {
|
|
356
|
+
// Fast charging is typically > 2A (2000000 microamps)
|
|
357
|
+
if (maxChargingCurrent > 2000000) {
|
|
358
|
+
state = 'fast charging';
|
|
359
|
+
}
|
|
360
|
+
else {
|
|
361
|
+
state = 'charging';
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
else {
|
|
365
|
+
state = 'not charging';
|
|
366
|
+
}
|
|
367
|
+
return `${level}% ${state}`;
|
|
368
|
+
}
|
|
262
369
|
//# sourceMappingURL=adb.js.map
|
package/build/utils/adb.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adb.js","sourceRoot":"","sources":["../../src/utils/adb.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"adb.js","sourceRoot":"","sources":["../../src/utils/adb.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filename generation utilities for screenshots
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Generate UTC timestamp filename
|
|
6
|
+
* Format: screenshot-YYYY-MM-DD-HH-MM-SS-Z.jpg
|
|
7
|
+
*/
|
|
8
|
+
export declare function generateScreenshotFilename(date?: Date): string;
|
|
9
|
+
//# sourceMappingURL=filename.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filename.d.ts","sourceRoot":"","sources":["../../src/utils/filename.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,GAAE,IAAiB,GAAG,MAAM,CAS1E"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filename generation utilities for screenshots
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Generate UTC timestamp filename
|
|
6
|
+
* Format: screenshot-YYYY-MM-DD-HH-MM-SS-Z.jpg
|
|
7
|
+
*/
|
|
8
|
+
export function generateScreenshotFilename(date = new Date()) {
|
|
9
|
+
const year = date.getUTCFullYear();
|
|
10
|
+
const month = String(date.getUTCMonth() + 1).padStart(2, '0');
|
|
11
|
+
const day = String(date.getUTCDate()).padStart(2, '0');
|
|
12
|
+
const hours = String(date.getUTCHours()).padStart(2, '0');
|
|
13
|
+
const minutes = String(date.getUTCMinutes()).padStart(2, '0');
|
|
14
|
+
const seconds = String(date.getUTCSeconds()).padStart(2, '0');
|
|
15
|
+
return `screenshot-${year}-${month}-${day}-${hours}-${minutes}-${seconds}-Z.jpg`;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=filename.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filename.js","sourceRoot":"","sources":["../../src/utils/filename.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAC,OAAa,IAAI,IAAI,EAAE;IAChE,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAE9D,OAAO,cAAc,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,OAAO,IAAI,OAAO,QAAQ,CAAC;AACnF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filename.test.d.ts","sourceRoot":"","sources":["../../src/utils/filename.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for filename generation utilities
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it, expect } from 'vitest';
|
|
5
|
+
import { generateScreenshotFilename } from './filename.js';
|
|
6
|
+
describe('generateScreenshotFilename', () => {
|
|
7
|
+
it('formats UTC timestamp correctly', () => {
|
|
8
|
+
const date = new Date('2026-01-15T14:30:45Z');
|
|
9
|
+
expect(generateScreenshotFilename(date))
|
|
10
|
+
.toBe('screenshot-2026-01-15-14-30-45-Z.jpg');
|
|
11
|
+
});
|
|
12
|
+
it('pads single digits with zeros', () => {
|
|
13
|
+
const date = new Date('2026-01-05T08:09:03Z');
|
|
14
|
+
expect(generateScreenshotFilename(date))
|
|
15
|
+
.toBe('screenshot-2026-01-05-08-09-03-Z.jpg');
|
|
16
|
+
});
|
|
17
|
+
it('handles midnight correctly', () => {
|
|
18
|
+
const date = new Date('2026-12-31T00:00:00Z');
|
|
19
|
+
expect(generateScreenshotFilename(date))
|
|
20
|
+
.toBe('screenshot-2026-12-31-00-00-00-Z.jpg');
|
|
21
|
+
});
|
|
22
|
+
it('generates filename with current time when no date provided', () => {
|
|
23
|
+
const filename = generateScreenshotFilename();
|
|
24
|
+
// Verify format is correct
|
|
25
|
+
expect(filename).toMatch(/^screenshot-\d{4}-\d{2}-\d{2}-\d{2}-\d{2}-\d{2}-Z\.jpg$/);
|
|
26
|
+
// Extract timestamp from filename
|
|
27
|
+
const match = filename.match(/^screenshot-(\d{4})-(\d{2})-(\d{2})-(\d{2})-(\d{2})-(\d{2})-Z\.jpg$/);
|
|
28
|
+
expect(match).not.toBeNull();
|
|
29
|
+
if (match) {
|
|
30
|
+
const [, year, month, day, hours, minutes, seconds] = match;
|
|
31
|
+
const filenameDate = new Date(Date.UTC(parseInt(year), parseInt(month) - 1, parseInt(day), parseInt(hours), parseInt(minutes), parseInt(seconds)));
|
|
32
|
+
// Verify the timestamp is reasonable (within last minute)
|
|
33
|
+
const now = new Date();
|
|
34
|
+
const diff = now.getTime() - filenameDate.getTime();
|
|
35
|
+
expect(diff).toBeGreaterThanOrEqual(0);
|
|
36
|
+
expect(diff).toBeLessThan(60000); // Within last 60 seconds
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
//# sourceMappingURL=filename.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filename.test.js","sourceRoot":"","sources":["../../src/utils/filename.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAE3D,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC9C,MAAM,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;aACrC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC9C,MAAM,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;aACrC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC9C,MAAM,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;aACrC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,QAAQ,GAAG,0BAA0B,EAAE,CAAC;QAE9C,2BAA2B;QAC3B,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,yDAAyD,CAAC,CAAC;QAEpF,kCAAkC;QAClC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACpG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAE7B,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC;YAC5D,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CACpC,QAAQ,CAAC,IAAI,CAAC,EACd,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EACnB,QAAQ,CAAC,GAAG,CAAC,EACb,QAAQ,CAAC,KAAK,CAAC,EACf,QAAQ,CAAC,OAAO,CAAC,EACjB,QAAQ,CAAC,OAAO,CAAC,CAClB,CAAC,CAAC;YAEH,0DAA0D;YAC1D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,yBAAyB;QAC7D,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@myerscarpenter/quest-dev",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "CLI for Meta Quest Browser development - screenshot and URL opening via ADB and cdp-cli",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
"url": "https://github.com/myers/quest-dev"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
+
"exiftool-vendored": "^35.1.0",
|
|
40
41
|
"which": "^4.0.0",
|
|
41
42
|
"yargs": "^18.0.0"
|
|
42
43
|
},
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Quest battery command
|
|
3
|
+
* Shows battery percentage and charging status
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { checkADBPath, checkADBDevices, getBatteryStatus } from '../utils/adb.js';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Main battery command handler
|
|
10
|
+
*/
|
|
11
|
+
export async function batteryCommand(): Promise<void> {
|
|
12
|
+
// Check prerequisites (silent)
|
|
13
|
+
checkADBPath();
|
|
14
|
+
|
|
15
|
+
// Check devices without verbose output
|
|
16
|
+
try {
|
|
17
|
+
const { execCommand } = await import('../utils/exec.js');
|
|
18
|
+
const output = await execCommand('adb', ['devices']);
|
|
19
|
+
const lines = output.trim().split('\n').slice(1);
|
|
20
|
+
const devices = lines.filter(line => line.trim() && !line.includes('List of devices'));
|
|
21
|
+
|
|
22
|
+
if (devices.length === 0) {
|
|
23
|
+
console.error('Error: No ADB devices connected');
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
} catch (error) {
|
|
27
|
+
console.error('Error: Failed to list ADB devices');
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Get and display battery status
|
|
32
|
+
const status = await getBatteryStatus();
|
|
33
|
+
console.log(status);
|
|
34
|
+
}
|