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.
Files changed (115) hide show
  1. package/README.md +73 -0
  2. package/dist/__tests__/port-scanner.test.js +7 -17
  3. package/dist/__tests__/script-runner.test.js +7 -17
  4. package/dist/api/__tests__/database.test.js +7 -17
  5. package/dist/api/__tests__/database.test.js.map +1 -1
  6. package/dist/api/__tests__/routes.test.js +7 -17
  7. package/dist/api/__tests__/routes.test.js.map +1 -1
  8. package/dist/api/__tests__/scanner.test.js +7 -17
  9. package/dist/api/__tests__/scanner.test.js.map +1 -1
  10. package/dist/api/database.d.ts +20 -1
  11. package/dist/api/database.d.ts.map +1 -1
  12. package/dist/api/database.js +192 -21
  13. package/dist/api/database.js.map +1 -1
  14. package/dist/api/index.d.ts.map +1 -1
  15. package/dist/api/index.js +17 -19
  16. package/dist/api/index.js.map +1 -1
  17. package/dist/api/migrate.js +2 -1
  18. package/dist/api/migrate.js.map +1 -1
  19. package/dist/api/package.json +3 -2
  20. package/dist/api/routes/backup.d.ts +3 -0
  21. package/dist/api/routes/backup.d.ts.map +1 -0
  22. package/dist/api/routes/backup.js +51 -0
  23. package/dist/api/routes/backup.js.map +1 -0
  24. package/dist/api/routes/index.d.ts.map +1 -1
  25. package/dist/api/routes/index.js +6 -0
  26. package/dist/api/routes/index.js.map +1 -1
  27. package/dist/api/routes/mcp.d.ts +3 -0
  28. package/dist/api/routes/mcp.d.ts.map +1 -0
  29. package/dist/api/routes/mcp.js +147 -0
  30. package/dist/api/routes/mcp.js.map +1 -0
  31. package/dist/api/routes/projects.d.ts.map +1 -1
  32. package/dist/api/routes/projects.js +27 -17
  33. package/dist/api/routes/projects.js.map +1 -1
  34. package/dist/api/routes/settings.d.ts.map +1 -1
  35. package/dist/api/routes/settings.js +119 -11
  36. package/dist/api/routes/settings.js.map +1 -1
  37. package/dist/api/routes/workspaces.d.ts +3 -0
  38. package/dist/api/routes/workspaces.d.ts.map +1 -0
  39. package/dist/api/routes/workspaces.js +504 -0
  40. package/dist/api/routes/workspaces.js.map +1 -0
  41. package/dist/api/services/scanner.js +10 -19
  42. package/dist/api/services/scanner.js.map +1 -1
  43. package/dist/api/services/test-parser.js +3 -2
  44. package/dist/api/services/test-parser.js.map +1 -1
  45. package/dist/api/types.d.ts +31 -0
  46. package/dist/api/types.d.ts.map +1 -1
  47. package/dist/core/__tests__/database.test.js +7 -17
  48. package/dist/core/__tests__/detector.test.js +7 -17
  49. package/dist/core/__tests__/index.test.js +7 -17
  50. package/dist/core/__tests__/scanner.test.js +7 -17
  51. package/dist/core/__tests__/settings.test.js +7 -17
  52. package/dist/core/backup-utils.d.ts +17 -0
  53. package/dist/core/backup-utils.js +157 -0
  54. package/dist/core/database.d.ts +1 -0
  55. package/dist/core/database.js +9 -18
  56. package/dist/core/detector.js +11 -21
  57. package/dist/core/git-utils.d.ts +12 -0
  58. package/dist/core/git-utils.js +87 -0
  59. package/dist/core/index.d.ts +3 -0
  60. package/dist/core/index.js +8 -5
  61. package/dist/core/scanner.js +3 -2
  62. package/dist/core/settings.d.ts +85 -0
  63. package/dist/core/settings.js +306 -9
  64. package/dist/core/workspace-utils.d.ts +37 -0
  65. package/dist/core/workspace-utils.js +143 -0
  66. package/dist/core-bridge.js +7 -17
  67. package/dist/electron/core/__tests__/database.test.js +7 -17
  68. package/dist/electron/core/__tests__/detector.test.js +7 -17
  69. package/dist/electron/core/__tests__/index.test.js +7 -17
  70. package/dist/electron/core/__tests__/scanner.test.js +7 -17
  71. package/dist/electron/core/__tests__/settings.test.js +7 -17
  72. package/dist/electron/core/backup-utils.d.ts +17 -0
  73. package/dist/electron/core/backup-utils.js +157 -0
  74. package/dist/electron/core/database.d.ts +1 -0
  75. package/dist/electron/core/database.js +9 -18
  76. package/dist/electron/core/detector.js +11 -21
  77. package/dist/electron/core/git-utils.d.ts +12 -0
  78. package/dist/electron/core/git-utils.js +87 -0
  79. package/dist/electron/core/index.d.ts +3 -0
  80. package/dist/electron/core/index.js +8 -5
  81. package/dist/electron/core/scanner.js +3 -2
  82. package/dist/electron/core/settings.d.ts +85 -0
  83. package/dist/electron/core/settings.js +306 -9
  84. package/dist/electron/core/workspace-utils.d.ts +37 -0
  85. package/dist/electron/core/workspace-utils.js +143 -0
  86. package/dist/electron/core.js +7 -17
  87. package/dist/electron/main.js +663 -33
  88. package/dist/electron/port-extractor.js +9 -18
  89. package/dist/electron/port-scanner.js +11 -20
  90. package/dist/electron/port-utils.js +5 -4
  91. package/dist/electron/preload.d.ts +27 -2
  92. package/dist/electron/preload.js +18 -2
  93. package/dist/electron/renderer/assets/index-B-etDnj2.js +64 -0
  94. package/dist/electron/renderer/assets/index-Bx18Cyic.js +64 -0
  95. package/dist/electron/renderer/assets/index-C8f5yNYe.js +64 -0
  96. package/dist/electron/renderer/assets/index-CIZ3Wl6c.css +1 -0
  97. package/dist/electron/renderer/assets/index-CJbsU9y8.css +1 -0
  98. package/dist/electron/renderer/assets/index-CopVNRnR.js +64 -0
  99. package/dist/electron/renderer/assets/index-DUvcepWm.js +64 -0
  100. package/dist/electron/renderer/assets/index-DWe2TQFv.css +1 -0
  101. package/dist/electron/renderer/assets/index-DZzB20Xf.css +1 -0
  102. package/dist/electron/renderer/assets/index-DknLdADV.js +63 -0
  103. package/dist/electron/renderer/assets/index-DocuD8Lk.js +64 -0
  104. package/dist/electron/renderer/assets/index-DyU-xfd8.css +1 -0
  105. package/dist/electron/renderer/assets/index-GwC-JVUy.css +1 -0
  106. package/dist/electron/renderer/assets/index-fehviker.js +63 -0
  107. package/dist/electron/renderer/index.html +2 -2
  108. package/dist/electron/script-runner.js +20 -29
  109. package/dist/index.js +395 -21
  110. package/dist/port-extractor.js +9 -18
  111. package/dist/port-scanner.js +11 -20
  112. package/dist/port-utils.js +5 -4
  113. package/dist/script-runner.js +20 -29
  114. package/dist/test-parser.js +3 -2
  115. package/package.json +3 -2
@@ -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) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
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 = 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;
@@ -1,9 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.detectPortInUse = 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;
@@ -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) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
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 = 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
  */
@@ -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 = 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.39",
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"