codemerge-cli 1.1.4 → 1.1.6

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 (44) hide show
  1. package/dist/commands/init.d.ts +3 -0
  2. package/dist/commands/init.d.ts.map +1 -1
  3. package/dist/commands/init.js +74 -19
  4. package/dist/commands/init.js.map +1 -1
  5. package/dist/commands/use.d.ts.map +1 -1
  6. package/dist/commands/use.js +18 -4
  7. package/dist/commands/use.js.map +1 -1
  8. package/dist/commands/watch.d.ts +10 -0
  9. package/dist/commands/watch.d.ts.map +1 -0
  10. package/dist/commands/watch.js +73 -0
  11. package/dist/commands/watch.js.map +1 -0
  12. package/dist/core/codeMerger.d.ts +4 -0
  13. package/dist/core/codeMerger.d.ts.map +1 -1
  14. package/dist/core/codeMerger.js +97 -5
  15. package/dist/core/codeMerger.js.map +1 -1
  16. package/dist/core/config.d.ts +1 -0
  17. package/dist/core/config.d.ts.map +1 -1
  18. package/dist/core/config.js +4 -1
  19. package/dist/core/config.js.map +1 -1
  20. package/dist/core/fileWatcher.d.ts +13 -0
  21. package/dist/core/fileWatcher.d.ts.map +1 -0
  22. package/dist/core/fileWatcher.js +61 -0
  23. package/dist/core/fileWatcher.js.map +1 -0
  24. package/dist/core/httpServer.d.ts +15 -0
  25. package/dist/core/httpServer.d.ts.map +1 -0
  26. package/dist/core/httpServer.js +76 -0
  27. package/dist/core/httpServer.js.map +1 -0
  28. package/dist/core/mergeCache.d.ts +10 -0
  29. package/dist/core/mergeCache.d.ts.map +1 -0
  30. package/dist/core/mergeCache.js +22 -0
  31. package/dist/core/mergeCache.js.map +1 -0
  32. package/dist/types/config.d.ts +4 -0
  33. package/dist/types/config.d.ts.map +1 -1
  34. package/dist/types/merge.d.ts +2 -0
  35. package/dist/types/merge.d.ts.map +1 -1
  36. package/package.json +1 -1
  37. package/dist/core/fileGenerator.d.ts +0 -12
  38. package/dist/core/fileGenerator.d.ts.map +0 -1
  39. package/dist/core/fileGenerator.js +0 -40
  40. package/dist/core/fileGenerator.js.map +0 -1
  41. package/dist/core/fileTemplates.d.ts +0 -2
  42. package/dist/core/fileTemplates.d.ts.map +0 -1
  43. package/dist/core/fileTemplates.js +0 -2
  44. package/dist/core/fileTemplates.js.map +0 -1
@@ -2,5 +2,8 @@ import { Command } from 'commander';
2
2
  export declare class InitCommand {
3
3
  register(program: Command): void;
4
4
  private execute;
5
+ private getProjectName;
6
+ private createConfigFile;
7
+ private updateGitignore;
5
8
  }
6
9
  //# sourceMappingURL=init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../lib/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,qBAAa,WAAW;IACf,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;YAIzB,OAAO;CA4BtB"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../lib/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,qBAAa,WAAW;IACf,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;YAIzB,OAAO;IA8BrB,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,gBAAgB;IAgCxB,OAAO,CAAC,eAAe;CAgBxB"}
@@ -1,4 +1,6 @@
1
- import { FileGenerator } from '../core/fileGenerator.js';
1
+ import { readFileSync } from 'fs';
2
+ import { join } from 'path';
3
+ import { FileUtils } from '../utils/fileUtils.js';
2
4
  import { PathUtils } from '../utils/pathUtils.js';
3
5
  import { Logger } from '../utils/logger.js';
