@m3hti/commit-genie 1.2.3 → 1.2.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.
Files changed (102) hide show
  1. package/package.json +1 -1
  2. package/dist/commands/config.d.ts +0 -3
  3. package/dist/commands/config.d.ts.map +0 -1
  4. package/dist/commands/config.js +0 -31
  5. package/dist/commands/config.js.map +0 -1
  6. package/dist/commands/generate.d.ts +0 -12
  7. package/dist/commands/generate.d.ts.map +0 -1
  8. package/dist/commands/generate.js +0 -550
  9. package/dist/commands/generate.js.map +0 -1
  10. package/dist/commands/generate.test.d.ts +0 -2
  11. package/dist/commands/generate.test.d.ts.map +0 -1
  12. package/dist/commands/generate.test.js +0 -168
  13. package/dist/commands/generate.test.js.map +0 -1
  14. package/dist/commands/hook.d.ts +0 -4
  15. package/dist/commands/hook.d.ts.map +0 -1
  16. package/dist/commands/hook.js +0 -62
  17. package/dist/commands/hook.js.map +0 -1
  18. package/dist/commands/stats.d.ts +0 -6
  19. package/dist/commands/stats.d.ts.map +0 -1
  20. package/dist/commands/stats.js +0 -39
  21. package/dist/commands/stats.js.map +0 -1
  22. package/dist/data/wordlist.d.ts +0 -11
  23. package/dist/data/wordlist.d.ts.map +0 -1
  24. package/dist/data/wordlist.js +0 -170
  25. package/dist/data/wordlist.js.map +0 -1
  26. package/dist/index.d.ts +0 -3
  27. package/dist/index.d.ts.map +0 -1
  28. package/dist/index.js +0 -81
  29. package/dist/index.js.map +0 -1
  30. package/dist/services/aiService.d.ts +0 -42
  31. package/dist/services/aiService.d.ts.map +0 -1
  32. package/dist/services/aiService.js +0 -224
  33. package/dist/services/aiService.js.map +0 -1
  34. package/dist/services/analyzerService.d.ts +0 -124
  35. package/dist/services/analyzerService.d.ts.map +0 -1
  36. package/dist/services/analyzerService.js +0 -1595
  37. package/dist/services/analyzerService.js.map +0 -1
  38. package/dist/services/analyzerService.test.d.ts +0 -2
  39. package/dist/services/analyzerService.test.d.ts.map +0 -1
  40. package/dist/services/analyzerService.test.js +0 -483
  41. package/dist/services/analyzerService.test.js.map +0 -1
  42. package/dist/services/configService.d.ts +0 -25
  43. package/dist/services/configService.d.ts.map +0 -1
  44. package/dist/services/configService.js +0 -228
  45. package/dist/services/configService.js.map +0 -1
  46. package/dist/services/configService.test.d.ts +0 -2
  47. package/dist/services/configService.test.d.ts.map +0 -1
  48. package/dist/services/configService.test.js +0 -165
  49. package/dist/services/configService.test.js.map +0 -1
  50. package/dist/services/gitService.d.ts +0 -64
  51. package/dist/services/gitService.d.ts.map +0 -1
  52. package/dist/services/gitService.js +0 -303
  53. package/dist/services/gitService.js.map +0 -1
  54. package/dist/services/gitService.test.d.ts +0 -2
  55. package/dist/services/gitService.test.d.ts.map +0 -1
  56. package/dist/services/gitService.test.js +0 -140
  57. package/dist/services/gitService.test.js.map +0 -1
  58. package/dist/services/historyService.d.ts +0 -39
  59. package/dist/services/historyService.d.ts.map +0 -1
  60. package/dist/services/historyService.js +0 -195
  61. package/dist/services/historyService.js.map +0 -1
  62. package/dist/services/historyService.test.d.ts +0 -2
  63. package/dist/services/historyService.test.d.ts.map +0 -1
  64. package/dist/services/historyService.test.js +0 -157
  65. package/dist/services/historyService.test.js.map +0 -1
  66. package/dist/services/hookService.d.ts +0 -29
  67. package/dist/services/hookService.d.ts.map +0 -1
  68. package/dist/services/hookService.js +0 -164
  69. package/dist/services/hookService.js.map +0 -1
  70. package/dist/services/lintService.d.ts +0 -32
  71. package/dist/services/lintService.d.ts.map +0 -1
  72. package/dist/services/lintService.js +0 -191
  73. package/dist/services/lintService.js.map +0 -1
  74. package/dist/services/spellService.d.ts +0 -42
  75. package/dist/services/spellService.d.ts.map +0 -1
  76. package/dist/services/spellService.js +0 -175
  77. package/dist/services/spellService.js.map +0 -1
  78. package/dist/services/splitService.d.ts +0 -32
  79. package/dist/services/splitService.d.ts.map +0 -1
  80. package/dist/services/splitService.js +0 -184
  81. package/dist/services/splitService.js.map +0 -1
  82. package/dist/services/statsService.d.ts +0 -28
  83. package/dist/services/statsService.d.ts.map +0 -1
  84. package/dist/services/statsService.js +0 -204
  85. package/dist/services/statsService.js.map +0 -1
  86. package/dist/types/index.d.ts +0 -217
  87. package/dist/types/index.d.ts.map +0 -1
  88. package/dist/types/index.js +0 -3
  89. package/dist/types/index.js.map +0 -1
  90. package/dist/utils/filePatterns.d.ts +0 -5
  91. package/dist/utils/filePatterns.d.ts.map +0 -1
  92. package/dist/utils/filePatterns.js +0 -77
  93. package/dist/utils/filePatterns.js.map +0 -1
  94. package/dist/utils/filePatterns.test.d.ts +0 -2
  95. package/dist/utils/filePatterns.test.d.ts.map +0 -1
  96. package/dist/utils/filePatterns.test.js +0 -51
  97. package/dist/utils/filePatterns.test.js.map +0 -1
  98. package/dist/utils/prompt.d.ts +0 -4
  99. package/dist/utils/prompt.d.ts.map +0 -1
  100. package/dist/utils/prompt.js +0 -60
  101. package/dist/utils/prompt.js.map +0 -1
  102. package/npm-output.txt +0 -0
