@alejandrochaves/devflow-cli 1.3.2 → 1.4.0

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 (59) hide show
  1. package/dist/commands/amend.d.ts.map +1 -1
  2. package/dist/commands/amend.js +139 -68
  3. package/dist/commands/amend.js.map +1 -1
  4. package/dist/commands/branch.d.ts.map +1 -1
  5. package/dist/commands/branch.js +201 -80
  6. package/dist/commands/branch.js.map +1 -1
  7. package/dist/commands/changelog.d.ts.map +1 -1
  8. package/dist/commands/changelog.js +62 -32
  9. package/dist/commands/changelog.js.map +1 -1
  10. package/dist/commands/cleanup.d.ts.map +1 -1
  11. package/dist/commands/cleanup.js +10 -3
  12. package/dist/commands/cleanup.js.map +1 -1
  13. package/dist/commands/commit.d.ts.map +1 -1
  14. package/dist/commands/commit.js +343 -175
  15. package/dist/commands/commit.js.map +1 -1
  16. package/dist/commands/fixup.d.ts.map +1 -1
  17. package/dist/commands/fixup.js +129 -81
  18. package/dist/commands/fixup.js.map +1 -1
  19. package/dist/commands/init.d.ts.map +1 -1
  20. package/dist/commands/init.js +223 -110
  21. package/dist/commands/init.js.map +1 -1
  22. package/dist/commands/issue.d.ts.map +1 -1
  23. package/dist/commands/issue.js +341 -83
  24. package/dist/commands/issue.js.map +1 -1
  25. package/dist/commands/issues.d.ts.map +1 -1
  26. package/dist/commands/issues.js +166 -77
  27. package/dist/commands/issues.js.map +1 -1
  28. package/dist/commands/log.d.ts.map +1 -1
  29. package/dist/commands/log.js +81 -46
  30. package/dist/commands/log.js.map +1 -1
  31. package/dist/commands/merge.d.ts.map +1 -1
  32. package/dist/commands/merge.js +78 -38
  33. package/dist/commands/merge.js.map +1 -1
  34. package/dist/commands/pr.d.ts.map +1 -1
  35. package/dist/commands/pr.js +110 -42
  36. package/dist/commands/pr.js.map +1 -1
  37. package/dist/commands/release.d.ts.map +1 -1
  38. package/dist/commands/release.js +70 -37
  39. package/dist/commands/release.js.map +1 -1
  40. package/dist/commands/review.d.ts.map +1 -1
  41. package/dist/commands/review.js +144 -84
  42. package/dist/commands/review.js.map +1 -1
  43. package/dist/commands/stash.d.ts.map +1 -1
  44. package/dist/commands/stash.js +164 -94
  45. package/dist/commands/stash.js.map +1 -1
  46. package/dist/commands/test-plan.d.ts.map +1 -1
  47. package/dist/commands/test-plan.js +86 -42
  48. package/dist/commands/test-plan.js.map +1 -1
  49. package/dist/commands/update.d.ts.map +1 -1
  50. package/dist/commands/update.js +9 -3
  51. package/dist/commands/update.js.map +1 -1
  52. package/dist/commands/worktree.d.ts.map +1 -1
  53. package/dist/commands/worktree.js +168 -96
  54. package/dist/commands/worktree.js.map +1 -1
  55. package/dist/prompts.d.ts +62 -0
  56. package/dist/prompts.d.ts.map +1 -0
  57. package/dist/prompts.js +130 -0
  58. package/dist/prompts.js.map +1 -0
  59. package/package.json +3 -2
