@mehmetsagir/git-ai 0.0.4 → 0.0.5

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.
@@ -41,6 +41,7 @@ exports.addMoreGitUsers = addMoreGitUsers;
41
41
  const inquirer_1 = __importDefault(require("inquirer"));
42
42
  const chalk_1 = __importDefault(require("chalk"));
43
43
  const config = __importStar(require("./config"));
44
+ const validation_1 = require("./utils/validation");
44
45
  /**
45
46
  * Add shortcuts to each user profile
46
47
  */
@@ -63,25 +64,10 @@ async function addShortcutsToProfiles(profiles) {
63
64
  type: 'input',
64
65
  name: 'shortcutKey',
65
66
  message: 'Enter shortcut key (e.g., g, my, work, personal) or "q" to skip:',
66
- validate: (input) => {
67
- const key = input.trim().toLowerCase();
68
- if (key === 'q') {
69
- return true;
70
- }
71
- if (!key || key.length === 0) {
72
- return 'Shortcut key is required!';
73
- }
74
- if (usedShortcuts.has(key)) {
75
- return 'This shortcut is already in use!';
76
- }
77
- if (key.includes(' ')) {
78
- return 'Shortcut cannot contain spaces!';
79
- }
80
- return true;
81
- }
67
+ validate: (input) => (0, validation_1.validateShortcut)(input, usedShortcuts)
82
68
  }
83
69
  ]);
84
- if (shortcutKey.trim().toLowerCase() !== 'q') {
70
+ if (!(0, validation_1.isCancellation)(shortcutKey)) {
85
71
  shortcut = shortcutKey.trim().toLowerCase();
86
72
  usedShortcuts.add(shortcut);
87
73
  console.log(chalk_1.default.green(`✓ Shortcut added: ${shortcut} → ${profile.label}\n`));
@@ -106,37 +92,16 @@ async function addMoreGitUsers(existingProfiles) {
106
92
  type: 'input',
107
93
  name: 'name',
108
94
  message: 'Git user name (or "q" to cancel):',
109
- validate: (input) => {
110
- const trimmed = input.trim();
111
- if (trimmed.toLowerCase() === 'q') {
112
- return true;
113
- }
114
- return trimmed.length > 0 || 'Name is required!';
115
- }
95
+ validate: validation_1.validateUserName
116
96
  },
117
97
  {
118
98
  type: 'input',
119
99
  name: 'email',
120
100
  message: 'Git user email (or "q" to cancel):',
121
- validate: (input) => {
122
- const trimmed = input.trim();
123
- if (trimmed.toLowerCase() === 'q') {
124
- return true;
125
- }
126
- if (!trimmed || trimmed.length === 0) {
127
- return 'Email is required!';
128
- }
129
- if (!trimmed.includes('@')) {
130
- return 'Please enter a valid email address!';
131
- }
132
- if (newProfiles.some(p => p.email === trimmed)) {
133
- return 'This email is already added!';
134
- }
135
- return true;
136
- }
101
+ validate: (input) => (0, validation_1.validateUserEmail)(input, newProfiles.map(p => p.email))
137
102
  }
138
103
  ]);
139
- if (name.trim().toLowerCase() === 'q' || email.trim().toLowerCase() === 'q') {
104
+ if ((0, validation_1.isCancellation)(name) || (0, validation_1.isCancellation)(email)) {
140
105
  config.setGitUsers(newProfiles);
141
106
  console.log(chalk_1.default.yellow('⚠ User addition cancelled. Continuing with setup...\n'));
142
107
  break;
@@ -178,25 +143,10 @@ async function addMoreGitUsers(existingProfiles) {
178
143
  type: 'input',
179
144
  name: 'shortcutKey',
180
145
  message: 'Enter shortcut key (e.g., g, my, work, personal) or "q" to skip:',
181
- validate: (input) => {
182
- const key = input.trim().toLowerCase();
183
- if (key === 'q') {
184
- return true;
185
- }
186
- if (!key || key.length === 0) {
187
- return 'Shortcut key is required!';
188
- }
189
- if (usedShortcuts.has(key)) {
190
- return 'This shortcut is already in use!';
191
- }
192
- if (key.includes(' ')) {
193
- return 'Shortcut cannot contain spaces!';
194
- }
195
- return true;
196
- }
146
+ validate: (input) => (0, validation_1.validateShortcut)(input, usedShortcuts)
197
147
  }
198
148
  ]);
