@config-bound/cli 0.1.0 → 0.2.1

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 (62) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/LICENSE +21 -0
  3. package/package.json +29 -23
  4. package/scripts/generate-docs.ts +362 -0
  5. package/src/cli.module.ts +7 -1
  6. package/src/commands/generate-bind.command.ts +175 -0
  7. package/src/commands/generate.command.ts +13 -0
  8. package/src/services/bind-generator.service.ts +248 -0
  9. package/src/services/config-discovery.service.spec.ts +10 -10
  10. package/src/services/config-discovery.service.ts +26 -41
  11. package/src/services/config-loader.service.ts +8 -16
  12. package/src/services/schema-export.service.spec.ts +20 -22
  13. package/src/services/schema-export.service.ts +6 -11
  14. package/tsconfig.json +7 -2
  15. package/.turbo/turbo-build.log +0 -4
  16. package/.turbo/turbo-format$colon$ci.log +0 -6
  17. package/.turbo/turbo-lint$colon$ci.log +0 -4
  18. package/.turbo/turbo-test.log +0 -19
  19. package/dist/cli.module.d.ts +0 -3
  20. package/dist/cli.module.d.ts.map +0 -1
  21. package/dist/cli.module.js +0 -29
  22. package/dist/cli.module.js.map +0 -1
  23. package/dist/commands/export.command.d.ts +0 -30
  24. package/dist/commands/export.command.d.ts.map +0 -1
  25. package/dist/commands/export.command.js +0 -226
  26. package/dist/commands/export.command.js.map +0 -1
  27. package/dist/commands/list.command.d.ts +0 -13
  28. package/dist/commands/list.command.d.ts.map +0 -1
  29. package/dist/commands/list.command.js +0 -93
  30. package/dist/commands/list.command.js.map +0 -1
  31. package/dist/main.d.ts +0 -3
  32. package/dist/main.d.ts.map +0 -1
  33. package/dist/main.js +0 -17
  34. package/dist/main.js.map +0 -1
  35. package/dist/services/config-discovery.service.d.ts +0 -15
  36. package/dist/services/config-discovery.service.d.ts.map +0 -1
  37. package/dist/services/config-discovery.service.js +0 -191
  38. package/dist/services/config-discovery.service.js.map +0 -1
  39. package/dist/services/config-discovery.service.spec.d.ts +0 -2
  40. package/dist/services/config-discovery.service.spec.d.ts.map +0 -1
  41. package/dist/services/config-discovery.service.spec.js +0 -137
  42. package/dist/services/config-discovery.service.spec.js.map +0 -1
  43. package/dist/services/config-loader.service.d.ts +0 -13
  44. package/dist/services/config-loader.service.d.ts.map +0 -1
  45. package/dist/services/config-loader.service.js +0 -241
  46. package/dist/services/config-loader.service.js.map +0 -1
  47. package/dist/services/file-writer.service.d.ts +0 -6
  48. package/dist/services/file-writer.service.d.ts.map +0 -1
  49. package/dist/services/file-writer.service.js +0 -38
  50. package/dist/services/file-writer.service.js.map +0 -1
  51. package/dist/services/file-writer.service.spec.d.ts +0 -2
  52. package/dist/services/file-writer.service.spec.d.ts.map +0 -1
  53. package/dist/services/file-writer.service.spec.js +0 -98
  54. package/dist/services/file-writer.service.spec.js.map +0 -1
  55. package/dist/services/schema-export.service.d.ts +0 -14
  56. package/dist/services/schema-export.service.d.ts.map +0 -1
  57. package/dist/services/schema-export.service.js +0 -58
  58. package/dist/services/schema-export.service.js.map +0 -1
  59. package/dist/services/schema-export.service.spec.d.ts +0 -2
  60. package/dist/services/schema-export.service.spec.d.ts.map +0 -1
  61. package/dist/services/schema-export.service.spec.js +0 -69
  62. package/dist/services/schema-export.service.spec.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-discovery.service.d.ts","sourceRoot":"","sources":["../../src/services/config-discovery.service.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBACa,sBAAsB;IAC3B,eAAe,CACnB,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,OAAc,GACxB,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAsC9B,OAAO,CAAC,sBAAsB;IA4D9B,OAAO,CAAC,yBAAyB;IA6BjC,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAC,mBAAmB;CA+D5B"}