@@ -0,0 +1,62 @@
1
+ export declare const BACK_VALUE = "__BACK__";
2
+ interface SelectChoice<T> {
3
+ value: T;
4
+ name: string;
5
+ description?: string;
6
+ }
7
+ interface SelectWithBackOptions<T> {
8
+ message: string;
9
+ choices: SelectChoice<T>[];
10
+ default?: T;
11
+ showBack?: boolean;
12
+ }
13
+ export declare function selectWithBack<T>(options: SelectWithBackOptions<T>): Promise<T | typeof BACK_VALUE>;
14
+ interface InputWithBackOptions {
15
+ message: string;
16
+ default?: string;
17
+ validate?: (value: string) => boolean | string;
18
+ showBack?: boolean;
19
+ }
20
+ export declare function inputWithBack(options: InputWithBackOptions): Promise<string | typeof BACK_VALUE>;
21
+ interface ConfirmWithBackOptions {
22
+ message: string;
23
+ default?: boolean;
24
+ showBack?: boolean;
25
+ }
26
+ export declare function confirmWithBack(options: ConfirmWithBackOptions): Promise<boolean | typeof BACK_VALUE>;
27
+ interface CheckboxChoice<T> {
28
+ value: T;
29
+ name: string;
30
+ checked?: boolean;
31
+ }
32
+ interface CheckboxWithBackOptions<T> {
33
+ message: string;
34
+ choices: CheckboxChoice<T>[];
35
+ required?: boolean;
36
+ showBack?: boolean;
37
+ }
38
+ export declare function checkboxWithBack<T>(options: CheckboxWithBackOptions<T>): Promise<T[] | typeof BACK_VALUE>;
39
+ interface SearchChoice<T> {
40
+ value: T;
41
+ name: string;
42
+ }
43
+ interface SearchWithBackOptions<T> {
44
+ message: string;
45
+ source: (term: string | undefined) => SearchChoice<T>[] | Promise<SearchChoice<T>[]>;
46
+ showBack?: boolean;
47
+ }
48
+ export declare function searchWithBack<T>(options: SearchWithBackOptions<T>): Promise<T | typeof BACK_VALUE>;
49
+ export type StepResult<T> = {
50
+ action: "next";
51
+ value: T;
52
+ } | {
53
+ action: "back";
54
+ };
55
+ export interface Step<TState> {
56
+ id: string;
57
+ run: (state: TState, isFirst: boolean) => Promise<StepResult<Partial<TState>>>;
58
+ skip?: (state: TState) => boolean;
59
+ }
60
+ export declare function runSteps<TState extends Record<string, unknown>>(steps: Step<TState>[], initialState: TState): Promise<TState>;
61
+ export {};
62
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ import { select, input, confirm, checkbox, search } from "@inquirer/prompts";
2
+ import * as readline from "readline";
3
+ export const BACK_VALUE = "__BACK__";
4
+ // Track the current abort controller for escape key handling
5
+ let currentAbortController = null;
6
+ let escapeListenerSetup = false;
7
+ /**
8
+ * Sets up a global keypress listener for the Escape key.
9
+ * When Escape is pressed during a prompt with showBack enabled,
10
+ * it aborts the prompt and returns BACK_VALUE.
11
+ */
12
+ function setupEscapeListener() {
13
+ if (escapeListenerSetup)
14
+ return;
15
+ escapeListenerSetup = true;
16
+ // Enable keypress events on stdin
17
+ readline.emitKeypressEvents(process.stdin);
18
+ process.stdin.on("keypress", (_str, key) => {
19
+ if (key && key.name === "escape" && currentAbortController) {
20
+ currentAbortController.abort();
21
+ }
22
+ });
23
+ }
24
+ /**
25
+ * Wraps a prompt function to support Escape key for back navigation.
26
+ * When showBack is true, pressing Escape will abort the prompt and return BACK_VALUE.
27
+ */
28
+ async function withEscapeBack(showBack, promptFn) {
29
+ if (!showBack) {
30
+ return promptFn();
31
+ }
32
+ setupEscapeListener();
33
+ const controller = new AbortController();
34
+ currentAbortController = controller;
35
+ try {
36
+ const result = await promptFn(controller.signal);
37
+ currentAbortController = null;
38
+ return result;
39
+ }
40
+ catch (error) {
41
+ currentAbortController = null;
42
+ // Check if this was an abort (Escape key pressed)
43
+ // @inquirer/prompts throws AbortPromptError when aborted
44
+ if (error instanceof Error && (error.name === "AbortPromptError" || error.name === "AbortError")) {
45
+ return BACK_VALUE;
46
+ }
47
+ throw error;
48
+ }
49
+ }
50
+ export async function selectWithBack(options) {
51
+ const message = options.showBack
52
+ ? `${options.message} ${dim("(Esc to go back)")}`
53
+ : options.message;
54
+ return withEscapeBack(options.showBack ?? false, (signal) => select({
55
+ message,
56
+ choices: options.choices,
57
+ default: options.default,
58
+ }, { signal }));
59
+ }
60
+ export async function inputWithBack(options) {
61
+ const message = options.showBack
62
+ ? `${options.message} ${dim("(Esc to go back)")}`
63
+ : options.message;
64
+ return withEscapeBack(options.showBack ?? false, (signal) => input({
65
+ message,
66
+ default: options.default,
67
+ validate: options.validate,
68
+ }, { signal }));
69
+ }
70
+ export async function confirmWithBack(options) {
71
+ const message = options.showBack
72
+ ? `${options.message} ${dim("(Esc to go back)")}`
73
+ : options.message;
74
+ return withEscapeBack(options.showBack ?? false, (signal) => confirm({
75
+ message,
76
+ default: options.default,
77
+ }, { signal }));
78
+ }
79
+ export async function checkboxWithBack(options) {
80
+ const message = options.showBack
81
+ ? `${options.message} ${dim("(Esc to go back)")}`
82
+ : options.message;
83
+ return withEscapeBack(options.showBack ?? false, (signal) => checkbox({
84
+ message,
85
+ choices: options.choices,
86
+ required: options.required,
87
+ }, { signal }));
88
+ }
89
+ export async function searchWithBack(options) {
90
+ const message = options.showBack
91
+ ? `${options.message} ${dim("(Esc to go back)")}`
92
+ : options.message;
93
+ return withEscapeBack(options.showBack ?? false, (signal) => search({
94
+ message,
95
+ source: options.source,
96
+ }, { signal }));
97
+ }
98
+ // Helper for dim text (used in prompts)
99
+ function dim(text) {
100
+ return `\x1b[2m${text}\x1b[22m`;
101
+ }
102
+ export async function runSteps(steps, initialState) {
103
+ let state = { ...initialState };
104
+ let stepIndex = 0;
105
+ while (stepIndex < steps.length) {
106
+ const step = steps[stepIndex];
107
+ // Check if step should be skipped
108
+ if (step.skip && step.skip(state)) {
109
+ stepIndex++;
110
+ continue;
111
+ }
112
+ const isFirst = stepIndex === 0;
113
+ const result = await step.run(state, isFirst);
114
+ if (result.action === "back") {
115
+ // Go back to previous non-skipped step
116
+ stepIndex--;
117
+ while (stepIndex > 0 && steps[stepIndex].skip && steps[stepIndex].skip(state)) {
118
+ stepIndex--;
119
+ }
120
+ if (stepIndex < 0)
121
+ stepIndex = 0;
122
+ }
123
+ else {
124
+ state = { ...state, ...result.value };
125
+ stepIndex++;
126
+ }
127
+ }
128
+ return state;
129
+ }
130
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alejandrochaves/devflow-cli",
3
- "version": "1.3.2",
3
+ "version": "1.4.0",
4
4
  "description": "Interactive CLI for branch creation, conventional commits, and PR management",
5
5
  "type": "module",
6
6
  "bin": {
@@ -8,7 +8,8 @@
8
8
  },
9
9
  "scripts": {
10
10
  "build": "tsc",
11
- "dev": "tsc --watch",
11
+ "predev": "npm run build && npm link",
12
+ "dev": "trap 'npm unlink 2>/dev/null' EXIT && tsc --watch",
12
13
  "test": "vitest run",
13
14
  "test:watch": "vitest",
14
15
  "prepublishOnly": "npm run build",