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
|
@@ -15,25 +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.extractPortsFromProject =
|
|
26
|
+
exports.extractPortsFromProject = void 0;
|
|
37
27
|
const fs = __importStar(require("fs"));
|
|
38
28
|
const path = __importStar(require("path"));
|
|
39
29
|
/**
|
|
@@ -66,6 +56,7 @@ async function extractPortsFromProject(projectPath) {
|
|
|
66
56
|
const uniquePorts = Array.from(new Map(ports.map(p => [`${p.port}-${p.script || ''}`, p])).values());
|
|
67
57
|
return uniquePorts;
|
|
68
58
|
}
|
|
59
|
+
exports.extractPortsFromProject = extractPortsFromProject;
|
|
69
60
|
/**
|
|
70
61
|
* Extract ports from package.json scripts
|
|
71
62
|
*/
|
|
@@ -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;
|
|
@@ -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;
|
|
@@ -46,7 +46,7 @@ export interface ElectronAPI {
|
|
|
46
46
|
updateProject: (projectId: number, updates: {
|
|
47
47
|
description?: string | null;
|
|
48
48
|
}) => Promise<Project>;
|
|
49
|
-
getProjectScripts: (projectPath: string) => Promise<ProjectScripts>;
|
|
49
|
+
getProjectScripts: (projectPath: string, projectId?: number) => Promise<ProjectScripts>;
|
|
50
50
|
runScript: (projectPath: string, scriptName: string, args?: string[], background?: boolean) => Promise<{
|
|
51
51
|
success: boolean;
|
|
52
52
|
background: boolean;
|
|
@@ -68,8 +68,9 @@ export interface ElectronAPI {
|
|
|
68
68
|
stopScript: (pid: number) => Promise<boolean>;
|
|
69
69
|
stopProject: (projectPath: string) => Promise<number>;
|
|
70
70
|
openUrl: (url: string) => Promise<void>;
|
|
71
|
-
openInEditor: (projectPath: string) => Promise<void>;
|
|
71
|
+
openInEditor: (projectPath: string, projectId?: number) => Promise<void>;
|
|
72
72
|
openInFiles: (projectPath: string) => Promise<void>;
|
|
73
|
+
openFilePath: (filePath: string) => Promise<void>;
|
|
73
74
|
getSettings: () => Promise<{
|
|
74
75
|
editor: {
|
|
75
76
|
type: string;
|
|
@@ -79,6 +80,10 @@ export interface ElectronAPI {
|
|
|
79
80
|
type: string;
|
|
80
81
|
customPath?: string;
|
|
81
82
|
};
|
|
83
|
+
display?: any;
|
|
84
|
+
appearance?: any;
|
|
85
|
+
behavior?: any;
|
|
86
|
+
advanced?: any;
|
|
82
87
|
}>;
|
|
83
88
|
saveSettings: (settings: {
|
|
84
89
|
editor: {
|
|
@@ -89,6 +94,10 @@ export interface ElectronAPI {
|
|
|
89
94
|
type: string;
|
|
90
95
|
customPath?: string;
|
|
91
96
|
};
|
|
97
|
+
display?: any;
|
|
98
|
+
appearance?: any;
|
|
99
|
+
behavior?: any;
|
|
100
|
+
advanced?: any;
|
|
92
101
|
}) => Promise<void>;
|
|
93
102
|
openExternal: (url: string) => void;
|
|
94
103
|
watchProcessOutput: (pid: number) => Promise<{
|
|
@@ -115,4 +124,20 @@ export interface ElectronAPI {
|
|
|
115
124
|
}) => void) => void;
|
|
116
125
|
getAppVersion: () => Promise<string>;
|
|
117
126
|
getLatestTestResult: (projectId: number) => Promise<any | null>;
|
|
127
|
+
getWorkspaces: () => Promise<any[]>;
|
|
128
|
+
addWorkspace: (workspace: any) => Promise<any>;
|
|
129
|
+
removeWorkspace: (workspaceId: number) => Promise<void>;
|
|
130
|
+
createBackup: (outputPath: string) => Promise<{
|
|
131
|
+
success: boolean;
|
|
132
|
+
backup_path: string;
|
|
133
|
+
}>;
|
|
134
|
+
restoreBackup: (backupPath: string) => Promise<{
|
|
135
|
+
success: boolean;
|
|
136
|
+
}>;
|
|
137
|
+
showSaveDialog: (options: any) => Promise<any>;
|
|
138
|
+
showOpenDialog: (options: any) => Promise<any>;
|
|
139
|
+
selectFile: (options: any) => Promise<string | null>;
|
|
140
|
+
openWorkspace: (workspaceId: number) => Promise<void>;
|
|
141
|
+
onMenuAction: (callback: (event: any, action: string, ...args: any[]) => void) => void;
|
|
142
|
+
removeMenuActionListener: (callback: (event: any, action: string, ...args: any[]) => void) => void;
|
|
118
143
|
}
|
package/dist/electron/preload.js
CHANGED
|
@@ -14,7 +14,7 @@ electron_1.contextBridge.exposeInMainWorld('electronAPI', {
|
|
|
14
14
|
closeWindow: () => electron_1.ipcRenderer.invoke('close-window'),
|
|
15
15
|
renameProject: (projectId, newName) => electron_1.ipcRenderer.invoke('rename-project', projectId, newName),
|
|
16
16
|
updateProject: (projectId, updates) => electron_1.ipcRenderer.invoke('update-project', projectId, updates),
|
|
17
|
-
getProjectScripts: (projectPath) => electron_1.ipcRenderer.invoke('get-project-scripts', projectPath),
|
|
17
|
+
getProjectScripts: (projectPath, projectId) => electron_1.ipcRenderer.invoke('get-project-scripts', projectPath, projectId),
|
|
18
18
|
runScript: (projectPath, scriptName, args, background) => electron_1.ipcRenderer.invoke('run-script', projectPath, scriptName, args, background),
|
|
19
19
|
scanProjectPorts: (projectId) => electron_1.ipcRenderer.invoke('scan-project-ports', projectId),
|
|
20
20
|
scanAllPorts: () => electron_1.ipcRenderer.invoke('scan-all-ports'),
|
|
@@ -23,8 +23,9 @@ electron_1.contextBridge.exposeInMainWorld('electronAPI', {
|
|
|
23
23
|
stopScript: (pid) => electron_1.ipcRenderer.invoke('stop-script', pid),
|
|
24
24
|
stopProject: (projectPath) => electron_1.ipcRenderer.invoke('stop-project', projectPath),
|
|
25
25
|
openUrl: (url) => electron_1.ipcRenderer.invoke('open-url', url),
|
|
26
|
-
openInEditor: (projectPath) => electron_1.ipcRenderer.invoke('open-in-editor', projectPath),
|
|
26
|
+
openInEditor: (projectPath, projectId) => electron_1.ipcRenderer.invoke('open-in-editor', projectPath, projectId),
|
|
27
27
|
openInFiles: (projectPath) => electron_1.ipcRenderer.invoke('open-in-files', projectPath),
|
|
28
|
+
openFilePath: (filePath) => electron_1.ipcRenderer.invoke('open-file-path', filePath),
|
|
28
29
|
openExternal: (url) => electron_1.ipcRenderer.send('open-external-url', url),
|
|
29
30
|
getSettings: () => electron_1.ipcRenderer.invoke('get-settings'),
|
|
30
31
|
saveSettings: (settings) => electron_1.ipcRenderer.invoke('save-settings', settings),
|
|
@@ -36,4 +37,19 @@ electron_1.contextBridge.exposeInMainWorld('electronAPI', {
|
|
|
36
37
|
removeProcessExitListener: (callback) => electron_1.ipcRenderer.removeListener('process-exit', callback),
|
|
37
38
|
getAppVersion: () => electron_1.ipcRenderer.invoke('get-app-version'),
|
|
38
39
|
getLatestTestResult: (projectId) => electron_1.ipcRenderer.invoke('get-latest-test-result', projectId),
|
|
40
|
+
getWorkspaces: () => electron_1.ipcRenderer.invoke('get-workspaces'),
|
|
41
|
+
addWorkspace: (workspace) => electron_1.ipcRenderer.invoke('add-workspace', workspace),
|
|
42
|
+
removeWorkspace: (workspaceId) => electron_1.ipcRenderer.invoke('remove-workspace', workspaceId),
|
|
43
|
+
createBackup: (outputPath) => electron_1.ipcRenderer.invoke('create-backup', outputPath),
|
|
44
|
+
restoreBackup: (backupPath) => electron_1.ipcRenderer.invoke('restore-backup', backupPath),
|
|
45
|
+
showSaveDialog: (options) => electron_1.ipcRenderer.invoke('show-save-dialog', options),
|
|
46
|
+
showOpenDialog: (options) => electron_1.ipcRenderer.invoke('show-open-dialog', options),
|
|
47
|
+
selectFile: (options) => electron_1.ipcRenderer.invoke('select-file', options),
|
|
48
|
+
openWorkspace: (workspaceId) => electron_1.ipcRenderer.invoke('open-workspace', workspaceId),
|
|
49
|
+
onMenuAction: (callback) => {
|
|
50
|
+
electron_1.ipcRenderer.on('menu-action', callback);
|
|
51
|
+
},
|
|
52
|
+
removeMenuActionListener: (callback) => {
|
|
53
|
+
electron_1.ipcRenderer.removeListener('menu-action', callback);
|
|
54
|
+
},
|
|
39
55
|
});
|