projax 3.3.39 → 3.3.51
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/README.md +73 -0
- package/dist/__tests__/port-scanner.test.js +7 -17
- package/dist/__tests__/script-runner.test.js +7 -17
- package/dist/api/__tests__/database.test.js +7 -17
- package/dist/api/__tests__/database.test.js.map +1 -1
- package/dist/api/__tests__/routes.test.js +7 -17
- package/dist/api/__tests__/routes.test.js.map +1 -1
- package/dist/api/__tests__/scanner.test.js +7 -17
- package/dist/api/__tests__/scanner.test.js.map +1 -1
- package/dist/api/database.d.ts +20 -1
- package/dist/api/database.d.ts.map +1 -1
- package/dist/api/database.js +192 -21
- package/dist/api/database.js.map +1 -1
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +17 -19
- package/dist/api/index.js.map +1 -1
- package/dist/api/migrate.js +2 -1
- package/dist/api/migrate.js.map +1 -1
- package/dist/api/package.json +3 -2
- package/dist/api/routes/backup.d.ts +3 -0
- package/dist/api/routes/backup.d.ts.map +1 -0
- package/dist/api/routes/backup.js +51 -0
- package/dist/api/routes/backup.js.map +1 -0
- package/dist/api/routes/index.d.ts.map +1 -1
- package/dist/api/routes/index.js +6 -0
- package/dist/api/routes/index.js.map +1 -1
- package/dist/api/routes/mcp.d.ts +3 -0
- package/dist/api/routes/mcp.d.ts.map +1 -0
- package/dist/api/routes/mcp.js +147 -0
- package/dist/api/routes/mcp.js.map +1 -0
- package/dist/api/routes/projects.d.ts.map +1 -1
- package/dist/api/routes/projects.js +27 -17
- package/dist/api/routes/projects.js.map +1 -1
- package/dist/api/routes/settings.d.ts.map +1 -1
- package/dist/api/routes/settings.js +119 -11
- package/dist/api/routes/settings.js.map +1 -1
- package/dist/api/routes/workspaces.d.ts +3 -0
- package/dist/api/routes/workspaces.d.ts.map +1 -0
- package/dist/api/routes/workspaces.js +504 -0
- package/dist/api/routes/workspaces.js.map +1 -0
- package/dist/api/services/scanner.js +10 -19
- package/dist/api/services/scanner.js.map +1 -1
- package/dist/api/services/test-parser.js +3 -2
- package/dist/api/services/test-parser.js.map +1 -1
- package/dist/api/types.d.ts +31 -0
- package/dist/api/types.d.ts.map +1 -1
- package/dist/core/__tests__/database.test.js +7 -17
- package/dist/core/__tests__/detector.test.js +7 -17
- package/dist/core/__tests__/index.test.js +7 -17
- package/dist/core/__tests__/scanner.test.js +7 -17
- package/dist/core/__tests__/settings.test.js +7 -17
- package/dist/core/backup-utils.d.ts +17 -0
- package/dist/core/backup-utils.js +157 -0
- package/dist/core/database.d.ts +1 -0
- package/dist/core/database.js +9 -18
- package/dist/core/detector.js +11 -21
- package/dist/core/git-utils.d.ts +12 -0
- package/dist/core/git-utils.js +87 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.js +8 -5
- package/dist/core/scanner.js +3 -2
- package/dist/core/settings.d.ts +85 -0
- package/dist/core/settings.js +306 -9
- package/dist/core/workspace-utils.d.ts +37 -0
- package/dist/core/workspace-utils.js +143 -0
- package/dist/core-bridge.js +7 -17
- package/dist/electron/core/__tests__/database.test.js +7 -17
- package/dist/electron/core/__tests__/detector.test.js +7 -17
- package/dist/electron/core/__tests__/index.test.js +7 -17
- package/dist/electron/core/__tests__/scanner.test.js +7 -17
- package/dist/electron/core/__tests__/settings.test.js +7 -17
- package/dist/electron/core/backup-utils.d.ts +17 -0
- package/dist/electron/core/backup-utils.js +157 -0
- package/dist/electron/core/database.d.ts +1 -0
- package/dist/electron/core/database.js +9 -18
- package/dist/electron/core/detector.js +11 -21
- package/dist/electron/core/git-utils.d.ts +12 -0
- package/dist/electron/core/git-utils.js +87 -0
- package/dist/electron/core/index.d.ts +3 -0
- package/dist/electron/core/index.js +8 -5
- package/dist/electron/core/scanner.js +3 -2
- package/dist/electron/core/settings.d.ts +85 -0
- package/dist/electron/core/settings.js +306 -9
- package/dist/electron/core/workspace-utils.d.ts +37 -0
- package/dist/electron/core/workspace-utils.js +143 -0
- package/dist/electron/core.js +7 -17
- package/dist/electron/main.js +663 -33
- package/dist/electron/port-extractor.js +9 -18
- package/dist/electron/port-scanner.js +11 -20
- package/dist/electron/port-utils.js +5 -4
- package/dist/electron/preload.d.ts +27 -2
- package/dist/electron/preload.js +18 -2
- package/dist/electron/renderer/assets/index-B-etDnj2.js +64 -0
- package/dist/electron/renderer/assets/index-Bx18Cyic.js +64 -0
- package/dist/electron/renderer/assets/index-C8f5yNYe.js +64 -0
- package/dist/electron/renderer/assets/index-CIZ3Wl6c.css +1 -0
- package/dist/electron/renderer/assets/index-CJbsU9y8.css +1 -0
- package/dist/electron/renderer/assets/index-CopVNRnR.js +64 -0
- package/dist/electron/renderer/assets/index-DUvcepWm.js +64 -0
- package/dist/electron/renderer/assets/index-DWe2TQFv.css +1 -0
- package/dist/electron/renderer/assets/index-DZzB20Xf.css +1 -0
- package/dist/electron/renderer/assets/index-DknLdADV.js +63 -0
- package/dist/electron/renderer/assets/index-DocuD8Lk.js +64 -0
- package/dist/electron/renderer/assets/index-DyU-xfd8.css +1 -0
- package/dist/electron/renderer/assets/index-GwC-JVUy.css +1 -0
- package/dist/electron/renderer/assets/index-fehviker.js +63 -0
- package/dist/electron/renderer/index.html +2 -2
- package/dist/electron/script-runner.js +20 -29
- package/dist/index.js +395 -21
- package/dist/port-extractor.js +9 -18
- package/dist/port-scanner.js +11 -20
- package/dist/port-utils.js +5 -4
- package/dist/script-runner.js +20 -29
- package/dist/test-parser.js +3 -2
- package/package.json +3 -2
package/dist/port-scanner.js
CHANGED
|
@@ -15,27 +15,15 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) ||
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
35
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.scanProjectPorts =
|
|
37
|
-
exports.scanAllProjectPorts = scanAllProjectPorts;
|
|
38
|
-
exports.shouldRescanPorts = shouldRescanPorts;
|
|
26
|
+
exports.shouldRescanPorts = exports.scanAllProjectPorts = exports.scanProjectPorts = void 0;
|
|
39
27
|
const core_bridge_1 = require("./core-bridge");
|
|
40
28
|
const port_extractor_1 = require("./port-extractor");
|
|
41
29
|
const fs = __importStar(require("fs"));
|
|
@@ -60,6 +48,7 @@ async function scanProjectPorts(projectId) {
|
|
|
60
48
|
db.addProjectPort(projectId, portInfo.port, portInfo.source, portInfo.script);
|
|
61
49
|
}
|
|
62
50
|
}
|
|
51
|
+
exports.scanProjectPorts = scanProjectPorts;
|
|
63
52
|
/**
|
|
64
53
|
* Scan ports for all projects
|
|
65
54
|
*/
|
|
@@ -76,6 +65,7 @@ async function scanAllProjectPorts() {
|
|
|
76
65
|
}
|
|
77
66
|
}
|
|
78
67
|
}
|
|
68
|
+
exports.scanAllProjectPorts = scanAllProjectPorts;
|
|
79
69
|
/**
|
|
80
70
|
* Check if ports need to be rescanned (stale check)
|
|
81
71
|
* Returns true if ports haven't been scanned in the last 24 hours
|
|
@@ -91,3 +81,4 @@ function shouldRescanPorts(projectId) {
|
|
|
91
81
|
const needsRescan = ports.some(port => (port.last_detected || 0) <= twentyFourHoursAgo);
|
|
92
82
|
return needsRescan;
|
|
93
83
|
}
|
|
84
|
+
exports.shouldRescanPorts = shouldRescanPorts;
|
package/dist/port-utils.js
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.detectPortInUse =
|
|
4
|
-
exports.getProcessOnPort = getProcessOnPort;
|
|
5
|
-
exports.killProcessOnPort = killProcessOnPort;
|
|
6
|
-
exports.extractPortFromError = extractPortFromError;
|
|
3
|
+
exports.extractPortFromError = exports.killProcessOnPort = exports.getProcessOnPort = exports.detectPortInUse = void 0;
|
|
7
4
|
const child_process_1 = require("child_process");
|
|
8
5
|
const util_1 = require("util");
|
|
9
6
|
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
@@ -43,6 +40,7 @@ async function detectPortInUse(port) {
|
|
|
43
40
|
return false;
|
|
44
41
|
}
|
|
45
42
|
}
|
|
43
|
+
exports.detectPortInUse = detectPortInUse;
|
|
46
44
|
/**
|
|
47
45
|
* Get process information for a port (cross-platform)
|
|
48
46
|
*/
|
|
@@ -104,6 +102,7 @@ async function getProcessOnPort(port) {
|
|
|
104
102
|
return null;
|
|
105
103
|
}
|
|
106
104
|
}
|
|
105
|
+
exports.getProcessOnPort = getProcessOnPort;
|
|
107
106
|
/**
|
|
108
107
|
* Kill process(es) using a port (cross-platform)
|
|
109
108
|
*/
|
|
@@ -169,6 +168,7 @@ async function killProcessOnPort(port) {
|
|
|
169
168
|
return false;
|
|
170
169
|
}
|
|
171
170
|
}
|
|
171
|
+
exports.killProcessOnPort = killProcessOnPort;
|
|
172
172
|
/**
|
|
173
173
|
* Extract port number from error messages
|
|
174
174
|
* Handles common port conflict error patterns
|
|
@@ -198,3 +198,4 @@ function extractPortFromError(error) {
|
|
|
198
198
|
}
|
|
199
199
|
return null;
|
|
200
200
|
}
|
|
201
|
+
exports.extractPortFromError = extractPortFromError;
|
package/dist/script-runner.js
CHANGED
|
@@ -15,36 +15,15 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) ||
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
35
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.detectProjectType =
|
|
37
|
-
exports.getProjectScripts = getProjectScripts;
|
|
38
|
-
exports.runScript = runScript;
|
|
39
|
-
exports.loadProcesses = loadProcesses;
|
|
40
|
-
exports.removeProcess = removeProcess;
|
|
41
|
-
exports.getProjectProcesses = getProjectProcesses;
|
|
42
|
-
exports.getRunningProcesses = getRunningProcesses;
|
|
43
|
-
exports.getRunningProcessesClean = getRunningProcessesClean;
|
|
44
|
-
exports.stopScript = stopScript;
|
|
45
|
-
exports.stopScriptByPort = stopScriptByPort;
|
|
46
|
-
exports.stopProjectProcesses = stopProjectProcesses;
|
|
47
|
-
exports.runScriptInBackground = runScriptInBackground;
|
|
26
|
+
exports.runScriptInBackground = exports.stopProjectProcesses = exports.stopScriptByPort = exports.stopScript = exports.getRunningProcessesClean = exports.getRunningProcesses = exports.getProjectProcesses = exports.removeProcess = exports.loadProcesses = exports.runScript = exports.getProjectScripts = exports.detectProjectType = void 0;
|
|
48
27
|
const fs = __importStar(require("fs"));
|
|
49
28
|
const path = __importStar(require("path"));
|
|
50
29
|
const os = __importStar(require("os"));
|
|
@@ -72,6 +51,7 @@ function detectProjectType(projectPath) {
|
|
|
72
51
|
}
|
|
73
52
|
return 'unknown';
|
|
74
53
|
}
|
|
54
|
+
exports.detectProjectType = detectProjectType;
|
|
75
55
|
/**
|
|
76
56
|
* Parse scripts from package.json (Node.js)
|
|
77
57
|
*/
|
|
@@ -272,6 +252,7 @@ function getProjectScripts(projectPath) {
|
|
|
272
252
|
scripts,
|
|
273
253
|
};
|
|
274
254
|
}
|
|
255
|
+
exports.getProjectScripts = getProjectScripts;
|
|
275
256
|
/**
|
|
276
257
|
* Handle port conflict - prompt user or auto-kill based on force flag
|
|
277
258
|
*/
|
|
@@ -476,6 +457,7 @@ function runScript(projectPath, scriptName, args = [], force = false) {
|
|
|
476
457
|
});
|
|
477
458
|
});
|
|
478
459
|
}
|
|
460
|
+
exports.runScript = runScript;
|
|
479
461
|
/**
|
|
480
462
|
* Get the path to the processes file
|
|
481
463
|
*/
|
|
@@ -502,6 +484,7 @@ function loadProcesses() {
|
|
|
502
484
|
return [];
|
|
503
485
|
}
|
|
504
486
|
}
|
|
487
|
+
exports.loadProcesses = loadProcesses;
|
|
505
488
|
/**
|
|
506
489
|
* Save running processes to disk
|
|
507
490
|
*/
|
|
@@ -525,6 +508,7 @@ function removeProcess(pid) {
|
|
|
525
508
|
const filtered = processes.filter(p => p.pid !== pid);
|
|
526
509
|
saveProcesses(filtered);
|
|
527
510
|
}
|
|
511
|
+
exports.removeProcess = removeProcess;
|
|
528
512
|
/**
|
|
529
513
|
* Get all running processes for a project
|
|
530
514
|
*/
|
|
@@ -532,6 +516,7 @@ function getProjectProcesses(projectPath) {
|
|
|
532
516
|
const processes = loadProcesses();
|
|
533
517
|
return processes.filter(p => p.projectPath === projectPath);
|
|
534
518
|
}
|
|
519
|
+
exports.getProjectProcesses = getProjectProcesses;
|
|
535
520
|
/**
|
|
536
521
|
* Check if a process is still running
|
|
537
522
|
*/
|
|
@@ -581,6 +566,7 @@ async function cleanupDeadProcesses() {
|
|
|
581
566
|
function getRunningProcesses() {
|
|
582
567
|
return loadProcesses();
|
|
583
568
|
}
|
|
569
|
+
exports.getRunningProcesses = getRunningProcesses;
|
|
584
570
|
/**
|
|
585
571
|
* Get all running processes with cleanup (async version)
|
|
586
572
|
*/
|
|
@@ -588,6 +574,7 @@ async function getRunningProcessesClean() {
|
|
|
588
574
|
await cleanupDeadProcesses();
|
|
589
575
|
return loadProcesses();
|
|
590
576
|
}
|
|
577
|
+
exports.getRunningProcessesClean = getRunningProcessesClean;
|
|
591
578
|
/**
|
|
592
579
|
* Extract URLs from text output
|
|
593
580
|
*/
|
|
@@ -693,6 +680,7 @@ async function stopScript(pid) {
|
|
|
693
680
|
return false;
|
|
694
681
|
}
|
|
695
682
|
}
|
|
683
|
+
exports.stopScript = stopScript;
|
|
696
684
|
/**
|
|
697
685
|
* Stop a script by port (finds process using port and kills it)
|
|
698
686
|
*/
|
|
@@ -719,6 +707,7 @@ async function stopScriptByPort(port) {
|
|
|
719
707
|
return false;
|
|
720
708
|
}
|
|
721
709
|
}
|
|
710
|
+
exports.stopScriptByPort = stopScriptByPort;
|
|
722
711
|
/**
|
|
723
712
|
* Stop all processes for a project
|
|
724
713
|
*/
|
|
@@ -732,6 +721,7 @@ async function stopProjectProcesses(projectPath) {
|
|
|
732
721
|
}
|
|
733
722
|
return stopped;
|
|
734
723
|
}
|
|
724
|
+
exports.stopProjectProcesses = stopProjectProcesses;
|
|
735
725
|
/**
|
|
736
726
|
* Execute a script in the background (minimal logging)
|
|
737
727
|
*/
|
|
@@ -945,6 +935,7 @@ function runScriptInBackground(projectPath, projectName, scriptName, args = [],
|
|
|
945
935
|
resolve(child.pid);
|
|
946
936
|
});
|
|
947
937
|
}
|
|
938
|
+
exports.runScriptInBackground = runScriptInBackground;
|
|
948
939
|
/**
|
|
949
940
|
* Check log file for test output and parse results
|
|
950
941
|
*/
|
package/dist/test-parser.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// Test output parser for extracting test statistics from common test runners
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.parseTestOutput =
|
|
5
|
-
exports.isTestOutput = isTestOutput;
|
|
4
|
+
exports.isTestOutput = exports.parseTestOutput = void 0;
|
|
6
5
|
/**
|
|
7
6
|
* Parse test output from various frameworks and extract statistics
|
|
8
7
|
*/
|
|
@@ -43,6 +42,7 @@ function parseTestOutput(output) {
|
|
|
43
42
|
}
|
|
44
43
|
return result.total > 0 ? result : null;
|
|
45
44
|
}
|
|
45
|
+
exports.parseTestOutput = parseTestOutput;
|
|
46
46
|
/**
|
|
47
47
|
* Parse Jest/Vitest output
|
|
48
48
|
*/
|
|
@@ -197,3 +197,4 @@ function isTestOutput(output) {
|
|
|
197
197
|
];
|
|
198
198
|
return testIndicators.some(indicator => output.includes(indicator));
|
|
199
199
|
}
|
|
200
|
+
exports.isTestOutput = isTestOutput;
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "projax",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.51",
|
|
4
4
|
"description": "Cross-platform project management dashboard for tracking local development projects. Features CLI, Terminal UI, Desktop app, REST API, and built-in tools for test detection, port management, and script execution.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"prx": "./dist/index.js"
|
|
8
8
|
},
|
|
9
9
|
"scripts": {
|
|
10
|
-
"build": "tsc",
|
|
10
|
+
"build": "pnpm exec tsc",
|
|
11
11
|
"build:electron": "cd ../desktop && npm run build",
|
|
12
12
|
"copy:electron": "mkdir -p dist/electron && cp -r ../desktop/dist/* dist/electron/ && cp dist/script-runner.* dist/electron/ && cp dist/port-*.* dist/electron/ && cp -R dist/core dist/electron/",
|
|
13
13
|
"copy:api": "mkdir -p dist/api && cp -r ../api/dist/* dist/api/ && cp ../api/package.json dist/api/",
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"express": "^4.18.2",
|
|
29
29
|
"ink": "^3.2.0",
|
|
30
30
|
"inquirer": "^9.2.12",
|
|
31
|
+
"projax-core": "workspace:*",
|
|
31
32
|
"react": "^17.0.2",
|
|
32
33
|
"tail": "^2.2.6",
|
|
33
34
|
"tsx": "^4.20.6"
|