199
- if (shortcutKey.trim().toLowerCase() !== 'q') {
149
+ if (!(0, validation_1.isCancellation)(shortcutKey)) {
200
150
  newProfile.shortcut = shortcutKey.trim().toLowerCase();
201
151
  usedShortcuts.add(newProfile.shortcut);
202
152
  }
@@ -1 +1 @@
1
- {"version":3,"file":"user-management.js","sourceRoot":"","sources":["../src/user-management.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user-management.js","sourceRoot":"","sources":["../src/user-management.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Error handling utilities
3
+ */
4
+ /**
5
+ * Safely convert unknown error to Error instance
6
+ */
7
+ export declare function toError(error: unknown): Error;
8
+ /**
9
+ * Extract error message from unknown error
10
+ */
11
+ export declare function getErrorMessage(error: unknown): string;
12
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAQ7C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEtD"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ /**
3
+ * Error handling utilities
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.toError = toError;
7
+ exports.getErrorMessage = getErrorMessage;
8
+ /**
9
+ * Safely convert unknown error to Error instance
10
+ */
11
+ function toError(error) {
12
+ if (error instanceof Error) {
13
+ return error;
14
+ }
15
+ if (typeof error === 'string') {
16
+ return new Error(error);
17
+ }
18
+ return new Error('Unknown error occurred');
19
+ }
20
+ /**
21
+ * Extract error message from unknown error
22
+ */
23
+ function getErrorMessage(error) {
24
+ return toError(error).message;
25
+ }
26
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAKH,0BAQC;AAKD,0CAEC;AAlBD;;GAEG;AACH,SAAgB,OAAO,CAAC,KAAc;IACpC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,KAAc;IAC5C,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;AAChC,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Validation utilities for user input
3
+ */
4
+ /**
5
+ * Validate OpenAI API key format
6
+ */
7
+ export declare function validateOpenAIKey(input: string): string | true;
8
+ /**
9
+ * Validate git user name (allows "q" to cancel)
10
+ */
11
+ export declare function validateUserName(input: string): string | true;
12
+ /**
13
+ * Validate git user email (allows "q" to cancel)
14
+ */
15
+ export declare function validateUserEmail(input: string, existingEmails?: string[]): string | true;
16
+ /**
17
+ * Validate shortcut key
18
+ */
19
+ export declare function validateShortcut(input: string, usedShortcuts: Set<string>): string | true;
20
+ /**
21
+ * Check if input is cancellation ("q")
22
+ */
23
+ export declare function isCancellation(input: string): boolean;
24
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS9D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS7D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,cAAc,GAAE,MAAM,EAAO,GAC5B,MAAM,GAAG,IAAI,CAef;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,GACzB,MAAM,GAAG,IAAI,CAef;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAErD"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ /**
3
+ * Validation utilities for user input
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.validateOpenAIKey = validateOpenAIKey;
7
+ exports.validateUserName = validateUserName;
8
+ exports.validateUserEmail = validateUserEmail;
9
+ exports.validateShortcut = validateShortcut;
10
+ exports.isCancellation = isCancellation;
11
+ /**
12
+ * Validate OpenAI API key format
13
+ */
14
+ function validateOpenAIKey(input) {
15
+ const trimmed = input.trim();
16
+ if (trimmed.length === 0) {
17
+ return "OpenAI API Key is required!";
18
+ }
19
+ if (!trimmed.startsWith("sk-")) {
20
+ return 'OpenAI API Key must start with "sk-"!';
21
+ }
22
+ return true;
23
+ }
24
+ /**
25
+ * Validate git user name (allows "q" to cancel)
26
+ */
27
+ function validateUserName(input) {
28
+ const trimmed = input.trim();
29
+ if (trimmed.toLowerCase() === "q") {
30
+ return true;
31
+ }
32
+ if (trimmed.length === 0) {
33
+ return "Name is required!";
34
+ }
35
+ return true;
36
+ }
37
+ /**
38
+ * Validate git user email (allows "q" to cancel)
39
+ */
40
+ function validateUserEmail(input, existingEmails = []) {
41
+ const trimmed = input.trim();
42
+ if (trimmed.toLowerCase() === "q") {
43
+ return true;
44
+ }
45
+ if (trimmed.length === 0) {
46
+ return "Email is required!";
47
+ }
48
+ if (!trimmed.includes("@")) {
49
+ return "Please enter a valid email address!";
50
+ }
51
+ if (existingEmails.includes(trimmed)) {
52
+ return "This email is already added!";
53
+ }
54
+ return true;
55
+ }
56
+ /**
57
+ * Validate shortcut key
58
+ */
59
+ function validateShortcut(input, usedShortcuts) {
60
+ const key = input.trim().toLowerCase();
61
+ if (key === "q") {
62
+ return true;
63
+ }
64
+ if (key.length === 0) {
65
+ return "Shortcut key is required!";
66
+ }
67
+ if (usedShortcuts.has(key)) {
68
+ return "This shortcut is already in use!";
69
+ }
70
+ if (key.includes(" ")) {
71
+ return "Shortcut cannot contain spaces!";
72
+ }
73
+ return true;
74
+ }
75
+ /**
76
+ * Check if input is cancellation ("q")
77
+ */
78
+ function isCancellation(input) {
79
+ return input.trim().toLowerCase() === "q";
80
+ }
81
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAKH,8CASC;AAKD,4CASC;AAKD,8CAkBC;AAKD,4CAkBC;AAKD,wCAEC;AA/ED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,KAAa;IAC7C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,6BAA6B,CAAC;IACvC,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,uCAAuC,CAAC;IACjD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,KAAa;IAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAC/B,KAAa,EACb,iBAA2B,EAAE;IAE7B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,qCAAqC,CAAC;IAC/C,CAAC;IACD,IAAI,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACrC,OAAO,8BAA8B,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAC9B,KAAa,EACb,aAA0B;IAE1B,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACvC,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,2BAA2B,CAAC;IACrC,CAAC;IACD,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,kCAAkC,CAAC;IAC5C,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,iCAAiC,CAAC;IAC3C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,KAAa;IAC1C,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC;AAC5C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mehmetsagir/git-ai",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "description": "AI-powered git commit tool that analyzes diffs and creates conventional commit messages",
5
5
  "main": "dist/index.js",
6
6
  "bin": {