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.
- package/dist/api/database.d.ts +34 -0
- package/dist/api/database.d.ts.map +1 -0
- package/dist/api/database.js +318 -0
- package/dist/api/database.js.map +1 -0
- package/dist/api/index.d.ts +5 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +130 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/migrate.d.ts +2 -0
- package/dist/api/migrate.d.ts.map +1 -0
- package/dist/api/migrate.js +158 -0
- package/dist/api/migrate.js.map +1 -0
- package/dist/api/package.json +27 -0
- package/dist/api/routes/index.d.ts +3 -0
- package/dist/api/routes/index.d.ts.map +1 -0
- package/dist/api/routes/index.js +17 -0
- package/dist/api/routes/index.js.map +1 -0
- package/dist/api/routes/projects.d.ts +3 -0
- package/dist/api/routes/projects.d.ts.map +1 -0
- package/dist/api/routes/projects.js +198 -0
- package/dist/api/routes/projects.js.map +1 -0
- package/dist/api/routes/settings.d.ts +3 -0
- package/dist/api/routes/settings.d.ts.map +1 -0
- package/dist/api/routes/settings.js +33 -0
- package/dist/api/routes/settings.js.map +1 -0
- package/dist/api/services/scanner.d.ts +9 -0
- package/dist/api/services/scanner.d.ts.map +1 -0
- package/dist/api/services/scanner.js +172 -0
- package/dist/api/services/scanner.js.map +1 -0
- package/dist/api/types.d.ts +48 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +3 -0
- package/dist/api/types.js.map +1 -0
- package/dist/core/database.d.ts +15 -5
- package/dist/core/database.js +136 -208
- package/dist/core/detector.d.ts +5 -0
- package/dist/core/detector.js +135 -0
- package/dist/core/index.d.ts +1 -2
- package/dist/core/index.js +2 -4
- package/dist/core/scanner.js +2 -105
- package/dist/core/settings.d.ts +50 -0
- package/dist/core/settings.js +102 -0
- package/dist/core-bridge.d.ts +2 -0
- package/dist/core-bridge.js +73 -0
- package/dist/core.d.ts +2 -0
- package/dist/core.js +76 -0
- package/dist/electron/core/database.d.ts +76 -0
- package/dist/electron/core/database.js +240 -0
- package/dist/electron/core/detector.d.ts +14 -0
- package/dist/electron/core/detector.js +284 -0
- package/dist/electron/core/index.d.ts +10 -0
- package/dist/electron/core/index.js +41 -0
- package/dist/electron/core/scanner.d.ts +8 -0
- package/dist/electron/core/scanner.js +11 -0
- package/dist/electron/core/settings.d.ts +50 -0
- package/dist/electron/core/settings.js +102 -0
- package/dist/electron/core.d.ts +2 -0
- package/dist/electron/core.js +76 -0
- package/dist/electron/main.js +93 -51
- package/dist/electron/port-scanner.js +4 -4
- package/dist/electron/preload.d.ts +1 -1
- package/dist/electron/renderer/assets/index-7KIJIiIM.js +42 -0
- package/dist/electron/renderer/assets/{index-DohAcUCg.css → index-ezVMxZrM.css} +1 -1
- package/dist/electron/renderer/index.html +2 -2
- package/dist/electron/script-runner.js +4 -4
- package/dist/index.js +240 -75
- package/dist/port-scanner.js +4 -4
- package/dist/script-runner.js +4 -4
- package/package.json +12 -11
- package/dist/electron/renderer/assets/index-BZ6USRnW.js +0 -42
- package/dist/electron/renderer/assets/index-CdMlFqhB.js +0 -42
- package/dist/electron/renderer/assets/index-DNtxfrZe.js +0 -42
- package/dist/electron/renderer/assets/index-khk3K-qG.css +0 -1
package/dist/core/scanner.js
CHANGED
|
@@ -1,114 +1,11 @@
|
|
|
1
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
3
|
exports.scanProject = scanProject;
|
|
37
4
|
exports.scanAllProjects = scanAllProjects;
|
|
38
|
-
const fs = __importStar(require("fs"));
|
|
39
|
-
const path = __importStar(require("path"));
|
|
40
|
-
const detector_1 = require("./detector");
|
|
41
5
|
const database_1 = require("./database");
|
|
42
6
|
function scanProject(projectId) {
|
|
43
|
-
|
|
44
|
-
const project = db.getProject(projectId);
|
|
45
|
-
if (!project) {
|
|
46
|
-
throw new Error(`Project with id ${projectId} not found`);
|
|
47
|
-
}
|
|
48
|
-
if (!fs.existsSync(project.path)) {
|
|
49
|
-
throw new Error(`Project path does not exist: ${project.path}`);
|
|
50
|
-
}
|
|
51
|
-
// Detect framework first
|
|
52
|
-
const framework = (0, detector_1.detectTestFramework)(project.path);
|
|
53
|
-
// Remove existing tests for this project
|
|
54
|
-
db.removeTestsByProject(projectId);
|
|
55
|
-
// Scan for test files
|
|
56
|
-
const tests = [];
|
|
57
|
-
const testFiles = findTestFiles(project.path, framework);
|
|
58
|
-
for (const testFile of testFiles) {
|
|
59
|
-
const relativePath = path.relative(project.path, testFile);
|
|
60
|
-
const test = db.addTest(projectId, relativePath, framework);
|
|
61
|
-
tests.push(test);
|
|
62
|
-
}
|
|
63
|
-
// Update last scanned timestamp
|
|
64
|
-
db.updateProjectLastScanned(projectId);
|
|
65
|
-
return {
|
|
66
|
-
project: db.getProject(projectId),
|
|
67
|
-
testsFound: tests.length,
|
|
68
|
-
tests,
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
function findTestFiles(dir, framework, results = []) {
|
|
72
|
-
if (!fs.existsSync(dir)) {
|
|
73
|
-
return results;
|
|
74
|
-
}
|
|
75
|
-
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
76
|
-
for (const entry of entries) {
|
|
77
|
-
const fullPath = path.join(dir, entry.name);
|
|
78
|
-
// Skip node_modules, .git, and other common ignore directories
|
|
79
|
-
if (entry.isDirectory()) {
|
|
80
|
-
if (entry.name === 'node_modules' ||
|
|
81
|
-
entry.name === '.git' ||
|
|
82
|
-
entry.name === 'dist' ||
|
|
83
|
-
entry.name === 'build' ||
|
|
84
|
-
entry.name === '.next' ||
|
|
85
|
-
entry.name === '.nuxt' ||
|
|
86
|
-
entry.name === 'coverage' ||
|
|
87
|
-
entry.name.startsWith('.')) {
|
|
88
|
-
continue;
|
|
89
|
-
}
|
|
90
|
-
findTestFiles(fullPath, framework, results);
|
|
91
|
-
}
|
|
92
|
-
else if (entry.isFile()) {
|
|
93
|
-
if ((0, detector_1.isTestFile)(fullPath, framework)) {
|
|
94
|
-
results.push(fullPath);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
return results;
|
|
7
|
+
return (0, database_1.getDatabaseManager)().scanProject(projectId);
|
|
99
8
|
}
|
|
100
9
|
function scanAllProjects() {
|
|
101
|
-
|
|
102
|
-
const projects = db.getAllProjects();
|
|
103
|
-
const results = [];
|
|
104
|
-
for (const project of projects) {
|
|
105
|
-
try {
|
|
106
|
-
const result = scanProject(project.id);
|
|
107
|
-
results.push(result);
|
|
108
|
-
}
|
|
109
|
-
catch (error) {
|
|
110
|
-
console.error(`Error scanning project ${project.name}:`, error);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
return results;
|
|
10
|
+
return (0, database_1.getDatabaseManager)().scanAllProjects();
|
|
114
11
|
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export type EditorType = 'vscode' | 'cursor' | 'windsurf' | 'zed' | 'custom';
|
|
2
|
+
export type BrowserType = 'chrome' | 'firefox' | 'safari' | 'edge' | 'custom';
|
|
3
|
+
export interface EditorSettings {
|
|
4
|
+
type: EditorType;
|
|
5
|
+
customPath?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface BrowserSettings {
|
|
8
|
+
type: BrowserType;
|
|
9
|
+
customPath?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface AppSettings {
|
|
12
|
+
editor: EditorSettings;
|
|
13
|
+
browser: BrowserSettings;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Get a setting value by key
|
|
17
|
+
*/
|
|
18
|
+
export declare function getSetting(key: string): string | null;
|
|
19
|
+
/**
|
|
20
|
+
* Set a setting value by key
|
|
21
|
+
*/
|
|
22
|
+
export declare function setSetting(key: string, value: string): void;
|
|
23
|
+
/**
|
|
24
|
+
* Get all settings as a key-value object
|
|
25
|
+
*/
|
|
26
|
+
export declare function getAllSettings(): Record<string, string>;
|
|
27
|
+
/**
|
|
28
|
+
* Get editor settings
|
|
29
|
+
*/
|
|
30
|
+
export declare function getEditorSettings(): EditorSettings;
|
|
31
|
+
/**
|
|
32
|
+
* Set editor settings
|
|
33
|
+
*/
|
|
34
|
+
export declare function setEditorSettings(settings: EditorSettings): void;
|
|
35
|
+
/**
|
|
36
|
+
* Get browser settings
|
|
37
|
+
*/
|
|
38
|
+
export declare function getBrowserSettings(): BrowserSettings;
|
|
39
|
+
/**
|
|
40
|
+
* Set browser settings
|
|
41
|
+
*/
|
|
42
|
+
export declare function setBrowserSettings(settings: BrowserSettings): void;
|
|
43
|
+
/**
|
|
44
|
+
* Get all app settings
|
|
45
|
+
*/
|
|
46
|
+
export declare function getAppSettings(): AppSettings;
|
|
47
|
+
/**
|
|
48
|
+
* Set all app settings
|
|
49
|
+
*/
|
|
50
|
+
export declare function setAppSettings(settings: AppSettings): void;
|
|
@@ -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, getAllProjects: typeof import("projax-core").getAllProjects, addProject: typeof import("projax-core").addProject, removeProject: typeof import("projax-core").removeProject, scanProject: typeof import("projax-core").scanProject, scanAllProjects: typeof import("projax-core").scanAllProjects;
|
|
2
|
+
export type { Project, Test, ProjectPort } from 'projax-core';
|
|
@@ -0,0 +1,73 @@
|
|
|
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.scanAllProjects = exports.scanProject = exports.removeProject = exports.addProject = exports.getAllProjects = 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 loadCore() {
|
|
54
|
+
if (cachedCore) {
|
|
55
|
+
return cachedCore;
|
|
56
|
+
}
|
|
57
|
+
const candidates = [
|
|
58
|
+
path.join(__dirname, 'core'),
|
|
59
|
+
path.join(__dirname, '..', 'core', 'dist'),
|
|
60
|
+
path.join(__dirname, '..', '..', 'core', 'dist'),
|
|
61
|
+
'projax-core',
|
|
62
|
+
];
|
|
63
|
+
for (const candidate of candidates) {
|
|
64
|
+
const mod = tryRequire(candidate);
|
|
65
|
+
if (mod) {
|
|
66
|
+
cachedCore = mod;
|
|
67
|
+
return mod;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
throw new Error(`Unable to load projax core module. Tried locations: ${candidates.join(', ')}`);
|
|
71
|
+
}
|
|
72
|
+
const core = loadCore();
|
|
73
|
+
exports.getDatabaseManager = core.getDatabaseManager, exports.getAllProjects = core.getAllProjects, exports.addProject = core.addProject, exports.removeProject = core.removeProject, exports.scanProject = core.scanProject, exports.scanAllProjects = core.scanAllProjects;
|
package/dist/core.d.ts
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const getDatabaseManager: typeof import("projax-core").getDatabaseManager, getAllProjects: typeof import("projax-core").getAllProjects, addProject: typeof import("projax-core").addProject, removeProject: typeof import("projax-core").removeProject, scanProject: typeof import("projax-core").scanProject, scanAllProjects: typeof import("projax-core").scanAllProjects;
|
|
2
|
+
export type { Project, Test, ProjectPort } from 'projax-core';
|
package/dist/core.js
ADDED
|
@@ -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.scanAllProjects = exports.scanProject = exports.removeProject = exports.addProject = exports.getAllProjects = 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 loadCore() {
|
|
54
|
+
if (cachedCore) {
|
|
55
|
+
return cachedCore;
|
|
56
|
+
}
|
|
57
|
+
const candidates = [
|
|
58
|
+
// When running the published CLI (core is copied into dist/core)
|
|
59
|
+
path.join(__dirname, 'core'),
|
|
60
|
+
// When running the CLI directly from the workspace build output
|
|
61
|
+
path.join(__dirname, '..', 'core', 'dist'),
|
|
62
|
+
path.join(__dirname, '..', '..', 'core', 'dist'),
|
|
63
|
+
// Fallback to installed module (useful 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 = loadCore();
|
|
76
|
+
exports.getDatabaseManager = core.getDatabaseManager, exports.getAllProjects = core.getAllProjects, exports.addProject = core.addProject, exports.removeProject = core.removeProject, exports.scanProject = core.scanProject, exports.scanAllProjects = core.scanAllProjects;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export interface Project {
|
|
2
|
+
id: number;
|
|
3
|
+
name: string;
|
|
4
|
+
path: string;
|
|
5
|
+
framework: string | null;
|
|
6
|
+
last_scanned: number | null;
|
|
7
|
+
created_at: number;
|
|
8
|
+
}
|
|
9
|
+
export interface Test {
|
|
10
|
+
id: number;
|
|
11
|
+
project_id: number;
|
|
12
|
+
file_path: string;
|
|
13
|
+
framework: string | null;
|
|
14
|
+
status: string | null;
|
|
15
|
+
last_run: number | null;
|
|
16
|
+
created_at: number;
|
|
17
|
+
}
|
|
18
|
+
export interface JenkinsJob {
|
|
19
|
+
id: number;
|
|
20
|
+
project_id: number;
|
|
21
|
+
job_name: string;
|
|
22
|
+
job_url: string;
|
|
23
|
+
last_build_status: string | null;
|
|
24
|
+
last_build_number: number | null;
|
|
25
|
+
last_updated: number | null;
|
|
26
|
+
created_at: number;
|
|
27
|
+
}
|
|
28
|
+
export interface ProjectPort {
|
|
29
|
+
id: number;
|
|
30
|
+
project_id: number;
|
|
31
|
+
port: number;
|
|
32
|
+
script_name: string | null;
|
|
33
|
+
config_source: string;
|
|
34
|
+
last_detected: number;
|
|
35
|
+
created_at: number;
|
|
36
|
+
}
|
|
37
|
+
type ScanResponse = {
|
|
38
|
+
project: Project;
|
|
39
|
+
testsFound: number;
|
|
40
|
+
tests: Test[];
|
|
41
|
+
};
|
|
42
|
+
declare class DatabaseManager {
|
|
43
|
+
private apiBaseUrl;
|
|
44
|
+
private defaultPort;
|
|
45
|
+
constructor();
|
|
46
|
+
private request;
|
|
47
|
+
addProject(name: string, projectPath: string): Project;
|
|
48
|
+
getProject(id: number): Project | null;
|
|
49
|
+
getProjectByPath(projectPath: string): Project | null;
|
|
50
|
+
getAllProjects(): Project[];
|
|
51
|
+
updateProjectLastScanned(id: number): void;
|
|
52
|
+
updateProjectFramework(id: number, framework: string): void;
|
|
53
|
+
updateProjectName(id: number, newName: string): Project;
|
|
54
|
+
removeProject(id: number): void;
|
|
55
|
+
scanProject(id: number): ScanResponse;
|
|
56
|
+
scanAllProjects(): ScanResponse[];
|
|
57
|
+
addTest(projectId: number, filePath: string, framework?: string | null): Test;
|
|
58
|
+
getTest(id: number): Test | null;
|
|
59
|
+
getTestsByProject(projectId: number): Test[];
|
|
60
|
+
removeTestsByProject(projectId: number): void;
|
|
61
|
+
addJenkinsJob(projectId: number, jobName: string, jobUrl: string): JenkinsJob;
|
|
62
|
+
getJenkinsJob(id: number): JenkinsJob | null;
|
|
63
|
+
getJenkinsJobsByProject(projectId: number): JenkinsJob[];
|
|
64
|
+
addProjectPort(projectId: number, port: number, configSource: string, scriptName?: string | null): ProjectPort;
|
|
65
|
+
getProjectPort(id: number): ProjectPort | null;
|
|
66
|
+
getProjectPorts(projectId: number): ProjectPort[];
|
|
67
|
+
getProjectPortsByScript(projectId: number, scriptName: string): ProjectPort[];
|
|
68
|
+
removeProjectPorts(projectId: number): void;
|
|
69
|
+
updateProjectPortLastDetected(projectId: number, port: number, scriptName: string | null): void;
|
|
70
|
+
getSetting(key: string): string | null;
|
|
71
|
+
setSetting(key: string, value: string): void;
|
|
72
|
+
getAllSettings(): Record<string, string>;
|
|
73
|
+
close(): void;
|
|
74
|
+
}
|
|
75
|
+
export declare function getDatabaseManager(): DatabaseManager;
|
|
76
|
+
export {};
|