projax 1.0.2 → 1.3.1

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 (73) hide show
  1. package/dist/api/database.d.ts +34 -0
  2. package/dist/api/database.d.ts.map +1 -0
  3. package/dist/api/database.js +318 -0
  4. package/dist/api/database.js.map +1 -0
  5. package/dist/api/index.d.ts +5 -0
  6. package/dist/api/index.d.ts.map +1 -0
  7. package/dist/api/index.js +130 -0
  8. package/dist/api/index.js.map +1 -0
  9. package/dist/api/migrate.d.ts +2 -0
  10. package/dist/api/migrate.d.ts.map +1 -0
  11. package/dist/api/migrate.js +158 -0
  12. package/dist/api/migrate.js.map +1 -0
  13. package/dist/api/package.json +27 -0
  14. package/dist/api/routes/index.d.ts +3 -0
  15. package/dist/api/routes/index.d.ts.map +1 -0
  16. package/dist/api/routes/index.js +17 -0
  17. package/dist/api/routes/index.js.map +1 -0
  18. package/dist/api/routes/projects.d.ts +3 -0
  19. package/dist/api/routes/projects.d.ts.map +1 -0
  20. package/dist/api/routes/projects.js +198 -0
  21. package/dist/api/routes/projects.js.map +1 -0
  22. package/dist/api/routes/settings.d.ts +3 -0
  23. package/dist/api/routes/settings.d.ts.map +1 -0
  24. package/dist/api/routes/settings.js +33 -0
  25. package/dist/api/routes/settings.js.map +1 -0
  26. package/dist/api/services/scanner.d.ts +9 -0
  27. package/dist/api/services/scanner.d.ts.map +1 -0
  28. package/dist/api/services/scanner.js +172 -0
  29. package/dist/api/services/scanner.js.map +1 -0
  30. package/dist/api/types.d.ts +48 -0
  31. package/dist/api/types.d.ts.map +1 -0
  32. package/dist/api/types.js +3 -0
  33. package/dist/api/types.js.map +1 -0
  34. package/dist/core/database.d.ts +15 -5
  35. package/dist/core/database.js +136 -208
  36. package/dist/core/detector.d.ts +5 -0
  37. package/dist/core/detector.js +135 -0
  38. package/dist/core/index.d.ts +1 -2
  39. package/dist/core/index.js +2 -4
  40. package/dist/core/scanner.js +2 -105
  41. package/dist/core/settings.d.ts +50 -0
  42. package/dist/core/settings.js +102 -0
  43. package/dist/core-bridge.d.ts +2 -0
  44. package/dist/core-bridge.js +73 -0
  45. package/dist/core.d.ts +2 -0
  46. package/dist/core.js +76 -0
  47. package/dist/electron/core/database.d.ts +76 -0
  48. package/dist/electron/core/database.js +240 -0
  49. package/dist/electron/core/detector.d.ts +14 -0
  50. package/dist/electron/core/detector.js +284 -0
  51. package/dist/electron/core/index.d.ts +10 -0
  52. package/dist/electron/core/index.js +41 -0
  53. package/dist/electron/core/scanner.d.ts +8 -0
  54. package/dist/electron/core/scanner.js +11 -0
  55. package/dist/electron/core/settings.d.ts +50 -0
  56. package/dist/electron/core/settings.js +102 -0
  57. package/dist/electron/core.d.ts +2 -0
  58. package/dist/electron/core.js +76 -0
  59. package/dist/electron/main.js +93 -51
  60. package/dist/electron/port-scanner.js +4 -4
  61. package/dist/electron/preload.d.ts +1 -1
  62. package/dist/electron/renderer/assets/index-7KIJIiIM.js +42 -0
  63. package/dist/electron/renderer/assets/{index-DohAcUCg.css → index-ezVMxZrM.css} +1 -1
  64. package/dist/electron/renderer/index.html +2 -2
  65. package/dist/electron/script-runner.js +4 -4
  66. package/dist/index.js +240 -75
  67. package/dist/port-scanner.js +4 -4
  68. package/dist/script-runner.js +4 -4
  69. package/package.json +12 -11
  70. package/dist/electron/renderer/assets/index-BZ6USRnW.js +0 -42
  71. package/dist/electron/renderer/assets/index-CdMlFqhB.js +0 -42
  72. package/dist/electron/renderer/assets/index-DNtxfrZe.js +0 -42
  73. package/dist/electron/renderer/assets/index-khk3K-qG.css +0 -1
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSetting = getSetting;
4
+ exports.setSetting = setSetting;
5
+ exports.getAllSettings = getAllSettings;
6
+ exports.getEditorSettings = getEditorSettings;
7
+ exports.setEditorSettings = setEditorSettings;
8
+ exports.getBrowserSettings = getBrowserSettings;
9
+ exports.setBrowserSettings = setBrowserSettings;
10
+ exports.getAppSettings = getAppSettings;
11
+ exports.setAppSettings = setAppSettings;
12
+ const database_1 = require("./database");
13
+ const DEFAULT_SETTINGS = {
14
+ editor: {
15
+ type: 'vscode',
16
+ },
17
+ browser: {
18
+ type: 'chrome',
19
+ },
20
+ };
21
+ /**
22
+ * Get a setting value by key
23
+ */
24
+ function getSetting(key) {
25
+ return (0, database_1.getDatabaseManager)().getSetting(key);
26
+ }
27
+ /**
28
+ * Set a setting value by key
29
+ */
30
+ function setSetting(key, value) {
31
+ (0, database_1.getDatabaseManager)().setSetting(key, value);
32
+ }
33
+ /**
34
+ * Get all settings as a key-value object
35
+ */
36
+ function getAllSettings() {
37
+ return (0, database_1.getDatabaseManager)().getAllSettings();
38
+ }
39
+ /**
40
+ * Get editor settings
41
+ */
42
+ function getEditorSettings() {
43
+ const db = (0, database_1.getDatabaseManager)();
44
+ const type = db.getSetting('editor.type') || DEFAULT_SETTINGS.editor.type;
45
+ const customPath = db.getSetting('editor.customPath') || undefined;
46
+ return {
47
+ type,
48
+ customPath,
49
+ };
50
+ }
51
+ /**
52
+ * Set editor settings
53
+ */
54
+ function setEditorSettings(settings) {
55
+ const db = (0, database_1.getDatabaseManager)();
56
+ db.setSetting('editor.type', settings.type);
57
+ if (settings.customPath) {
58
+ db.setSetting('editor.customPath', settings.customPath);
59
+ }
60
+ // Note: Removing settings is not yet supported via the API
61
+ // Setting to empty string would achieve similar effect if needed
62
+ }
63
+ /**
64
+ * Get browser settings
65
+ */
66
+ function getBrowserSettings() {
67
+ const db = (0, database_1.getDatabaseManager)();
68
+ const type = db.getSetting('browser.type') || DEFAULT_SETTINGS.browser.type;
69
+ const customPath = db.getSetting('browser.customPath') || undefined;
70
+ return {
71
+ type,
72
+ customPath,
73
+ };
74
+ }
75
+ /**
76
+ * Set browser settings
77
+ */
78
+ function setBrowserSettings(settings) {
79
+ const db = (0, database_1.getDatabaseManager)();
80
+ db.setSetting('browser.type', settings.type);
81
+ if (settings.customPath) {
82
+ db.setSetting('browser.customPath', settings.customPath);
83
+ }
84
+ // Note: Removing settings is not yet supported via the API
85
+ // Setting to empty string would achieve similar effect if needed
86
+ }
87
+ /**
88
+ * Get all app settings
89
+ */
90
+ function getAppSettings() {
91
+ return {
92
+ editor: getEditorSettings(),
93
+ browser: getBrowserSettings(),
94
+ };
95
+ }
96
+ /**
97
+ * Set all app settings
98
+ */
99
+ function setAppSettings(settings) {
100
+ setEditorSettings(settings.editor);
101
+ setBrowserSettings(settings.browser);
102
+ }
@@ -0,0 +1,2 @@
1
+ export declare const getDatabaseManager: typeof import("projax-core").getDatabaseManager, addProject: typeof import("projax-core").addProject, removeProject: typeof import("projax-core").removeProject, getAllProjects: typeof import("projax-core").getAllProjects, scanProject: typeof import("projax-core").scanProject, scanAllProjects: typeof import("projax-core").scanAllProjects, getTestsByProject: typeof import("projax-core").getTestsByProject;
2
+ export type { Project, Test, ProjectPort, JenkinsJob } from 'projax-core';
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
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
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.getTestsByProject = exports.scanAllProjects = exports.scanProject = exports.getAllProjects = exports.removeProject = exports.addProject = exports.getDatabaseManager = void 0;
37
+ const path = __importStar(require("path"));
38
+ let cachedCore = null;
39
+ function tryRequire(candidate) {
40
+ try {
41
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
42
+ return require(candidate);
43
+ }
44
+ catch (error) {
45
+ if (!(error instanceof Error) ||
46
+ !('code' in error) ||
47
+ error.code !== 'MODULE_NOT_FOUND') {
48
+ throw error;
49
+ }
50
+ return null;
51
+ }
52
+ }
53
+ function resolveCore() {
54
+ if (cachedCore) {
55
+ return cachedCore;
56
+ }
57
+ const candidates = [
58
+ // Packaged desktop build (core copied into dist/core)
59
+ path.join(__dirname, 'core'),
60
+ // Running from workspace build output
61
+ path.join(__dirname, '..', '..', 'core', 'dist'),
62
+ path.join(__dirname, '..', 'core', 'dist'),
63
+ // Fallback: installed module (during development)
64
+ 'projax-core',
65
+ ];
66
+ for (const candidate of candidates) {
67
+ const mod = tryRequire(candidate);
68
+ if (mod) {
69
+ cachedCore = mod;
70
+ return mod;
71
+ }
72
+ }
73
+ throw new Error(`Unable to load projax core module. Tried locations: ${candidates.join(', ')}`);
74
+ }
75
+ const core = resolveCore();
76
+ exports.getDatabaseManager = core.getDatabaseManager, exports.addProject = core.addProject, exports.removeProject = core.removeProject, exports.getAllProjects = core.getAllProjects, exports.scanProject = core.scanProject, exports.scanAllProjects = core.scanAllProjects, exports.getTestsByProject = core.getTestsByProject;
@@ -36,24 +36,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  const electron_1 = require("electron");
37
37
  const path = __importStar(require("path"));
