codemerge-cli 1.3.6 → 1.3.7
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/cli.js +18 -16
- package/dist/cli.js.map +1 -1
- package/dist/commands/help/index.d.ts +10 -0
- package/dist/commands/help/index.d.ts.map +1 -0
- package/dist/commands/help/index.js +45 -0
- package/dist/commands/help/index.js.map +1 -0
- package/dist/commands/help/types.d.ts +5 -0
- package/dist/commands/help/types.d.ts.map +1 -0
- package/dist/commands/help/types.js +2 -0
- package/dist/commands/help/types.js.map +1 -0
- package/dist/commands/help.d.ts +1 -1
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +18 -17
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/init/index.d.ts +9 -0
- package/dist/commands/init/index.d.ts.map +1 -0
- package/dist/commands/init/index.js +68 -0
- package/dist/commands/init/index.js.map +1 -0
- package/dist/commands/init/types.d.ts +4 -0
- package/dist/commands/init/types.d.ts.map +1 -0
- package/dist/commands/init/types.js +2 -0
- package/dist/commands/init/types.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +14 -23
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/use/index.d.ts +6 -0
- package/dist/commands/use/index.d.ts.map +1 -0
- package/dist/commands/use/index.js +60 -0
- package/dist/commands/use/index.js.map +1 -0
- package/dist/commands/use/types.d.ts +4 -0
- package/dist/commands/use/types.d.ts.map +1 -0
- package/dist/commands/use/types.js +2 -0
- package/dist/commands/use/types.js.map +1 -0
- package/dist/commands/use.d.ts +1 -1
- package/dist/commands/use.d.ts.map +1 -1
- package/dist/commands/use.js +23 -17
- package/dist/commands/use.js.map +1 -1
- package/dist/commands/version/index.d.ts +9 -0
- package/dist/commands/version/index.d.ts.map +1 -0
- package/dist/commands/version/index.js +26 -0
- package/dist/commands/version/index.js.map +1 -0
- package/dist/commands/version/types.d.ts +5 -0
- package/dist/commands/version/types.d.ts.map +1 -0
- package/dist/commands/version/types.js +2 -0
- package/dist/commands/version/types.js.map +1 -0
- package/dist/commands/version.d.ts +1 -1
- package/dist/commands/version.d.ts.map +1 -1
- package/dist/commands/version.js +11 -17
- package/dist/commands/version.js.map +1 -1
- package/dist/commands/watch/index.d.ts +9 -0
- package/dist/commands/watch/index.d.ts.map +1 -0
- package/dist/commands/watch/index.js +86 -0
- package/dist/commands/watch/index.js.map +1 -0
- package/dist/commands/watch/types.d.ts +5 -0
- package/dist/commands/watch/types.d.ts.map +1 -0
- package/dist/commands/watch/types.js +2 -0
- package/dist/commands/watch/types.js.map +1 -0
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +15 -13
- package/dist/commands/watch.js.map +1 -1
- package/dist/core/codeMerger.d.ts +1 -1
- package/dist/core/codeMerger.d.ts.map +1 -1
- package/dist/core/codeMerger.js +17 -19
- package/dist/core/codeMerger.js.map +1 -1
- package/dist/core/config.d.ts +3 -3
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +18 -18
- package/dist/core/config.js.map +1 -1
- package/dist/core/defaults.d.ts.map +1 -1
- package/dist/core/fileWatcher.d.ts +3 -3
- package/dist/core/fileWatcher.d.ts.map +1 -1
- package/dist/core/fileWatcher.js +14 -14
- package/dist/core/fileWatcher.js.map +1 -1
- package/dist/core/httpServer/controllers/file.d.ts +4 -0
- package/dist/core/httpServer/controllers/file.d.ts.map +1 -0
- package/dist/core/httpServer/controllers/file.js +101 -0
- package/dist/core/httpServer/controllers/file.js.map +1 -0
- package/dist/core/httpServer/controllers/git.d.ts +3 -0
- package/dist/core/httpServer/controllers/git.d.ts.map +1 -0
- package/dist/core/httpServer/controllers/git.js +47 -0
- package/dist/core/httpServer/controllers/git.js.map +1 -0
- package/dist/core/httpServer/controllers/merge.d.ts +5 -0
- package/dist/core/httpServer/controllers/merge.d.ts.map +1 -0
- package/dist/core/httpServer/controllers/merge.js +64 -0
- package/dist/core/httpServer/controllers/merge.js.map +1 -0
- package/dist/core/httpServer/controllers/system.d.ts +6 -0
- package/dist/core/httpServer/controllers/system.d.ts.map +1 -0
- package/dist/core/httpServer/controllers/system.js +87 -0
- package/dist/core/httpServer/controllers/system.js.map +1 -0
- package/dist/core/httpServer/index.d.ts +19 -0
- package/dist/core/httpServer/index.d.ts.map +1 -0
- package/dist/core/httpServer/index.js +59 -0
- package/dist/core/httpServer/index.js.map +1 -0
- package/dist/core/httpServer/router.d.ts +5 -0
- package/dist/core/httpServer/router.d.ts.map +1 -0
- package/dist/core/httpServer/router.js +31 -0
- package/dist/core/httpServer/router.js.map +1 -0
- package/dist/core/httpServer/services/command.d.ts +11 -0
- package/dist/core/httpServer/services/command.d.ts.map +1 -0
- package/dist/core/httpServer/services/command.js +36 -0
- package/dist/core/httpServer/services/command.js.map +1 -0
- package/dist/core/httpServer/types.d.ts +16 -0
- package/dist/core/httpServer/types.d.ts.map +1 -0
- package/dist/core/httpServer/types.js +2 -0
- package/dist/core/httpServer/types.js.map +1 -0
- package/dist/core/httpServer.d.ts.map +1 -1
- package/dist/core/httpServer.js +5 -6
- package/dist/core/httpServer.js.map +1 -1
- package/dist/core/mergeCache.d.ts +1 -1
- package/dist/core/mergeCache.d.ts.map +1 -1
- package/dist/core/mergeCache.js +1 -1
- package/dist/core/mergeCache.js.map +1 -1
- package/dist/utils/file.d.ts +13 -0
- package/dist/utils/file.d.ts.map +1 -0
- package/dist/utils/file.js +52 -0
- package/dist/utils/file.js.map +1 -0
- package/dist/utils/logger.d.ts +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +4 -3
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/path.d.ts +10 -0
- package/dist/utils/path.d.ts.map +1 -0
- package/dist/utils/path.js +16 -0
- package/dist/utils/path.js.map +1 -0
- package/dist/utils/pattern.d.ts +1 -1
- package/dist/utils/pattern.d.ts.map +1 -1
- package/dist/utils/pattern.js +5 -8
- package/dist/utils/pattern.js.map +1 -1
- package/dist/utils/process.d.ts +4 -0
- package/dist/utils/process.d.ts.map +1 -0
- package/dist/utils/process.js +21 -0
- package/dist/utils/process.js.map +1 -0
- package/dist/utils/translate.d.ts +3 -1
- package/dist/utils/translate.d.ts.map +1 -1
- package/dist/utils/translate.js +28 -26
- package/dist/utils/translate.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { Command } from 'commander';
|
|
3
|
-
import { readFileSync, readdirSync } from 'fs';
|
|
4
|
-
import { dirname, join, extname } from 'path';
|
|
5
2
|
import { fileURLToPath, pathToFileURL } from 'url';
|
|
6
|
-
import {
|
|
3
|
+
import { readFileSync, readdirSync } from 'fs';
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import { dirname, join } from 'path';
|
|
6
|
+
import Logger from './utils/logger.js';
|
|
7
7
|
const __filename = fileURLToPath(import.meta.url);
|
|
8
8
|
const __dirname = dirname(__filename);
|
|
9
9
|
class CLI {
|
|
@@ -12,24 +12,25 @@ class CLI {
|
|
|
12
12
|
this.program = new Command();
|
|
13
13
|
this.setupProgram();
|
|
14
14
|
}
|
|
15
|
-
setupProgram() {
|
|
15
|
+
setupProgram = () => {
|
|
16
16
|
const packagePath = join(__dirname, '../package.json');
|
|
17
17
|
const packageJson = JSON.parse(readFileSync(packagePath, 'utf-8'));
|
|
18
18
|
this.program.name('codemerge').description(packageJson.description).version(packageJson.version);
|
|
19
|
-
}
|
|
20
|
-
async
|
|
19
|
+
};
|
|
20
|
+
registerCommands = async () => {
|
|
21
21
|
const commandsPath = join(__dirname, 'commands');
|
|
22
|
-
const
|
|
23
|
-
for (const
|
|
24
|
-
|
|
22
|
+
const entries = readdirSync(commandsPath, { withFileTypes: true });
|
|
23
|
+
for (const entry of entries) {
|
|
24
|
+
if (entry.isDirectory())
|
|
25
|
+
await this.registerCommand(commandsPath, `${entry.name}/index.js`);
|
|
25
26
|
}
|
|
26
|
-
}
|
|
27
|
-
async
|
|
27
|
+
};
|
|
28
|
+
registerCommand = async (commandsPath, fileName) => {
|
|
28
29
|
try {
|
|
29
30
|
const filePath = join(commandsPath, fileName);
|
|
30
31
|
const fileUrl = pathToFileURL(filePath).href;
|
|
31
32
|
const module = await import(fileUrl);
|
|
32
|
-
const CommandClass = module
|
|
33
|
+
const CommandClass = module.default;
|
|
33
34
|
if (!CommandClass) {
|
|
34
35
|
Logger.warning(`Skipping ${fileName}: No command class found`);
|
|
35
36
|
return;
|
|
@@ -44,12 +45,13 @@ class CLI {
|
|
|
44
45
|
catch (error) {
|
|
45
46
|
Logger.error(`Failed to load ${fileName}: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
46
47
|
}
|
|
47
|
-
}
|
|
48
|
-
async
|
|
48
|
+
};
|
|
49
|
+
run = async () => {
|
|
49
50
|
await this.registerCommands();
|
|
50
51
|
this.program.parse(process.argv);
|
|
51
|
-
}
|
|
52
|
+
};
|
|
52
53
|
}
|
|
54
|
+
;
|
|
53
55
|
(async () => {
|
|
54
56
|
const cli = new CLI();
|
|
55
57
|
await cli.run();
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../lib/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../lib/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
export default class HelpCommand {
|
|
3
|
+
register: (program: Command) => void;
|
|
4
|
+
private execute;
|
|
5
|
+
private displayBanner;
|
|
6
|
+
private displayHelp;
|
|
7
|
+
private displayCommandHelp;
|
|
8
|
+
private getPackageJson;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/commands/help/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAQnC,MAAM,CAAC,OAAO,OAAO,WAAW;IACvB,QAAQ,GAAI,SAAS,OAAO,KAAG,IAAI,CAMzC;IAED,OAAO,CAAC,OAAO,CAQd;IAED,OAAO,CAAC,aAAa,CAIpB;IAED,OAAO,CAAC,WAAW,CAMlB;IAED,OAAO,CAAC,kBAAkB,CAQzB;IAED,OAAO,CAAC,cAAc,CAAsG;CAC7H"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import Logger from '../../utils/logger.js';
|
|
2
|
+
import File from '../../utils/file.js';
|
|
3
|
+
import Path from '../../utils/path.js';
|
|
4
|
+
export default class HelpCommand {
|
|
5
|
+
register = (program) => {
|
|
6
|
+
program
|
|
7
|
+
.command('help')
|
|
8
|
+
.description('Display help information')
|
|
9
|
+
.argument('[command]', 'Command to get help for')
|
|
10
|
+
.action((command) => this.execute(program, command));
|
|
11
|
+
};
|
|
12
|
+
execute = async (program, command) => {
|
|
13
|
+
try {
|
|
14
|
+
this.displayBanner();
|
|
15
|
+
this.displayHelp(program, command);
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
Logger.error(error instanceof Error ? error.message : 'Unexpected error occurred');
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
displayBanner = () => {
|
|
23
|
+
const packageJson = this.getPackageJson();
|
|
24
|
+
const name = packageJson.name.replace('-', ' ').toUpperCase();
|
|
25
|
+
Logger.banner(name);
|
|
26
|
+
};
|
|
27
|
+
displayHelp = (program, command) => {
|
|
28
|
+
if (command) {
|
|
29
|
+
this.displayCommandHelp(program, command);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
program.help();
|
|
33
|
+
};
|
|
34
|
+
displayCommandHelp = (program, commandName) => {
|
|
35
|
+
const cmd = program.commands.find(c => c.name() === commandName);
|
|
36
|
+
if (cmd) {
|
|
37
|
+
cmd.help();
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
Logger.error(`Command '${commandName}' not found`);
|
|
41
|
+
program.help();
|
|
42
|
+
};
|
|
43
|
+
getPackageJson = () => File.readJson(Path.getPackagePath(import.meta.url, 'package.json'));
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/commands/help/index.ts"],"names":[],"mappings":"AAEA,OAAO,MAAM,MAAM,kBAAkB,CAAA;AACrC,OAAO,IAAI,MAAM,gBAAgB,CAAA;AACjC,OAAO,IAAI,MAAM,gBAAgB,CAAA;AAIjC,MAAM,CAAC,OAAO,OAAO,WAAW;IACvB,QAAQ,GAAG,CAAC,OAAgB,EAAQ,EAAE;QAC3C,OAAO;aACJ,OAAO,CAAC,MAAM,CAAC;aACf,WAAW,CAAC,0BAA0B,CAAC;aACvC,QAAQ,CAAC,WAAW,EAAE,yBAAyB,CAAC;aAChD,MAAM,CAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;IACjE,CAAC,CAAA;IAEO,OAAO,GAAG,KAAK,EAAE,OAAgB,EAAE,OAAgB,EAAiB,EAAE;QAC5E,IAAI,CAAC;YACH,IAAI,CAAC,aAAa,EAAE,CAAA;YACpB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACpC,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,CAAA;YAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC,CAAA;IAEO,aAAa,GAAG,GAAS,EAAE;QACjC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;QACzC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;QAC7D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACrB,CAAC,CAAA;IAEO,WAAW,GAAG,CAAC,OAAgB,EAAE,OAAgB,EAAQ,EAAE;QACjE,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YACzC,OAAM;QACR,CAAC;QACD,OAAO,CAAC,IAAI,EAAE,CAAA;IAChB,CAAC,CAAA;IAEO,kBAAkB,GAAG,CAAC,OAAgB,EAAE,WAAmB,EAAQ,EAAE;QAC3E,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,WAAW,CAAC,CAAA;QAChE,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,CAAC,IAAI,EAAE,CAAA;YACV,OAAM;QACR,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,YAAY,WAAW,aAAa,CAAC,CAAA;QAClD,OAAO,CAAC,IAAI,EAAE,CAAA;IAChB,CAAC,CAAA;IAEO,cAAc,GAAG,GAAgB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAc,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAA;CAC7H"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../lib/commands/help/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;CACb"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../lib/commands/help/types.ts"],"names":[],"mappings":""}
|
package/dist/commands/help.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../lib/commands/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../lib/commands/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAQnC,qBAAa,WAAW;IACf,QAAQ,GAAI,SAAS,OAAO,KAAG,IAAI,CAMzC;IAED,OAAO,CAAC,OAAO,CAQd;IAED,OAAO,CAAC,aAAa,CAIpB;IAED,OAAO,CAAC,WAAW,CAMlB;IAED,OAAO,CAAC,kBAAkB,CAQzB;IAED,OAAO,CAAC,cAAc,CAAsG;CAC7H"}
|
package/dist/commands/help.js
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
import { PathUtils } from '../utils/pathUtils.js';
|
|
2
|
-
import { FileUtils } from '../utils/fileUtils.js';
|
|
3
1
|
import { Logger } from '../utils/logger.js';
|
|
2
|
+
import { Path } from '../utils/path.js';
|
|
3
|
+
import { File } from '../utils/file.js';
|
|
4
4
|
export class HelpCommand {
|
|
5
|
-
register(program) {
|
|
6
|
-
program
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
register = (program) => {
|
|
6
|
+
program
|
|
7
|
+
.command('help')
|
|
8
|
+
.description('Display help information')
|
|
9
|
+
.argument('[command]', 'Command to get help for')
|
|
10
|
+
.action((command) => this.execute(program, command));
|
|
11
|
+
};
|
|
12
|
+
execute = async (program, command) => {
|
|
9
13
|
try {
|
|
10
14
|
this.displayBanner();
|
|
11
15
|
this.displayHelp(program, command);
|
|
@@ -14,20 +18,20 @@ export class HelpCommand {
|
|
|
14
18
|
Logger.error(error instanceof Error ? error.message : 'Unexpected error occurred');
|
|
15
19
|
process.exit(1);
|
|
16
20
|
}
|
|
17
|
-
}
|
|
18
|
-
displayBanner() {
|
|
21
|
+
};
|
|
22
|
+
displayBanner = () => {
|
|
19
23
|
const packageJson = this.getPackageJson();
|
|
20
24
|
const name = packageJson.name.replace('-', ' ').toUpperCase();
|
|
21
25
|
Logger.banner(name);
|
|
22
|
-
}
|
|
23
|
-
displayHelp(program, command) {
|
|
26
|
+
};
|
|
27
|
+
displayHelp = (program, command) => {
|
|
24
28
|
if (command) {
|
|
25
29
|
this.displayCommandHelp(program, command);
|
|
26
30
|
return;
|
|
27
31
|
}
|
|
28
32
|
program.help();
|
|
29
|
-
}
|
|
30
|
-
displayCommandHelp(program, commandName) {
|
|
33
|
+
};
|
|
34
|
+
displayCommandHelp = (program, commandName) => {
|
|
31
35
|
const cmd = program.commands.find(c => c.name() === commandName);
|
|
32
36
|
if (cmd) {
|
|
33
37
|
cmd.help();
|
|
@@ -35,10 +39,7 @@ export class HelpCommand {
|
|
|
35
39
|
}
|
|
36
40
|
Logger.error(`Command '${commandName}' not found`);
|
|
37
41
|
program.help();
|
|
38
|
-
}
|
|
39
|
-
getPackageJson()
|
|
40
|
-
const packagePath = PathUtils.getPackagePath(import.meta.url, 'package.json');
|
|
41
|
-
return FileUtils.readJson(packagePath);
|
|
42
|
-
}
|
|
42
|
+
};
|
|
43
|
+
getPackageJson = () => File.readJson(Path.getPackagePath(import.meta.url, 'package.json'));
|
|
43
44
|
}
|
|
44
45
|
//# sourceMappingURL=help.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../lib/commands/help.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../lib/commands/help.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAIvC,MAAM,OAAO,WAAW;IACf,QAAQ,GAAG,CAAC,OAAgB,EAAQ,EAAE;QAC3C,OAAO;aACJ,OAAO,CAAC,MAAM,CAAC;aACf,WAAW,CAAC,0BAA0B,CAAC;aACvC,QAAQ,CAAC,WAAW,EAAE,yBAAyB,CAAC;aAChD,MAAM,CAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;IACjE,CAAC,CAAA;IAEO,OAAO,GAAG,KAAK,EAAE,OAAgB,EAAE,OAAgB,EAAiB,EAAE;QAC5E,IAAI,CAAC;YACH,IAAI,CAAC,aAAa,EAAE,CAAA;YACpB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACpC,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,CAAA;YAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC,CAAA;IAEO,aAAa,GAAG,GAAS,EAAE;QACjC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;QACzC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;QAC7D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACrB,CAAC,CAAA;IAEO,WAAW,GAAG,CAAC,OAAgB,EAAE,OAAgB,EAAQ,EAAE;QACjE,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YACzC,OAAM;QACR,CAAC;QACD,OAAO,CAAC,IAAI,EAAE,CAAA;IAChB,CAAC,CAAA;IAEO,kBAAkB,GAAG,CAAC,OAAgB,EAAE,WAAmB,EAAQ,EAAE;QAC3E,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,WAAW,CAAC,CAAA;QAChE,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,CAAC,IAAI,EAAE,CAAA;YACV,OAAM;QACR,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,YAAY,WAAW,aAAa,CAAC,CAAA;QAClD,OAAO,CAAC,IAAI,EAAE,CAAA;IAChB,CAAC,CAAA;IAEO,cAAc,GAAG,GAAgB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAc,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAA;CAC7H"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/commands/init/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAYnC,MAAM,CAAC,OAAO,OAAO,WAAW;IACvB,QAAQ,GAAI,SAAS,OAAO,KAAG,IAAI,CAOzC;IAED,OAAO,CAAC,OAAO,CAwBd;IAED,OAAO,CAAC,cAAc,CAWrB;IAED,OAAO,CAAC,gBAAgB,CAGvB;IAED,OAAO,CAAC,eAAe,CAYtB;CACF"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { readFileSync } from 'fs';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { DEFAULT_CONFIG } from '../../core/defaults.js';
|
|
4
|
+
import Logger from '../../utils/logger.js';
|
|
5
|
+
import File from '../../utils/file.js';
|
|
6
|
+
import Path from '../../utils/path.js';
|
|
7
|
+
export default class InitCommand {
|
|
8
|
+
register = (program) => {
|
|
9
|
+
program
|
|
10
|
+
.command('init')
|
|
11
|
+
.description('Initialize CodeMerge project structure')
|
|
12
|
+
.argument('[path]', 'Target directory', '.')
|
|
13
|
+
.option('-f, --force', 'Overwrite existing files')
|
|
14
|
+
.action(this.execute);
|
|
15
|
+
};
|
|
16
|
+
execute = async (targetPath, options) => {
|
|
17
|
+
try {
|
|
18
|
+
Logger.info('Initializing CodeMerge project...');
|
|
19
|
+
const resolvedPath = Path.resolve(targetPath);
|
|
20
|
+
const configPath = join(resolvedPath, 'codemerge.json');
|
|
21
|
+
if (!options.force && File.exists(configPath)) {
|
|
22
|
+
Logger.error('codemerge.json already exists. Use --force to overwrite.');
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
const projectName = this.getProjectName(resolvedPath);
|
|
26
|
+
const outputPath = projectName ? `${projectName}-merged.txt` : 'merged-output.txt';
|
|
27
|
+
this.createConfigFile(configPath, outputPath, projectName);
|
|
28
|
+
this.updateGitignore(resolvedPath, outputPath);
|
|
29
|
+
Logger.success('Configuration file created: codemerge.json');
|
|
30
|
+
Logger.plain(`Output file added to .gitignore: ${outputPath}`);
|
|
31
|
+
Logger.plain('\nNext steps:\n 1. Review codemerge.json settings\n 2. Run: codemerge use');
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
Logger.error(error instanceof Error ? error.message : 'Unexpected error occurred');
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
getProjectName = (basePath) => {
|
|
39
|
+
const packagePath = join(basePath, 'package.json');
|
|
40
|
+
if (!File.exists(packagePath))
|
|
41
|
+
return null;
|
|
42
|
+
try {
|
|
43
|
+
const pkg = File.readJson(packagePath);
|
|
44
|
+
if (!pkg.name)
|
|
45
|
+
return null;
|
|
46
|
+
return pkg.name.replace(/^@.*?\//, '').replace(/[^a-zA-Z0-9-_]/g, '-').toLowerCase();
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
createConfigFile = (configPath, outputPath, projectName) => {
|
|
53
|
+
const config = { projectName: projectName ?? 'codemerge-project', outputPath, ...DEFAULT_CONFIG };
|
|
54
|
+
File.write(configPath, JSON.stringify(config, null, 2) + '\n');
|
|
55
|
+
};
|
|
56
|
+
updateGitignore = (basePath, outputFileName) => {
|
|
57
|
+
const gitignorePath = join(basePath, '.gitignore');
|
|
58
|
+
if (!File.exists(gitignorePath)) {
|
|
59
|
+
File.write(gitignorePath, outputFileName + '\n');
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const content = readFileSync(gitignorePath, 'utf-8');
|
|
63
|
+
if (content.split('\n').some(line => line.trim() === outputFileName))
|
|
64
|
+
return;
|
|
65
|
+
File.write(gitignorePath, content.endsWith('\n') ? `${content}${outputFileName}\n` : `${content}\n${outputFileName}\n`);
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/commands/init/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../lib/commands/init/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../lib/commands/init/types.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../lib/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../lib/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAcnC,qBAAa,WAAW;IACf,QAAQ,GAAI,SAAS,OAAO,KAAG,IAAI,CAOzC;IAED,OAAO,CAAC,OAAO,CAwBd;IAED,OAAO,CAAC,cAAc,CAWrB;IAED,OAAO,CAAC,gBAAgB,CAGvB;IAED,OAAO,CAAC,eAAe,CAYtB;CACF"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { readFileSync } from 'fs';
|
|
2
2
|
import { join } from 'path';
|
|
3
3
|
import { DEFAULT_CONFIG } from '../core/defaults.js';
|
|
4
|
-
import { PathUtils } from '../utils/pathUtils.js';
|
|
5
|
-
import { FileUtils } from '../utils/fileUtils.js';
|
|
6
4
|
import { Logger } from '../utils/logger.js';
|
|
5
|
+
import { Path } from '../utils/path.js';
|
|
6
|
+
import { File } from '../utils/file.js';
|
|
7
7
|
export class InitCommand {
|
|
8
8
|
register = (program) => {
|
|
9
9
|
program
|
|
@@ -16,9 +16,9 @@ export class InitCommand {
|
|
|
16
16
|
execute = async (targetPath, options) => {
|
|
17
17
|
try {
|
|
18
18
|
Logger.info('Initializing CodeMerge project...');
|
|
19
|
-
const resolvedPath =
|
|
19
|
+
const resolvedPath = Path.resolve(targetPath);
|
|
20
20
|
const configPath = join(resolvedPath, 'codemerge.json');
|
|
21
|
-
if (!options.force &&
|
|
21
|
+
if (!options.force && File.exists(configPath)) {
|
|
22
22
|
Logger.error('codemerge.json already exists. Use --force to overwrite.');
|
|
23
23
|
process.exit(1);
|
|
24
24
|
}
|
|
@@ -27,11 +27,8 @@ export class InitCommand {
|
|
|
27
27
|
this.createConfigFile(configPath, outputPath, projectName);
|
|
28
28
|
this.updateGitignore(resolvedPath, outputPath);
|
|
29
29
|
Logger.success('Configuration file created: codemerge.json');
|
|
30
|
-
Logger.plain(
|
|
31
|
-
Logger.plain('');
|
|
32
|
-
Logger.plain('Next steps:');
|
|
33
|
-
Logger.plain(' 1. Review codemerge.json settings');
|
|
34
|
-
Logger.plain(' 2. Run: codemerge use');
|
|
30
|
+
Logger.plain(`Output file added to .gitignore: ${outputPath}`);
|
|
31
|
+
Logger.plain('\nNext steps:\n 1. Review codemerge.json settings\n 2. Run: codemerge use');
|
|
35
32
|
}
|
|
36
33
|
catch (error) {
|
|
37
34
|
Logger.error(error instanceof Error ? error.message : 'Unexpected error occurred');
|
|
@@ -40,10 +37,10 @@ export class InitCommand {
|
|
|
40
37
|
};
|
|
41
38
|
getProjectName = (basePath) => {
|
|
42
39
|
const packagePath = join(basePath, 'package.json');
|
|
43
|
-
if (!
|
|
40
|
+
if (!File.exists(packagePath))
|
|
44
41
|
return null;
|
|
45
42
|
try {
|
|
46
|
-
const pkg =
|
|
43
|
+
const pkg = File.readJson(packagePath);
|
|
47
44
|
if (!pkg.name)
|
|
48
45
|
return null;
|
|
49
46
|
return pkg.name.replace(/^@.*?\//, '').replace(/[^a-zA-Z0-9-_]/g, '-').toLowerCase();
|
|
@@ -53,25 +50,19 @@ export class InitCommand {
|
|
|
53
50
|
}
|
|
54
51
|
};
|
|
55
52
|
createConfigFile = (configPath, outputPath, projectName) => {
|
|
56
|
-
const config = {
|
|
57
|
-
|
|
58
|
-
outputPath,
|
|
59
|
-
...DEFAULT_CONFIG
|
|
60
|
-
};
|
|
61
|
-
FileUtils.write(configPath, JSON.stringify(config, null, 2) + '\n');
|
|
53
|
+
const config = { projectName: projectName ?? 'codemerge-project', outputPath, ...DEFAULT_CONFIG };
|
|
54
|
+
File.write(configPath, JSON.stringify(config, null, 2) + '\n');
|
|
62
55
|
};
|
|
63
56
|
updateGitignore = (basePath, outputFileName) => {
|
|
64
57
|
const gitignorePath = join(basePath, '.gitignore');
|
|
65
|
-
if (!
|
|
66
|
-
|
|
58
|
+
if (!File.exists(gitignorePath)) {
|
|
59
|
+
File.write(gitignorePath, outputFileName + '\n');
|
|
67
60
|
return;
|
|
68
61
|
}
|
|
69
62
|
const content = readFileSync(gitignorePath, 'utf-8');
|
|
70
|
-
|
|
71
|
-
if (lines.some(line => line.trim() === outputFileName))
|
|
63
|
+
if (content.split('\n').some(line => line.trim() === outputFileName))
|
|
72
64
|
return;
|
|
73
|
-
|
|
74
|
-
FileUtils.write(gitignorePath, newContent);
|
|
65
|
+
File.write(gitignorePath, content.endsWith('\n') ? `${content}${outputFileName}\n` : `${content}\n${outputFileName}\n`);
|
|
75
66
|
};
|
|
76
67
|
}
|
|
77
68
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../lib/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../lib/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/commands/use/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAUnC,MAAM,CAAC,OAAO,OAAO,UAAU;IACtB,QAAQ,GAAI,SAAS,OAAO,KAAG,IAAI,CAUzC;IAED,OAAO,CAAC,OAAO,CA6Cd;CACF"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import FileWatcher from '../../core/fileWatcher.js';
|
|
2
|
+
import CodeMerger from '../../core/codeMerger.js';
|
|
3
|
+
import Process from '../../utils/process.js';
|
|
4
|
+
import Config from '../../core/config.js';
|
|
5
|
+
import Logger from '../../utils/logger.js';
|
|
6
|
+
export default class UseCommand {
|
|
7
|
+
register = (program) => {
|
|
8
|
+
program
|
|
9
|
+
.command('use')
|
|
10
|
+
.description('Merge code files into a single output file')
|
|
11
|
+
.argument('[path]', 'Input path to scan', '.')
|
|
12
|
+
.option('-o, --output <path>', 'Output file path')
|
|
13
|
+
.option('-w, --watch', 'Watch for file changes')
|
|
14
|
+
.option('--ignore <patterns>', 'Additional ignore patterns (comma-separated)')
|
|
15
|
+
.option('--include <patterns>', 'Include patterns (comma-separated)')
|
|
16
|
+
.action(this.execute);
|
|
17
|
+
};
|
|
18
|
+
execute = async (inputPath, options) => {
|
|
19
|
+
try {
|
|
20
|
+
Logger.info('Starting code merge...');
|
|
21
|
+
const config = Config.load(inputPath);
|
|
22
|
+
const mergeOptions = Config.merge(config, {
|
|
23
|
+
inputPath,
|
|
24
|
+
outputPath: options.output,
|
|
25
|
+
watch: options.watch,
|
|
26
|
+
ignorePatterns: options.ignore ? options.ignore.split(',') : undefined,
|
|
27
|
+
includePatterns: options.include ? options.include.split(',') : undefined
|
|
28
|
+
});
|
|
29
|
+
if (mergeOptions.onStartCommand)
|
|
30
|
+
Process.runCommand(mergeOptions.onStartCommand, mergeOptions.onStartCommandLogs);
|
|
31
|
+
const merger = new CodeMerger(mergeOptions);
|
|
32
|
+
const result = await merger.execute();
|
|
33
|
+
if (!result.success) {
|
|
34
|
+
Logger.error('Merge failed:');
|
|
35
|
+
result.errors.forEach(error => Logger.error(` ${error}`));
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
Logger.success(`Merged ${result.filesProcessed} files into ${result.outputPath}`);
|
|
39
|
+
if (mergeOptions.watch) {
|
|
40
|
+
const watcher = new FileWatcher(mergeOptions, async () => {
|
|
41
|
+
const res = await merger.execute();
|
|
42
|
+
if (res.success)
|
|
43
|
+
Logger.success(`Merged ${res.filesProcessed} files into ${res.outputPath}`);
|
|
44
|
+
});
|
|
45
|
+
watcher.start();
|
|
46
|
+
process.on('SIGINT', () => {
|
|
47
|
+
Logger.plain('\nStopping watcher...');
|
|
48
|
+
watcher.stop();
|
|
49
|
+
process.exit(0);
|
|
50
|
+
});
|
|
51
|
+
Logger.plain('Press Ctrl+C to stop watching');
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
Logger.error(error instanceof Error ? error.message : 'Unexpected error occurred');
|
|
56
|
+
process.exit(1);
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/commands/use/index.ts"],"names":[],"mappings":"AAEA,OAAO,WAAW,MAAM,sBAAsB,CAAA;AAC9C,OAAO,UAAU,MAAM,qBAAqB,CAAA;AAC5C,OAAO,OAAO,MAAM,mBAAmB,CAAA;AACvC,OAAO,MAAM,MAAM,iBAAiB,CAAA;AACpC,OAAO,MAAM,MAAM,kBAAkB,CAAA;AAIrC,MAAM,CAAC,OAAO,OAAO,UAAU;IACtB,QAAQ,GAAG,CAAC,OAAgB,EAAQ,EAAE;QAC3C,OAAO;aACJ,OAAO,CAAC,KAAK,CAAC;aACd,WAAW,CAAC,4CAA4C,CAAC;aACzD,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,CAAC;aAC7C,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;aACjD,MAAM,CAAC,aAAa,EAAE,wBAAwB,CAAC;aAC/C,MAAM,CAAC,qBAAqB,EAAE,8CAA8C,CAAC;aAC7E,MAAM,CAAC,sBAAsB,EAAE,oCAAoC,CAAC;aACpE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACzB,CAAC,CAAA;IAEO,OAAO,GAAG,KAAK,EAAE,SAAiB,EAAE,OAAmB,EAAiB,EAAE;QAChF,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;YAErC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACrC,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,CAAA;YAEF,IAAI,YAAY,CAAC,cAAc;gBAAE,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAA;YAEjH,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,CAAA;YAC3C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;YAErC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;gBAC7B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAA;gBAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;YAED,MAAM,CAAC,OAAO,CAAC,UAAU,MAAM,CAAC,cAAc,eAAe,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;YAEjF,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC;gBACvB,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;oBACvD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;oBAClC,IAAI,GAAG,CAAC,OAAO;wBAAE,MAAM,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,cAAc,eAAe,GAAG,CAAC,UAAU,EAAE,CAAC,CAAA;gBAC9F,CAAC,CAAC,CAAA;gBACF,OAAO,CAAC,KAAK,EAAE,CAAA;gBAEf,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;oBACxB,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;oBACrC,OAAO,CAAC,IAAI,EAAE,CAAA;oBACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACjB,CAAC,CAAC,CAAA;gBAEF,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAA;YAC/C,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,CAAA;YAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC,CAAA;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../lib/commands/use/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAErD,MAAM,WAAW,UAAW,SAAQ,cAAc;CAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../lib/commands/use/types.ts"],"names":[],"mappings":""}
|
package/dist/commands/use.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use.d.ts","sourceRoot":"","sources":["../../lib/commands/use.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"use.d.ts","sourceRoot":"","sources":["../../lib/commands/use.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAUnC,qBAAa,UAAU;IACd,QAAQ,GAAI,SAAS,OAAO,KAAG,IAAI,CAUzC;IAED,OAAO,CAAC,OAAO,CA6Cd;CACF"}
|