@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.
- package/package.json +1 -1
- package/dist/commands/config.d.ts +0 -3
- package/dist/commands/config.d.ts.map +0 -1
- package/dist/commands/config.js +0 -31
- package/dist/commands/config.js.map +0 -1
- package/dist/commands/generate.d.ts +0 -12
- package/dist/commands/generate.d.ts.map +0 -1
- package/dist/commands/generate.js +0 -550
- package/dist/commands/generate.js.map +0 -1
- package/dist/commands/generate.test.d.ts +0 -2
- package/dist/commands/generate.test.d.ts.map +0 -1
- package/dist/commands/generate.test.js +0 -168
- package/dist/commands/generate.test.js.map +0 -1
- package/dist/commands/hook.d.ts +0 -4
- package/dist/commands/hook.d.ts.map +0 -1
- package/dist/commands/hook.js +0 -62
- package/dist/commands/hook.js.map +0 -1
- package/dist/commands/stats.d.ts +0 -6
- package/dist/commands/stats.d.ts.map +0 -1
- package/dist/commands/stats.js +0 -39
- package/dist/commands/stats.js.map +0 -1
- package/dist/data/wordlist.d.ts +0 -11
- package/dist/data/wordlist.d.ts.map +0 -1
- package/dist/data/wordlist.js +0 -170
- package/dist/data/wordlist.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -81
- package/dist/index.js.map +0 -1
- package/dist/services/aiService.d.ts +0 -42
- package/dist/services/aiService.d.ts.map +0 -1
- package/dist/services/aiService.js +0 -224
- package/dist/services/aiService.js.map +0 -1
- package/dist/services/analyzerService.d.ts +0 -124
- package/dist/services/analyzerService.d.ts.map +0 -1
- package/dist/services/analyzerService.js +0 -1595
- package/dist/services/analyzerService.js.map +0 -1
- package/dist/services/analyzerService.test.d.ts +0 -2
- package/dist/services/analyzerService.test.d.ts.map +0 -1
- package/dist/services/analyzerService.test.js +0 -483
- package/dist/services/analyzerService.test.js.map +0 -1
- package/dist/services/configService.d.ts +0 -25
- package/dist/services/configService.d.ts.map +0 -1
- package/dist/services/configService.js +0 -228
- package/dist/services/configService.js.map +0 -1
- package/dist/services/configService.test.d.ts +0 -2
- package/dist/services/configService.test.d.ts.map +0 -1
- package/dist/services/configService.test.js +0 -165
- package/dist/services/configService.test.js.map +0 -1
- package/dist/services/gitService.d.ts +0 -64
- package/dist/services/gitService.d.ts.map +0 -1
- package/dist/services/gitService.js +0 -303
- package/dist/services/gitService.js.map +0 -1
- package/dist/services/gitService.test.d.ts +0 -2
- package/dist/services/gitService.test.d.ts.map +0 -1
- package/dist/services/gitService.test.js +0 -140
- package/dist/services/gitService.test.js.map +0 -1
- package/dist/services/historyService.d.ts +0 -39
- package/dist/services/historyService.d.ts.map +0 -1
- package/dist/services/historyService.js +0 -195
- package/dist/services/historyService.js.map +0 -1
- package/dist/services/historyService.test.d.ts +0 -2
- package/dist/services/historyService.test.d.ts.map +0 -1
- package/dist/services/historyService.test.js +0 -157
- package/dist/services/historyService.test.js.map +0 -1
- package/dist/services/hookService.d.ts +0 -29
- package/dist/services/hookService.d.ts.map +0 -1
- package/dist/services/hookService.js +0 -164
- package/dist/services/hookService.js.map +0 -1
- package/dist/services/lintService.d.ts +0 -32
- package/dist/services/lintService.d.ts.map +0 -1
- package/dist/services/lintService.js +0 -191
- package/dist/services/lintService.js.map +0 -1
- package/dist/services/spellService.d.ts +0 -42
- package/dist/services/spellService.d.ts.map +0 -1
- package/dist/services/spellService.js +0 -175
- package/dist/services/spellService.js.map +0 -1
- package/dist/services/splitService.d.ts +0 -32
- package/dist/services/splitService.d.ts.map +0 -1
- package/dist/services/splitService.js +0 -184
- package/dist/services/splitService.js.map +0 -1
- package/dist/services/statsService.d.ts +0 -28
- package/dist/services/statsService.d.ts.map +0 -1
- package/dist/services/statsService.js +0 -204
- package/dist/services/statsService.js.map +0 -1
- package/dist/types/index.d.ts +0 -217
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -3
- package/dist/types/index.js.map +0 -1
- package/dist/utils/filePatterns.d.ts +0 -5
- package/dist/utils/filePatterns.d.ts.map +0 -1
- package/dist/utils/filePatterns.js +0 -77
- package/dist/utils/filePatterns.js.map +0 -1
- package/dist/utils/filePatterns.test.d.ts +0 -2
- package/dist/utils/filePatterns.test.d.ts.map +0 -1
- package/dist/utils/filePatterns.test.js +0 -51
- package/dist/utils/filePatterns.test.js.map +0 -1
- package/dist/utils/prompt.d.ts +0 -4
- package/dist/utils/prompt.d.ts.map +0 -1
- package/dist/utils/prompt.js +0 -60
- package/dist/utils/prompt.js.map +0 -1
- 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 +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"}
|