4
6
  export class InitCommand {
@@ -9,30 +11,83 @@ export class InitCommand {
9
11
  try {
10
12
  Logger.info('Initializing CodeMerge project...');
11
13
  const resolvedPath = PathUtils.resolve(targetPath);
12
- const generator = new FileGenerator(resolvedPath);
13
- const result = generator.generate(options.force || false);
14
- console.log(resolvedPath, result);
15
- if (result.success) {
16
- Logger.success('Created ' + result.filesCreated + ' files successfully');
17
- Logger.plain('');
18
- Logger.plain('Next steps:');
19
- Logger.plain(' 1. npm install');
20
- Logger.plain(' 2. npm run build');
21
- Logger.plain(' 3. npm start use');
22
- }
23
- else {
24
- Logger.warning('Created ' + result.filesCreated + ' files with ' + result.errors.length + ' errors:');
25
- result.errors.forEach(error => Logger.error(' ' + error));
26
- if (!options.force) {
27
- Logger.plain('');
28
- Logger.plain('Use --force to overwrite existing files');
29
- }
14
+ const configPath = join(resolvedPath, 'codemerge.json');
15
+ if (!options.force && FileUtils.exists(configPath)) {
16
+ Logger.error('codemerge.json already exists. Use --force to overwrite.');
17
+ process.exit(1);
30
18
  }
19
+ const projectName = this.getProjectName(resolvedPath);
20
+ const outputPath = projectName ? `${projectName}-merged.txt` : 'merged-output.txt';
21
+ this.createConfigFile(configPath, outputPath, projectName);
22
+ this.updateGitignore(resolvedPath, outputPath);
23
+ Logger.success('Configuration file created: codemerge.json');
24
+ Logger.plain('Output file added to .gitignore: ' + outputPath);
25
+ Logger.plain('');
26
+ Logger.plain('Next steps:');
27
+ Logger.plain(' 1. Review codemerge.json settings');
28
+ Logger.plain(' 2. Run: codemerge use');
31
29
  }
32
30
  catch (error) {
33
31
  Logger.error(error instanceof Error ? error.message : 'Unexpected error occurred');
34
32
  process.exit(1);
35
33
  }
36
34
  }
35
+ getProjectName(basePath) {
36
+ const packagePath = join(basePath, 'package.json');
37
+ if (!FileUtils.exists(packagePath))
38
+ return null;
39
+ try {
40
+ const pkg = FileUtils.readJson(packagePath);
41
+ if (!pkg.name)
42
+ return null;
43
+ return pkg.name.replace(/^@.*?\//, '').replace(/[^a-zA-Z0-9-_]/g, '-').toLowerCase();
44
+ }
45
+ catch {
46
+ return null;
47
+ }
48
+ }
49
+ createConfigFile(configPath, outputPath, projectName) {
50
+ const config = {
51
+ projectName,
52
+ outputPath,
53
+ watch: false,
54
+ watchDelay: 1500,
55
+ useGitignore: true,
56
+ ignorePatterns: [
57
+ 'node_modules/**',
58
+ '.git/**',
59
+ 'dist/**',
60
+ 'build/**',
61
+ '**/*.log',
62
+ '.env*',
63
+ '**/.DS_Store',
64
+ 'coverage/**',
65
+ '.next/**',
66
+ '.nuxt/**'
67
+ ],
68
+ includePatterns: [
69
+ '**/*.ts',
70
+ '**/*.js',
71
+ '**/*.tsx',
72
+ '**/*.jsx',
73
+ '**/*.json',
74
+ '**/*.md'
75
+ ]
76
+ };
77
+ FileUtils.write(configPath, JSON.stringify(config, null, 2) + '\n');
78
+ }
79
+ updateGitignore(basePath, outputFileName) {
80
+ const gitignorePath = join(basePath, '.gitignore');
81
+ if (!FileUtils.exists(gitignorePath)) {
82
+ FileUtils.write(gitignorePath, outputFileName + '\n');
83
+ return;
84
+ }
85
+ const content = readFileSync(gitignorePath, 'utf-8');
86
+ const lines = content.split('\n');
87
+ if (lines.some(line => line.trim() === outputFileName))
88
+ return;
89
+ const newContent = content.endsWith('\n') ? content + outputFileName + '\n' : content + '\n' + outputFileName + '\n';
90
+ FileUtils.write(gitignorePath, newContent);
91
+ }
37
92
  }
38
93
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../lib/commands/init.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAM5C,MAAM,OAAO,WAAW;IACf,QAAQ,CAAC,OAAgB;QAC9B,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,wCAAwC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,0BAA0B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9M,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,UAAkB,EAAE,OAAoB;QAC5D,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YAEjD,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACnD,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;YAChC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,YAAY,GAAG,qBAAqB,CAAC,CAAC;gBACzE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACjB,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBAC5B,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;gBACjC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;gBACnC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,YAAY,GAAG,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;gBACtG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;gBAC3D,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;oBACnB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACjB,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC;YACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../lib/commands/init.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"use.d.ts","sourceRoot":"","sources":["../../lib/commands/use.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,qBAAa,UAAU;IACd,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;YAIzB,OAAO;CA4BtB"}
1
+ {"version":3,"file":"use.d.ts","sourceRoot":"","sources":["../../lib/commands/use.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,qBAAa,UAAU;IACd,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;YAIzB,OAAO;CA8CtB"}
@@ -1,5 +1,6 @@
1
1
  import { CodeMerger } from '../core/codeMerger.js';
2
2
  import { Config } from '../core/config.js';
3
+ import { FileWatcher } from '../core/fileWatcher.js';
3
4
  import { Logger } from '../utils/logger.js';
4
5
  export class UseCommand {
5
6
  register(program) {
@@ -18,14 +19,27 @@ export class UseCommand {
18
19
  });
19
20
  const merger = new CodeMerger(mergeOptions);
20
21
  const result = await merger.execute();
21
- if (result.success) {
22
- Logger.success('Merged ' + result.filesProcessed + ' files into ' + result.outputPath);
23
- }
24
- else {
22
+ if (!result.success) {
25
23
  Logger.error('Merge failed:');
26
24
  result.errors.forEach(error => Logger.error(' ' + error));
27
25
  process.exit(1);
28
26
  }
27
+ Logger.success('Merged ' + result.filesProcessed + ' files into ' + result.outputPath);
28
+ if (mergeOptions.watch) {
29
+ const watcher = new FileWatcher(mergeOptions, async () => {
30
+ const result = await merger.execute();
31
+ if (result.success) {
32
+ Logger.success('Merged ' + result.filesProcessed + ' files into ' + result.outputPath);
33
+ }
34
+ });
35
+ watcher.start();
36
+ process.on('SIGINT', () => {
37
+ Logger.plain('\nStopping watcher...');
38
+ watcher.stop();
39
+ process.exit(0);
40
+ });
41
+ Logger.plain('Press Ctrl+C to stop watching');
42
+ }
29
43
  }
30
44
  catch (error) {
31
45
  Logger.error(error instanceof Error ? error.message : 'Unexpected error occurred');
@@ -1 +1 @@
1
- {"version":3,"file":"use.js","sourceRoot":"","sources":["../../lib/commands/use.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAI5C,MAAM,OAAO,UAAU;IACd,QAAQ,CAAC,OAAgB;QAC9B,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,4CAA4C,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,wBAAwB,CAAC,CAAC,MAAM,CAAC,qBAAqB,EAAE,8CAA8C,CAAC,CAAC,MAAM,CAAC,sBAAsB,EAAE,oCAAoC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACtZ,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,SAAiB,EAAE,OAAuB;QAC9D,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAEtC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtC,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;gBACxC,SAAS;gBACT,UAAU,EAAE,OAAO,CAAC,MAAM;gBAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;gBACtE,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;aAC1E,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YAEtC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,cAAc,GAAG,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;YACzF,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;gBAC9B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;gBAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC;YACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"use.js","sourceRoot":"","sources":["../../lib/commands/use.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Command } from 'commander';
2
+ export declare class WatchCommand {
3
+ register(program: Command): void;
4
+ private execute;
5
+ private performInitialMerge;
6
+ private readMergedContent;
7
+ private getProjectName;
8
+ private setupGracefulShutdown;
9
+ }
10
+ //# sourceMappingURL=watch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../lib/commands/watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,qBAAa,YAAY;IAChB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;YAIzB,OAAO;YAqCP,mBAAmB;YAenB,iBAAiB;IAK/B,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,qBAAqB;CAW9B"}
@@ -0,0 +1,73 @@
1
+ import { basename } from 'path';
2
+ import { HttpServer } from '../core/httpServer.js';
3
+ import { CodeMerger } from '../core/codeMerger.js';
4
+ import { Config } from '../core/config.js';
5
+ import { MergeCache } from '../core/mergeCache.js';
6
+ import { FileWatcher } from '../core/fileWatcher.js';
7
+ import { Logger } from '../utils/logger.js';
8
+ export class WatchCommand {
9
+ register(program) {
10
+ program.command('watch').description('Start HTTP server and watch for file changes').argument('[path]', 'Input path to scan', '.').option('-o, --output <path>', 'Output file path').option('-p, --port <number>', 'Server port', '9876').option('--ignore <patterns>', 'Additional ignore patterns (comma-separated)').option('--include <patterns>', 'Include patterns (comma-separated)').action(this.execute.bind(this));
11
+ }
12
+ async execute(inputPath, options) {
13
+ try {
14
+ Logger.info('Starting watch mode...');
15
+ const config = Config.load(inputPath);
16
+ const mergeOptions = Config.merge(config, {
17
+ inputPath,
18
+ outputPath: options.output,
19
+ watch: true,
20
+ ignorePatterns: options.ignore ? options.ignore.split(',') : undefined,
21
+ includePatterns: options.include ? options.include.split(',') : undefined
22
+ });
23
+ const projectName = this.getProjectName(mergeOptions.outputPath);
24
+ const port = parseInt(options.port || '9876', 10);
25
+ const cache = new MergeCache();
26
+ await this.performInitialMerge(mergeOptions, cache);
27
+ const server = new HttpServer(port, projectName, cache);
28
+ await server.start();
29
+ const watcher = new FileWatcher(mergeOptions, async () => {
30
+ await this.performInitialMerge(mergeOptions, cache);
31
+ });
32
+ watcher.start();
33
+ this.setupGracefulShutdown(server, watcher);
34
+ Logger.success(`Server running at http://localhost:${port}/${projectName}`);
35
+ Logger.plain('Press Ctrl+C to stop');
36
+ }
37
+ catch (error) {
38
+ Logger.error(error instanceof Error ? error.message : 'Unexpected error occurred');
39
+ process.exit(1);
40
+ }
41
+ }
42
+ async performInitialMerge(options, cache) {
43
+ const merger = new CodeMerger(options);
44
+ const result = await merger.execute();
45
+ if (!result.success) {
46
+ Logger.error('Initial merge failed');
47
+ result.errors.forEach(error => Logger.error(' ' + error));
48
+ return;
49
+ }
50
+ const content = await this.readMergedContent(result.outputPath);
51
+ cache.set(content);
52
+ Logger.success(`Merged ${result.filesProcessed} files`);
53
+ }
54
+ async readMergedContent(outputPath) {
55
+ const { readFileSync } = await import('fs');
56
+ return readFileSync(outputPath, 'utf-8');
57
+ }
58
+ getProjectName(outputPath) {
59
+ const fileName = basename(outputPath);
60
+ return fileName.replace(/\.[^/.]+$/, '').replace(/[^a-zA-Z0-9-_]/g, '-').toLowerCase();
61
+ }
62
+ setupGracefulShutdown(server, watcher) {
63
+ const shutdown = () => {
64
+ Logger.plain('\nStopping server and watcher...');
65
+ server.stop();
66
+ watcher.stop();
67
+ process.exit(0);
68
+ };
69
+ process.on('SIGINT', shutdown);
70
+ process.on('SIGTERM', shutdown);
71
+ }
72
+ }
73
+ //# sourceMappingURL=watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../lib/commands/watch.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,12 @@ export declare class CodeMerger {
4
4
  constructor(options: MergeOptions);
5
5
  execute(): Promise<MergeResult>;
6
6
  private collectFiles;
7
+ private getIgnorePatterns;
8
+ private parseGitignore;
7
9
  private mergeFiles;
8
10
  private generateHeader;
11
+ private generateBreakdown;
12
+ private generateStructure;
9
13
  private writeOutput;
10
14
  }
11
15
  //# sourceMappingURL=codeMerger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"codeMerger.d.ts","sourceRoot":"","sources":["../../lib/core/codeMerger.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAY,MAAM,mBAAmB,CAAC;AAE7E,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAe;gBAElB,OAAO,EAAE,YAAY;IAIpB,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC;YAsB9B,YAAY;IA8B1B,OAAO,CAAC,UAAU;IAmBlB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,WAAW;CAGpB"}
1
+ {"version":3,"file":"codeMerger.d.ts","sourceRoot":"","sources":["../../lib/core/codeMerger.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAY,MAAM,mBAAmB,CAAC;AAE7E,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAe;gBAElB,OAAO,EAAE,YAAY;IAIpB,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC;YAsB9B,YAAY;IA+B1B,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,UAAU;IAuBlB,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,iBAAiB;IA+CzB,OAAO,CAAC,WAAW;CAGpB"}
@@ -1,4 +1,4 @@
1
- import { resolve, relative } from 'path';
1
+ import { resolve, relative, join } from 'path';
2
2
  import { glob } from 'glob';
3
3
  import { FileUtils } from '../utils/fileUtils.js';
4
4
  export class CodeMerger {
@@ -30,10 +30,11 @@ export class CodeMerger {
30
30
  async collectFiles() {
31
31
  const files = [];
32
32
  const inputPath = resolve(this.options.inputPath);
33
+ const ignorePatterns = this.getIgnorePatterns(inputPath);
33
34
  for (const pattern of this.options.includePatterns) {
34
35
  const matchedFiles = await glob(pattern, {
35
36
  cwd: inputPath,
36
- ignore: this.options.ignorePatterns,
37
+ ignore: ignorePatterns,
37
38
  nodir: true
38
39
  });
39
40
  for (const file of matchedFiles) {
@@ -54,8 +55,42 @@ export class CodeMerger {
54
55
  }
55
56
  return files.sort((a, b) => a.relativePath.localeCompare(b.relativePath));
56
57
  }
58
+ getIgnorePatterns(inputPath) {
59
+ const patterns = [...this.options.ignorePatterns];
60
+ if (!this.options.useGitignore)
61
+ return patterns;
62
+ const gitignorePath = join(inputPath, '.gitignore');
63
+ if (!FileUtils.exists(gitignorePath))
64
+ return patterns;
65
+ try {
66
+ const content = FileUtils.read(gitignorePath);
67
+ const gitignorePatterns = this.parseGitignore(content);
68
+ patterns.push(...gitignorePatterns);
69
+ }
70
+ catch (error) {
71
+ return patterns;
72
+ }
73
+ return patterns;
74
+ }
75
+ parseGitignore(content) {
76
+ return content
77
+ .split('\n')
78
+ .map(line => line.trim())
79
+ .filter(line => line && !line.startsWith('#'))
80
+ .map(line => {
81
+ if (line.endsWith('/'))
82
+ return line + '**';
83
+ if (!line.includes('/') && !line.includes('*'))
84
+ return '**/' + line;
85
+ return line;
86
+ });
87
+ }
57
88
  mergeFiles(files) {
58
- const header = this.generateHeader(files.length);
89
+ const totalLines = files.reduce((sum, file) => sum + file.content.split('\n').length, 0);
90
+ const totalChars = files.reduce((sum, file) => sum + file.content.length, 0);
91
+ const breakdown = this.generateBreakdown(files);
92
+ const structure = this.generateStructure(files);
93
+ const header = this.generateHeader(files.length, totalLines, totalChars, breakdown, structure);
59
94
  const separator = '='.repeat(80);
60
95
  const mergedContent = files.map(file => {
61
96
  const fileSeparator = '-'.repeat(40);
@@ -70,15 +105,72 @@ export class CodeMerger {
70
105
  }).join('\n');
71
106
  return [header, separator, '', mergedContent].join('\n');
72
107
  }
73
- generateHeader(fileCount) {
108
+ generateHeader(fileCount, totalLines, totalChars, breakdown, structure) {
74
109
  const timestamp = new Date().toISOString();
75
110
  return [
76
111
  '# Code Merge Output',
77
112
  'Generated at: ' + timestamp,
78
113
  'Source path: ' + this.options.inputPath,
79
- 'Files processed: ' + fileCount
114
+ 'Files processed: ' + fileCount,
115
+ 'Total lines: ' + totalLines,
116
+ 'Total characters: ' + totalChars,
117
+ '',
118
+ breakdown,
119
+ '',
120
+ structure
80
121
  ].join('\n');
81
122
  }
123
+ generateBreakdown(files) {
124
+ const typeMap = new Map();
125
+ files.forEach(file => {
126
+ const ext = file.relativePath.split('.').pop() || 'unknown';
127
+ const lines = file.content.split('\n').length;
128
+ const current = typeMap.get(ext) || { count: 0, lines: 0 };
129
+ typeMap.set(ext, { count: current.count + 1, lines: current.lines + lines });
130
+ });
131
+ const sorted = Array.from(typeMap.entries()).sort((a, b) => b[1].count - a[1].count);
132
+ const lines = sorted.map(([ext, data]) => ` - ${ext}: ${data.count} files (${data.lines.toLocaleString()} lines)`);
133
+ return ['File types:', ...lines].join('\n');
134
+ }
135
+ generateStructure(files) {
136
+ const tree = {};
137
+ files.forEach(file => {
138
+ const parts = file.relativePath.split(/[/\\]/);
139
+ for (let i = 0; i < parts.length; i++) {
140
+ const path = parts.slice(0, i + 1).join('/');
141
+ const isFile = i === parts.length - 1;
142
+ if (isFile) {
143
+ const dir = i === 0 ? '.' : parts.slice(0, i).join('/');
144
+ if (!tree[dir])
145
+ tree[dir] = [];
146
+ tree[dir].push(file);
147
+ }
148
+ }
149
+ });
150
+ const sortedPaths = Object.keys(tree).sort();
151
+ const lines = ['Project structure & file index:', './'];
152
+ const processed = new Set();
153
+ sortedPaths.forEach(path => {
154
+ const parts = path === '.' ? [] : path.split('/');
155
+ const depth = parts.length;
156
+ parts.forEach((part, index) => {
157
+ const currentPath = parts.slice(0, index + 1).join('/');
158
+ if (!processed.has(currentPath)) {
159
+ const indent = ' '.repeat(index + 1);
160
+ lines.push(`${indent}${part}/`);
161
+ processed.add(currentPath);
162
+ }
163
+ });
164
+ const dirFiles = tree[path].sort((a, b) => a.relativePath.localeCompare(b.relativePath));
165
+ dirFiles.forEach(file => {
166
+ const fileName = file.relativePath.split(/[/\\]/).pop();
167
+ const lineCount = file.content.split('\n').length;
168
+ const indent = ' '.repeat(depth + 1);
169
+ lines.push(`${indent}- ${fileName} (${lineCount.toLocaleString()} lines)`);
170
+ });
171
+ });
172
+ return lines.join('\n');
173
+ }
82
174
  writeOutput(content) {
83
175
  FileUtils.write(this.options.outputPath, content);
84
176
  }
@@ -1 +1 @@
1
- {"version":3,"file":"codeMerger.js","sourceRoot":"","sources":["../../lib/core/codeMerger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codeMerger.js","sourceRoot":"","sources":["../../lib/core/codeMerger.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ export declare class Config {
4
4
  private static readonly CONFIG_FILENAMES;
5
5
  private static readonly DEFAULT_IGNORE_PATTERNS;
6
6
  private static readonly DEFAULT_INCLUDE_PATTERNS;
7
+ private static readonly DEFAULT_WATCH_DELAY;
7
8
  static load(basePath: string): ConfigFile;
8
9
  private static parseConfigFile;
9
10
  private static loadPackageJsonConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../lib/core/config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAGtC;IAEF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAW7C;IAEF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAO9C;WAEY,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU;IAahD,OAAO,CAAC,MAAM,CAAC,eAAe;IAQ9B,OAAO,CAAC,MAAM,CAAC,qBAAqB;WAYtB,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY;CAStF"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../lib/core/config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAGtC;IAEF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAW7C;IAEF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAO9C;IAEF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAQ;WAErC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU;IAahD,OAAO,CAAC,MAAM,CAAC,eAAe;IAQ9B,OAAO,CAAC,MAAM,CAAC,qBAAqB;WAYtB,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY;CAWtF"}
@@ -26,6 +26,7 @@ export class Config {
26
26
  '**/*.json',
27
27
  '**/*.md'
28
28
  ];
29
+ static DEFAULT_WATCH_DELAY = 1500;
29
30
  static load(basePath) {
30
31
  const resolvedPath = PathUtils.resolve(basePath);
31
32
  for (const filename of this.CONFIG_FILENAMES) {
@@ -61,8 +62,10 @@ export class Config {
61
62
  inputPath: options.inputPath || process.cwd(),
62
63
  outputPath: options.outputPath || config.outputPath || 'merged-output.txt',
63
64
  watch: options.watch ?? config.watch ?? false,
65
+ watchDelay: options.watchDelay ?? config.watchDelay ?? this.DEFAULT_WATCH_DELAY,
64
66
  ignorePatterns: options.ignorePatterns || config.ignorePatterns || this.DEFAULT_IGNORE_PATTERNS,
65
- includePatterns: options.includePatterns || config.includePatterns || this.DEFAULT_INCLUDE_PATTERNS
67
+ includePatterns: options.includePatterns || config.includePatterns || this.DEFAULT_INCLUDE_PATTERNS,
68
+ useGitignore: options.useGitignore ?? config.useGitignore ?? true
66
69
  };
67
70
  }
68
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../lib/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAKlD,MAAM,OAAO,MAAM;IACT,MAAM,CAAU,gBAAgB,GAAG;QACzC,gBAAgB;QAChB,uBAAuB;KACxB,CAAC;IAEM,MAAM,CAAU,uBAAuB,GAAG;QAChD,iBAAiB;QACjB,SAAS;QACT,SAAS;QACT,UAAU;QACV,UAAU;QACV,OAAO;QACP,cAAc;QACd,aAAa;QACb,UAAU;QACV,UAAU;KACX,CAAC;IAEM,MAAM,CAAU,wBAAwB,GAAG;QACjD,SAAS;QACT,SAAS;QACT,UAAU;QACV,UAAU;QACV,WAAW;QACX,SAAS;KACV,CAAC;IAEK,MAAM,CAAC,IAAI,CAAC,QAAgB;QACjC,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEjD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YAChD,IAAI,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;gBACjC,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC;IAClD,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,IAAY;QACzC,IAAI,CAAC;YACH,OAAO,SAAS,CAAC,QAAQ,CAAa,IAAI,CAAC,CAAC;QAC9C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAAC,QAAgB;QACnD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QACnD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC;YAAE,OAAO,EAAE,CAAC;QAE9C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAM,WAAW,CAAC,CAAC;YACjD,OAAO,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,MAAkB,EAAE,OAA8B;QACpE,OAAO;YACL,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE;YAC7C,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,IAAI,mBAAmB;YAC1E,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,IAAI,KAAK;YAC7C,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,uBAAuB;YAC/F,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC,wBAAwB;SACpG,CAAC;IACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../lib/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAKlD,MAAM,OAAO,MAAM;IACT,MAAM,CAAU,gBAAgB,GAAG;QACzC,gBAAgB;QAChB,uBAAuB;KACxB,CAAC;IAEM,MAAM,CAAU,uBAAuB,GAAG;QAChD,iBAAiB;QACjB,SAAS;QACT,SAAS;QACT,UAAU;QACV,UAAU;QACV,OAAO;QACP,cAAc;QACd,aAAa;QACb,UAAU;QACV,UAAU;KACX,CAAC;IAEM,MAAM,CAAU,wBAAwB,GAAG;QACjD,SAAS;QACT,SAAS;QACT,UAAU;QACV,UAAU;QACV,WAAW;QACX,SAAS;KACV,CAAC;IAEM,MAAM,CAAU,mBAAmB,GAAG,IAAI,CAAC;IAE5C,MAAM,CAAC,IAAI,CAAC,QAAgB;QACjC,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEjD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YAChD,IAAI,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;gBACjC,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC;IAClD,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,IAAY;QACzC,IAAI,CAAC;YACH,OAAO,SAAS,CAAC,QAAQ,CAAa,IAAI,CAAC,CAAC;QAC9C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAAC,QAAgB;QACnD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QACnD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC;YAAE,OAAO,EAAE,CAAC;QAE9C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAM,WAAW,CAAC,CAAC;YACjD,OAAO,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,MAAkB,EAAE,OAA8B;QACpE,OAAO;YACL,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE;YAC7C,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,IAAI,mBAAmB;YAC1E,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,IAAI,KAAK;YAC7C,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,mBAAmB;YAC/E,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,uBAAuB;YAC/F,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC,wBAAwB;YACnG,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,IAAI,IAAI;SAClE,CAAC;IACJ,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { MergeOptions } from '../types/merge.js';
2
+ export declare class FileWatcher {
3
+ private watcher;
4
+ private options;
5
+ private onChange;
6
+ private debounceTimer;
7
+ private changedFiles;
8
+ constructor(options: MergeOptions, onChange: () => Promise<void>);
9
+ start(): void;
10
+ stop(): void;
11
+ private handleFileChange;
12
+ }
13
+ //# sourceMappingURL=fileWatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileWatcher.d.ts","sourceRoot":"","sources":["../../lib/core/fileWatcher.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,YAAY,CAA0B;gBAElC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC;IAKzD,KAAK,IAAI,IAAI;IAkBb,IAAI,IAAI,IAAI;IAYnB,OAAO,CAAC,gBAAgB;CAwBzB"}
@@ -0,0 +1,61 @@
1
+ import { resolve } from 'path';
2
+ import chokidar from 'chokidar';
3
+ import { Logger } from '../utils/logger.js';
4
+ export class FileWatcher {
5
+ watcher = null;
6
+ options;
7
+ onChange;
8
+ debounceTimer = null;
9
+ changedFiles = new Set();
10
+ constructor(options, onChange) {
11
+ this.options = options;
12
+ this.onChange = onChange;
13
+ }
14
+ start() {
15
+ if (this.watcher)
16
+ this.stop();
17
+ const outputPath = resolve(this.options.outputPath);
18
+ this.watcher = chokidar.watch(this.options.inputPath, {
19
+ ignored: [...this.options.ignorePatterns, outputPath],
20
+ persistent: true,
21
+ ignoreInitial: true
22
+ });
23
+ this.watcher.on('change', this.handleFileChange.bind(this));
24
+ this.watcher.on('add', this.handleFileChange.bind(this));
25
+ this.watcher.on('unlink', this.handleFileChange.bind(this));
26
+ Logger.info('File watcher started');
27
+ }
28
+ stop() {
29
+ if (this.watcher) {
30
+ this.watcher.close();
31
+ this.watcher = null;
32
+ }
33
+ if (this.debounceTimer) {
34
+ clearTimeout(this.debounceTimer);
35
+ this.debounceTimer = null;
36
+ }
37
+ this.changedFiles.clear();
38
+ }
39
+ handleFileChange(path) {
40
+ const outputPath = resolve(this.options.outputPath);
41
+ const fullPath = resolve(path);
42
+ if (fullPath === outputPath)
43
+ return;
44
+ this.changedFiles.add(path);
45
+ if (this.debounceTimer)
46
+ clearTimeout(this.debounceTimer);
47
+ this.debounceTimer = setTimeout(async () => {
48
+ const files = Array.from(this.changedFiles);
49
+ this.changedFiles.clear();
50
+ Logger.info(`Files changed (${files.length}):`);
51
+ files.forEach(file => Logger.plain(` ${file}`));
52
+ try {
53
+ await this.onChange();
54
+ }
55
+ catch (error) {
56
+ Logger.error('Error during file change handling: ' + (error instanceof Error ? error.message : 'Unknown error'));
57
+ }
58
+ }, this.options.watchDelay);
59
+ }
60
+ }
61
+ //# sourceMappingURL=fileWatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileWatcher.js","sourceRoot":"","sources":["../../lib/core/fileWatcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { MergeCache } from './mergeCache.js';
2
+ export declare class HttpServer {
3
+ private server;
4
+ private port;
5
+ private projectName;
6
+ private cache;
7
+ constructor(port: number, projectName: string, cache: MergeCache);
8
+ start(): Promise<void>;
9
+ stop(): void;
10
+ private handleRequest;
11
+ private handleMergeEndpoint;
12
+ private handleHealthEndpoint;
13
+ private handleNotFound;
14
+ }
15
+ //# sourceMappingURL=httpServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpServer.d.ts","sourceRoot":"","sources":["../../lib/core/httpServer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,KAAK,CAAa;gBAEd,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU;IAMnD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB5B,IAAI,IAAI,IAAI;IAOnB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,cAAc;CAOvB"}
@@ -0,0 +1,76 @@
1
+ import { createServer } from 'http';
2
+ import { Logger } from '../utils/logger.js';
3
+ export class HttpServer {
4
+ server = null;
5
+ port;
6
+ projectName;
7
+ cache;
8
+ constructor(port, projectName, cache) {
9
+ this.port = port;
10
+ this.projectName = projectName;
11
+ this.cache = cache;
12
+ }
13
+ async start() {
14
+ return new Promise((resolve, reject) => {
15
+ this.server = createServer(this.handleRequest.bind(this));
16
+ this.server.on('error', (error) => {
17
+ if (error.code === 'EADDRINUSE') {
18
+ Logger.error(`Port ${this.port} is already in use`);
19
+ reject(error);
20
+ }
21
+ else {
22
+ Logger.error('Server error: ' + error.message);
23
+ reject(error);
24
+ }
25
+ });
26
+ this.server.listen(this.port, () => {
27
+ resolve();
28
+ });
29
+ });
30
+ }
31
+ stop() {
32
+ if (this.server) {
33
+ this.server.close();
34
+ this.server = null;
35
+ }
36
+ }
37
+ handleRequest(req, res) {
38
+ const url = req.url || '';
39
+ if (url === `/${this.projectName}` || url === `/${this.projectName}/`) {
40
+ this.handleMergeEndpoint(res);
41
+ return;
42
+ }
43
+ if (url === '/health' || url === '/') {
44
+ this.handleHealthEndpoint(res);
45
+ return;
46
+ }
47
+ this.handleNotFound(res);
48
+ }
49
+ handleMergeEndpoint(res) {
50
+ const content = this.cache.get();
51
+ if (!content) {
52
+ res.writeHead(503, { 'Content-Type': 'application/json' });
53
+ res.end(JSON.stringify({ error: 'Merge not ready yet' }));
54
+ return;
55
+ }
56
+ res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });
57
+ res.end(content);
58
+ }
59
+ handleHealthEndpoint(res) {
60
+ res.writeHead(200, { 'Content-Type': 'application/json' });
61
+ res.end(JSON.stringify({
62
+ status: 'ok',
63
+ project: this.projectName,
64
+ endpoint: `/${this.projectName}`,
65
+ mergeReady: this.cache.get() !== null
66
+ }));
67
+ }
68
+ handleNotFound(res) {
69
+ res.writeHead(404, { 'Content-Type': 'application/json' });
70
+ res.end(JSON.stringify({
71
+ error: 'Not found',
72
+ availableEndpoints: ['/', '/health', `/${this.projectName}`]
73
+ }));
74
+ }
75
+ }
76
+ //# sourceMappingURL=httpServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpServer.js","sourceRoot":"","sources":["../../lib/core/httpServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare class MergeCache {
2
+ private content;
3
+ private lastUpdate;
4
+ set(content: string): void;
5
+ get(): string | null;
6
+ getLastUpdate(): Date | null;
7
+ clear(): void;
8
+ hasContent(): boolean;
9
+ }
10
+ //# sourceMappingURL=mergeCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeCache.d.ts","sourceRoot":"","sources":["../../lib/core/mergeCache.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,UAAU,CAAqB;IAEhC,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK1B,GAAG,IAAI,MAAM,GAAG,IAAI;IAIpB,aAAa,IAAI,IAAI,GAAG,IAAI;IAI5B,KAAK,IAAI,IAAI;IAKb,UAAU,IAAI,OAAO;CAG7B"}
@@ -0,0 +1,22 @@
1
+ export class MergeCache {
2
+ content = null;
3
+ lastUpdate = null;
4
+ set(content) {
5
+ this.content = content;
6
+ this.lastUpdate = new Date();
7
+ }
8
+ get() {
9
+ return this.content;
10
+ }
11
+ getLastUpdate() {
12
+ return this.lastUpdate;
13
+ }
14
+ clear() {
15
+ this.content = null;
16
+ this.lastUpdate = null;
17
+ }
18
+ hasContent() {
19
+ return this.content !== null;
20
+ }
21
+ }
22
+ //# sourceMappingURL=mergeCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeCache.js","sourceRoot":"","sources":["../../lib/core/mergeCache.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAU;IACb,OAAO,GAAkB,IAAI,CAAC;IAC9B,UAAU,GAAgB,IAAI,CAAC;IAEhC,GAAG,CAAC,OAAe;QACxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;IAC/B,CAAC;IAEM,GAAG;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEM,aAAa;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC;IAC/B,CAAC;CACF"}
@@ -1,13 +1,17 @@
1
1
  export interface ConfigFile {
2
2
  outputPath?: string;
3
3
  watch?: boolean;
4
+ watchDelay?: number;
4
5
  ignorePatterns?: string[];
5
6
  includePatterns?: string[];
7
+ projectName?: string;
8
+ useGitignore?: boolean;
6
9
  }
7
10
  export interface CommandOptions {
8
11
  output?: string;
9
12
  watch?: boolean;
10
13
  ignore?: string;
11
14
  include?: string;
15
+ port?: string;
12
16
  }
13
17
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../lib/types/config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../lib/types/config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
@@ -2,8 +2,10 @@ export interface MergeOptions {
2
2
  inputPath: string;
3
3
  outputPath: string;
4
4
  watch: boolean;
5
+ watchDelay: number;
5
6
  ignorePatterns: string[];
6
7
  includePatterns: string[];
8
+ useGitignore: boolean;
7
9
  }
8
10
  export interface FileData {
9
11
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../lib/types/merge.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB"}
1
+ {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../lib/types/merge.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codemerge-cli",
3
- "version": "1.1.4",
3
+ "version": "1.1.6",
4
4
  "description": "AI-focused code and data preparation utility",
5
5
  "license": "MIT",
6
6
  "author": "CodeMerge Team",
@@ -1,12 +0,0 @@
1
- export interface GenerateResult {
2
- success: boolean;
3
- filesCreated: number;
4
- errors: string[];
5
- }
6
- export declare class FileGenerator {
7
- private basePath;
8
- constructor(basePath: string);
9
- generate(force?: boolean): GenerateResult;
10
- private ensureDirectory;
11
- }
12
- //# sourceMappingURL=fileGenerator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fileGenerator.d.ts","sourceRoot":"","sources":["../../lib/core/fileGenerator.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,MAAM;IAIrB,QAAQ,CAAC,KAAK,GAAE,OAAe,GAAG,cAAc;IA2BvD,OAAO,CAAC,eAAe;CAKxB"}
@@ -1,40 +0,0 @@
1
- import { mkdirSync } from 'fs';
2
- import { join, dirname } from 'path';
3
- import { FileUtils } from '../utils/fileUtils.js';
4
- import { FILE_TEMPLATES } from './fileTemplates.js';
5
- export class FileGenerator {
6
- basePath;
7
- constructor(basePath) {
8
- this.basePath = basePath;
9
- }
10
- generate(force = false) {
11
- const filesCreated = [];
12
- const errors = [];
13
- for (const [filePath, content] of Object.entries(FILE_TEMPLATES)) {
14
- try {
15
- const fullPath = join(this.basePath, filePath);
16
- if (!force && FileUtils.exists(fullPath)) {
17
- errors.push('File already exists: ' + filePath);
18
- continue;
19
- }
20
- this.ensureDirectory(dirname(fullPath));
21
- FileUtils.write(fullPath, content);
22
- filesCreated.push(filePath);
23
- }
24
- catch (error) {
25
- errors.push('Failed to create ' + filePath + ': ' + (error instanceof Error ? error.message : 'Unknown error'));
26
- }
27
- }
28
- return {
29
- success: errors.length === 0,
30
- filesCreated: filesCreated.length,
31
- errors
32
- };
33
- }
34
- ensureDirectory(dirPath) {
35
- if (!FileUtils.exists(dirPath)) {
36
- mkdirSync(dirPath, { recursive: true });
37
- }
38
- }
39
- }
40
- //# sourceMappingURL=fileGenerator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fileGenerator.js","sourceRoot":"","sources":["../../lib/core/fileGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAErC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAQpD,MAAM,OAAO,aAAa;IAChB,QAAQ,CAAS;IAEzB,YAAY,QAAgB;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAEM,QAAQ,CAAC,QAAiB,KAAK;QACpC,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAuB,EAAE,CAAC;YACvF,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBAC/C,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACzC,MAAM,CAAC,IAAI,CAAC,uBAAuB,GAAG,QAAQ,CAAC,CAAC;oBAChD,SAAS;gBACX,CAAC;gBAED,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACxC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACnC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,mBAAmB,GAAG,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;YAClH,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;YAC5B,YAAY,EAAE,YAAY,CAAC,MAAM;YACjC,MAAM;SACP,CAAC;IACJ,CAAC;IAEO,eAAe,CAAC,OAAe;QACrC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;CACF"}
@@ -1,2 +0,0 @@
1
- export declare const FILE_TEMPLATES: {};
2
- //# sourceMappingURL=fileTemplates.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fileTemplates.d.ts","sourceRoot":"","sources":["../../lib/core/fileTemplates.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,IAAK,CAAC"}
@@ -1,2 +0,0 @@
1
- export const FILE_TEMPLATES = {};
2
- //# sourceMappingURL=fileTemplates.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fileTemplates.js","sourceRoot":"","sources":["../../lib/core/fileTemplates.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC"}