@@ -1,191 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- 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;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { Injectable } from '@nestjs/common';
8
- import { Project, Node, SyntaxKind } from 'ts-morph';
9
- import * as path from 'path';
10
- import * as fs from 'fs';
11
- import { ensureError } from '@config-bound/config-bound/utilities';
12
- let ConfigDiscoveryService = class ConfigDiscoveryService {
13
- async discoverConfigs(searchPath, recursive = true) {
14
- const tsFiles = this.findTypeScriptFiles(searchPath, recursive);
15
- const discovered = [];
16
- const project = new Project({
17
- skipAddingFilesFromTsConfig: true,
18
- compilerOptions: {
19
- allowJs: false,
20
- skipLibCheck: true
21
- }
22
- });
23
- for (const filePath of tsFiles) {
24
- try {
25
- project.addSourceFileAtPath(filePath);
26
- }
27
- catch (error) {
28
- console.warn(`skipping ${filePath}: ${ensureError(error).message}`);
29
- continue;
30
- }
31
- }
32
- for (const sourceFile of project.getSourceFiles()) {
33
- try {
34
- const configs = this.extractConfigsFromFile(sourceFile);
35
- discovered.push(...configs);
36
- }
37
- catch (error) {
38
- console.warn(`skipping ${sourceFile}: ${ensureError(error).message}`);
39
- continue;
40
- }
41
- }
42
- return discovered;
43
- }
44
- extractConfigsFromFile(sourceFile) {
45
- const discovered = [];
46
- const filePath = sourceFile.getFilePath();
47
- const variableStatements = sourceFile.getVariableStatements();
48
- for (const statement of variableStatements) {
49
- const declarations = statement.getDeclarations();
50
- for (const declaration of declarations) {
51
- const initializer = declaration.getInitializer();
52
- if (!initializer)
53
- continue;
54
- if (this.isConfigBoundCreateConfig(initializer)) {
55
- const isExported = statement
56
- .getModifiers()
57
- .some((mod) => mod.getKind() === SyntaxKind.ExportKeyword);
58
- if (isExported) {
59
- const exportName = declaration.getName();
60
- const configName = this.extractConfigName(initializer);
61
- discovered.push({
62
- filePath,
63
- exportName,
64
- isDefault: false,
65
- configName,
66
- lineNumber: declaration.getStartLineNumber()
67
- });
68
- }
69
- }
70
- }
71
- }
72
- const defaultExport = sourceFile.getDefaultExportSymbol();
73
- if (defaultExport) {
74
- const declarations = defaultExport.getDeclarations();
75
- for (const declaration of declarations) {
76
- if (Node.isExportAssignment(declaration)) {
77
- const expression = declaration.getExpression();
78
- if (this.isConfigBoundCreateConfig(expression)) {
79
- const configName = this.extractConfigName(expression);
80
- discovered.push({
81
- filePath,
82
- exportName: 'default',
83
- isDefault: true,
84
- configName,
85
- lineNumber: declaration.getStartLineNumber()
86
- });
87
- }
88
- }
89
- }
90
- }
91
- return discovered;
92
- }
93
- isConfigBoundCreateConfig(node) {
94
- if (!Node.isCallExpression(node))
95
- return false;
96
- const expression = node.getExpression();
97
- if (Node.isPropertyAccessExpression(expression)) {
98
- const obj = expression.getExpression();
99
- const prop = expression.getName();
100
- if (Node.isIdentifier(obj) &&
101
- obj.getText() === 'ConfigBound' &&
102
- prop === 'createConfig') {
103
- return true;
104
- }
105
- }
106
- if (Node.isIdentifier(expression)) {
107
- if (expression.getText() === 'createConfig') {
108
- return true;
109
- }
110
- }
111
- return false;
112
- }
113
- extractConfigName(node) {
114
- if (!Node.isCallExpression(node))
115
- return undefined;
116
- const args = node.getArguments();
117
- if (args.length === 0)
118
- return undefined;
119
- const firstArg = args[0];
120
- if (Node.isObjectLiteralExpression(firstArg)) {
121
- const nameProperty = firstArg
122
- .getProperties()
123
- .find((prop) => Node.isPropertyAssignment(prop) && prop.getName() === 'name');
124
- if (nameProperty && Node.isPropertyAssignment(nameProperty)) {
125
- const initializer = nameProperty.getInitializer();
126
- if (initializer && Node.isStringLiteral(initializer)) {
127
- return initializer.getLiteralValue();
128
- }
129
- }
130
- }
131
- return undefined;
132
- }
133
- findTypeScriptFiles(searchPath, recursive) {
134
- const files = [];
135
- const excludedDirs = new Set([
136
- 'node_modules',
137
- 'dist',
138
- 'build',
139
- 'coverage',
140
- '.git',
141
- '.next',
142
- '.nuxt',
143
- 'out',
144
- 'public',
145
- 'static',
146
- '__pycache__',
147
- 'venv',
148
- 'env'
149
- ]);
150
- function traverse(dir) {
151
- let entries;
152
- try {
153
- entries = fs.readdirSync(dir, { withFileTypes: true });
154
- }
155
- catch {
156
- return;
157
- }
158
- for (const entry of entries) {
159
- const fullPath = path.join(dir, entry.name);
160
- if (entry.isDirectory()) {
161
- if (excludedDirs.has(entry.name) || entry.name.startsWith('.')) {
162
- continue;
163
- }
164
- if (recursive) {
165
- traverse(fullPath);
166
- }
167
- }
168
- else if (entry.isFile() && entry.name.endsWith('.ts')) {
169
- if (!entry.name.endsWith('.spec.ts') &&
170
- !entry.name.endsWith('.test.ts') &&
171
- !entry.name.endsWith('.d.ts')) {
172
- files.push(fullPath);
173
- }
174
- }
175
- }
176
- }
177
- const stats = fs.statSync(searchPath);
178
- if (stats.isDirectory()) {
179
- traverse(searchPath);
180
- }
181
- else if (stats.isFile() && searchPath.endsWith('.ts')) {
182
- files.push(searchPath);
183
- }
184
- return files;
185
- }
186
- };
187
- ConfigDiscoveryService = __decorate([
188
- Injectable()
189
- ], ConfigDiscoveryService);
190
- export { ConfigDiscoveryService };
191
- //# sourceMappingURL=config-discovery.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-discovery.service.js","sourceRoot":"","sources":["../../src/services/config-discovery.service.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=config-discovery.service.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-discovery.service.spec.d.ts","sourceRoot":"","sources":["../../src/services/config-discovery.service.spec.ts"],"names":[],"mappings":""}
@@ -1,137 +0,0 @@
1
- import { Test } from '@nestjs/testing';
2
- import { ConfigDiscoveryService } from './config-discovery.service.js';
3
- import { describe, beforeEach, afterEach, it, expect } from '@jest/globals';
4
- import * as fs from 'fs';
5
- import * as path from 'path';
6
- import * as os from 'os';
7
- describe('ConfigDiscoveryService', () => {
8
- let service;
9
- let tempDir;
10
- beforeEach(async () => {
11
- const module = await Test.createTestingModule({
12
- providers: [ConfigDiscoveryService]
13
- }).compile();
14
- service = module.get(ConfigDiscoveryService);
15
- tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'configbound-test-'));
16
- });
17
- afterEach(() => {
18
- if (fs.existsSync(tempDir)) {
19
- fs.rmSync(tempDir, { recursive: true, force: true });
20
- }
21
- });
22
- function createTempFile(relativePath, content) {
23
- const filePath = path.join(tempDir, relativePath);
24
- const dir = path.dirname(filePath);
25
- if (!fs.existsSync(dir)) {
26
- fs.mkdirSync(dir, { recursive: true });
27
- }
28
- fs.writeFileSync(filePath, content, 'utf8');
29
- return filePath;
30
- }
31
- it('should be defined', () => {
32
- expect(service).toBeDefined();
33
- });
34
- it('should discover named export with ConfigBound.createConfig', async () => {
35
- createTempFile('config.ts', `
36
- import { ConfigBound } from '@config-bound/config-bound';
37
-
38
- export const appConfig = ConfigBound.createConfig({
39
- name: 'MyApp',
40
- sections: {}
41
- });
42
- `);
43
- const configs = await service.discoverConfigs(tempDir, false);
44
- expect(configs).toHaveLength(1);
45
- expect(configs[0].exportName).toBe('appConfig');
46
- expect(configs[0].configName).toBe('MyApp');
47
- expect(configs[0].isDefault).toBe(false);
48
- });
49
- it('should discover named export with createConfig from named import', async () => {
50
- createTempFile('config.ts', `
51
- import { createConfig } from '@config-bound/config-bound';
52
-
53
- export const dbConfig = createConfig({
54
- name: 'Database',
55
- sections: {}
56
- });
57
- `);
58
- const configs = await service.discoverConfigs(tempDir, false);
59
- expect(configs).toHaveLength(1);
60
- expect(configs[0].exportName).toBe('dbConfig');
61
- expect(configs[0].configName).toBe('Database');
62
- });
63
- it('should discover default export', async () => {
64
- createTempFile('config.ts', `
65
- import { ConfigBound } from '@config-bound/config-bound';
66
-
67
- export default ConfigBound.createConfig({
68
- name: 'DefaultConfig',
69
- sections: {}
70
- });
71
- `);
72
- const configs = await service.discoverConfigs(tempDir, false);
73
- expect(configs).toHaveLength(1);
74
- expect(configs[0].exportName).toBe('default');
75
- expect(configs[0].isDefault).toBe(true);
76
- expect(configs[0].configName).toBe('DefaultConfig');
77
- });
78
- it('should discover multiple exports in same file', async () => {
79
- createTempFile('configs.ts', `
80
- import { createConfig } from '@config-bound/config-bound';
81
-
82
- export const config1 = createConfig({ name: 'Config1', sections: {} });
83
- export const config2 = createConfig({ name: 'Config2', sections: {} });
84
- `);
85
- const configs = await service.discoverConfigs(tempDir, false);
86
- expect(configs).toHaveLength(2);
87
- expect(configs.map((c) => c.exportName).sort()).toEqual(['config1', 'config2']);
88
- });
89
- it('should discover configs recursively', async () => {
90
- createTempFile('config1.ts', `
91
- import { createConfig } from '@config-bound/config-bound';
92
- export const config1 = createConfig({ name: 'Config1', sections: {} });
93
- `);
94
- createTempFile('subdir/config2.ts', `
95
- import { createConfig } from '@config-bound/config-bound';
96
- export const config2 = createConfig({ name: 'Config2', sections: {} });
97
- `);
98
- const configs = await service.discoverConfigs(tempDir, true);
99
- expect(configs).toHaveLength(2);
100
- });
101
- it('should not discover configs when recursive is false', async () => {
102
- createTempFile('config1.ts', `
103
- import { createConfig } from '@config-bound/config-bound';
104
- export const config1 = createConfig({ name: 'Config1', sections: {} });
105
- `);
106
- createTempFile('subdir/config2.ts', `
107
- import { createConfig } from '@config-bound/config-bound';
108
- export const config2 = createConfig({ name: 'Config2', sections: {} });
109
- `);
110
- const configs = await service.discoverConfigs(tempDir, false);
111
- expect(configs).toHaveLength(1);
112
- });
113
- it('should skip non-exported configs', async () => {
114
- createTempFile('config.ts', `
115
- import { createConfig } from '@config-bound/config-bound';
116
- const privateConfig = createConfig({ name: 'Private', sections: {} });
117
- `);
118
- const configs = await service.discoverConfigs(tempDir, false);
119
- expect(configs).toHaveLength(0);
120
- });
121
- it('should skip test files', async () => {
122
- createTempFile('config.spec.ts', `
123
- import { createConfig } from '@config-bound/config-bound';
124
- export const testConfig = createConfig({ name: 'Test', sections: {} });
125
- `);
126
- const configs = await service.discoverConfigs(tempDir, false);
127
- expect(configs).toHaveLength(0);
128
- });
129
- it('should handle files without configs', async () => {
130
- createTempFile('other.ts', `
131
- export const someValue = 42;
132
- `);
133
- const configs = await service.discoverConfigs(tempDir, false);
134
- expect(configs).toHaveLength(0);
135
- });
136
- });
137
- //# sourceMappingURL=config-discovery.service.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-discovery.service.spec.js","sourceRoot":"","sources":["../../src/services/config-discovery.service.spec.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import { Section } from '@config-bound/config-bound/section';
2
- import { ConfigBound, TypedConfigBound, ConfigSchema } from '@config-bound/config-bound';
3
- export interface LoadedConfig {
4
- name: string;
5
- sections: Section[];
6
- instance: ConfigBound | TypedConfigBound<ConfigSchema>;
7
- }
8
- export declare class ConfigLoaderService {
9
- loadConfig(filePath: string, exportName?: string): Promise<LoadedConfig>;
10
- loadConfigs(filePath: string): Promise<Map<string, LoadedConfig>>;
11
- private isConfigBoundInstance;
12
- }
13
- //# sourceMappingURL=config-loader.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-loader.service.d.ts","sourceRoot":"","sources":["../../src/services/config-loader.service.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAC7D,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,YAAY,EAUb,MAAM,4BAA4B,CAAC;AAEpC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,QAAQ,EAAE,WAAW,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;CACxD;AAED,qBACa,mBAAmB;IACxB,UAAU,CACd,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,CAAC;IAiNlB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IA6HvE,OAAO,CAAC,qBAAqB;CAa9B"}
@@ -1,241 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- 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;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { Injectable } from '@nestjs/common';
8
- import * as path from 'path';
9
- import * as fs from 'fs';
10
- import { pathToFileURL } from 'url';
11
- import { ConfigLoaderException, ConfigFileNotFoundException, ConfigFileIsDirectoryException, ExportNotFoundException, NoConfigBoundInstancesException, MultipleConfigBoundInstancesException, InvalidConfigBoundInstanceException, ConfigFileParseException, MissingDependencyException } from '@config-bound/config-bound';
12
- let ConfigLoaderService = class ConfigLoaderService {
13
- async loadConfig(filePath, exportName) {
14
- const absolutePath = path.resolve(filePath);
15
- if (!fs.existsSync(absolutePath)) {
16
- const parentDir = path.dirname(absolutePath);
17
- const parentExists = fs.existsSync(parentDir);
18
- let similarFiles;
19
- if (parentExists) {
20
- const fileName = path.basename(absolutePath);
21
- const dirFiles = fs.readdirSync(parentDir);
22
- similarFiles = dirFiles.filter((file) => file.toLowerCase().includes(fileName.toLowerCase().slice(0, 3)));
23
- }
24
- throw new ConfigFileNotFoundException(absolutePath, parentDir, parentExists, similarFiles);
25
- }
26
- const stat = fs.statSync(absolutePath);
27
- if (stat.isDirectory()) {
28
- throw new ConfigFileIsDirectoryException(absolutePath);
29
- }
30
- const isTypeScript = absolutePath.endsWith('.ts') || absolutePath.endsWith('.tsx');
31
- let fileToLoad = absolutePath;
32
- const parseExceptionBaseMessage = `TypeScript file found but no compiled .js file exists. Please compile the file first (e.g., run 'tsc' or 'npm run build').`;
33
- if (isTypeScript) {
34
- const jsPath = absolutePath.replace(/\.tsx?$/, '.js');
35
- if (fs.existsSync(jsPath)) {
36
- fileToLoad = jsPath;
37
- }
38
- else {
39
- const srcMatch = absolutePath.match(/^(.*[/\\])src([/\\].+)$/);
40
- if (srcMatch) {
41
- const distPath = srcMatch[1] + 'dist' + srcMatch[2].replace(/\.tsx?$/, '.js');
42
- if (fs.existsSync(distPath)) {
43
- fileToLoad = distPath;
44
- }
45
- else {
46
- throw new ConfigFileParseException(filePath, `${parseExceptionBaseMessage} Checked: ${jsPath} and ${distPath}`);
47
- }
48
- }
49
- else {
50
- throw new ConfigFileParseException(filePath, `${parseExceptionBaseMessage} Expected compiled file at: ${jsPath}`);
51
- }
52
- }
53
- }
54
- try {
55
- const fileURL = pathToFileURL(fileToLoad).href;
56
- const module = await import(fileURL);
57
- let configInstance;
58
- if (exportName && exportName !== 'default') {
59
- configInstance = module[exportName];
60
- if (!configInstance) {
61
- const allExports = Object.keys(module).filter((key) => key !== '__esModule');
62
- const namedExports = allExports.filter((key) => key !== 'default');
63
- const hasDefault = allExports.includes('default');
64
- const exportValue = module[exportName];
65
- throw new ExportNotFoundException(exportName, filePath, namedExports, hasDefault, exportValue);
66
- }
67
- }
68
- else if (exportName === 'default' || !exportName) {
69
- const defaultExport = module.default;
70
- if (defaultExport && this.isConfigBoundInstance(defaultExport)) {
71
- configInstance = defaultExport;
72
- }
73
- else if (!exportName) {
74
- const allExports = Object.entries(module).filter(([key]) => key !== '__esModule');
75
- const configExports = allExports
76
- .filter(([key]) => key !== 'default')
77
- .filter(([, value]) => this.isConfigBoundInstance(value));
78
- if (configExports.length === 0) {
79
- const nonConfigExports = allExports
80
- .filter(([key]) => key !== 'default')
81
- .filter(([, value]) => !this.isConfigBoundInstance(value))
82
- .map(([key, value]) => [key, typeof value]);
83
- const hasDefault = allExports.some(([key]) => key === 'default');
84
- throw new NoConfigBoundInstancesException(filePath, nonConfigExports, hasDefault);
85
- }
86
- if (configExports.length > 1) {
87
- const exportNames = configExports.map(([key]) => key);
88
- throw new MultipleConfigBoundInstancesException(filePath, exportNames);
89
- }
90
- configInstance = configExports[0][1];
91
- }
92
- else {
93
- configInstance = defaultExport;
94
- }
95
- }
96
- if (!configInstance) {
97
- const targetExport = exportName || 'default';
98
- const allExports = Object.keys(module).filter((key) => key !== '__esModule');
99
- const namedExports = allExports.filter((key) => key !== 'default');
100
- const hasDefault = allExports.includes('default');
101
- throw new ExportNotFoundException(targetExport, filePath, namedExports, hasDefault, module[targetExport]);
102
- }
103
- if (!this.isConfigBoundInstance(configInstance)) {
104
- const targetExport = exportName || 'default';
105
- const exportValue = module[targetExport];
106
- const valueType = typeof exportValue;
107
- const valueDetails = exportValue === null
108
- ? 'null'
109
- : exportValue === undefined
110
- ? 'undefined'
111
- : valueType === 'object'
112
- ? `${valueType} (missing required properties: name, sections)`
113
- : valueType;
114
- throw new InvalidConfigBoundInstanceException(targetExport, filePath, valueDetails);
115
- }
116
- return {
117
- name: configInstance.name,
118
- sections: configInstance.sections,
119
- instance: configInstance
120
- };
121
- }
122
- catch (error) {
123
- if (error instanceof ConfigLoaderException) {
124
- throw error;
125
- }
126
- if (error instanceof Error) {
127
- if (error.message.includes('Cannot find module')) {
128
- const moduleMatch = error.message.match(/Cannot find module ['"]([^'"]+)['"]/);
129
- const missingModule = moduleMatch ? moduleMatch[1] : 'unknown';
130
- throw new MissingDependencyException(filePath, missingModule, error.message);
131
- }
132
- if (error.message.includes('SyntaxError') ||
133
- error.message.includes('parse') ||
134
- error.message.includes('Unexpected token')) {
135
- throw new ConfigFileParseException(filePath, error.message);
136
- }
137
- throw error;
138
- }
139
- throw new Error(`Failed to load config file: ${filePath}. Unexpected error: ${String(error)}`);
140
- }
141
- }
142
- async loadConfigs(filePath) {
143
- const absolutePath = path.resolve(filePath);
144
- if (!fs.existsSync(absolutePath)) {
145
- const parentDir = path.dirname(absolutePath);
146
- const parentExists = fs.existsSync(parentDir);
147
- let similarFiles;
148
- if (parentExists) {
149
- const fileName = path.basename(absolutePath);
150
- const dirFiles = fs.readdirSync(parentDir);
151
- similarFiles = dirFiles.filter((file) => file.toLowerCase().includes(fileName.toLowerCase().slice(0, 3)));
152
- }
153
- throw new ConfigFileNotFoundException(absolutePath, parentDir, parentExists, similarFiles);
154
- }
155
- const stat = fs.statSync(absolutePath);
156
- if (stat.isDirectory()) {
157
- throw new ConfigFileIsDirectoryException(absolutePath);
158
- }
159
- const isTypeScript = absolutePath.endsWith('.ts') || absolutePath.endsWith('.tsx');
160
- let fileToLoad = absolutePath;
161
- if (isTypeScript) {
162
- const jsPath = absolutePath.replace(/\.tsx?$/, '.js');
163
- if (fs.existsSync(jsPath)) {
164
- fileToLoad = jsPath;
165
- }
166
- else {
167
- const srcMatch = absolutePath.match(/^(.*[/\\])src([/\\].+)$/);
168
- if (srcMatch) {
169
- const distPath = srcMatch[1] + 'dist' + srcMatch[2].replace(/\.tsx?$/, '.js');
170
- if (fs.existsSync(distPath)) {
171
- fileToLoad = distPath;
172
- }
173
- else {
174
- throw new ConfigFileParseException(filePath, `TypeScript file found but no compiled .js file exists. Please compile the file first (e.g., run 'tsc' or 'npm run build'). Checked: ${jsPath} and ${distPath}`);
175
- }
176
- }
177
- else {
178
- throw new ConfigFileParseException(filePath, `TypeScript file found but no compiled .js file exists. Please compile the file first (e.g., run 'tsc' or 'npm run build'). Expected compiled file at: ${jsPath}`);
179
- }
180
- }
181
- }
182
- try {
183
- const fileURL = pathToFileURL(fileToLoad).href;
184
- const module = await import(fileURL);
185
- const configs = new Map();
186
- if (module.default && this.isConfigBoundInstance(module.default)) {
187
- configs.set('default', {
188
- name: module.default.name,
189
- sections: module.default.sections,
190
- instance: module.default
191
- });
192
- }
193
- for (const [exportName, exportValue] of Object.entries(module)) {
194
- if (exportName !== '__esModule' &&
195
- exportName !== 'default' &&
196
- this.isConfigBoundInstance(exportValue)) {
197
- const typedValue = exportValue;
198
- configs.set(exportName, {
199
- name: typedValue.name,
200
- sections: typedValue.sections,
201
- instance: typedValue
202
- });
203
- }
204
- }
205
- return configs;
206
- }
207
- catch (error) {
208
- if (error instanceof ConfigLoaderException) {
209
- throw error;
210
- }
211
- if (error instanceof Error) {
212
- if (error.message.includes('Cannot find module')) {
213
- const moduleMatch = error.message.match(/Cannot find module ['"]([^'"]+)['"]/);
214
- const missingModule = moduleMatch ? moduleMatch[1] : 'unknown';
215
- throw new MissingDependencyException(filePath, missingModule, error.message);
216
- }
217
- if (error.message.includes('SyntaxError') ||
218
- error.message.includes('parse') ||
219
- error.message.includes('Unexpected token')) {
220
- throw new ConfigFileParseException(filePath, error.message);
221
- }
222
- throw error;
223
- }
224
- throw new Error(`Failed to load config file: ${filePath}. Unexpected error: ${String(error)}`);
225
- }
226
- }
227
- isConfigBoundInstance(value) {
228
- return (value !== null &&
229
- value !== undefined &&
230
- typeof value === 'object' &&
231
- 'name' in value &&
232
- 'sections' in value &&
233
- typeof value.name === 'string' &&
234
- typeof value.sections === 'object');
235
- }
236
- };
237
- ConfigLoaderService = __decorate([
238
- Injectable()
239
- ], ConfigLoaderService);
240
- export { ConfigLoaderService };
241
- //# sourceMappingURL=config-loader.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-loader.service.js","sourceRoot":"","sources":["../../src/services/config-loader.service.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- export declare class FileWriterService {
2
- writeToFile(filePath: string, content: string): void;
3
- writeToStdout(content: string): void;
4
- write(content: string, outputPath?: string): void;
5
- }
6
- //# sourceMappingURL=file-writer.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-writer.service.d.ts","sourceRoot":"","sources":["../../src/services/file-writer.service.ts"],"names":[],"mappings":"AAIA,qBACa,iBAAiB;IAC5B,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAWpD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAOpC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;CAOlD"}