codingbuddy 0.0.0-dev.20251218084041.e5f3ffe → 0.0.0-dev.20251218092414.9ab52bd
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/dist/src/analyzer/analyzer.module.d.ts +2 -0
- package/dist/src/analyzer/analyzer.module.js +21 -0
- package/dist/src/analyzer/analyzer.module.js.map +1 -0
- package/dist/src/analyzer/analyzer.service.d.ts +10 -0
- package/dist/src/analyzer/analyzer.service.js +73 -0
- package/dist/src/analyzer/analyzer.service.js.map +1 -0
- package/dist/src/analyzer/analyzer.service.spec.d.ts +1 -0
- package/dist/src/analyzer/analyzer.service.spec.js +67 -0
- package/dist/src/analyzer/analyzer.service.spec.js.map +1 -0
- package/dist/src/analyzer/analyzer.types.d.ts +70 -0
- package/dist/src/analyzer/analyzer.types.js +3 -0
- package/dist/src/analyzer/analyzer.types.js.map +1 -0
- package/dist/src/analyzer/code.sampler.d.ts +7 -0
- package/dist/src/analyzer/code.sampler.js +200 -0
- package/dist/src/analyzer/code.sampler.js.map +1 -0
- package/dist/src/analyzer/code.sampler.spec.d.ts +1 -0
- package/dist/src/analyzer/code.sampler.spec.js +153 -0
- package/dist/src/analyzer/code.sampler.spec.js.map +1 -0
- package/dist/src/analyzer/config.analyzer.d.ts +7 -0
- package/dist/src/analyzer/config.analyzer.js +178 -0
- package/dist/src/analyzer/config.analyzer.js.map +1 -0
- package/dist/src/analyzer/config.analyzer.spec.d.ts +1 -0
- package/dist/src/analyzer/config.analyzer.spec.js +146 -0
- package/dist/src/analyzer/config.analyzer.spec.js.map +1 -0
- package/dist/src/analyzer/directory.analyzer.d.ts +12 -0
- package/dist/src/analyzer/directory.analyzer.js +149 -0
- package/dist/src/analyzer/directory.analyzer.js.map +1 -0
- package/dist/src/analyzer/directory.analyzer.spec.d.ts +1 -0
- package/dist/src/analyzer/directory.analyzer.spec.js +119 -0
- package/dist/src/analyzer/directory.analyzer.spec.js.map +1 -0
- package/dist/src/analyzer/index.d.ts +7 -0
- package/dist/src/analyzer/index.js +32 -0
- package/dist/src/analyzer/index.js.map +1 -0
- package/dist/src/analyzer/package.analyzer.d.ts +12 -0
- package/dist/src/analyzer/package.analyzer.js +118 -0
- package/dist/src/analyzer/package.analyzer.js.map +1 -0
- package/dist/src/analyzer/package.analyzer.spec.d.ts +1 -0
- package/dist/src/analyzer/package.analyzer.spec.js +109 -0
- package/dist/src/analyzer/package.analyzer.spec.js.map +1 -0
- package/dist/src/config/config.loader.d.ts +22 -0
- package/dist/src/config/config.loader.js +105 -0
- package/dist/src/config/config.loader.js.map +1 -0
- package/dist/src/config/config.loader.spec.d.ts +1 -0
- package/dist/src/config/config.loader.spec.js +86 -0
- package/dist/src/config/config.loader.spec.js.map +1 -0
- package/dist/src/config/config.module.d.ts +2 -0
- package/dist/src/config/config.module.js +21 -0
- package/dist/src/config/config.module.js.map +1 -0
- package/dist/src/config/config.schema.d.ts +24 -24
- package/dist/src/config/config.service.d.ts +33 -0
- package/dist/src/config/config.service.js +126 -0
- package/dist/src/config/config.service.js.map +1 -0
- package/dist/src/config/context.loader.d.ts +24 -0
- package/dist/src/config/context.loader.js +153 -0
- package/dist/src/config/context.loader.js.map +1 -0
- package/dist/src/config/context.loader.spec.d.ts +1 -0
- package/dist/src/config/context.loader.spec.js +123 -0
- package/dist/src/config/context.loader.spec.js.map +1 -0
- package/dist/src/config/ignore.parser.d.ts +12 -0
- package/dist/src/config/ignore.parser.js +134 -0
- package/dist/src/config/ignore.parser.js.map +1 -0
- package/dist/src/config/ignore.parser.spec.d.ts +1 -0
- package/dist/src/config/ignore.parser.spec.js +130 -0
- package/dist/src/config/ignore.parser.spec.js.map +1 -0
- package/dist/src/config/index.d.ts +9 -0
- package/dist/src/config/index.js +26 -1
- package/dist/src/config/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type CodingBuddyConfig } from './config.schema';
|
|
2
|
+
export declare const CONFIG_FILE_NAMES: readonly ["codingbuddy.config.js", "codingbuddy.config.mjs", "codingbuddy.config.json"];
|
|
3
|
+
export interface ConfigLoadResult {
|
|
4
|
+
config: CodingBuddyConfig;
|
|
5
|
+
source: string | null;
|
|
6
|
+
warnings: string[];
|
|
7
|
+
}
|
|
8
|
+
export declare class ConfigLoadError extends Error {
|
|
9
|
+
readonly filePath: string;
|
|
10
|
+
readonly cause?: Error;
|
|
11
|
+
constructor(message: string, filePath: string, cause?: Error);
|
|
12
|
+
}
|
|
13
|
+
export declare function findConfigFile(projectRoot: string): string | null;
|
|
14
|
+
export declare function loadJsConfig(filePath: string): Promise<unknown>;
|
|
15
|
+
export declare function loadJsonConfig(filePath: string): Promise<unknown>;
|
|
16
|
+
export declare function loadConfigFromFile(filePath: string): Promise<unknown>;
|
|
17
|
+
export declare function validateAndTransform(raw: unknown, filePath: string): {
|
|
18
|
+
config: CodingBuddyConfig;
|
|
19
|
+
warnings: string[];
|
|
20
|
+
};
|
|
21
|
+
export declare function loadConfig(projectRoot?: string): Promise<ConfigLoadResult>;
|
|
22
|
+
export declare function hasConfigFile(projectRoot: string): boolean;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConfigLoadError = exports.CONFIG_FILE_NAMES = void 0;
|
|
4
|
+
exports.findConfigFile = findConfigFile;
|
|
5
|
+
exports.loadJsConfig = loadJsConfig;
|
|
6
|
+
exports.loadJsonConfig = loadJsonConfig;
|
|
7
|
+
exports.loadConfigFromFile = loadConfigFromFile;
|
|
8
|
+
exports.validateAndTransform = validateAndTransform;
|
|
9
|
+
exports.loadConfig = loadConfig;
|
|
10
|
+
exports.hasConfigFile = hasConfigFile;
|
|
11
|
+
const fs = require("fs/promises");
|
|
12
|
+
const fs_1 = require("fs");
|
|
13
|
+
const path = require("path");
|
|
14
|
+
const url_1 = require("url");
|
|
15
|
+
const config_schema_1 = require("./config.schema");
|
|
16
|
+
exports.CONFIG_FILE_NAMES = [
|
|
17
|
+
'codingbuddy.config.js',
|
|
18
|
+
'codingbuddy.config.mjs',
|
|
19
|
+
'codingbuddy.config.json',
|
|
20
|
+
];
|
|
21
|
+
class ConfigLoadError extends Error {
|
|
22
|
+
constructor(message, filePath, cause) {
|
|
23
|
+
super(message);
|
|
24
|
+
this.filePath = filePath;
|
|
25
|
+
this.cause = cause;
|
|
26
|
+
this.name = 'ConfigLoadError';
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.ConfigLoadError = ConfigLoadError;
|
|
30
|
+
function findConfigFile(projectRoot) {
|
|
31
|
+
for (const fileName of exports.CONFIG_FILE_NAMES) {
|
|
32
|
+
const filePath = path.join(projectRoot, fileName);
|
|
33
|
+
if ((0, fs_1.existsSync)(filePath)) {
|
|
34
|
+
return filePath;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
async function loadJsConfig(filePath) {
|
|
40
|
+
try {
|
|
41
|
+
const fileUrl = (0, url_1.pathToFileURL)(filePath).href;
|
|
42
|
+
const module = await Promise.resolve(`${fileUrl}`).then(s => require(s));
|
|
43
|
+
return module.default ?? module;
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
throw new ConfigLoadError(`Failed to load JavaScript config: ${error instanceof Error ? error.message : String(error)}`, filePath, error instanceof Error ? error : undefined);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
async function loadJsonConfig(filePath) {
|
|
50
|
+
try {
|
|
51
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
52
|
+
return JSON.parse(content);
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
if (error instanceof SyntaxError) {
|
|
56
|
+
throw new ConfigLoadError(`Invalid JSON in config file: ${error.message}`, filePath, error);
|
|
57
|
+
}
|
|
58
|
+
throw new ConfigLoadError(`Failed to read config file: ${error instanceof Error ? error.message : String(error)}`, filePath, error instanceof Error ? error : undefined);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
async function loadConfigFromFile(filePath) {
|
|
62
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
63
|
+
if (ext === '.json') {
|
|
64
|
+
return loadJsonConfig(filePath);
|
|
65
|
+
}
|
|
66
|
+
if (ext === '.js' || ext === '.mjs') {
|
|
67
|
+
return loadJsConfig(filePath);
|
|
68
|
+
}
|
|
69
|
+
throw new ConfigLoadError(`Unsupported config file format: ${ext}`, filePath);
|
|
70
|
+
}
|
|
71
|
+
function validateAndTransform(raw, filePath) {
|
|
72
|
+
const result = (0, config_schema_1.validateConfig)(raw);
|
|
73
|
+
if (!result.success) {
|
|
74
|
+
const errorMessages = result.errors
|
|
75
|
+
.map((e) => ` - ${e.path}: ${e.message}`)
|
|
76
|
+
.join('\n');
|
|
77
|
+
throw new ConfigLoadError(`Invalid configuration:\n${errorMessages}`, filePath);
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
config: result.data,
|
|
81
|
+
warnings: [],
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
async function loadConfig(projectRoot) {
|
|
85
|
+
const root = projectRoot ?? process.cwd();
|
|
86
|
+
const configPath = findConfigFile(root);
|
|
87
|
+
if (!configPath) {
|
|
88
|
+
return {
|
|
89
|
+
config: {},
|
|
90
|
+
source: null,
|
|
91
|
+
warnings: [],
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
const raw = await loadConfigFromFile(configPath);
|
|
95
|
+
const { config, warnings } = validateAndTransform(raw, configPath);
|
|
96
|
+
return {
|
|
97
|
+
config,
|
|
98
|
+
source: configPath,
|
|
99
|
+
warnings,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
function hasConfigFile(projectRoot) {
|
|
103
|
+
return findConfigFile(projectRoot) !== null;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=config.loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.loader.js","sourceRoot":"","sources":["../../../src/config/config.loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const config_loader_1 = require("./config.loader");
|
|
5
|
+
(0, vitest_1.describe)('config.loader', () => {
|
|
6
|
+
(0, vitest_1.describe)('CONFIG_FILE_NAMES', () => {
|
|
7
|
+
(0, vitest_1.it)('should have correct priority order', () => {
|
|
8
|
+
(0, vitest_1.expect)(config_loader_1.CONFIG_FILE_NAMES[0]).toBe('codingbuddy.config.js');
|
|
9
|
+
(0, vitest_1.expect)(config_loader_1.CONFIG_FILE_NAMES[1]).toBe('codingbuddy.config.mjs');
|
|
10
|
+
(0, vitest_1.expect)(config_loader_1.CONFIG_FILE_NAMES[2]).toBe('codingbuddy.config.json');
|
|
11
|
+
});
|
|
12
|
+
(0, vitest_1.it)('should have 3 supported file names', () => {
|
|
13
|
+
(0, vitest_1.expect)(config_loader_1.CONFIG_FILE_NAMES).toHaveLength(3);
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
(0, vitest_1.describe)('ConfigLoadError', () => {
|
|
17
|
+
(0, vitest_1.it)('should create error with message and file path', () => {
|
|
18
|
+
const error = new config_loader_1.ConfigLoadError('Test error', '/path/to/config.js');
|
|
19
|
+
(0, vitest_1.expect)(error.message).toBe('Test error');
|
|
20
|
+
(0, vitest_1.expect)(error.filePath).toBe('/path/to/config.js');
|
|
21
|
+
(0, vitest_1.expect)(error.name).toBe('ConfigLoadError');
|
|
22
|
+
});
|
|
23
|
+
(0, vitest_1.it)('should include cause when provided', () => {
|
|
24
|
+
const cause = new Error('Original error');
|
|
25
|
+
const error = new config_loader_1.ConfigLoadError('Wrapped error', '/path/to/config.js', cause);
|
|
26
|
+
(0, vitest_1.expect)(error.cause).toBe(cause);
|
|
27
|
+
});
|
|
28
|
+
(0, vitest_1.it)('should be instanceof Error', () => {
|
|
29
|
+
const error = new config_loader_1.ConfigLoadError('Test', '/path');
|
|
30
|
+
(0, vitest_1.expect)(error).toBeInstanceOf(Error);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
(0, vitest_1.describe)('validateAndTransform', () => {
|
|
34
|
+
(0, vitest_1.it)('should accept valid config', () => {
|
|
35
|
+
const raw = {
|
|
36
|
+
language: 'ko',
|
|
37
|
+
projectName: 'test-project',
|
|
38
|
+
techStack: {
|
|
39
|
+
frontend: ['React'],
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
const result = (0, config_loader_1.validateAndTransform)(raw, '/path/config.json');
|
|
43
|
+
(0, vitest_1.expect)(result.config.language).toBe('ko');
|
|
44
|
+
(0, vitest_1.expect)(result.config.projectName).toBe('test-project');
|
|
45
|
+
(0, vitest_1.expect)(result.config.techStack?.frontend).toEqual(['React']);
|
|
46
|
+
(0, vitest_1.expect)(result.warnings).toEqual([]);
|
|
47
|
+
});
|
|
48
|
+
(0, vitest_1.it)('should accept empty config', () => {
|
|
49
|
+
const result = (0, config_loader_1.validateAndTransform)({}, '/path/config.json');
|
|
50
|
+
(0, vitest_1.expect)(result.config).toEqual({});
|
|
51
|
+
(0, vitest_1.expect)(result.warnings).toEqual([]);
|
|
52
|
+
});
|
|
53
|
+
(0, vitest_1.it)('should throw ConfigLoadError for invalid config', () => {
|
|
54
|
+
const raw = {
|
|
55
|
+
testStrategy: {
|
|
56
|
+
coverage: 200,
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
(0, vitest_1.expect)(() => (0, config_loader_1.validateAndTransform)(raw, '/path/config.json')).toThrow(config_loader_1.ConfigLoadError);
|
|
60
|
+
});
|
|
61
|
+
(0, vitest_1.it)('should include field path in error message', () => {
|
|
62
|
+
const raw = {
|
|
63
|
+
conventions: {
|
|
64
|
+
naming: {
|
|
65
|
+
files: 'invalid-value',
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
try {
|
|
70
|
+
(0, config_loader_1.validateAndTransform)(raw, '/path/config.json');
|
|
71
|
+
vitest_1.expect.fail('Should have thrown');
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
(0, vitest_1.expect)(error).toBeInstanceOf(config_loader_1.ConfigLoadError);
|
|
75
|
+
(0, vitest_1.expect)(error.message).toContain('conventions');
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
(0, vitest_1.it)('should throw ConfigLoadError for invalid URL in repository', () => {
|
|
79
|
+
const raw = {
|
|
80
|
+
repository: 'not-a-valid-url',
|
|
81
|
+
};
|
|
82
|
+
(0, vitest_1.expect)(() => (0, config_loader_1.validateAndTransform)(raw, '/path/config.json')).toThrow(config_loader_1.ConfigLoadError);
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=config.loader.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.loader.spec.js","sourceRoot":"","sources":["../../../src/config/config.loader.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.CodingBuddyConfigModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const config_service_1 = require("./config.service");
|
|
12
|
+
let CodingBuddyConfigModule = class CodingBuddyConfigModule {
|
|
13
|
+
};
|
|
14
|
+
exports.CodingBuddyConfigModule = CodingBuddyConfigModule;
|
|
15
|
+
exports.CodingBuddyConfigModule = CodingBuddyConfigModule = __decorate([
|
|
16
|
+
(0, common_1.Module)({
|
|
17
|
+
providers: [config_service_1.ConfigService],
|
|
18
|
+
exports: [config_service_1.ConfigService],
|
|
19
|
+
})
|
|
20
|
+
], CodingBuddyConfigModule);
|
|
21
|
+
//# sourceMappingURL=config.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.module.js","sourceRoot":"","sources":["../../../src/config/config.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,qDAAiD;AAM1C,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;CAAG,CAAA;AAA1B,0DAAuB;kCAAvB,uBAAuB;IAJnC,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,8BAAa,CAAC;QAC1B,OAAO,EAAE,CAAC,8BAAa,CAAC;KACzB,CAAC;GACW,uBAAuB,CAAG"}
|
|
@@ -37,16 +37,16 @@ export declare const NamingConventionSchema: z.ZodObject<{
|
|
|
37
37
|
types: z.ZodOptional<z.ZodEnum<["PascalCase"]>>;
|
|
38
38
|
interfaces: z.ZodOptional<z.ZodEnum<["PascalCase", "IPascalCase"]>>;
|
|
39
39
|
}, "strip", z.ZodTypeAny, {
|
|
40
|
-
files?: "kebab-case" | "camelCase" | "PascalCase" | "snake_case";
|
|
41
40
|
components?: "kebab-case" | "PascalCase";
|
|
41
|
+
files?: "kebab-case" | "camelCase" | "PascalCase" | "snake_case";
|
|
42
42
|
functions?: "camelCase" | "snake_case";
|
|
43
43
|
variables?: "camelCase" | "snake_case";
|
|
44
44
|
constants?: "camelCase" | "UPPER_SNAKE_CASE";
|
|
45
45
|
types?: "PascalCase";
|
|
46
46
|
interfaces?: "PascalCase" | "IPascalCase";
|
|
47
47
|
}, {
|
|
48
|
-
files?: "kebab-case" | "camelCase" | "PascalCase" | "snake_case";
|
|
49
48
|
components?: "kebab-case" | "PascalCase";
|
|
49
|
+
files?: "kebab-case" | "camelCase" | "PascalCase" | "snake_case";
|
|
50
50
|
functions?: "camelCase" | "snake_case";
|
|
51
51
|
variables?: "camelCase" | "snake_case";
|
|
52
52
|
constants?: "camelCase" | "UPPER_SNAKE_CASE";
|
|
@@ -75,10 +75,10 @@ export declare const TechStackConfigSchema: z.ZodObject<{
|
|
|
75
75
|
}>>>;
|
|
76
76
|
}, "strip", z.ZodTypeAny, {
|
|
77
77
|
tools?: string[];
|
|
78
|
-
languages?: string[];
|
|
79
78
|
frontend?: string[];
|
|
80
79
|
backend?: string[];
|
|
81
80
|
database?: string[];
|
|
81
|
+
languages?: string[];
|
|
82
82
|
infrastructure?: string[];
|
|
83
83
|
details?: Record<string, {
|
|
84
84
|
version?: string;
|
|
@@ -87,10 +87,10 @@ export declare const TechStackConfigSchema: z.ZodObject<{
|
|
|
87
87
|
}>;
|
|
88
88
|
}, {
|
|
89
89
|
tools?: string[];
|
|
90
|
-
languages?: string[];
|
|
91
90
|
frontend?: string[];
|
|
92
91
|
backend?: string[];
|
|
93
92
|
database?: string[];
|
|
93
|
+
languages?: string[];
|
|
94
94
|
infrastructure?: string[];
|
|
95
95
|
details?: Record<string, {
|
|
96
96
|
version?: string;
|
|
@@ -150,16 +150,16 @@ export declare const ConventionsConfigSchema: z.ZodObject<{
|
|
|
150
150
|
types: z.ZodOptional<z.ZodEnum<["PascalCase"]>>;
|
|
151
151
|
interfaces: z.ZodOptional<z.ZodEnum<["PascalCase", "IPascalCase"]>>;
|
|
152
152
|
}, "strip", z.ZodTypeAny, {
|
|
153
|
-
files?: "kebab-case" | "camelCase" | "PascalCase" | "snake_case";
|
|
154
153
|
components?: "kebab-case" | "PascalCase";
|
|
154
|
+
files?: "kebab-case" | "camelCase" | "PascalCase" | "snake_case";
|
|
155
155
|
functions?: "camelCase" | "snake_case";
|
|
156
156
|
variables?: "camelCase" | "snake_case";
|
|
157
157
|
constants?: "camelCase" | "UPPER_SNAKE_CASE";
|
|
158
158
|
types?: "PascalCase";
|
|
159
159
|
interfaces?: "PascalCase" | "IPascalCase";
|
|
160
160
|
}, {
|
|
161
|
-
files?: "kebab-case" | "camelCase" | "PascalCase" | "snake_case";
|
|
162
161
|
components?: "kebab-case" | "PascalCase";
|
|
162
|
+
files?: "kebab-case" | "camelCase" | "PascalCase" | "snake_case";
|
|
163
163
|
functions?: "camelCase" | "snake_case";
|
|
164
164
|
variables?: "camelCase" | "snake_case";
|
|
165
165
|
constants?: "camelCase" | "UPPER_SNAKE_CASE";
|
|
@@ -175,8 +175,8 @@ export declare const ConventionsConfigSchema: z.ZodObject<{
|
|
|
175
175
|
rules?: Record<string, unknown>;
|
|
176
176
|
style?: string;
|
|
177
177
|
naming?: {
|
|
178
|
-
files?: "kebab-case" | "camelCase" | "PascalCase" | "snake_case";
|
|
179
178
|
components?: "kebab-case" | "PascalCase";
|
|
179
|
+
files?: "kebab-case" | "camelCase" | "PascalCase" | "snake_case";
|
|
180
180
|
functions?: "camelCase" | "snake_case";
|
|
181
181
|
variables?: "camelCase" | "snake_case";
|
|
182
182
|
constants?: "camelCase" | "UPPER_SNAKE_CASE";
|
|
@@ -191,8 +191,8 @@ export declare const ConventionsConfigSchema: z.ZodObject<{
|
|
|
191
191
|
rules?: Record<string, unknown>;
|
|
192
192
|
style?: string;
|
|
193
193
|
naming?: {
|
|
194
|
-
files?: "kebab-case" | "camelCase" | "PascalCase" | "snake_case";
|
|
195
194
|
components?: "kebab-case" | "PascalCase";
|
|
195
|
+
files?: "kebab-case" | "camelCase" | "PascalCase" | "snake_case";
|
|
196
196
|
functions?: "camelCase" | "snake_case";
|
|
197
197
|
variables?: "camelCase" | "snake_case";
|
|
198
198
|
constants?: "camelCase" | "UPPER_SNAKE_CASE";
|
|
@@ -212,16 +212,16 @@ export declare const TestStrategyConfigSchema: z.ZodObject<{
|
|
|
212
212
|
e2eDirectory: z.ZodOptional<z.ZodString>;
|
|
213
213
|
mockingStrategy: z.ZodOptional<z.ZodEnum<["minimal", "extensive", "no-mocks"]>>;
|
|
214
214
|
}, "strip", z.ZodTypeAny, {
|
|
215
|
+
coverage?: number;
|
|
215
216
|
approach?: "tdd" | "bdd" | "test-after" | "mixed";
|
|
216
217
|
frameworks?: string[];
|
|
217
|
-
coverage?: number;
|
|
218
218
|
unitTestPattern?: "colocated" | "separate";
|
|
219
219
|
e2eDirectory?: string;
|
|
220
220
|
mockingStrategy?: "minimal" | "extensive" | "no-mocks";
|
|
221
221
|
}, {
|
|
222
|
+
coverage?: number;
|
|
222
223
|
approach?: "tdd" | "bdd" | "test-after" | "mixed";
|
|
223
224
|
frameworks?: string[];
|
|
224
|
-
coverage?: number;
|
|
225
225
|
unitTestPattern?: "colocated" | "separate";
|
|
226
226
|
e2eDirectory?: string;
|
|
227
227
|
mockingStrategy?: "minimal" | "extensive" | "no-mocks";
|
|
@@ -253,10 +253,10 @@ export declare const CodingBuddyConfigSchema: z.ZodObject<{
|
|
|
253
253
|
}>>>;
|
|
254
254
|
}, "strip", z.ZodTypeAny, {
|
|
255
255
|
tools?: string[];
|
|
256
|
-
languages?: string[];
|
|
257
256
|
frontend?: string[];
|
|
258
257
|
backend?: string[];
|
|
259
258
|
database?: string[];
|
|
259
|
+
languages?: string[];
|
|
260
260
|
infrastructure?: string[];
|
|
261
261
|
details?: Record<string, {
|
|
262
262
|
version?: string;
|
|
@@ -265,10 +265,10 @@ export declare const CodingBuddyConfigSchema: z.ZodObject<{
|
|
|
265
265
|
}>;
|
|
266
266
|
}, {
|
|
267
267
|
tools?: string[];
|
|
268
|
-
languages?: string[];
|
|
269
268
|
frontend?: string[];
|
|
270
269
|
backend?: string[];
|
|
271
270
|
database?: string[];
|
|
271
|
+
languages?: string[];
|
|
272
272
|
infrastructure?: string[];
|
|
273
273
|
details?: Record<string, {
|
|
274
274
|
version?: string;
|
|
@@ -328,16 +328,16 @@ export declare const CodingBuddyConfigSchema: z.ZodObject<{
|
|
|
328
328
|
types: z.ZodOptional<z.ZodEnum<["PascalCase"]>>;
|
|
329
329
|
interfaces: z.ZodOptional<z.ZodEnum<["PascalCase", "IPascalCase"]>>;
|
|
330
330
|
}, "strip", z.ZodTypeAny, {
|
|
331
|
-
files?: "kebab-case" | "camelCase" | "PascalCase" | "snake_case";
|
|
332
331
|
components?: "kebab-case" | "PascalCase";
|
|
332
|
+
files?: "kebab-case" | "camelCase" | "PascalCase" | "snake_case";
|
|
333
333
|
functions?: "camelCase" | "snake_case";
|
|
334
334
|
variables?: "camelCase" | "snake_case";
|
|
335
335
|
constants?: "camelCase" | "UPPER_SNAKE_CASE";
|
|
336
336
|
types?: "PascalCase";
|
|
337
337
|
interfaces?: "PascalCase" | "IPascalCase";
|
|
338
338
|
}, {
|
|
339
|
-
files?: "kebab-case" | "camelCase" | "PascalCase" | "snake_case";
|
|
340
339
|
components?: "kebab-case" | "PascalCase";
|
|
340
|
+
files?: "kebab-case" | "camelCase" | "PascalCase" | "snake_case";
|
|
341
341
|
functions?: "camelCase" | "snake_case";
|
|
342
342
|
variables?: "camelCase" | "snake_case";
|
|
343
343
|
constants?: "camelCase" | "UPPER_SNAKE_CASE";
|
|
@@ -353,8 +353,8 @@ export declare const CodingBuddyConfigSchema: z.ZodObject<{
|
|
|
353
353
|
rules?: Record<string, unknown>;
|
|
354
354
|
style?: string;
|
|
355
355
|
naming?: {
|
|
356
|
-
files?: "kebab-case" | "camelCase" | "PascalCase" | "snake_case";
|
|
357
356
|
components?: "kebab-case" | "PascalCase";
|
|
357
|
+
files?: "kebab-case" | "camelCase" | "PascalCase" | "snake_case";
|
|
358
358
|
functions?: "camelCase" | "snake_case";
|
|
359
359
|
variables?: "camelCase" | "snake_case";
|
|
360
360
|
constants?: "camelCase" | "UPPER_SNAKE_CASE";
|
|
@@ -369,8 +369,8 @@ export declare const CodingBuddyConfigSchema: z.ZodObject<{
|
|
|
369
369
|
rules?: Record<string, unknown>;
|
|
370
370
|
style?: string;
|
|
371
371
|
naming?: {
|
|
372
|
-
files?: "kebab-case" | "camelCase" | "PascalCase" | "snake_case";
|
|
373
372
|
components?: "kebab-case" | "PascalCase";
|
|
373
|
+
files?: "kebab-case" | "camelCase" | "PascalCase" | "snake_case";
|
|
374
374
|
functions?: "camelCase" | "snake_case";
|
|
375
375
|
variables?: "camelCase" | "snake_case";
|
|
376
376
|
constants?: "camelCase" | "UPPER_SNAKE_CASE";
|
|
@@ -390,16 +390,16 @@ export declare const CodingBuddyConfigSchema: z.ZodObject<{
|
|
|
390
390
|
e2eDirectory: z.ZodOptional<z.ZodString>;
|
|
391
391
|
mockingStrategy: z.ZodOptional<z.ZodEnum<["minimal", "extensive", "no-mocks"]>>;
|
|
392
392
|
}, "strip", z.ZodTypeAny, {
|
|
393
|
+
coverage?: number;
|
|
393
394
|
approach?: "tdd" | "bdd" | "test-after" | "mixed";
|
|
394
395
|
frameworks?: string[];
|
|
395
|
-
coverage?: number;
|
|
396
396
|
unitTestPattern?: "colocated" | "separate";
|
|
397
397
|
e2eDirectory?: string;
|
|
398
398
|
mockingStrategy?: "minimal" | "extensive" | "no-mocks";
|
|
399
399
|
}, {
|
|
400
|
+
coverage?: number;
|
|
400
401
|
approach?: "tdd" | "bdd" | "test-after" | "mixed";
|
|
401
402
|
frameworks?: string[];
|
|
402
|
-
coverage?: number;
|
|
403
403
|
unitTestPattern?: "colocated" | "separate";
|
|
404
404
|
e2eDirectory?: string;
|
|
405
405
|
mockingStrategy?: "minimal" | "extensive" | "no-mocks";
|
|
@@ -415,10 +415,10 @@ export declare const CodingBuddyConfigSchema: z.ZodObject<{
|
|
|
415
415
|
repository?: string;
|
|
416
416
|
techStack?: {
|
|
417
417
|
tools?: string[];
|
|
418
|
-
languages?: string[];
|
|
419
418
|
frontend?: string[];
|
|
420
419
|
backend?: string[];
|
|
421
420
|
database?: string[];
|
|
421
|
+
languages?: string[];
|
|
422
422
|
infrastructure?: string[];
|
|
423
423
|
details?: Record<string, {
|
|
424
424
|
version?: string;
|
|
@@ -441,8 +441,8 @@ export declare const CodingBuddyConfigSchema: z.ZodObject<{
|
|
|
441
441
|
rules?: Record<string, unknown>;
|
|
442
442
|
style?: string;
|
|
443
443
|
naming?: {
|
|
444
|
-
files?: "kebab-case" | "camelCase" | "PascalCase" | "snake_case";
|
|
445
444
|
components?: "kebab-case" | "PascalCase";
|
|
445
|
+
files?: "kebab-case" | "camelCase" | "PascalCase" | "snake_case";
|
|
446
446
|
functions?: "camelCase" | "snake_case";
|
|
447
447
|
variables?: "camelCase" | "snake_case";
|
|
448
448
|
constants?: "camelCase" | "UPPER_SNAKE_CASE";
|
|
@@ -455,9 +455,9 @@ export declare const CodingBuddyConfigSchema: z.ZodObject<{
|
|
|
455
455
|
quotes?: "single" | "double";
|
|
456
456
|
};
|
|
457
457
|
testStrategy?: {
|
|
458
|
+
coverage?: number;
|
|
458
459
|
approach?: "tdd" | "bdd" | "test-after" | "mixed";
|
|
459
460
|
frameworks?: string[];
|
|
460
|
-
coverage?: number;
|
|
461
461
|
unitTestPattern?: "colocated" | "separate";
|
|
462
462
|
e2eDirectory?: string;
|
|
463
463
|
mockingStrategy?: "minimal" | "extensive" | "no-mocks";
|
|
@@ -472,10 +472,10 @@ export declare const CodingBuddyConfigSchema: z.ZodObject<{
|
|
|
472
472
|
repository?: string;
|
|
473
473
|
techStack?: {
|
|
474
474
|
tools?: string[];
|
|
475
|
-
languages?: string[];
|
|
476
475
|
frontend?: string[];
|
|
477
476
|
backend?: string[];
|
|
478
477
|
database?: string[];
|
|
478
|
+
languages?: string[];
|
|
479
479
|
infrastructure?: string[];
|
|
480
480
|
details?: Record<string, {
|
|
481
481
|
version?: string;
|
|
@@ -498,8 +498,8 @@ export declare const CodingBuddyConfigSchema: z.ZodObject<{
|
|
|
498
498
|
rules?: Record<string, unknown>;
|
|
499
499
|
style?: string;
|
|
500
500
|
naming?: {
|
|
501
|
-
files?: "kebab-case" | "camelCase" | "PascalCase" | "snake_case";
|
|
502
501
|
components?: "kebab-case" | "PascalCase";
|
|
502
|
+
files?: "kebab-case" | "camelCase" | "PascalCase" | "snake_case";
|
|
503
503
|
functions?: "camelCase" | "snake_case";
|
|
504
504
|
variables?: "camelCase" | "snake_case";
|
|
505
505
|
constants?: "camelCase" | "UPPER_SNAKE_CASE";
|
|
@@ -512,9 +512,9 @@ export declare const CodingBuddyConfigSchema: z.ZodObject<{
|
|
|
512
512
|
quotes?: "single" | "double";
|
|
513
513
|
};
|
|
514
514
|
testStrategy?: {
|
|
515
|
+
coverage?: number;
|
|
515
516
|
approach?: "tdd" | "bdd" | "test-after" | "mixed";
|
|
516
517
|
frameworks?: string[];
|
|
517
|
-
coverage?: number;
|
|
518
518
|
unitTestPattern?: "colocated" | "separate";
|
|
519
519
|
e2eDirectory?: string;
|
|
520
520
|
mockingStrategy?: "minimal" | "extensive" | "no-mocks";
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { OnModuleInit } from '@nestjs/common';
|
|
2
|
+
import { type ContextFile } from './context.loader';
|
|
3
|
+
import type { CodingBuddyConfig } from './config.schema';
|
|
4
|
+
export interface ProjectConfig {
|
|
5
|
+
settings: CodingBuddyConfig;
|
|
6
|
+
ignorePatterns: string[];
|
|
7
|
+
contextFiles: ContextFile[];
|
|
8
|
+
sources: {
|
|
9
|
+
config: string | null;
|
|
10
|
+
ignore: string | null;
|
|
11
|
+
context: string | null;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export declare class ConfigService implements OnModuleInit {
|
|
15
|
+
private readonly logger;
|
|
16
|
+
private projectRoot;
|
|
17
|
+
private projectConfig;
|
|
18
|
+
private isLoaded;
|
|
19
|
+
constructor();
|
|
20
|
+
onModuleInit(): Promise<void>;
|
|
21
|
+
setProjectRoot(root: string): void;
|
|
22
|
+
getProjectRoot(): string;
|
|
23
|
+
loadProjectConfig(): Promise<ProjectConfig>;
|
|
24
|
+
getProjectConfig(): Promise<ProjectConfig>;
|
|
25
|
+
getSettings(): Promise<CodingBuddyConfig>;
|
|
26
|
+
getIgnorePatterns(): Promise<string[]>;
|
|
27
|
+
shouldIgnorePath(relativePath: string): Promise<boolean>;
|
|
28
|
+
getContextFiles(): Promise<ContextFile[]>;
|
|
29
|
+
getFormattedContext(): Promise<string>;
|
|
30
|
+
getLanguage(): Promise<string | undefined>;
|
|
31
|
+
reload(): Promise<ProjectConfig>;
|
|
32
|
+
isConfigLoaded(): boolean;
|
|
33
|
+
}
|