38
38
  const fs = __importStar(require("fs"));
39
- // Import from bundled core in CLI package, or fallback to @projax/core
40
- let coreModule;
41
- try {
42
- // Try relative import first (when bundled in CLI: dist/electron/main.js -> dist/core)
43
- coreModule = require('../core');
44
- }
45
- catch {
46
- try {
47
- // Try alternative path (local development: packages/electron/dist/main.js -> packages/cli/dist/core)
48
- coreModule = require('../../cli/dist/core');
49
- }
50
- catch {
51
- // Fallback to package import
52
- coreModule = require('@projax/core');
53
- }
54
- }
55
- const { getDatabaseManager, getAllProjects, addProject, removeProject, scanProject, scanAllProjects, getTestsByProject, } = coreModule;
39
+ const child_process_1 = require("child_process");
40
+ const core_1 = require("./core");
56
41
  let mainWindow = null;
42
+ let apiProcess = null;
57
43
  // Prevent multiple instances
58
44
  const gotTheLock = electron_1.app.requestSingleInstanceLock();
59
45
  if (!gotTheLock) {
@@ -93,7 +79,7 @@ else {
93
79
  }
94
80
  else {
95
81
  // Try bundled renderer path first (when bundled in CLI: dist/electron/renderer/index.html)
96
- // Then try local dev path (packages/electron/dist/renderer/index.html)
82
+ // Then try local dev path (packages/desktop/dist/renderer/index.html)
97
83
  const bundledRenderer = path.join(__dirname, 'renderer', 'index.html');
98
84
  const localRenderer = path.join(__dirname, '..', 'renderer', 'index.html');
99
85
  if (fs.existsSync(bundledRenderer)) {
@@ -113,7 +99,49 @@ else {
113
99
  mainWindow = null;
114
100
  });
115
101
  }
102
+ // Start API server
103
+ function startAPIServer() {
104
+ try {
105
+ // Try to find API server in various locations
106
+ const apiPaths = [
107
+ path.join(__dirname, '..', '..', '..', 'api', 'dist', 'index.js'),
108
+ path.join(__dirname, '..', '..', 'api', 'dist', 'index.js'),
109
+ path.join(process.cwd(), 'packages', 'api', 'dist', 'index.js'),
110
+ ];
111
+ let apiPath = null;
112
+ for (const p of apiPaths) {
113
+ if (fs.existsSync(p)) {
114
+ apiPath = p;
115
+ break;
116
+ }
117
+ }
118
+ if (!apiPath) {
119
+ console.warn('API server not found. Some features may not work.');
120
+ return;
121
+ }
122
+ console.log('Starting API server...');
123
+ apiProcess = (0, child_process_1.spawn)('node', [apiPath], {
124
+ detached: false,
125
+ stdio: 'pipe',
126
+ env: { ...process.env },
127
+ });
128
+ apiProcess.stdout?.on('data', (data) => {
129
+ console.log(`[API] ${data.toString().trim()}`);
130
+ });
131
+ apiProcess.stderr?.on('data', (data) => {
132
+ console.error(`[API Error] ${data.toString().trim()}`);
133
+ });
134
+ apiProcess.on('exit', (code) => {
135
+ console.log(`API server exited with code ${code}`);
136
+ apiProcess = null;
137
+ });
138
+ }
139
+ catch (error) {
140
+ console.error('Failed to start API server:', error);
141
+ }
142
+ }
116
143
  electron_1.app.whenReady().then(() => {
144
+ startAPIServer();
117
145
  createWindow();
118
146
  electron_1.app.on('activate', () => {
119
147
  // On macOS, re-create window when dock icon is clicked and no windows are open
@@ -127,15 +155,29 @@ else {
127
155
  });
128
156
  }
129
157
  electron_1.app.on('window-all-closed', () => {
158
+ // Kill API server
159
+ if (apiProcess) {
160
+ console.log('Stopping API server...');
161
+ apiProcess.kill();
162
+ apiProcess = null;
163
+ }
130
164
  if (process.platform !== 'darwin') {
131
165
  electron_1.app.quit();
132
166
  }
133
167
  });
168
+ electron_1.app.on('before-quit', () => {
169
+ // Kill API server before quitting
170
+ if (apiProcess) {
171
+ console.log('Stopping API server...');
172
+ apiProcess.kill();
173
+ apiProcess = null;
174
+ }
175
+ });
134
176
  // IPC Handlers
135
177
  electron_1.ipcMain.handle('get-projects', async () => {
136
178
  try {
137
179
  console.log('Getting projects from database...');
138
- const projects = getAllProjects();
180
+ const projects = (0, core_1.getAllProjects)();
139
181
  console.log(`Found ${projects.length} project(s)`);
140
182
  return projects;
141
183
  }
@@ -151,7 +193,7 @@ electron_1.ipcMain.handle('add-project', async (_, projectPath) => {
151
193
  if (!fs.statSync(projectPath).isDirectory()) {
152
194
  throw new Error('Path must be a directory');
153
195
  }
154
- const db = getDatabaseManager();
196
+ const db = (0, core_1.getDatabaseManager)();
155
197
  const existingProject = db.getProjectByPath(projectPath);
156
198
  if (existingProject) {
157
199
  throw new Error('Project already exists');
@@ -160,18 +202,18 @@ electron_1.ipcMain.handle('add-project', async (_, projectPath) => {
160
202
  return db.addProject(projectName, projectPath);
161
203
  });
162
204
  electron_1.ipcMain.handle('remove-project', async (_, projectId) => {
163
- removeProject(projectId);
205
+ (0, core_1.removeProject)(projectId);
164
206
  });
165
207
  electron_1.ipcMain.handle('scan-project', async (_, projectId) => {
166
- return scanProject(projectId);
208
+ return (0, core_1.scanProject)(projectId);
167
209
  });
168
210
  electron_1.ipcMain.handle('scan-all-projects', async () => {
169
- return scanAllProjects();
211
+ return (0, core_1.scanAllProjects)();
170
212
  });
171
213
  electron_1.ipcMain.handle('get-tests', async (_, projectId) => {
172
214
  try {
173
- const db = getDatabaseManager();
174
- return getTestsByProject(projectId);
215
+ const db = (0, core_1.getDatabaseManager)();
216
+ return (0, core_1.getTestsByProject)(projectId);
175
217
  }
176
218
  catch (error) {
177
219
  console.error('Error getting tests:', error);
@@ -212,15 +254,15 @@ electron_1.ipcMain.handle('close-window', () => {
212
254
  });
213
255
  // Rename project
214
256
  electron_1.ipcMain.handle('rename-project', async (_, projectId, newName) => {
215
- const db = getDatabaseManager();
257
+ const db = (0, core_1.getDatabaseManager)();
216
258
  return db.updateProjectName(projectId, newName);
217
259
  });
218
260
  // Get project scripts
219
261
  electron_1.ipcMain.handle('get-project-scripts', async (_, projectPath) => {
220
262
  // Try bundled path first (when bundled in CLI: dist/electron/main.js -> dist/script-runner.js)
221
- // Then try local dev path (packages/electron/dist/main.js -> packages/cli/dist/script-runner.js)
263
+ // Then try local dev path (packages/desktop/dist/main.js -> packages/cli/dist/script-runner.js)
222
264
  const bundledScriptRunnerPath = path.join(__dirname, '..', 'script-runner.js');
223
- const localScriptRunnerPath = path.join(__dirname, '..', '..', '..', 'cli', 'dist', 'script-runner.js');
265
+ const localScriptRunnerPath = path.join(__dirname, '..', '..', 'cli', 'dist', 'script-runner.js');
224
266
  let scriptRunnerPath;
225
267
  if (fs.existsSync(bundledScriptRunnerPath)) {
226
268
  scriptRunnerPath = bundledScriptRunnerPath;
@@ -243,9 +285,9 @@ electron_1.ipcMain.handle('get-project-scripts', async (_, projectPath) => {
243
285
  // Run script
244
286
  electron_1.ipcMain.handle('run-script', async (_, projectPath, scriptName, args = [], background = false) => {
245
287
  // Try bundled path first (when bundled in CLI: dist/electron/main.js -> dist/script-runner.js)
246
- // Then try local dev path (packages/electron/dist/main.js -> packages/cli/dist/script-runner.js)
288
+ // Then try local dev path (packages/desktop/dist/main.js -> packages/cli/dist/script-runner.js)
247
289
  const bundledScriptRunnerPath = path.join(__dirname, '..', 'script-runner.js');
248
- const localScriptRunnerPath = path.join(__dirname, '..', '..', '..', 'cli', 'dist', 'script-runner.js');
290
+ const localScriptRunnerPath = path.join(__dirname, '..', '..', 'cli', 'dist', 'script-runner.js');
249
291
  let scriptRunnerPath;
250
292
  if (fs.existsSync(bundledScriptRunnerPath)) {
251
293
  scriptRunnerPath = bundledScriptRunnerPath;
@@ -254,7 +296,7 @@ electron_1.ipcMain.handle('run-script', async (_, projectPath, scriptName, args
254
296
  scriptRunnerPath = localScriptRunnerPath;
255
297
  }
256
298
  const { runScriptInBackground } = await Promise.resolve(`${scriptRunnerPath}`).then(s => __importStar(require(s)));
257
- const db = getDatabaseManager();
299
+ const db = (0, core_1.getDatabaseManager)();
258
300
  const project = db.getProjectByPath(projectPath);
259
301
  if (!project) {
260
302
  throw new Error('Project not found');
@@ -266,9 +308,9 @@ electron_1.ipcMain.handle('run-script', async (_, projectPath, scriptName, args
266
308
  // Scan ports
267
309
  electron_1.ipcMain.handle('scan-project-ports', async (_, projectId) => {
268
310
  // Try bundled path first (when bundled in CLI: dist/electron/main.js -> dist/port-scanner.js)
269
- // Then try local dev path (packages/electron/dist/main.js -> packages/cli/dist/port-scanner.js)
311
+ // Then try local dev path (packages/desktop/dist/main.js -> packages/cli/dist/port-scanner.js)
270
312
  const bundledPortScannerPath = path.join(__dirname, '..', 'port-scanner.js');
271
- const localPortScannerPath = path.join(__dirname, '..', '..', '..', 'cli', 'dist', 'port-scanner.js');
313
+ const localPortScannerPath = path.join(__dirname, '..', '..', 'cli', 'dist', 'port-scanner.js');
272
314
  let portScannerPath;
273
315
  if (fs.existsSync(bundledPortScannerPath)) {
274
316
  portScannerPath = bundledPortScannerPath;
@@ -278,14 +320,14 @@ electron_1.ipcMain.handle('scan-project-ports', async (_, projectId) => {
278
320
  }
279
321
  const { scanProjectPorts } = await Promise.resolve(`${portScannerPath}`).then(s => __importStar(require(s)));
280
322
  await scanProjectPorts(projectId);
281
- const db = getDatabaseManager();
323
+ const db = (0, core_1.getDatabaseManager)();
282
324
  return db.getProjectPorts(projectId);
283
325
  });
284
326
  electron_1.ipcMain.handle('scan-all-ports', async () => {
285
327
  // Try bundled path first (when bundled in CLI: dist/electron/main.js -> dist/port-scanner.js)
286
- // Then try local dev path (packages/electron/dist/main.js -> packages/cli/dist/port-scanner.js)
328
+ // Then try local dev path (packages/desktop/dist/main.js -> packages/cli/dist/port-scanner.js)
287
329
  const bundledPortScannerPath = path.join(__dirname, '..', 'port-scanner.js');
288
- const localPortScannerPath = path.join(__dirname, '..', '..', '..', 'cli', 'dist', 'port-scanner.js');
330
+ const localPortScannerPath = path.join(__dirname, '..', '..', 'cli', 'dist', 'port-scanner.js');
289
331
  let portScannerPath;
290
332
  if (fs.existsSync(bundledPortScannerPath)) {
291
333
  portScannerPath = bundledPortScannerPath;
@@ -295,8 +337,8 @@ electron_1.ipcMain.handle('scan-all-ports', async () => {
295
337
  }
296
338
  const { scanAllProjectPorts } = await Promise.resolve(`${portScannerPath}`).then(s => __importStar(require(s)));
297
339
  await scanAllProjectPorts();
298
- const db = getDatabaseManager();
299
- const projects = getAllProjects();
340
+ const db = (0, core_1.getDatabaseManager)();
341
+ const projects = (0, core_1.getAllProjects)();
300
342
  const result = {};
301
343
  for (const project of projects) {
302
344
  result[project.id] = db.getProjectPorts(project.id);
@@ -305,15 +347,15 @@ electron_1.ipcMain.handle('scan-all-ports', async () => {
305
347
  });
306
348
  // Get project ports
307
349
  electron_1.ipcMain.handle('get-project-ports', async (_, projectId) => {
308
- const db = getDatabaseManager();
350
+ const db = (0, core_1.getDatabaseManager)();
309
351
  return db.getProjectPorts(projectId);
310
352
  });
311
353
  // Get running processes
312
354
  electron_1.ipcMain.handle('get-running-processes', async () => {
313
355
  // Try bundled path first (when bundled in CLI: dist/electron/main.js -> dist/script-runner.js)
314
- // Then try local dev path (packages/electron/dist/main.js -> packages/cli/dist/script-runner.js)
356
+ // Then try local dev path (packages/desktop/dist/main.js -> packages/cli/dist/script-runner.js)
315
357
  const bundledScriptRunnerPath = path.join(__dirname, '..', 'script-runner.js');
316
- const localScriptRunnerPath = path.join(__dirname, '..', '..', '..', 'cli', 'dist', 'script-runner.js');
358
+ const localScriptRunnerPath = path.join(__dirname, '..', '..', 'cli', 'dist', 'script-runner.js');
317
359
  let scriptRunnerPath;
318
360
  if (fs.existsSync(bundledScriptRunnerPath)) {
319
361
  scriptRunnerPath = bundledScriptRunnerPath;
@@ -327,9 +369,9 @@ electron_1.ipcMain.handle('get-running-processes', async () => {
327
369
  // Stop script by PID
328
370
  electron_1.ipcMain.handle('stop-script', async (_, pid) => {
329
371
  // Try bundled path first (when bundled in CLI: dist/electron/main.js -> dist/script-runner.js)
330
- // Then try local dev path (packages/electron/dist/main.js -> packages/cli/dist/script-runner.js)
372
+ // Then try local dev path (packages/desktop/dist/main.js -> packages/cli/dist/script-runner.js)
331
373
  const bundledScriptRunnerPath = path.join(__dirname, '..', 'script-runner.js');
332
- const localScriptRunnerPath = path.join(__dirname, '..', '..', '..', 'cli', 'dist', 'script-runner.js');
374
+ const localScriptRunnerPath = path.join(__dirname, '..', '..', 'cli', 'dist', 'script-runner.js');
333
375
  let scriptRunnerPath;
334
376
  if (fs.existsSync(bundledScriptRunnerPath)) {
335
377
  scriptRunnerPath = bundledScriptRunnerPath;
@@ -343,9 +385,9 @@ electron_1.ipcMain.handle('stop-script', async (_, pid) => {
343
385
  // Stop all processes for a project
344
386
  electron_1.ipcMain.handle('stop-project', async (_, projectPath) => {
345
387
  // Try bundled path first (when bundled in CLI: dist/electron/main.js -> dist/script-runner.js)
346
- // Then try local dev path (packages/electron/dist/main.js -> packages/cli/dist/script-runner.js)
388
+ // Then try local dev path (packages/desktop/dist/main.js -> packages/cli/dist/script-runner.js)
347
389
  const bundledScriptRunnerPath = path.join(__dirname, '..', 'script-runner.js');
348
- const localScriptRunnerPath = path.join(__dirname, '..', '..', '..', 'cli', 'dist', 'script-runner.js');
390
+ const localScriptRunnerPath = path.join(__dirname, '..', '..', 'cli', 'dist', 'script-runner.js');
349
391
  let scriptRunnerPath;
350
392
  if (fs.existsSync(bundledScriptRunnerPath)) {
351
393
  scriptRunnerPath = bundledScriptRunnerPath;
@@ -359,7 +401,7 @@ electron_1.ipcMain.handle('stop-project', async (_, projectPath) => {
359
401
  // Open URL in browser
360
402
  electron_1.ipcMain.handle('open-url', async (_, url) => {
361
403
  // Try bundled path first (when bundled in CLI: dist/electron/main.js -> dist/core)
362
- // Then try local dev path (packages/electron/dist/main.js -> packages/core/dist)
404
+ // Then try local dev path (packages/desktop/dist/main.js -> packages/core/dist)
363
405
  const bundledCorePath = path.join(__dirname, '..', 'core');
364
406
  const localCorePath = path.join(__dirname, '..', '..', '..', 'core', 'dist');
365
407
  let corePath;
@@ -449,7 +491,7 @@ electron_1.ipcMain.handle('open-url', async (_, url) => {
449
491
  // Open project in editor
450
492
  electron_1.ipcMain.handle('open-in-editor', async (_, projectPath) => {
451
493
  // Try bundled path first (when bundled in CLI: dist/electron/main.js -> dist/core)
452
- // Then try local dev path (packages/electron/dist/main.js -> packages/core/dist)
494
+ // Then try local dev path (packages/desktop/dist/main.js -> packages/core/dist)
453
495
  const bundledCorePath = path.join(__dirname, '..', 'core');
454
496
  const localCorePath = path.join(__dirname, '..', '..', '..', 'core', 'dist');
455
497
  let corePath;
@@ -501,12 +543,12 @@ electron_1.ipcMain.handle('get-settings', async () => {
501
543
  }
502
544
  catch {
503
545
  try {
504
- // Try alternative path (local development: packages/electron/dist/main.js -> packages/cli/dist/core)
546
+ // Try alternative path (local development: packages/desktop/dist/main.js -> packages/cli/dist/core)
505
547
  settingsModule = require('../../cli/dist/core');
506
548
  }
507
549
  catch {
508
550
  // Fallback to package import
509
- settingsModule = require('@projax/core');
551
+ settingsModule = require('projax-core');
510
552
  }
511
553
  }
512
554
  const { getAppSettings } = settingsModule;
@@ -528,12 +570,12 @@ electron_1.ipcMain.handle('save-settings', async (_, settings) => {
528
570
  }
529
571
  catch {
530
572
  try {
531
- // Try alternative path (local development: packages/electron/dist/main.js -> packages/cli/dist/core)
573
+ // Try alternative path (local development: packages/desktop/dist/main.js -> packages/cli/dist/core)
532
574
  settingsModule = require('../../cli/dist/core');
533
575
  }
534
576
  catch {
535
577
  // Fallback to package import
536
- settingsModule = require('@projax/core');
578
+ settingsModule = require('projax-core');
537
579
  }
538
580
  }
539
581
  const { setAppSettings } = settingsModule;
@@ -36,14 +36,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.scanProjectPorts = scanProjectPorts;
37
37
  exports.scanAllProjectPorts = scanAllProjectPorts;
38
38
  exports.shouldRescanPorts = shouldRescanPorts;
39
- const core_1 = require("./core");
39
+ const core_bridge_1 = require("./core-bridge");
40
40
  const port_extractor_1 = require("./port-extractor");
41
41
  const fs = __importStar(require("fs"));
42
42
  /**
43
43
  * Scan and index ports for a specific project
44
44
  */
45
45
  async function scanProjectPorts(projectId) {
46
- const db = (0, core_1.getDatabaseManager)();
46
+ const db = (0, core_bridge_1.getDatabaseManager)();
47
47
  const project = db.getProject(projectId);
48
48
  if (!project) {
49
49
  throw new Error(`Project with id ${projectId} not found`);
@@ -64,7 +64,7 @@ async function scanProjectPorts(projectId) {
64
64
  * Scan ports for all projects
65
65
  */
66
66
  async function scanAllProjectPorts() {
67
- const db = (0, core_1.getDatabaseManager)();
67
+ const db = (0, core_bridge_1.getDatabaseManager)();
68
68
  const projects = db.getAllProjects();
69
69
  for (const project of projects) {
70
70
  try {
@@ -81,7 +81,7 @@ async function scanAllProjectPorts() {
81
81
  * Returns true if ports haven't been scanned in the last 24 hours
82
82
  */
83
83
  function shouldRescanPorts(projectId) {
84
- const db = (0, core_1.getDatabaseManager)();
84
+ const db = (0, core_bridge_1.getDatabaseManager)();
85
85
  const ports = db.getProjectPorts(projectId);
86
86
  if (ports.length === 0) {
87
87
  return true; // No ports found, should scan
@@ -1,4 +1,4 @@
1
- import type { Project, Test } from '@projax/core';
1
+ import type { Project, Test } from 'projax-core';
2
2
  export interface ProjectScript {
3
3
  name: string;
4
4
  command: string;