vh-dev-helper 1.0.0 → 1.0.2
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/app.d.ts +8 -0
- package/dist/app.js +24 -0
- package/dist/app.js.map +1 -0
- package/dist/bin/index.js +6 -2
- package/dist/bin/index.js.map +1 -0
- package/dist/features/git/git.controller.d.ts +24 -0
- package/dist/features/git/git.controller.js +154 -0
- package/dist/features/git/git.controller.js.map +1 -0
- package/dist/features/git/git.route.d.ts +20 -0
- package/dist/features/git/git.route.js +132 -0
- package/dist/features/git/git.route.js.map +1 -0
- package/dist/features/git/git.service.d.ts +14 -0
- package/dist/features/git/git.service.js +342 -0
- package/dist/features/git/git.service.js.map +1 -0
- package/dist/features/logs/logs.route.d.ts +4 -0
- package/dist/features/logs/logs.route.js +50 -0
- package/dist/features/logs/logs.route.js.map +1 -0
- package/dist/features/logs/logs.service.d.ts +1 -0
- package/dist/features/logs/logs.service.js +3 -0
- package/dist/features/logs/logs.service.js.map +1 -0
- package/dist/features/logs/logs.socket.d.ts +16 -0
- package/dist/features/logs/logs.socket.js +133 -0
- package/dist/features/logs/logs.socket.js.map +1 -0
- package/dist/features/logs/logs.store.d.ts +1 -0
- package/dist/features/logs/logs.store.js +3 -0
- package/dist/features/logs/logs.store.js.map +1 -0
- package/dist/features/logs/logs.types.d.ts +1 -0
- package/dist/features/logs/logs.types.js +3 -0
- package/dist/features/logs/logs.types.js.map +1 -0
- package/dist/shared/config/config.d.ts +1 -0
- package/dist/shared/config/config.js +3 -0
- package/dist/shared/config/config.js.map +1 -0
- package/dist/shared/config/config.types.d.ts +1 -0
- package/dist/shared/config/config.types.js +3 -0
- package/dist/shared/config/config.types.js.map +1 -0
- package/dist/shared/config/defaults.d.ts +1 -0
- package/dist/shared/config/defaults.js +3 -0
- package/dist/shared/config/defaults.js.map +1 -0
- package/dist/shared/constants/env.constants.d.ts +1 -0
- package/dist/shared/constants/env.constants.js +3 -0
- package/dist/shared/constants/env.constants.js.map +1 -0
- package/dist/shared/errors/base.error.d.ts +1 -0
- package/dist/shared/errors/base.error.js +3 -0
- package/dist/shared/errors/base.error.js.map +1 -0
- package/dist/shared/errors/cli.error.d.ts +1 -0
- package/dist/shared/errors/cli.error.js +3 -0
- package/dist/shared/errors/cli.error.js.map +1 -0
- package/dist/shared/errors/runtine.error.d.ts +1 -0
- package/dist/shared/errors/runtine.error.js +3 -0
- package/dist/shared/errors/runtine.error.js.map +1 -0
- package/dist/shared/events/event-bus.d.ts +1 -0
- package/dist/shared/events/event-bus.js +3 -0
- package/dist/shared/events/event-bus.js.map +1 -0
- package/dist/shared/events/events.types.d.ts +1 -0
- package/dist/shared/events/events.types.js +3 -0
- package/dist/shared/events/events.types.js.map +1 -0
- package/dist/shared/helpers/gitParsers/parser.controller.d.ts +26 -0
- package/dist/shared/helpers/gitParsers/parser.controller.js +169 -0
- package/dist/shared/helpers/gitParsers/parser.controller.js.map +1 -0
- package/dist/shared/helpers/gitParsers/parser.services.d.ts +29 -0
- package/dist/shared/helpers/gitParsers/parser.services.js +368 -0
- package/dist/shared/helpers/gitParsers/parser.services.js.map +1 -0
- package/dist/shared/helpers/gitParsers/parser.types.d.ts +83 -0
- package/dist/shared/helpers/gitParsers/parser.types.js +22 -0
- package/dist/shared/helpers/gitParsers/parser.types.js.map +1 -0
- package/dist/shared/helpers/logger/logger.d.ts +1 -0
- package/dist/shared/helpers/logger/logger.js +3 -0
- package/dist/shared/helpers/logger/logger.js.map +1 -0
- package/dist/shared/helpers/logger/logger.types.d.ts +1 -0
- package/dist/shared/helpers/logger/logger.types.js +3 -0
- package/dist/shared/helpers/logger/logger.types.js.map +1 -0
- package/dist/shared/helpers/output/index.d.ts +19 -0
- package/dist/shared/helpers/output/index.js +78 -0
- package/dist/shared/helpers/output/index.js.map +1 -0
- package/dist/shared/helpers/prompt/prompt.d.ts +11 -0
- package/dist/shared/helpers/prompt/prompt.js +81 -0
- package/dist/shared/helpers/prompt/prompt.js.map +1 -0
- package/dist/shared/helpers/prompt/prompt.types.d.ts +40 -0
- package/dist/shared/helpers/prompt/prompt.types.js +3 -0
- package/dist/shared/helpers/prompt/prompt.types.js.map +1 -0
- package/dist/shared/helpers/shell/exec.d.ts +15 -0
- package/dist/shared/helpers/shell/exec.js +30 -0
- package/dist/shared/helpers/shell/exec.js.map +1 -0
- package/dist/shared/helpers/shell/spawn.d.ts +1 -0
- package/dist/shared/helpers/shell/spawn.js +3 -0
- package/dist/shared/helpers/shell/spawn.js.map +1 -0
- package/dist/shared/types/common.types.d.ts +1 -0
- package/dist/shared/types/common.types.js +3 -0
- package/dist/shared/types/common.types.js.map +1 -0
- package/dist/shared/ui/stepProgress/index.d.ts +19 -0
- package/dist/shared/ui/stepProgress/index.js +100 -0
- package/dist/shared/ui/stepProgress/index.js.map +1 -0
- package/dist/shared/ui/writer/index.d.ts +6 -0
- package/dist/shared/ui/writer/index.js +36 -0
- package/dist/shared/ui/writer/index.js.map +1 -0
- package/package.json +35 -23
- package/dist/src/commands/dashbaord/index.d.ts +0 -2
- package/dist/src/commands/dashbaord/index.js +0 -38
- package/dist/src/commands/dashbaord/project.command.d.ts +0 -2
- package/dist/src/commands/dashbaord/project.command.js +0 -17
- package/dist/src/commands/git/bg.command.d.ts +0 -2
- package/dist/src/commands/git/bg.command.js +0 -17
- package/dist/src/commands/git/cleanup.command.d.ts +0 -2
- package/dist/src/commands/git/cleanup.command.js +0 -12
- package/dist/src/commands/git/cp.command.d.ts +0 -2
- package/dist/src/commands/git/cp.command.js +0 -68
- package/dist/src/commands/git/del.command.d.ts +0 -2
- package/dist/src/commands/git/del.command.js +0 -19
- package/dist/src/commands/git/fetch.command.d.ts +0 -2
- package/dist/src/commands/git/fetch.command.js +0 -12
- package/dist/src/commands/git/final.command.d.ts +0 -2
- package/dist/src/commands/git/final.command.js +0 -23
- package/dist/src/commands/git/ga.command.d.ts +0 -2
- package/dist/src/commands/git/ga.command.js +0 -22
- package/dist/src/commands/git/gcm.command.d.ts +0 -2
- package/dist/src/commands/git/gcm.command.js +0 -23
- package/dist/src/commands/git/gco.command.d.ts +0 -2
- package/dist/src/commands/git/gco.command.js +0 -27
- package/dist/src/commands/git/gcob.command.d.ts +0 -2
- package/dist/src/commands/git/gcob.command.js +0 -23
- package/dist/src/commands/git/gph.command.d.ts +0 -2
- package/dist/src/commands/git/gph.command.js +0 -29
- package/dist/src/commands/git/gpho.command.d.ts +0 -2
- package/dist/src/commands/git/gpho.command.js +0 -20
- package/dist/src/commands/git/gpl.command.d.ts +0 -2
- package/dist/src/commands/git/gpl.command.js +0 -33
- package/dist/src/commands/git/gplo.command.d.ts +0 -2
- package/dist/src/commands/git/gplo.command.js +0 -20
- package/dist/src/commands/git/gpu.command.d.ts +0 -2
- package/dist/src/commands/git/gpu.command.js +0 -23
- package/dist/src/commands/git/gr.command.d.ts +0 -2
- package/dist/src/commands/git/gr.command.js +0 -20
- package/dist/src/commands/git/graph.command.d.ts +0 -2
- package/dist/src/commands/git/graph.command.js +0 -12
- package/dist/src/commands/git/gs.command.d.ts +0 -2
- package/dist/src/commands/git/gs.command.js +0 -23
- package/dist/src/commands/git/index.d.ts +0 -2
- package/dist/src/commands/git/index.js +0 -52
- package/dist/src/commands/git/init.command.d.ts +0 -2
- package/dist/src/commands/git/init.command.js +0 -12
- package/dist/src/commands/git/merge.command.d.ts +0 -2
- package/dist/src/commands/git/merge.command.js +0 -13
- package/dist/src/commands/git/sync.command.d.ts +0 -2
- package/dist/src/commands/git/sync.command.js +0 -12
- package/dist/src/commands/git/undo.command.d.ts +0 -2
- package/dist/src/commands/git/undo.command.js +0 -21
- package/dist/src/commands/git/untrack.command.d.ts +0 -2
- package/dist/src/commands/git/untrack.command.js +0 -27
- package/dist/src/commands/index.d.ts +0 -1
- package/dist/src/commands/index.js +0 -15
- package/dist/src/commands/network/discover.command.d.ts +0 -2
- package/dist/src/commands/network/discover.command.js +0 -24
- package/dist/src/commands/network/index.d.ts +0 -2
- package/dist/src/commands/network/index.js +0 -47
- package/dist/src/commands/network/inspect.command.d.ts +0 -2
- package/dist/src/commands/network/inspect.command.js +0 -34
- package/dist/src/commands/network/ports.command.d.ts +0 -2
- package/dist/src/commands/network/ports.command.js +0 -27
- package/dist/src/commands/network/ssl.command.d.ts +0 -2
- package/dist/src/commands/network/ssl.command.js +0 -32
- package/dist/src/commands/network/trace.command.d.ts +0 -2
- package/dist/src/commands/network/trace.command.js +0 -30
- package/dist/src/core/helper/command.helper.d.ts +0 -1
- package/dist/src/core/helper/command.helper.js +0 -28
- package/dist/src/core/helper/git.helper.d.ts +0 -2
- package/dist/src/core/helper/git.helper.js +0 -58
- package/dist/src/core/helper/prompts.helper.d.ts +0 -5
- package/dist/src/core/helper/prompts.helper.js +0 -83
- package/dist/src/core/shell/exec.d.ts +0 -1
- package/dist/src/core/shell/exec.js +0 -38
- package/dist/src/dashboards/collectors/project/project.collector.d.ts +0 -9
- package/dist/src/dashboards/collectors/project/project.collector.js +0 -29
- package/dist/src/dashboards/project/backend/server/dashboard.bootstrap.d.ts +0 -6
- package/dist/src/dashboards/project/backend/server/dashboard.bootstrap.js +0 -45
- package/dist/src/dashboards/project/backend/server/dashboard.server.d.ts +0 -6
- package/dist/src/dashboards/project/backend/server/dashboard.server.js +0 -25
- package/dist/src/dashboards/project/backend/server/websocket.server.d.ts +0 -8
- package/dist/src/dashboards/project/backend/server/websocket.server.js +0 -28
- package/dist/src/dashboards/project/backend/services/git.service.d.ts +0 -9
- package/dist/src/dashboards/project/backend/services/git.service.js +0 -18
- package/dist/src/dashboards/project/backend/services/metrics.service.d.ts +0 -7
- package/dist/src/dashboards/project/backend/services/metrics.service.js +0 -54
- package/dist/src/dashboards/project/backend/services/project.service.d.ts +0 -10
- package/dist/src/dashboards/project/backend/services/project.service.js +0 -19
- package/dist/src/dashboards/project/backend/services/system.service.d.ts +0 -15
- package/dist/src/dashboards/project/backend/services/system.service.js +0 -42
- package/dist/src/dashboards/project/backend/wrapper/process.wrapper.d.ts +0 -13
- package/dist/src/dashboards/project/backend/wrapper/process.wrapper.js +0 -56
- package/dist/src/services/git/git.service.d.ts +0 -37
- package/dist/src/services/git/git.service.js +0 -303
- package/dist/src/services/network/network.service.d.ts +0 -23
- package/dist/src/services/network/network.service.js +0 -524
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.gitCommandService = void 0;
|
|
7
|
+
const parser_controller_ts_1 = require("../../shared/helpers/gitParsers/parser.controller.js");
|
|
8
|
+
const index_ts_1 = require("../../shared/helpers/output/index.js");
|
|
9
|
+
const prompt_ts_1 = require("../../shared/helpers/prompt/prompt.js");
|
|
10
|
+
const exec_ts_1 = require("../../shared/helpers/shell/exec.js");
|
|
11
|
+
const enquirer_1 = __importDefault(require("enquirer"));
|
|
12
|
+
const enquirer = new enquirer_1.default();
|
|
13
|
+
class GitCommandServices {
|
|
14
|
+
async gitInit() {
|
|
15
|
+
return await (0, exec_ts_1.exec)("git init");
|
|
16
|
+
}
|
|
17
|
+
async gitStatus() {
|
|
18
|
+
return await (0, exec_ts_1.exec)("git status");
|
|
19
|
+
}
|
|
20
|
+
async gitAdd(auto = false) {
|
|
21
|
+
const isGitRepo = await parser_controller_ts_1.gitHelper.isRepository();
|
|
22
|
+
let result = {
|
|
23
|
+
stdout: "",
|
|
24
|
+
stderr: "",
|
|
25
|
+
durationMs: 0,
|
|
26
|
+
success: false,
|
|
27
|
+
command: "git add",
|
|
28
|
+
};
|
|
29
|
+
if (!isGitRepo) {
|
|
30
|
+
result.stderr = "Not a git repository";
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
const status = await parser_controller_ts_1.gitHelper.getStatus();
|
|
34
|
+
const currentBranch = status.currentBranch;
|
|
35
|
+
if (!currentBranch) {
|
|
36
|
+
result.stderr = "Unable to get current branch";
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
39
|
+
const stageableFiles = parser_controller_ts_1.gitHelper.getStageableFiles(status.files);
|
|
40
|
+
if (stageableFiles.length === 0) {
|
|
41
|
+
result.stdout = "Working tree is clean.";
|
|
42
|
+
result.success = true;
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
let files = [];
|
|
46
|
+
// if not auto ask for selection
|
|
47
|
+
if (!auto) {
|
|
48
|
+
files = await prompt_ts_1.prompt.multiselect({
|
|
49
|
+
message: "Select file to stage",
|
|
50
|
+
options: parser_controller_ts_1.gitHelper.getFileSelectOptions(stageableFiles),
|
|
51
|
+
initialValues: ["."],
|
|
52
|
+
});
|
|
53
|
+
if (files?.length == 0) {
|
|
54
|
+
result.stderr = "Please select valid option";
|
|
55
|
+
return result;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
files = ["."];
|
|
60
|
+
}
|
|
61
|
+
const selectAll = files?.includes(".");
|
|
62
|
+
// if not auto ask for confirmation
|
|
63
|
+
if (!auto) {
|
|
64
|
+
const confirmed = await prompt_ts_1.prompt.confirm({
|
|
65
|
+
message: selectAll
|
|
66
|
+
? "Stage all changes?"
|
|
67
|
+
: `Stage "${files.join(", ")}"?`,
|
|
68
|
+
});
|
|
69
|
+
if (!confirmed) {
|
|
70
|
+
result.stderr = "Operation is canceled, exit...";
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
result = await (0, exec_ts_1.exec)(`git add ${files.join(" ")}`);
|
|
75
|
+
const target = selectAll ? "all changes" : files?.join(", ");
|
|
76
|
+
if (result.success) {
|
|
77
|
+
result.stdout = `${target} staged successfully.`;
|
|
78
|
+
return result;
|
|
79
|
+
}
|
|
80
|
+
return result;
|
|
81
|
+
}
|
|
82
|
+
async gitCommit(message, isFetch = false) {
|
|
83
|
+
const isGitRepo = await parser_controller_ts_1.gitHelper.isRepository();
|
|
84
|
+
const command = `git commit -m '${message}'`;
|
|
85
|
+
let result = {
|
|
86
|
+
stdout: "",
|
|
87
|
+
stderr: "",
|
|
88
|
+
durationMs: 0,
|
|
89
|
+
success: false,
|
|
90
|
+
command: command,
|
|
91
|
+
};
|
|
92
|
+
if (!isGitRepo) {
|
|
93
|
+
result.stderr = "Not a git repository";
|
|
94
|
+
return result;
|
|
95
|
+
}
|
|
96
|
+
const status = await parser_controller_ts_1.gitHelper.getStatus(isFetch);
|
|
97
|
+
const currentBranch = status.currentBranch;
|
|
98
|
+
const stageableFiles = parser_controller_ts_1.gitHelper.getStageableFiles(status.files);
|
|
99
|
+
await index_ts_1.output.currentBranch(currentBranch);
|
|
100
|
+
if (status.summary.staged == 0) {
|
|
101
|
+
const msg = stageableFiles?.length
|
|
102
|
+
? `
|
|
103
|
+
No changes to commit,
|
|
104
|
+
|
|
105
|
+
Add files to stagging
|
|
106
|
+
${stageableFiles?.map((item) => item?.path)?.join(", ")}
|
|
107
|
+
`
|
|
108
|
+
: "no changes to commit";
|
|
109
|
+
result.stdout = msg;
|
|
110
|
+
result.success = true;
|
|
111
|
+
return result;
|
|
112
|
+
}
|
|
113
|
+
if (!currentBranch) {
|
|
114
|
+
result.stderr = "Unable to get current branch";
|
|
115
|
+
return result;
|
|
116
|
+
}
|
|
117
|
+
result = await (0, exec_ts_1.exec)(command);
|
|
118
|
+
return result;
|
|
119
|
+
}
|
|
120
|
+
async gitPush(force) {
|
|
121
|
+
const isGitRepo = await parser_controller_ts_1.gitHelper.isRepository();
|
|
122
|
+
const command = (cmd) => {
|
|
123
|
+
if (force == "safe") {
|
|
124
|
+
return `git push ${cmd} '--force-with-lease'`;
|
|
125
|
+
}
|
|
126
|
+
else if (force == "unSafe") {
|
|
127
|
+
return `git push ${cmd} '--force'`;
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
return `git push ${cmd}`;
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
let result = {
|
|
134
|
+
stdout: "",
|
|
135
|
+
stderr: "",
|
|
136
|
+
durationMs: 0,
|
|
137
|
+
success: false,
|
|
138
|
+
command: command(" "),
|
|
139
|
+
};
|
|
140
|
+
if (!isGitRepo) {
|
|
141
|
+
result.stderr = "Not a git repository";
|
|
142
|
+
return result;
|
|
143
|
+
}
|
|
144
|
+
const remotes = await parser_controller_ts_1.gitHelper.getRemotes();
|
|
145
|
+
const remote = remotes?.[0];
|
|
146
|
+
if (!remote) {
|
|
147
|
+
result.stderr = "Remote url not exist";
|
|
148
|
+
return result;
|
|
149
|
+
}
|
|
150
|
+
const status = await parser_controller_ts_1.gitHelper.getStatus();
|
|
151
|
+
const currentBranch = status.currentBranch;
|
|
152
|
+
if (!currentBranch) {
|
|
153
|
+
result.stderr = "Unable to get current branch";
|
|
154
|
+
return result;
|
|
155
|
+
}
|
|
156
|
+
if (currentBranch.detached) {
|
|
157
|
+
result.stderr = "Can not push in detached mode";
|
|
158
|
+
return result;
|
|
159
|
+
}
|
|
160
|
+
// if upstream exist then directly push it
|
|
161
|
+
if (currentBranch.upstream) {
|
|
162
|
+
await index_ts_1.output.info(`Upstream for '${currentBranch.current}' exist`);
|
|
163
|
+
return await (0, exec_ts_1.exec)(command(" "));
|
|
164
|
+
}
|
|
165
|
+
const remoteBranch = `${remote}/${currentBranch.current}`;
|
|
166
|
+
index_ts_1.output.info(`Upstream for ${currentBranch.current} not exist`);
|
|
167
|
+
index_ts_1.output.info(`Creating Upstream for ${currentBranch.current} to ${remoteBranch} `);
|
|
168
|
+
index_ts_1.output.info("Pushing to remote...");
|
|
169
|
+
return await (0, exec_ts_1.exec)(`git push --set-upstream ${remote} ${currentBranch.current}`);
|
|
170
|
+
}
|
|
171
|
+
async gitPull(inputBranch) {
|
|
172
|
+
const isGitRepo = await parser_controller_ts_1.gitHelper.isRepository();
|
|
173
|
+
const command = "git pull";
|
|
174
|
+
let result = {
|
|
175
|
+
stdout: "",
|
|
176
|
+
stderr: "",
|
|
177
|
+
durationMs: 0,
|
|
178
|
+
success: false,
|
|
179
|
+
command: command,
|
|
180
|
+
};
|
|
181
|
+
if (!isGitRepo) {
|
|
182
|
+
result.stderr = "Not a git repository";
|
|
183
|
+
return result;
|
|
184
|
+
}
|
|
185
|
+
const remotes = await parser_controller_ts_1.gitHelper.getRemotes();
|
|
186
|
+
const remote = remotes?.[0];
|
|
187
|
+
if (!remote) {
|
|
188
|
+
result.stderr = "Remote url not exist";
|
|
189
|
+
return result;
|
|
190
|
+
}
|
|
191
|
+
const status = await parser_controller_ts_1.gitHelper.getStatus(true);
|
|
192
|
+
const currentBranch = status.currentBranch;
|
|
193
|
+
await index_ts_1.output.currentBranch(currentBranch);
|
|
194
|
+
if (!status.summary.isClean) {
|
|
195
|
+
result.stderr = "Please commit local chages before pull";
|
|
196
|
+
return result;
|
|
197
|
+
}
|
|
198
|
+
if (!currentBranch) {
|
|
199
|
+
result.stderr = "Unable to get current branch";
|
|
200
|
+
return result;
|
|
201
|
+
}
|
|
202
|
+
if (currentBranch.detached) {
|
|
203
|
+
result.stderr = "Can not pull in detached mode";
|
|
204
|
+
return result;
|
|
205
|
+
}
|
|
206
|
+
// if input branch is available then use it and return
|
|
207
|
+
if (inputBranch) {
|
|
208
|
+
await index_ts_1.output.info(`Pulling from ${inputBranch} remote...`);
|
|
209
|
+
return await (0, exec_ts_1.exec)(`${command} '${remote}' '${inputBranch}'`);
|
|
210
|
+
}
|
|
211
|
+
// if upstream exist then directly pull it
|
|
212
|
+
if (currentBranch.upstream) {
|
|
213
|
+
await index_ts_1.output.info(`Upstream for '${currentBranch.current}' exist`);
|
|
214
|
+
return await (0, exec_ts_1.exec)(command);
|
|
215
|
+
}
|
|
216
|
+
result = await parser_controller_ts_1.gitHelper.ensureUpstream(currentBranch.current, remote);
|
|
217
|
+
if (!result.success) {
|
|
218
|
+
return result;
|
|
219
|
+
}
|
|
220
|
+
return await (0, exec_ts_1.exec)("git pull");
|
|
221
|
+
}
|
|
222
|
+
async gitCheckout(inputBranch, newBranch) {
|
|
223
|
+
const isGitRepo = await parser_controller_ts_1.gitHelper.isRepository();
|
|
224
|
+
const command = "git checkout";
|
|
225
|
+
let result = {
|
|
226
|
+
stdout: "",
|
|
227
|
+
stderr: "",
|
|
228
|
+
durationMs: 0,
|
|
229
|
+
success: false,
|
|
230
|
+
command: command,
|
|
231
|
+
};
|
|
232
|
+
if (!isGitRepo) {
|
|
233
|
+
result.stderr = "Not a git repository";
|
|
234
|
+
return result;
|
|
235
|
+
}
|
|
236
|
+
// if checkout with create new branch return early
|
|
237
|
+
if (newBranch) {
|
|
238
|
+
return await (0, exec_ts_1.exec)(`${command} -b '${inputBranch}'`);
|
|
239
|
+
}
|
|
240
|
+
// if checkout to existing branch return early
|
|
241
|
+
if (inputBranch) {
|
|
242
|
+
return await (0, exec_ts_1.exec)(`${command} '${inputBranch}'`);
|
|
243
|
+
}
|
|
244
|
+
const status = await parser_controller_ts_1.gitHelper.getStatus();
|
|
245
|
+
if (!status.summary.isClean) {
|
|
246
|
+
result.stderr = `
|
|
247
|
+
Local changes are present
|
|
248
|
+
commit local changes to continue
|
|
249
|
+
abort checkout
|
|
250
|
+
`;
|
|
251
|
+
return result;
|
|
252
|
+
}
|
|
253
|
+
const branchList = await parser_controller_ts_1.gitHelper.getBranches("all");
|
|
254
|
+
const localBranchNames = branchList
|
|
255
|
+
.filter((branch) => !branch.remote)
|
|
256
|
+
.map((branch) => branch.name);
|
|
257
|
+
const branchNames = branchList.map((branch) => branch.name);
|
|
258
|
+
const { branch } = await enquirer.prompt({
|
|
259
|
+
type: "autocomplete",
|
|
260
|
+
name: "branch",
|
|
261
|
+
message: "Select branch",
|
|
262
|
+
choices: ["create-new-branch", ...branchNames],
|
|
263
|
+
});
|
|
264
|
+
if (!branch) {
|
|
265
|
+
result.stderr = "select a valid branch";
|
|
266
|
+
return result;
|
|
267
|
+
}
|
|
268
|
+
const selectedBranch = branch;
|
|
269
|
+
const confirmed = await prompt_ts_1.prompt.confirm({
|
|
270
|
+
message: `confirm selection ${selectedBranch}`,
|
|
271
|
+
});
|
|
272
|
+
if (!confirmed) {
|
|
273
|
+
result.stderr = "Operation is canceled, exit...";
|
|
274
|
+
return result;
|
|
275
|
+
}
|
|
276
|
+
const remotes = await parser_controller_ts_1.gitHelper.getRemotes();
|
|
277
|
+
const remote = remotes?.[0];
|
|
278
|
+
// if remote branch selected
|
|
279
|
+
if (selectedBranch?.includes(remote)) {
|
|
280
|
+
const localBranch = selectedBranch.replace(`${remote}/`, "");
|
|
281
|
+
if (localBranchNames?.includes(localBranch)) {
|
|
282
|
+
await index_ts_1.output.info("local branch exist checkout");
|
|
283
|
+
return await (0, exec_ts_1.exec)(`${command} '${localBranch}'`);
|
|
284
|
+
}
|
|
285
|
+
await index_ts_1.output.info("local branch not exist");
|
|
286
|
+
await index_ts_1.output.info("creating local branch and start tracking");
|
|
287
|
+
return await (0, exec_ts_1.exec)(`git checkout --track ${branch}`);
|
|
288
|
+
}
|
|
289
|
+
// if local branch selected direclty checkout
|
|
290
|
+
if (selectedBranch != "create-new-branch") {
|
|
291
|
+
return (0, exec_ts_1.exec)(`${command} '${selectedBranch}'`);
|
|
292
|
+
}
|
|
293
|
+
// if create new branch selected
|
|
294
|
+
const userInput = await this.promptForNewBranch();
|
|
295
|
+
if (userInput.toLowerCase() == "exit") {
|
|
296
|
+
result.stdout = "Operation is canceled, exit...";
|
|
297
|
+
result.success = true;
|
|
298
|
+
return result;
|
|
299
|
+
}
|
|
300
|
+
return await (0, exec_ts_1.exec)(`${command} -b '${userInput}'`);
|
|
301
|
+
}
|
|
302
|
+
async gitBranch() {
|
|
303
|
+
const isGitRepo = await parser_controller_ts_1.gitHelper.isRepository();
|
|
304
|
+
const command = "git checkout";
|
|
305
|
+
let result = {
|
|
306
|
+
stdout: "",
|
|
307
|
+
stderr: "",
|
|
308
|
+
durationMs: 0,
|
|
309
|
+
success: false,
|
|
310
|
+
command: command,
|
|
311
|
+
};
|
|
312
|
+
if (!isGitRepo) {
|
|
313
|
+
result.stderr = "Not a git repository";
|
|
314
|
+
return result;
|
|
315
|
+
}
|
|
316
|
+
const status = await parser_controller_ts_1.gitHelper.getStatus();
|
|
317
|
+
const branchList = await parser_controller_ts_1.gitHelper.getBranches("all");
|
|
318
|
+
const branchNames = branchList.map((branch) => branch.name);
|
|
319
|
+
for (let name of branchNames) {
|
|
320
|
+
const isCurrent = status.currentBranch.current == name;
|
|
321
|
+
await index_ts_1.output.info(`${name} ${isCurrent ? " *" : ""}`, 8);
|
|
322
|
+
}
|
|
323
|
+
result.success = true;
|
|
324
|
+
result.stdout = "Branch listed successfully";
|
|
325
|
+
return result;
|
|
326
|
+
}
|
|
327
|
+
// small helpers
|
|
328
|
+
async promptForNewBranch() {
|
|
329
|
+
return prompt_ts_1.prompt.input({
|
|
330
|
+
message: "Branch name",
|
|
331
|
+
placeholder: "feature/login (Enter exit for cancel)",
|
|
332
|
+
validate(value) {
|
|
333
|
+
if (!value?.trim()) {
|
|
334
|
+
return "Branch name is required.";
|
|
335
|
+
}
|
|
336
|
+
return undefined;
|
|
337
|
+
},
|
|
338
|
+
});
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
exports.gitCommandService = new GitCommandServices();
|
|
342
|
+
//# sourceMappingURL=git.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.service.js","sourceRoot":"","sources":["../../../src/features/git/git.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.logsCommandRouter = void 0;
|
|
4
|
+
const node_http_1 = require("node:http");
|
|
5
|
+
const logs_socket_js_1 = require("./logs.socket.js");
|
|
6
|
+
exports.logsCommandRouter = {
|
|
7
|
+
register(program) {
|
|
8
|
+
const logs = program
|
|
9
|
+
.command("logs")
|
|
10
|
+
.description("Application logging tools");
|
|
11
|
+
logs
|
|
12
|
+
.command("serve")
|
|
13
|
+
.description("Start the VH log collection server")
|
|
14
|
+
.option("-p, --port <port>", "Port to listen on", "4317")
|
|
15
|
+
.action((options) => {
|
|
16
|
+
const port = Number(options.port);
|
|
17
|
+
if (!Number.isInteger(port) || port < 1 || port > 65535) {
|
|
18
|
+
throw new Error("Port must be an integer from 1 to 65535");
|
|
19
|
+
}
|
|
20
|
+
const httpServer = (0, node_http_1.createServer)((req, res) => {
|
|
21
|
+
if (req.url === "/health") {
|
|
22
|
+
res.writeHead(200, {
|
|
23
|
+
"content-type": "application/json",
|
|
24
|
+
});
|
|
25
|
+
res.end(JSON.stringify({ ok: true, service: "vh-logs" }));
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
res.writeHead(404, {
|
|
29
|
+
"content-type": "application/json",
|
|
30
|
+
});
|
|
31
|
+
res.end(JSON.stringify({ error: "Not found" }));
|
|
32
|
+
});
|
|
33
|
+
const logsServer = (0, logs_socket_js_1.createLogsSocketServer)(httpServer);
|
|
34
|
+
httpServer.listen(port, "0.0.0.0", () => {
|
|
35
|
+
console.log(`[VH] Log server listening on port ${port}`);
|
|
36
|
+
console.log(`[VH] Health check: http://localhost:${port}/health`);
|
|
37
|
+
});
|
|
38
|
+
const shutdown = () => {
|
|
39
|
+
console.log("\n[VH] Shutting down log server...");
|
|
40
|
+
logsServer.io.close(() => {
|
|
41
|
+
console.log("[VH] Log server stopped");
|
|
42
|
+
process.exit(0);
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
process.once("SIGINT", shutdown);
|
|
46
|
+
process.once("SIGTERM", shutdown);
|
|
47
|
+
});
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=logs.route.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.route.js","sourceRoot":"","sources":["../../../src/features/logs/logs.route.ts"],"names":[],"mappings":";;;AACA,yCAAyC;AACzC,qDAA0D;AAE7C,QAAA,iBAAiB,GAAG;IAC/B,QAAQ,CAAC,OAAgB;QACvB,MAAM,IAAI,GAAG,OAAO;aACjB,OAAO,CAAC,MAAM,CAAC;aACf,WAAW,CAAC,2BAA2B,CAAC,CAAC;QAE5C,IAAI;aACD,OAAO,CAAC,OAAO,CAAC;aAChB,WAAW,CAAC,oCAAoC,CAAC;aACjD,MAAM,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,CAAC;aACxD,MAAM,CAAC,CAAC,OAAyB,EAAE,EAAE;YACpC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAElC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;gBACxD,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;YAC7D,CAAC;YAED,MAAM,UAAU,GAAG,IAAA,wBAAY,EAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;gBAC3C,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;oBAC1B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;wBACjB,cAAc,EAAE,kBAAkB;qBACnC,CAAC,CAAC;oBACH,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;oBAC1D,OAAO;gBACT,CAAC;gBAED,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;oBACjB,cAAc,EAAE,kBAAkB;iBACnC,CAAC,CAAC;gBACH,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,IAAA,uCAAsB,EAAC,UAAU,CAAC,CAAC;YAEtD,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE;gBACtC,OAAO,CAAC,GAAG,CAAC,qCAAqC,IAAI,EAAE,CAAC,CAAC;gBACzD,OAAO,CAAC,GAAG,CAAC,uCAAuC,IAAI,SAAS,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,GAAG,EAAE;gBACpB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;gBAElD,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;oBACvB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;oBACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;YAEF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACP,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.service.js","sourceRoot":"","sources":["../../../src/features/logs/logs.service.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Server as HttpServer } from "node:http";
|
|
2
|
+
import { Server } from "socket.io";
|
|
3
|
+
interface VHEvent {
|
|
4
|
+
eventId: string;
|
|
5
|
+
appName: string;
|
|
6
|
+
timestamp: number;
|
|
7
|
+
type: "log" | "network:req" | "network:res";
|
|
8
|
+
[key: string]: unknown;
|
|
9
|
+
}
|
|
10
|
+
export declare function createLogsSocketServer(httpServer: HttpServer): {
|
|
11
|
+
io: Server<import("socket.io").DefaultEventsMap, import("socket.io").DefaultEventsMap, import("socket.io").DefaultEventsMap, any>;
|
|
12
|
+
getEvents(): VHEvent[];
|
|
13
|
+
close(): Promise<void>;
|
|
14
|
+
};
|
|
15
|
+
export type LogsSocketServer = ReturnType<typeof createLogsSocketServer>;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createLogsSocketServer = createLogsSocketServer;
|
|
4
|
+
const socket_io_1 = require("socket.io");
|
|
5
|
+
const MAX_BATCH_SIZE = 50;
|
|
6
|
+
const MAX_STORED_EVENTS = 10_000;
|
|
7
|
+
const events = new Map();
|
|
8
|
+
function isVHEvent(value) {
|
|
9
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
const event = value;
|
|
13
|
+
if (typeof event.eventId !== "string" ||
|
|
14
|
+
event.eventId.length === 0 ||
|
|
15
|
+
typeof event.appName !== "string" ||
|
|
16
|
+
event.appName.length === 0 ||
|
|
17
|
+
typeof event.timestamp !== "number" ||
|
|
18
|
+
!Number.isFinite(event.timestamp)) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
switch (event.type) {
|
|
22
|
+
case "log":
|
|
23
|
+
return (typeof event.message === "string" &&
|
|
24
|
+
["debug", "info", "warn", "error"].includes(String(event.level)) &&
|
|
25
|
+
typeof event.fingerprint === "string");
|
|
26
|
+
case "network:req":
|
|
27
|
+
return (typeof event.requestId === "string" &&
|
|
28
|
+
typeof event.method === "string" &&
|
|
29
|
+
typeof event.url === "string");
|
|
30
|
+
case "network:res":
|
|
31
|
+
return (typeof event.requestId === "string" &&
|
|
32
|
+
(event.status === undefined ||
|
|
33
|
+
(typeof event.status === "number" &&
|
|
34
|
+
Number.isFinite(event.status))) &&
|
|
35
|
+
(event.durationMs === undefined ||
|
|
36
|
+
(typeof event.durationMs === "number" &&
|
|
37
|
+
Number.isFinite(event.durationMs))) &&
|
|
38
|
+
(event.error === undefined || typeof event.error === "string"));
|
|
39
|
+
default:
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function createLogsSocketServer(httpServer) {
|
|
44
|
+
const io = new socket_io_1.Server(httpServer, {
|
|
45
|
+
cors: {
|
|
46
|
+
// Adjust this to your dashboard origin when browser access is enabled.
|
|
47
|
+
origin: ["http://localhost:3000"],
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
io.engine.on("connection_error", (error) => {
|
|
51
|
+
console.error("[VH Logs] Connection error:", {
|
|
52
|
+
code: error.code,
|
|
53
|
+
message: error.message,
|
|
54
|
+
context: error.context,
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
io.on("connection", (socket) => {
|
|
58
|
+
console.log(`[VH Logs] Client connected: ${socket.id}`);
|
|
59
|
+
socket.on("vh:events", (payload, acknowledge) => {
|
|
60
|
+
console.log("[VH Logs] vh:events received", {
|
|
61
|
+
isArray: Array.isArray(payload),
|
|
62
|
+
count: Array.isArray(payload) ? payload.length : 0,
|
|
63
|
+
});
|
|
64
|
+
if (typeof acknowledge !== "function") {
|
|
65
|
+
console.warn("[VH Logs] Received batch without acknowledgement callback");
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (!Array.isArray(payload) ||
|
|
69
|
+
payload.length === 0 ||
|
|
70
|
+
payload.length > MAX_BATCH_SIZE) {
|
|
71
|
+
acknowledge({
|
|
72
|
+
ok: false,
|
|
73
|
+
error: `Expected between 1 and ${MAX_BATCH_SIZE} events`,
|
|
74
|
+
});
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
if (!payload.every(isVHEvent)) {
|
|
78
|
+
acknowledge({
|
|
79
|
+
ok: false,
|
|
80
|
+
error: "Batch contains invalid events",
|
|
81
|
+
});
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const batch = payload;
|
|
85
|
+
const batchIds = new Set();
|
|
86
|
+
// Reject conflicting duplicate IDs within the same batch.
|
|
87
|
+
for (const event of batch) {
|
|
88
|
+
if (batchIds.has(event.eventId)) {
|
|
89
|
+
acknowledge({
|
|
90
|
+
ok: false,
|
|
91
|
+
error: `Duplicate eventId in batch: ${event.eventId}`,
|
|
92
|
+
});
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
batchIds.add(event.eventId);
|
|
96
|
+
}
|
|
97
|
+
for (const event of batch) {
|
|
98
|
+
// Retried events are already accepted; don't store them twice.
|
|
99
|
+
if (events.has(event.eventId)) {
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
events.set(event.eventId, event);
|
|
103
|
+
if (events.size > MAX_STORED_EVENTS) {
|
|
104
|
+
const oldestId = events.keys().next().value;
|
|
105
|
+
if (oldestId !== undefined) {
|
|
106
|
+
events.delete(oldestId);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
console.log(`[VH Logs] ${event.appName} | ${event.type} | ${event.eventId}`);
|
|
110
|
+
}
|
|
111
|
+
// Confirms in-memory acceptance, not durable database storage.
|
|
112
|
+
acknowledge({
|
|
113
|
+
ok: true,
|
|
114
|
+
eventIds: batch.map((event) => event.eventId),
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
socket.on("disconnect", (reason) => {
|
|
118
|
+
console.log(`[VH Logs] Client disconnected: ${socket.id} (${reason})`);
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
return {
|
|
122
|
+
io,
|
|
123
|
+
getEvents() {
|
|
124
|
+
return Array.from(events.values());
|
|
125
|
+
},
|
|
126
|
+
close() {
|
|
127
|
+
return new Promise((resolve) => {
|
|
128
|
+
io.close(() => resolve());
|
|
129
|
+
});
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=logs.socket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.socket.js","sourceRoot":"","sources":["../../../src/features/logs/logs.socket.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.store.js","sourceRoot":"","sources":["../../../src/features/logs/logs.store.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.types.js","sourceRoot":"","sources":["../../../src/features/logs/logs.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/shared/config/config.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.types.js","sourceRoot":"","sources":["../../../src/shared/config/config.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../src/shared/config/defaults.ts"],"names":[],"mappings":""}
|