vh-dev-helper 0.0.0-stage → 1.0.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 (83) hide show
  1. package/dist/app.d.ts +8 -0
  2. package/dist/app.js +22 -0
  3. package/dist/app.js.map +1 -0
  4. package/dist/bin/index.d.ts +2 -0
  5. package/dist/bin/index.js +9 -0
  6. package/dist/bin/index.js.map +1 -0
  7. package/dist/features/git/git.controller.d.ts +24 -0
  8. package/dist/features/git/git.controller.js +154 -0
  9. package/dist/features/git/git.controller.js.map +1 -0
  10. package/dist/features/git/git.route.d.ts +20 -0
  11. package/dist/features/git/git.route.js +132 -0
  12. package/dist/features/git/git.route.js.map +1 -0
  13. package/dist/features/git/git.service.d.ts +14 -0
  14. package/dist/features/git/git.service.js +342 -0
  15. package/dist/features/git/git.service.js.map +1 -0
  16. package/dist/shared/config/config.d.ts +1 -0
  17. package/dist/shared/config/config.js +3 -0
  18. package/dist/shared/config/config.js.map +1 -0
  19. package/dist/shared/config/config.types.d.ts +1 -0
  20. package/dist/shared/config/config.types.js +3 -0
  21. package/dist/shared/config/config.types.js.map +1 -0
  22. package/dist/shared/config/defaults.d.ts +1 -0
  23. package/dist/shared/config/defaults.js +3 -0
  24. package/dist/shared/config/defaults.js.map +1 -0
  25. package/dist/shared/constants/env.constants.d.ts +1 -0
  26. package/dist/shared/constants/env.constants.js +3 -0
  27. package/dist/shared/constants/env.constants.js.map +1 -0
  28. package/dist/shared/errors/base.error.d.ts +1 -0
  29. package/dist/shared/errors/base.error.js +3 -0
  30. package/dist/shared/errors/base.error.js.map +1 -0
  31. package/dist/shared/errors/cli.error.d.ts +1 -0
  32. package/dist/shared/errors/cli.error.js +3 -0
  33. package/dist/shared/errors/cli.error.js.map +1 -0
  34. package/dist/shared/errors/runtine.error.d.ts +1 -0
  35. package/dist/shared/errors/runtine.error.js +3 -0
  36. package/dist/shared/errors/runtine.error.js.map +1 -0
  37. package/dist/shared/events/event-bus.d.ts +1 -0
  38. package/dist/shared/events/event-bus.js +3 -0
  39. package/dist/shared/events/event-bus.js.map +1 -0
  40. package/dist/shared/events/events.types.d.ts +1 -0
  41. package/dist/shared/events/events.types.js +3 -0
  42. package/dist/shared/events/events.types.js.map +1 -0
  43. package/dist/shared/helpers/gitParsers/parser.controller.d.ts +26 -0
  44. package/dist/shared/helpers/gitParsers/parser.controller.js +169 -0
  45. package/dist/shared/helpers/gitParsers/parser.controller.js.map +1 -0
  46. package/dist/shared/helpers/gitParsers/parser.services.d.ts +29 -0
  47. package/dist/shared/helpers/gitParsers/parser.services.js +368 -0
  48. package/dist/shared/helpers/gitParsers/parser.services.js.map +1 -0
  49. package/dist/shared/helpers/gitParsers/parser.types.d.ts +83 -0
  50. package/dist/shared/helpers/gitParsers/parser.types.js +22 -0
  51. package/dist/shared/helpers/gitParsers/parser.types.js.map +1 -0
  52. package/dist/shared/helpers/logger/logger.d.ts +1 -0
  53. package/dist/shared/helpers/logger/logger.js +3 -0
  54. package/dist/shared/helpers/logger/logger.js.map +1 -0
  55. package/dist/shared/helpers/logger/logger.types.d.ts +1 -0
  56. package/dist/shared/helpers/logger/logger.types.js +3 -0
  57. package/dist/shared/helpers/logger/logger.types.js.map +1 -0
  58. package/dist/shared/helpers/output/index.d.ts +19 -0
  59. package/dist/shared/helpers/output/index.js +78 -0
  60. package/dist/shared/helpers/output/index.js.map +1 -0
  61. package/dist/shared/helpers/prompt/prompt.d.ts +11 -0
  62. package/dist/shared/helpers/prompt/prompt.js +81 -0
  63. package/dist/shared/helpers/prompt/prompt.js.map +1 -0
  64. package/dist/shared/helpers/prompt/prompt.types.d.ts +40 -0
  65. package/dist/shared/helpers/prompt/prompt.types.js +3 -0
  66. package/dist/shared/helpers/prompt/prompt.types.js.map +1 -0
  67. package/dist/shared/helpers/shell/exec.d.ts +15 -0
  68. package/dist/shared/helpers/shell/exec.js +30 -0
  69. package/dist/shared/helpers/shell/exec.js.map +1 -0
  70. package/dist/shared/helpers/shell/spawn.d.ts +1 -0
  71. package/dist/shared/helpers/shell/spawn.js +3 -0
  72. package/dist/shared/helpers/shell/spawn.js.map +1 -0
  73. package/dist/shared/types/common.types.d.ts +1 -0
  74. package/dist/shared/types/common.types.js +3 -0
  75. package/dist/shared/types/common.types.js.map +1 -0
  76. package/dist/shared/ui/stepProgress/index.d.ts +19 -0
  77. package/dist/shared/ui/stepProgress/index.js +100 -0
  78. package/dist/shared/ui/stepProgress/index.js.map +1 -0
  79. package/dist/shared/ui/writer/index.d.ts +6 -0
  80. package/dist/shared/ui/writer/index.js +36 -0
  81. package/dist/shared/ui/writer/index.js.map +1 -0
  82. package/package.json +49 -4
  83. package/README.md +0 -3
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GitFileKind = exports.GitFileStatus = void 0;
4
+ var GitFileStatus;
5
+ (function (GitFileStatus) {
6
+ GitFileStatus["Modified"] = "modified";
7
+ GitFileStatus["Added"] = "added";
8
+ GitFileStatus["Deleted"] = "deleted";
9
+ GitFileStatus["Renamed"] = "renamed";
10
+ GitFileStatus["Copied"] = "copied";
11
+ GitFileStatus["Unmerged"] = "unmerged";
12
+ })(GitFileStatus || (exports.GitFileStatus = GitFileStatus = {}));
13
+ var GitFileKind;
14
+ (function (GitFileKind) {
15
+ GitFileKind["Normal"] = "normal";
16
+ GitFileKind["Rename"] = "rename";
17
+ GitFileKind["Copy"] = "copy";
18
+ GitFileKind["Untracked"] = "untracked";
19
+ GitFileKind["Ignored"] = "ignored";
20
+ GitFileKind["Conflicted"] = "conflicted";
21
+ })(GitFileKind || (exports.GitFileKind = GitFileKind = {}));
22
+ //# sourceMappingURL=parser.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.types.js","sourceRoot":"","sources":["../../../../src/shared/helpers/gitParsers/parser.types.ts"],"names":[],"mappings":";;;AAcA,IAAY,aAOX;AAPD,WAAY,aAAa;IACvB,sCAAqB,CAAA;IACrB,gCAAe,CAAA;IACf,oCAAmB,CAAA;IACnB,oCAAmB,CAAA;IACnB,kCAAiB,CAAA;IACjB,sCAAqB,CAAA;AACvB,CAAC,EAPW,aAAa,6BAAb,aAAa,QAOxB;AAED,IAAY,WAOX;AAPD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,gCAAiB,CAAA;IACjB,4BAAa,CAAA;IACb,sCAAuB,CAAA;IACvB,kCAAmB,CAAA;IACnB,wCAAyB,CAAA;AAC3B,CAAC,EAPW,WAAW,2BAAX,WAAW,QAOtB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../../src/shared/helpers/logger/logger.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=logger.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.types.js","sourceRoot":"","sources":["../../../../src/shared/helpers/logger/logger.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ import { ExecResult } from "../shell/exec.ts";
2
+ import { CommandOptions } from "../../../features/git/git.controller.ts";
3
+ import { GitCurrentBranch } from "../gitParsers/parser.types.ts";
4
+ type OutputProps = {
5
+ title: string;
6
+ message: string;
7
+ duration?: number;
8
+ isRaw?: boolean;
9
+ };
10
+ declare class Output {
11
+ autoPrint(result: ExecResult, options?: CommandOptions): Promise<void>;
12
+ success({ title, message, duration, isRaw }: OutputProps): Promise<void>;
13
+ error({ title, message, duration, isRaw }: OutputProps): Promise<void>;
14
+ info(message: string, delay?: number): Promise<void>;
15
+ json(content: any): void;
16
+ currentBranch(branch: GitCurrentBranch): Promise<void>;
17
+ }
18
+ export declare const output: Output;
19
+ export {};
@@ -0,0 +1,78 @@
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.output = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const index_ts_1 = require("../../ui/writer/index.js");
9
+ const cli_table3_1 = __importDefault(require("cli-table3"));
10
+ class Output {
11
+ async autoPrint(result, options) {
12
+ const isPrintJson = options?.json;
13
+ if (isPrintJson) {
14
+ return exports.output.json(result);
15
+ }
16
+ if (result.success) {
17
+ await exports.output.success({
18
+ title: result.command,
19
+ message: result.stdout,
20
+ duration: result.durationMs,
21
+ });
22
+ }
23
+ else {
24
+ await exports.output.error({
25
+ title: result.command,
26
+ message: result.stderr,
27
+ duration: result.durationMs,
28
+ });
29
+ }
30
+ }
31
+ async success({ title, message, duration, isRaw = false }) {
32
+ await index_ts_1.writer.writeln("");
33
+ await index_ts_1.writer.writeln(chalk_1.default.green(`${title} Started`));
34
+ if (message) {
35
+ await index_ts_1.writer.writeln(message);
36
+ }
37
+ if (duration) {
38
+ const msg = ` Duration ${duration} ms `;
39
+ await index_ts_1.writer.writeln(chalk_1.default.yellow(msg));
40
+ }
41
+ await index_ts_1.writer.writeln(chalk_1.default.bgCyanBright(chalk_1.default.blackBright(` ${title} SUCCESS `)));
42
+ }
43
+ async error({ title, message, duration, isRaw = false }) {
44
+ await index_ts_1.writer.writeln("");
45
+ await index_ts_1.writer.writeln(chalk_1.default.green(`${title} ☑️ Started`));
46
+ if (message) {
47
+ await index_ts_1.writer.writeln(message);
48
+ }
49
+ if (duration) {
50
+ const msg = `Duration ${duration} ms`;
51
+ await index_ts_1.writer.writeln(chalk_1.default.yellow(msg));
52
+ }
53
+ await index_ts_1.writer.writeln(chalk_1.default.bgCyanBright(chalk_1.default.bgRedBright(chalk_1.default.black(` ${title} ❌ ERROR `))));
54
+ // console.log(chalk.red(`${title} ✖ ERROR`));
55
+ }
56
+ async info(message, delay) {
57
+ await index_ts_1.writer.writeln("");
58
+ await index_ts_1.writer.write(chalk_1.default.cyan(message), delay);
59
+ // console.log(chalk.cyan(message));
60
+ }
61
+ json(content) {
62
+ console.dir(content);
63
+ }
64
+ async currentBranch(branch) {
65
+ if (!branch)
66
+ return;
67
+ const table = new cli_table3_1.default({
68
+ head: ["Property", "Value"],
69
+ colWidths: [18, 35],
70
+ });
71
+ table.push(["Branch", branch.current], ["Upstream", branch.upstream ?? "None"], ["Ahead", branch.ahead], ["Behind", branch.behind]);
72
+ await index_ts_1.writer.writeln("");
73
+ await index_ts_1.writer.writeln(chalk_1.default.cyan("Current Branch Details"));
74
+ await exports.output.info(chalk_1.default.cyan(table.toString()));
75
+ }
76
+ }
77
+ exports.output = new Output();
78
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/shared/helpers/output/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { ConfirmPromptOptions, InputPromptOptions, MultiSelectPromptOptions, SelectPromptOptions } from "./prompt.types.ts";
2
+ declare class Prompt {
3
+ private handleCancel;
4
+ private handleError;
5
+ select<T>(options: SelectPromptOptions<T>): Promise<T>;
6
+ confirm(options: ConfirmPromptOptions): Promise<boolean>;
7
+ input(options: InputPromptOptions): Promise<string>;
8
+ multiselect<T>(options: MultiSelectPromptOptions<T>): Promise<T[]>;
9
+ }
10
+ export declare const prompt: Prompt;
11
+ export {};
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.prompt = void 0;
4
+ const prompts_1 = require("@clack/prompts");
5
+ class Prompt {
6
+ handleCancel(value) {
7
+ if ((0, prompts_1.isCancel)(value)) {
8
+ (0, prompts_1.cancel)("Operation cancelled.");
9
+ process.exit(0);
10
+ }
11
+ }
12
+ handleError(error) {
13
+ console.error("\n❌ An unexpected error occurred.");
14
+ if (error instanceof Error) {
15
+ console.error(error.message);
16
+ }
17
+ else {
18
+ console.error(error);
19
+ }
20
+ process.exit(1);
21
+ }
22
+ async select(options) {
23
+ try {
24
+ const value = await (0, prompts_1.select)({
25
+ message: options.message,
26
+ options: options.options,
27
+ initialValue: options.initialValue,
28
+ });
29
+ this.handleCancel(value);
30
+ return value;
31
+ }
32
+ catch (error) {
33
+ return this.handleError(error);
34
+ }
35
+ }
36
+ async confirm(options) {
37
+ try {
38
+ const value = await (0, prompts_1.confirm)({
39
+ message: options.message,
40
+ initialValue: options.initialValue ?? true,
41
+ });
42
+ this.handleCancel(value);
43
+ return value;
44
+ }
45
+ catch (error) {
46
+ return this.handleError(error);
47
+ }
48
+ }
49
+ async input(options) {
50
+ try {
51
+ const value = await (0, prompts_1.text)({
52
+ message: options.message,
53
+ placeholder: options.placeholder,
54
+ defaultValue: options.defaultValue,
55
+ validate: options.validate,
56
+ });
57
+ this.handleCancel(value);
58
+ return value;
59
+ }
60
+ catch (error) {
61
+ return this.handleError(error);
62
+ }
63
+ }
64
+ async multiselect(options) {
65
+ try {
66
+ const value = await (0, prompts_1.multiselect)({
67
+ message: options.message,
68
+ options: options.options,
69
+ initialValues: options.initialValues,
70
+ required: options.required,
71
+ });
72
+ this.handleCancel(value);
73
+ return value;
74
+ }
75
+ catch (error) {
76
+ return this.handleError(error);
77
+ }
78
+ }
79
+ }
80
+ exports.prompt = new Prompt();
81
+ //# sourceMappingURL=prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../../src/shared/helpers/prompt/prompt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { Option, TextOptions } from "@clack/prompts";
2
+ export interface SelectOption<T = string> {
3
+ label: string;
4
+ value: T;
5
+ hint?: string;
6
+ }
7
+ export interface SelectPromptOptions<T = string> {
8
+ message: string;
9
+ options: Option<T>[];
10
+ initialValue?: T;
11
+ }
12
+ export interface ConfirmPromptOptions {
13
+ message: string;
14
+ initialValue?: boolean;
15
+ }
16
+ export interface InputPromptOptions extends TextOptions {
17
+ message: string;
18
+ placeholder?: string;
19
+ defaultValue?: string;
20
+ }
21
+ export interface MultiSelectPromptOptions<T = string> {
22
+ /**
23
+ * Prompt message displayed to the user.
24
+ */
25
+ message: string;
26
+ /**
27
+ * Available options.
28
+ */
29
+ options: Option<T>[];
30
+ /**
31
+ * Initially selected values.
32
+ */
33
+ initialValues?: T[];
34
+ /**
35
+ * Whether at least one option must be selected.
36
+ *
37
+ * Default: false
38
+ */
39
+ required?: boolean;
40
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=prompt.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.types.js","sourceRoot":"","sources":["../../../../src/shared/helpers/prompt/prompt.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ export type ExecOptions = {
2
+ cwd?: string;
3
+ env?: NodeJS.ProcessEnv;
4
+ timeout?: number;
5
+ throwOnError?: boolean;
6
+ maxBuffer?: number;
7
+ };
8
+ export type ExecResult = {
9
+ stdout: string;
10
+ stderr: string;
11
+ durationMs: number;
12
+ success: boolean;
13
+ command: string;
14
+ };
15
+ export declare function exec(command: string, options?: ExecOptions): Promise<ExecResult>;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.exec = exec;
4
+ const child_process_1 = require("child_process");
5
+ async function exec(command, options = {}) {
6
+ const startedAt = Date.now();
7
+ const { cwd, env, timeout = 10000, throwOnError = false, maxBuffer = 10 * 1024 * 1024, } = options;
8
+ return new Promise((resolve, reject) => {
9
+ (0, child_process_1.exec)(command, {
10
+ cwd,
11
+ env,
12
+ timeout,
13
+ maxBuffer,
14
+ }, (error, stdout, stderr) => {
15
+ const result = {
16
+ stdout: stdout.trim(),
17
+ stderr: stderr.trim(),
18
+ durationMs: Date.now() - startedAt,
19
+ success: !error,
20
+ command,
21
+ };
22
+ if (error && throwOnError) {
23
+ const finalError = new Error(stderr.trim() || error.message);
24
+ return reject(finalError);
25
+ }
26
+ resolve(result);
27
+ });
28
+ });
29
+ }
30
+ //# sourceMappingURL=exec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exec.js","sourceRoot":"","sources":["../../../../src/shared/helpers/shell/exec.ts"],"names":[],"mappings":";;AAkBA,oBAuCC;AAzDD,iDAAiD;AAkB1C,KAAK,UAAU,IAAI,CACxB,OAAe,EACf,UAAuB,EAAE;IAEzB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,MAAM,EACJ,GAAG,EACH,GAAG,EACH,OAAO,GAAG,KAAK,EACf,YAAY,GAAG,KAAK,EACpB,SAAS,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,GAC7B,GAAG,OAAO,CAAC;IAEZ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAA,oBAAQ,EACN,OAAO,EACP;YACE,GAAG;YACH,GAAG;YACH,OAAO;YACP,SAAS;SACV,EACD,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACxB,MAAM,MAAM,GAAe;gBACzB,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;gBACrB,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;gBACrB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBAClC,OAAO,EAAE,CAAC,KAAK;gBACf,OAAO;aACR,CAAC;YACF,IAAI,KAAK,IAAI,YAAY,EAAE,CAAC;gBAC1B,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC7D,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC;YAC5B,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=spawn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../../../src/shared/helpers/shell/spawn.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=common.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.types.js","sourceRoot":"","sources":["../../../src/shared/types/common.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ export declare class StepProgress {
2
+ private readonly steps;
3
+ private current;
4
+ constructor(stepTitles: string[]);
5
+ start(): void;
6
+ complete(index: number): void;
7
+ fail(index: number): void;
8
+ finish(): void;
9
+ private render;
10
+ }
11
+ export declare class ProgressBar {
12
+ private readonly steps;
13
+ private readonly total;
14
+ private completed;
15
+ constructor(steps: string[]);
16
+ start(): void;
17
+ complete(count: number): void;
18
+ private render;
19
+ }
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProgressBar = exports.StepProgress = void 0;
4
+ var StepStatus;
5
+ (function (StepStatus) {
6
+ StepStatus[StepStatus["Pending"] = 0] = "Pending";
7
+ StepStatus[StepStatus["Running"] = 1] = "Running";
8
+ StepStatus[StepStatus["Success"] = 2] = "Success";
9
+ StepStatus[StepStatus["Failed"] = 3] = "Failed";
10
+ })(StepStatus || (StepStatus = {}));
11
+ class StepProgress {
12
+ steps;
13
+ current = -1;
14
+ constructor(stepTitles) {
15
+ this.steps = stepTitles.map((title) => ({
16
+ title,
17
+ status: StepStatus.Pending,
18
+ }));
19
+ }
20
+ start() {
21
+ if (this.steps.length === 0) {
22
+ return;
23
+ }
24
+ this.current = 0;
25
+ this.steps[0].status = StepStatus.Running;
26
+ this.render();
27
+ }
28
+ complete(index) {
29
+ if (index < 0 || index >= this.steps.length) {
30
+ return;
31
+ }
32
+ this.steps[index].status = StepStatus.Success;
33
+ if (index + 1 < this.steps.length) {
34
+ this.current = index + 1;
35
+ this.steps[index + 1].status = StepStatus.Running;
36
+ }
37
+ this.render();
38
+ }
39
+ fail(index) {
40
+ if (index < 0 || index >= this.steps.length) {
41
+ return;
42
+ }
43
+ this.steps[index].status = StepStatus.Failed;
44
+ this.render();
45
+ }
46
+ finish() {
47
+ this.current = -1;
48
+ this.render();
49
+ }
50
+ render() {
51
+ console.clear();
52
+ console.log("Git Progress\n");
53
+ for (const step of this.steps) {
54
+ let icon = "○";
55
+ switch (step.status) {
56
+ case StepStatus.Running:
57
+ icon = "▶";
58
+ break;
59
+ case StepStatus.Success:
60
+ icon = "✔";
61
+ break;
62
+ case StepStatus.Failed:
63
+ icon = "✖";
64
+ break;
65
+ }
66
+ console.log(`${icon} ${step.title}`);
67
+ }
68
+ }
69
+ }
70
+ exports.StepProgress = StepProgress;
71
+ class ProgressBar {
72
+ steps;
73
+ total;
74
+ completed = 0;
75
+ constructor(steps) {
76
+ this.steps = steps;
77
+ this.total = steps.length;
78
+ }
79
+ start() {
80
+ this.render();
81
+ }
82
+ complete(count) {
83
+ this.completed = Math.min(count, this.total);
84
+ this.render();
85
+ if (this.completed === this.total) {
86
+ console.log("\n✔ Completed");
87
+ }
88
+ }
89
+ render() {
90
+ const width = 30;
91
+ const progress = this.completed / this.total;
92
+ const filled = Math.round(progress * width);
93
+ const empty = width - filled;
94
+ const percent = Math.round(progress * 100);
95
+ process.stdout.write("\r");
96
+ process.stdout.write(`[${"█".repeat(filled)}${"░".repeat(empty)}] ${percent}% (${this.completed}/${this.total})`);
97
+ }
98
+ }
99
+ exports.ProgressBar = ProgressBar;
100
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/shared/ui/stepProgress/index.ts"],"names":[],"mappings":";;;AAAA,IAAK,UAKJ;AALD,WAAK,UAAU;IACb,iDAAO,CAAA;IACP,iDAAO,CAAA;IACP,iDAAO,CAAA;IACP,+CAAM,CAAA;AACR,CAAC,EALI,UAAU,KAAV,UAAU,QAKd;AAOD,MAAa,YAAY;IACN,KAAK,CAAS;IAEvB,OAAO,GAAG,CAAC,CAAC,CAAC;IAErB,YAAY,UAAoB;QAC9B,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACtC,KAAK;YACL,MAAM,EAAE,UAAU,CAAC,OAAO;SAC3B,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC;QAE1C,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAED,QAAQ,CAAC,KAAa;QACpB,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC;QAE9C,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC;QACpD,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,KAAa;QAChB,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAE7C,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;QAElB,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEO,MAAM;QACZ,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAE9B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,IAAI,GAAG,GAAG,CAAC;YAEf,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;gBACpB,KAAK,UAAU,CAAC,OAAO;oBACrB,IAAI,GAAG,GAAG,CAAC;oBACX,MAAM;gBAER,KAAK,UAAU,CAAC,OAAO;oBACrB,IAAI,GAAG,GAAG,CAAC;oBACX,MAAM;gBAER,KAAK,UAAU,CAAC,MAAM;oBACpB,IAAI,GAAG,GAAG,CAAC;oBACX,MAAM;YACV,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;CACF;AA/ED,oCA+EC;AAED,MAAa,WAAW;IAKO;IAJZ,KAAK,CAAS;IAEvB,SAAS,GAAG,CAAC,CAAC;IAEtB,YAA6B,KAAe;QAAf,UAAK,GAAL,KAAK,CAAU;QAC1C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAED,QAAQ,CAAC,KAAa;QACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAE7C,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAEO,MAAM;QACZ,MAAM,KAAK,GAAG,EAAE,CAAC;QAEjB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;QAE7C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;QAE5C,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;QAE7B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;QAE3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,OAAO,MAAM,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,GAAG,CAC5F,CAAC;IACJ,CAAC;CACF;AAxCD,kCAwCC"}
@@ -0,0 +1,6 @@
1
+ export declare class Writer {
2
+ write(text: string, delay?: number): Promise<void>;
3
+ writeln(text: string, delay?: number): Promise<void>;
4
+ private calculateDelay;
5
+ }
6
+ export declare const writer: Writer;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.writer = exports.Writer = void 0;
4
+ class Writer {
5
+ async write(text, delay) {
6
+ // If delay is explicitly provided
7
+ const characterDelay = delay ?? this.calculateDelay(text);
8
+ for (const char of text) {
9
+ process.stdout.write(char);
10
+ // Don't delay after whitespace/newlines
11
+ if (char === " " || char === "\n" || char === "\r") {
12
+ continue;
13
+ }
14
+ await new Promise((resolve) => setTimeout(resolve, characterDelay));
15
+ }
16
+ }
17
+ async writeln(text, delay) {
18
+ await this.write(text, delay);
19
+ process.stdout.write("\n");
20
+ }
21
+ calculateDelay(text) {
22
+ const length = text.length;
23
+ if (length <= 30)
24
+ return 26;
25
+ if (length <= 80)
26
+ return 20;
27
+ if (length <= 150)
28
+ return 8;
29
+ if (length <= 300)
30
+ return 4;
31
+ return 1;
32
+ }
33
+ }
34
+ exports.Writer = Writer;
35
+ exports.writer = new Writer();
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/shared/ui/writer/index.ts"],"names":[],"mappings":";;;AAAA,MAAa,MAAM;IACjB,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,KAAc;QACtC,kCAAkC;QAClC,MAAM,cAAc,GAAG,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAE1D,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;YACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAE3B,wCAAwC;YACxC,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBACnD,SAAS;YACX,CAAC;YAED,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,KAAc;QACxC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAE9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAEO,cAAc,CAAC,IAAY;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,MAAM,IAAI,EAAE;YAAE,OAAO,EAAE,CAAC;QAC5B,IAAI,MAAM,IAAI,EAAE;YAAE,OAAO,EAAE,CAAC;QAC5B,IAAI,MAAM,IAAI,GAAG;YAAE,OAAO,CAAC,CAAC;QAC5B,IAAI,MAAM,IAAI,GAAG;YAAE,OAAO,CAAC,CAAC;QAC5B,OAAO,CAAC,CAAC;IACX,CAAC;CACF;AA/BD,wBA+BC;AAEY,QAAA,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,51 @@
1
1
  {
2
2
  "name": "vh-dev-helper",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "1.0.1",
4
+ "description": "Developer productivity CLI and dashboard toolkit",
5
+ "type": "commonjs",
6
+ "main": "dist/bin/index.js",
7
+ "bin": {
8
+ "vh": "dist/bin/index.js"
9
+ },
10
+ "files": [
11
+ "dist/**/*",
12
+ "README.md",
13
+ "LICENSE"
14
+ ],
15
+ "exports": {
16
+ ".": "./dist/bin/index.js"
17
+ },
18
+ "scripts": {
19
+ "clean": "rm -rf dist",
20
+ "build": "tsc -p tsconfig.json",
21
+ "prepare": "yarn build",
22
+ "dev": "tsc -w",
23
+ "prepublishOnly": "yarn clean && yarn build"
24
+ },
25
+ "keywords": [
26
+ "cli",
27
+ "dashboard",
28
+ "developer-tools",
29
+ "monitoring"
30
+ ],
31
+ "engines": {
32
+ "node": ">=20"
33
+ },
34
+ "publishConfig": {
35
+ "access": "public"
36
+ },
37
+ "license": "MIT",
38
+ "dependencies": {
39
+ "@clack/prompts": "^1.6.0",
40
+ "chalk": "^5.6.2",
41
+ "cli-progress": "^3.12.0",
42
+ "cli-table3": "^0.6.5",
43
+ "commander": "^15.0.0",
44
+ "enquirer": "^2.4.1",
45
+ "log-update": "^8.0.0",
46
+ "typescript": "^6.0.3"
47
+ },
48
+ "devDependencies": {
49
+ "@types/node": "^25.9.1"
50
+ }
51
+ }
package/README.md DELETED
@@ -1,3 +0,0 @@
1
- # Temporary Holding Version
2
-
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.