adb-sqlite-viewer 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.
@@ -0,0 +1,105 @@
1
+ const { app, BrowserWindow } = require("electron");
2
+ const { fork } = require("child_process");
3
+ const path = require("path");
4
+
5
+ let bridge = null;
6
+ let mainWindow = null;
7
+
8
+ function getBridgePath() {
9
+ if (app.isPackaged) {
10
+ return path.join(process.resourcesPath, "bridge", "server.js");
11
+ }
12
+ return path.join(__dirname, "..", "bridge", "server.js");
13
+ }
14
+
15
+ function startBridge() {
16
+ return new Promise((resolve, reject) => {
17
+ const serverPath = getBridgePath();
18
+ bridge = fork(serverPath, [], { silent: true });
19
+
20
+ const timeout = setTimeout(() => {
21
+ reject(new Error("Bridge server failed to start within 10 seconds"));
22
+ }, 10_000);
23
+
24
+ bridge.on("message", (msg) => {
25
+ if (msg.type === "ready") {
26
+ clearTimeout(timeout);
27
+ resolve();
28
+ } else if (msg.type === "error") {
29
+ clearTimeout(timeout);
30
+ reject(new Error(msg.message || "Bridge error"));
31
+ }
32
+ });
33
+
34
+ bridge.on("error", (err) => {
35
+ clearTimeout(timeout);
36
+ reject(err);
37
+ });
38
+
39
+ bridge.on("exit", (code) => {
40
+ if (code !== 0 && code !== null) {
41
+ clearTimeout(timeout);
42
+ reject(new Error(`Bridge exited with code ${code}`));
43
+ }
44
+ });
45
+
46
+ // Forward bridge logs to main process console
47
+ bridge.stdout.on("data", (data) => {
48
+ process.stdout.write(`[bridge] ${data}`);
49
+ });
50
+ bridge.stderr.on("data", (data) => {
51
+ process.stderr.write(`[bridge] ${data}`);
52
+ });
53
+ });
54
+ }
55
+
56
+ function createWindow() {
57
+ mainWindow = new BrowserWindow({
58
+ width: 1400,
59
+ height: 900,
60
+ webPreferences: {
61
+ nodeIntegration: false,
62
+ contextIsolation: true,
63
+ },
64
+ });
65
+
66
+ // __dirname works in both dev and packaged (asar transparency)
67
+ const indexPath = path.join(__dirname, "..", "dist", "index.html");
68
+
69
+ mainWindow.loadFile(indexPath);
70
+ mainWindow.on("closed", () => {
71
+ mainWindow = null;
72
+ });
73
+ }
74
+
75
+ app.whenReady().then(async () => {
76
+ try {
77
+ console.log("Starting ADB bridge server...");
78
+ await startBridge();
79
+ console.log("Bridge server ready.");
80
+ } catch (err) {
81
+ console.error("Failed to start bridge:", err.message);
82
+ // Continue anyway — user can still use the app if they have standalone bridge
83
+ }
84
+
85
+ createWindow();
86
+
87
+ app.on("activate", () => {
88
+ if (BrowserWindow.getAllWindows().length === 0) {
89
+ createWindow();
90
+ }
91
+ });
92
+ });
93
+
94
+ app.on("window-all-closed", () => {
95
+ if (process.platform !== "darwin") {
96
+ app.quit();
97
+ }
98
+ });
99
+
100
+ app.on("before-quit", () => {
101
+ if (bridge) {
102
+ bridge.kill();
103
+ bridge = null;
104
+ }
105
+ });
package/package.json ADDED
@@ -0,0 +1,75 @@
1
+ {
2
+ "name": "adb-sqlite-viewer",
3
+ "version": "1.0.5",
4
+ "description": "ADB SQLite database viewer for Android — inspect tables, schemas, and run queries on-device",
5
+ "type": "module",
6
+ "main": "electron/main.cjs",
7
+ "bin": {
8
+ "sqlite-viewer": "./cli/bin.cjs"
9
+ },
10
+ "files": [
11
+ "cli/",
12
+ "bridge/server.js",
13
+ "dist/"
14
+ ],
15
+ "scripts": {
16
+ "dev": "vite",
17
+ "build": "vite build",
18
+ "preview": "vite preview",
19
+ "build:electron": "cross-env BUILD_TARGET=electron vite build",
20
+ "build:npm": "cross-env BUILD_TARGET=npm vite build",
21
+ "electron:dev": "cross-env BUILD_TARGET=electron vite build && electron .",
22
+ "electron:build": "cross-env BUILD_TARGET=electron vite build && electron-builder",
23
+ "start": "node cli/bin.cjs",
24
+ "prepublishOnly": "npm run build:npm"
25
+ },
26
+ "keywords": [
27
+ "adb",
28
+ "sqlite",
29
+ "android",
30
+ "devtools",
31
+ "react-native",
32
+ "database",
33
+ "viewer"
34
+ ],
35
+ "license": "MIT",
36
+ "repository": {
37
+ "type": "git",
38
+ "url": "https://github.com/amitwinit/SQLite-DevTools-Mobile-ReactNative"
39
+ },
40
+ "dependencies": {},
41
+ "devDependencies": {
42
+ "@yume-chan/adb": "^0.0.24",
43
+ "@yume-chan/adb-credential-web": "^0.0.24",
44
+ "@yume-chan/adb-daemon-webusb": "^0.0.24",
45
+ "@yume-chan/stream-extra": "^0.0.24",
46
+ "cross-env": "^7.0.3",
47
+ "electron": "^34.0.0",
48
+ "electron-builder": "^25.1.8",
49
+ "vite": "^6.1.0"
50
+ },
51
+ "build": {
52
+ "appId": "com.adb-sqlite-viewer.app",
53
+ "productName": "ADB SQLite DevTools",
54
+ "directories": {
55
+ "output": "electron-dist"
56
+ },
57
+ "files": [
58
+ "electron/**/*",
59
+ "dist/**/*"
60
+ ],
61
+ "extraResources": [
62
+ {
63
+ "from": "bridge/server.js",
64
+ "to": "bridge/server.js"
65
+ },
66
+ {
67
+ "from": "bridge/package.json",
68
+ "to": "bridge/package.json"
69
+ }
70
+ ],
71
+ "win": {
72
+ "target": "nsis"
73
+ }
74
+ }
75
+ }