@@ -1,25 +0,0 @@
1
- import { CommitGenieConfig } from '../types';
2
- export declare class ConfigService {
3
- private static cachedConfig;
4
- /**
5
- * Find and load the config file
6
- */
7
- static loadConfig(): CommitGenieConfig;
8
- /**
9
- * Get the current config
10
- */
11
- static getConfig(): CommitGenieConfig;
12
- /**
13
- * Clear the cached config (useful for testing)
14
- */
15
- static clearCache(): void;
16
- /**
17
- * Create a default config file
18
- */
19
- static initConfig(): {
20
- success: boolean;
21
- message: string;
22
- path?: string;
23
- };
24
- }
25
- //# sourceMappingURL=configService.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"configService.d.ts","sourceRoot":"","sources":["../../src/services/configService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AA4D7C,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,YAAY,CAAkC;IAE7D;;OAEG;IACH,MAAM,CAAC,UAAU,IAAI,iBAAiB;IAiDtC;;OAEG;IACH,MAAM,CAAC,SAAS,IAAI,iBAAiB;IAIrC;;OAEG;IACH,MAAM,CAAC,UAAU,IAAI,IAAI;IAIzB;;OAEG;IACH,MAAM,CAAC,UAAU,IAAI;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE;CAqE1E"}
@@ -1,228 +0,0 @@
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.ConfigService = void 0;
37
- const fs = __importStar(require("fs"));
38
- const path = __importStar(require("path"));
39
- const gitService_1 = require("./gitService");
40
- const CONFIG_FILES = [
41
- '.commitgenierc.json',
42
- '.commitgenierc',
43
- 'commitgenie.config.json',
44
- ];
45
- const DEFAULT_CONFIG = {
46
- scopes: [],
47
- defaultType: 'feat',
48
- includeEmoji: undefined, // Let history learning decide
49
- maxMessageLength: 72,
50
- customPatterns: [],
51
- ticketLinking: {
52
- enabled: true,
53
- prefix: 'Refs:',
54
- },
55
- learnFromHistory: {
56
- enabled: true,
57
- commitCount: 50,
58
- },
59
- breakingChangeDetection: {
60
- enabled: true,
61
- includeFooter: true,
62
- },
63
- templates: {
64
- default: '{emoji} {type}({scope}): {description}',
65
- noScope: '{emoji} {type}: {description}',
66
- withBody: '{emoji} {type}({scope}): {description}\n\n{body}',
67
- },
68
- ai: {
69
- enabled: false,
70
- provider: 'openai',
71
- model: 'gpt-4o-mini',
72
- },
73
- linting: {
74
- enabled: true,
75
- blockOnError: true,
76
- rules: {
77
- subjectMaxLength: { enabled: true, maxLength: 72 },
78
- typeRequired: { enabled: true },
79
- scopeFormat: { enabled: true },
80
- imperativeMood: { enabled: true },
81
- },
82
- },
83
- splitting: {
84
- enabled: true,
85
- minFilesForSuggestion: 2,
86
- groupByScope: true,
87
- groupByType: true,
88
- },
89
- spellCheck: {
90
- enabled: true,
91
- customDictionary: [],
92
- ignorePatterns: [],
93
- },
94
- };
95
- class ConfigService {
96
- /**
97
- * Find and load the config file
98
- */
99
- static loadConfig() {
100
- if (this.cachedConfig) {
101
- return this.cachedConfig;
102
- }
103
- let configPath = null;
104
- // Try to find config in git root first
105
- try {
106
- const gitRoot = gitService_1.GitService.getGitRoot();
107
- for (const filename of CONFIG_FILES) {
108
- const fullPath = path.join(gitRoot, filename);
109
- if (fs.existsSync(fullPath)) {
110
- configPath = fullPath;
111
- break;
112
- }
113
- }
114
- }
115
- catch {
116
- // Not in a git repo, try current directory
117
- }
118
- // Fallback to current directory
119
- if (!configPath) {
120
- for (const filename of CONFIG_FILES) {
121
- const fullPath = path.join(process.cwd(), filename);
122
- if (fs.existsSync(fullPath)) {
123
- configPath = fullPath;
124
- break;
125
- }
126
- }
127
- }
128
- if (!configPath) {
129
- this.cachedConfig = DEFAULT_CONFIG;
130
- return DEFAULT_CONFIG;
131
- }
132
- try {
133
- const content = fs.readFileSync(configPath, 'utf-8');
134
- const userConfig = JSON.parse(content);
135
- this.cachedConfig = { ...DEFAULT_CONFIG, ...userConfig };
136
- return this.cachedConfig;
137
- }
138
- catch (error) {
139
- console.warn(`Warning: Failed to parse config file: ${configPath}`);
140
- this.cachedConfig = DEFAULT_CONFIG;
141
- return DEFAULT_CONFIG;
142
- }
143
- }
144
- /**
145
- * Get the current config
146
- */
147
- static getConfig() {
148
- return this.loadConfig();
149
- }
150
- /**
151
- * Clear the cached config (useful for testing)
152
- */
153
- static clearCache() {
154
- this.cachedConfig = null;
155
- }
156
- /**
157
- * Create a default config file
158
- */
159
- static initConfig() {
160
- try {
161
- let targetDir;
162
- try {
163
- targetDir = gitService_1.GitService.getGitRoot();
164
- }
165
- catch {
166
- targetDir = process.cwd();
167
- }
168
- const configPath = path.join(targetDir, '.commitgenierc.json');
169
- if (fs.existsSync(configPath)) {
170
- return {
171
- success: false,
172
- message: 'Config file already exists',
173
- path: configPath,
174
- };
175
- }
176
- const sampleConfig = {
177
- scopes: [
178
- { pattern: 'src/api', scope: 'api' },
179
- { pattern: 'src/components', scope: 'ui' },
180
- { pattern: 'src/utils', scope: 'utils' },
181
- ],
182
- defaultType: 'feat',
183
- includeEmoji: true,
184
- maxMessageLength: 72,
185
- customPatterns: [],
186
- ticketLinking: {
187
- enabled: true,
188
- patterns: ['[A-Z]{2,10}-\\d+', '#\\d+'],
189
- prefix: 'Refs:',
190
- },
191
- learnFromHistory: {
192
- enabled: true,
193
- commitCount: 50,
194
- },
195
- breakingChangeDetection: {
196
- enabled: true,
197
- keywords: ['breaking', 'removed', 'deleted', 'deprecated'],
198
- includeFooter: true,
199
- },
200
- templates: {
201
- default: '{emoji} {type}({scope}): {description}',
202
- noScope: '{emoji} {type}: {description}',
203
- withBody: '{emoji} {type}({scope}): {description}\n\n{body}',
204
- },
205
- ai: {
206
- enabled: false,
207
- provider: 'openai',
208
- model: 'gpt-4o-mini',
209
- },
210
- };
211
- fs.writeFileSync(configPath, JSON.stringify(sampleConfig, null, 2));
212
- return {
213
- success: true,
214
- message: 'Config file created',
215
- path: configPath,
216
- };
217
- }
218
- catch (error) {
219
- return {
220
- success: false,
221
- message: `Failed to create config: ${error instanceof Error ? error.message : error}`,
222
- };
223
- }
224
- }
225
- }
226
- exports.ConfigService = ConfigService;
227
- ConfigService.cachedConfig = null;
228
- //# sourceMappingURL=configService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"configService.js","sourceRoot":"","sources":["../../src/services/configService.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=configService.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"configService.test.d.ts","sourceRoot":"","sources":["../../src/services/configService.test.ts"],"names":[],"mappings":""}
@@ -1,165 +0,0 @@
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
- const fs = __importStar(require("fs"));
37
- const configService_1 = require("./configService");
38
- const gitService_1 = require("./gitService");
39
- // Mock dependencies
40
- jest.mock('fs');
41
- jest.mock('./gitService');
42
- const mockedFs = fs;
43
- const mockedGitService = gitService_1.GitService;
44
- describe('ConfigService', () => {
45
- beforeEach(() => {
46
- jest.clearAllMocks();
47
- configService_1.ConfigService.clearCache();
48
- });
49
- describe('loadConfig', () => {
50
- it('should return default config when no config file exists', () => {
51
- mockedGitService.getGitRoot.mockReturnValue('/project');
52
- mockedFs.existsSync.mockReturnValue(false);
53
- const config = configService_1.ConfigService.loadConfig();
54
- expect(config.defaultType).toBe('feat');
55
- expect(config.maxMessageLength).toBe(72);
56
- expect(config.includeEmoji).toBeUndefined(); // Let history learning decide
57
- expect(config.scopes).toEqual([]);
58
- expect(config.ticketLinking?.enabled).toBe(true);
59
- expect(config.learnFromHistory?.enabled).toBe(true);
60
- expect(config.breakingChangeDetection?.enabled).toBe(true);
61
- expect(config.breakingChangeDetection?.includeFooter).toBe(true);
62
- });
63
- it('should load config from .commitgenierc.json', () => {
64
- mockedGitService.getGitRoot.mockReturnValue('/project');
65
- mockedFs.existsSync.mockImplementation((filePath) => {
66
- return String(filePath).includes('.commitgenierc.json');
67
- });
68
- mockedFs.readFileSync.mockReturnValue(JSON.stringify({
69
- scopes: [{ pattern: 'src/api', scope: 'api' }],
70
- defaultType: 'fix',
71
- }));
72
- const config = configService_1.ConfigService.loadConfig();
73
- expect(config.defaultType).toBe('fix');
74
- expect(config.scopes).toHaveLength(1);
75
- expect(config.scopes[0].scope).toBe('api');
76
- });
77
- it('should merge user config with defaults', () => {
78
- mockedGitService.getGitRoot.mockReturnValue('/project');
79
- mockedFs.existsSync.mockImplementation((filePath) => {
80
- return String(filePath).includes('.commitgenierc.json');
81
- });
82
- mockedFs.readFileSync.mockReturnValue(JSON.stringify({
83
- defaultType: 'chore',
84
- }));
85
- const config = configService_1.ConfigService.loadConfig();
86
- expect(config.defaultType).toBe('chore');
87
- expect(config.maxMessageLength).toBe(72); // Default preserved
88
- });
89
- it('should cache config after first load', () => {
90
- mockedGitService.getGitRoot.mockReturnValue('/project');
91
- mockedFs.existsSync.mockReturnValue(false);
92
- configService_1.ConfigService.loadConfig();
93
- configService_1.ConfigService.loadConfig();
94
- configService_1.ConfigService.loadConfig();
95
- // getGitRoot should only be called once due to caching
96
- expect(mockedGitService.getGitRoot).toHaveBeenCalledTimes(1);
97
- });
98
- it('should handle invalid JSON gracefully', () => {
99
- mockedGitService.getGitRoot.mockReturnValue('/project');
100
- mockedFs.existsSync.mockImplementation((filePath) => {
101
- return String(filePath).includes('.commitgenierc.json');
102
- });
103
- mockedFs.readFileSync.mockReturnValue('{ invalid json }');
104
- // Should not throw, should return defaults
105
- const config = configService_1.ConfigService.loadConfig();
106
- expect(config.defaultType).toBe('feat');
107
- });
108
- it('should fallback to cwd when not in git repo', () => {
109
- mockedGitService.getGitRoot.mockImplementation(() => {
110
- throw new Error('Not a git repo');
111
- });
112
- mockedFs.existsSync.mockReturnValue(false);
113
- const config = configService_1.ConfigService.loadConfig();
114
- expect(config).toBeDefined();
115
- });
116
- });
117
- describe('getConfig', () => {
118
- it('should return loaded config', () => {
119
- mockedGitService.getGitRoot.mockReturnValue('/project');
120
- mockedFs.existsSync.mockReturnValue(false);
121
- const config = configService_1.ConfigService.getConfig();
122
- expect(config).toBeDefined();
123
- expect(config.defaultType).toBe('feat');
124
- });
125
- });
126
- describe('clearCache', () => {
127
- it('should clear the cached config', () => {
128
- mockedGitService.getGitRoot.mockReturnValue('/project');
129
- mockedFs.existsSync.mockReturnValue(false);
130
- configService_1.ConfigService.loadConfig();
131
- configService_1.ConfigService.clearCache();
132
- configService_1.ConfigService.loadConfig();
133
- expect(mockedGitService.getGitRoot).toHaveBeenCalledTimes(2);
134
- });
135
- });
136
- describe('initConfig', () => {
137
- it('should create config file successfully', () => {
138
- mockedGitService.getGitRoot.mockReturnValue('/project');
139
- mockedFs.existsSync.mockReturnValue(false);
140
- mockedFs.writeFileSync.mockImplementation(() => { });
141
- const result = configService_1.ConfigService.initConfig();
142
- expect(result.success).toBe(true);
143
- expect(result.message).toBe('Config file created');
144
- expect(mockedFs.writeFileSync).toHaveBeenCalled();
145
- });
146
- it('should fail if config already exists', () => {
147
- mockedGitService.getGitRoot.mockReturnValue('/project');
148
- mockedFs.existsSync.mockReturnValue(true);
149
- const result = configService_1.ConfigService.initConfig();
150
- expect(result.success).toBe(false);
151
- expect(result.message).toBe('Config file already exists');
152
- });
153
- it('should handle write errors', () => {
154
- mockedGitService.getGitRoot.mockReturnValue('/project');
155
- mockedFs.existsSync.mockReturnValue(false);
156
- mockedFs.writeFileSync.mockImplementation(() => {
157
- throw new Error('Permission denied');
158
- });
159
- const result = configService_1.ConfigService.initConfig();
160
- expect(result.success).toBe(false);
161
- expect(result.message).toContain('Failed to create config');
162
- });
163
- });
164
- });
165
- //# sourceMappingURL=configService.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"configService.test.js","sourceRoot":"","sources":["../../src/services/configService.test.ts"],"names":[],"mappings":"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"}
@@ -1,64 +0,0 @@
1
- import { GitStatus, FileChange, DiffStats, HistoricalCommit } from '../types';
2
- export declare class GitService {
3
- /**
4
- * Check if current directory is a git repository
5
- */
6
- static isGitRepository(): boolean;
7
- /**
8
- * Get current git status with staged and unstaged files
9
- */
10
- static getStatus(): GitStatus;
11
- /**
12
- * Get diff statistics for staged changes
13
- */
14
- static getDiffStats(): DiffStats;
15
- /**
16
- * Get the actual diff content for staged changes
17
- */
18
- static getDiff(): string;
19
- /**
20
- * Get list of staged files with their status
21
- */
22
- static getStagedFiles(): FileChange[];
23
- /**
24
- * Commit staged changes with the given message (supports multi-line)
25
- */
26
- static commit(message: string): void;
27
- /**
28
- * Amend the last commit with a new message
29
- */
30
- static amendCommit(message: string): void;
31
- /**
32
- * Get the last commit's message
33
- */
34
- static getLastCommitMessage(): string | null;
35
- /**
36
- * Get files changed in the last commit
37
- */
38
- static getLastCommitFiles(): FileChange[];
39
- /**
40
- * Get diff of the last commit
41
- */
42
- static getLastCommitDiff(): string;
43
- /**
44
- * Check if there are any commits in the repository
45
- */
46
- static hasCommits(): boolean;
47
- /**
48
- * Get the root directory of the git repository
49
- */
50
- static getGitRoot(): string;
51
- /**
52
- * Get the .git directory path (works reliably on Windows)
53
- */
54
- static getGitDir(): string;
55
- /**
56
- * Get the current branch name
57
- */
58
- static getCurrentBranch(): string | null;
59
- /**
60
- * Get recent commit history
61
- */
62
- static getCommitHistory(count?: number): HistoricalCommit[];
63
- }
64
- //# sourceMappingURL=gitService.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gitService.d.ts","sourceRoot":"","sources":["../../src/services/gitService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE9E,qBAAa,UAAU;IACrB;;OAEG;IACH,MAAM,CAAC,eAAe,IAAI,OAAO;IASjC;;OAEG;IACH,MAAM,CAAC,SAAS,IAAI,SAAS;IAuC7B;;OAEG;IACH,MAAM,CAAC,YAAY,IAAI,SAAS;IA0BhC;;OAEG;IACH,MAAM,CAAC,OAAO,IAAI,MAAM;IAYxB;;OAEG;IACH,MAAM,CAAC,cAAc,IAAI,UAAU,EAAE;IAKrC;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAqBpC;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAoBzC;;OAEG;IACH,MAAM,CAAC,oBAAoB,IAAI,MAAM,GAAG,IAAI;IAW5C;;OAEG;IACH,MAAM,CAAC,kBAAkB,IAAI,UAAU,EAAE;IAwBzC;;OAEG;IACH,MAAM,CAAC,iBAAiB,IAAI,MAAM;IAWlC;;OAEG;IACH,MAAM,CAAC,UAAU,IAAI,OAAO;IAS5B;;OAEG;IACH,MAAM,CAAC,UAAU,IAAI,MAAM;IAW3B;;OAEG;IACH,MAAM,CAAC,SAAS,IAAI,MAAM;IAqB1B;;OAEG;IACH,MAAM,CAAC,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAYxC;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAK,GAAE,MAAW,GAAG,gBAAgB,EAAE;CAsChE"}