kodu 2.0.0 → 2.0.2
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/README.md +34 -3
- package/dist/package.json +1 -1
- package/dist/src/commands/clean/clean.command.d.ts +14 -1
- package/dist/src/commands/clean/clean.command.js +142 -32
- package/dist/src/commands/clean/clean.command.js.map +1 -1
- package/dist/src/commands/pack/pack.command.d.ts +5 -1
- package/dist/src/commands/pack/pack.command.js +33 -8
- package/dist/src/commands/pack/pack.command.js.map +1 -1
- package/dist/src/commands/pack/pack.module.js +2 -1
- package/dist/src/commands/pack/pack.module.js.map +1 -1
- package/dist/src/shared/cleaner/cleaner.service.d.ts +2 -0
- package/dist/src/shared/cleaner/cleaner.service.js +32 -7
- package/dist/src/shared/cleaner/cleaner.service.js.map +1 -1
- package/dist/src/shared/cleaner/cleaner.types.d.ts +7 -0
- package/dist/src/shared/git/git.service.d.ts +1 -0
- package/dist/src/shared/git/git.service.js +9 -0
- package/dist/src/shared/git/git.service.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/commands/clean/clean.command.ts +143 -33
- package/src/commands/pack/pack.command.ts +29 -5
- package/src/commands/pack/pack.module.ts +2 -1
- package/src/shared/cleaner/cleaner.service.ts +43 -12
- package/src/shared/cleaner/cleaner.types.ts +7 -0
- package/src/shared/git/git.service.ts +10 -0
package/README.md
CHANGED
|
@@ -98,6 +98,7 @@ Use `--format text` for legacy `// file: path` style headers.
|
|
|
98
98
|
| `-e, --exclude <pattern>` | Additional exclude pattern (repeatable) |
|
|
99
99
|
| `-l, --list` | Print file list only, no content |
|
|
100
100
|
| `-f, --format <xml\|text>` | Output format (default: `xml`) |
|
|
101
|
+
| `--clean` | Strip comments in-memory before packing (files not modified) |
|
|
101
102
|
| `-t, --template <name>` | Wrap output in a prompt template from `.kodu/prompts/` |
|
|
102
103
|
|
|
103
104
|
---
|
|
@@ -107,17 +108,47 @@ Use `--format text` for legacy `// file: path` style headers.
|
|
|
107
108
|
Remove comments from source files using AST-based parsing. No AI, fully deterministic.
|
|
108
109
|
|
|
109
110
|
```bash
|
|
110
|
-
# Preview what would be removed
|
|
111
|
+
# Preview what would be removed (with byte/token savings)
|
|
111
112
|
kodu clean --dry-run
|
|
112
113
|
|
|
113
|
-
#
|
|
114
|
+
# Show every removed comment, not just first 3
|
|
115
|
+
kodu clean --dry-run --verbose
|
|
116
|
+
|
|
117
|
+
# Clean only git-staged files
|
|
118
|
+
kodu clean --staged
|
|
119
|
+
|
|
120
|
+
# Clean only git-changed files (staged + unstaged + untracked)
|
|
114
121
|
kodu clean --changed
|
|
115
122
|
|
|
123
|
+
# Target specific files or directories
|
|
124
|
+
kodu clean src/utils.ts src/helpers/
|
|
125
|
+
|
|
126
|
+
# Remove JSDoc too (overrides config)
|
|
127
|
+
kodu clean --no-jsdoc
|
|
128
|
+
|
|
129
|
+
# Backup originals before modifying
|
|
130
|
+
kodu clean --backup
|
|
131
|
+
|
|
132
|
+
# Read from stdin, write to stdout (great for scripting)
|
|
133
|
+
cat src/foo.ts | kodu clean --stdin
|
|
134
|
+
|
|
116
135
|
# Clean all project files
|
|
117
136
|
kodu clean
|
|
118
137
|
```
|
|
119
138
|
|
|
120
|
-
Supports `.ts`, `.tsx`, `.js`, `.jsx`, `.html`. Respects `cleaner.whitelist` in `kodu.json` (e.g. `//!` to preserve important comments).
|
|
139
|
+
Supports `.ts`, `.tsx`, `.js`, `.jsx`, `.mjs`, `.cjs`, `.html`. Respects `cleaner.whitelist` in `kodu.json` (e.g. `//!` to preserve important comments).
|
|
140
|
+
|
|
141
|
+
### Options
|
|
142
|
+
|
|
143
|
+
| Flag | Description |
|
|
144
|
+
|------|-------------|
|
|
145
|
+
| `-d, --dry-run` | Show what will be removed without modifying files |
|
|
146
|
+
| `-v, --verbose` | Show all removed comments in dry-run (not just first 3) |
|
|
147
|
+
| `-c, --changed` | Clean only git-changed files (staged + unstaged + untracked) |
|
|
148
|
+
| `-s, --staged` | Clean only git-staged files |
|
|
149
|
+
| `-n, --no-jsdoc` | Remove JSDoc comments (overrides `keepJSDoc` in config) |
|
|
150
|
+
| `-b, --backup` | Save originals to `.kodu/backup/` before modifying |
|
|
151
|
+
| `--stdin` | Read from stdin, write cleaned result to stdout |
|
|
121
152
|
|
|
122
153
|
---
|
|
123
154
|
|
package/dist/package.json
CHANGED
|
@@ -7,6 +7,11 @@ import { GitService } from '../../shared/git/git.service';
|
|
|
7
7
|
type CleanOptions = {
|
|
8
8
|
dryRun?: boolean;
|
|
9
9
|
changed?: boolean;
|
|
10
|
+
staged?: boolean;
|
|
11
|
+
backup?: boolean;
|
|
12
|
+
noJsdoc?: boolean;
|
|
13
|
+
verbose?: boolean;
|
|
14
|
+
stdin?: boolean;
|
|
10
15
|
};
|
|
11
16
|
export declare class CleanCommand extends CommandRunner {
|
|
12
17
|
private readonly ui;
|
|
@@ -17,8 +22,16 @@ export declare class CleanCommand extends CommandRunner {
|
|
|
17
22
|
constructor(ui: UiService, fsService: FsService, cleaner: CleanerService, config: ConfigService, git: GitService);
|
|
18
23
|
parseDryRun(): boolean;
|
|
19
24
|
parseChanged(): boolean;
|
|
20
|
-
|
|
25
|
+
parseStaged(): boolean;
|
|
26
|
+
parseBackup(): boolean;
|
|
27
|
+
parseNoJsdoc(): boolean;
|
|
28
|
+
parseVerbose(): boolean;
|
|
29
|
+
parseStdin(): boolean;
|
|
30
|
+
run(inputs: string[], options?: CleanOptions): Promise<void>;
|
|
31
|
+
private runStdin;
|
|
32
|
+
private readStdin;
|
|
21
33
|
private buildSpinnerText;
|
|
34
|
+
private noFilesMessage;
|
|
22
35
|
private collectTargets;
|
|
23
36
|
}
|
|
24
37
|
export {};
|
|
@@ -10,12 +10,14 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.CleanCommand = void 0;
|
|
13
|
+
const node_fs_1 = require("node:fs");
|
|
13
14
|
const nest_commander_1 = require("nest-commander");
|
|
14
15
|
const config_service_1 = require("../../core/config/config.service");
|
|
15
16
|
const fs_service_1 = require("../../core/file-system/fs.service");
|
|
16
17
|
const ui_service_1 = require("../../core/ui/ui.service");
|
|
17
18
|
const cleaner_service_1 = require("../../shared/cleaner/cleaner.service");
|
|
18
19
|
const git_service_1 = require("../../shared/git/git.service");
|
|
20
|
+
const SUPPORTED_EXTENSIONS = /\.(ts|tsx|js|jsx|mjs|cjs|html|htm)$/i;
|
|
19
21
|
let CleanCommand = class CleanCommand extends nest_commander_1.CommandRunner {
|
|
20
22
|
ui;
|
|
21
23
|
fsService;
|
|
@@ -36,7 +38,26 @@ let CleanCommand = class CleanCommand extends nest_commander_1.CommandRunner {
|
|
|
36
38
|
parseChanged() {
|
|
37
39
|
return true;
|
|
38
40
|
}
|
|
39
|
-
|
|
41
|
+
parseStaged() {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
parseBackup() {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
parseNoJsdoc() {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
parseVerbose() {
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
parseStdin() {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
async run(inputs, options = {}) {
|
|
57
|
+
if (options.stdin) {
|
|
58
|
+
await this.runStdin(options);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
40
61
|
const spinner = this.ui
|
|
41
62
|
.createSpinner({ text: this.buildSpinnerText(options) })
|
|
42
63
|
.start();
|
|
@@ -50,32 +71,44 @@ let CleanCommand = class CleanCommand extends nest_commander_1.CommandRunner {
|
|
|
50
71
|
useGitignore: cleanerConfig.useGitignore,
|
|
51
72
|
ignore: ignorePatterns,
|
|
52
73
|
});
|
|
53
|
-
const targets = await this.collectTargets(allFiles, options);
|
|
74
|
+
const targets = await this.collectTargets(allFiles, inputs, options);
|
|
54
75
|
if (targets.length === 0) {
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
spinner.stop(noFilesMessage);
|
|
59
|
-
this.ui.log.warn(noFilesMessage);
|
|
76
|
+
const msg = this.noFilesMessage(options);
|
|
77
|
+
spinner.stop(msg);
|
|
78
|
+
this.ui.log.warn(msg);
|
|
60
79
|
return;
|
|
61
80
|
}
|
|
62
81
|
const summary = await this.cleaner.cleanFiles(targets, {
|
|
63
82
|
dryRun: options.dryRun,
|
|
83
|
+
backup: options.backup,
|
|
84
|
+
keepJSDoc: options.noJsdoc ? false : undefined,
|
|
85
|
+
onProgress: (current, total) => {
|
|
86
|
+
spinner.text = `${this.buildSpinnerText(options)} (${current}/${total})`;
|
|
87
|
+
},
|
|
64
88
|
});
|
|
65
89
|
spinner.success(options.dryRun ? 'Analysis complete' : 'Cleaning complete');
|
|
90
|
+
const bytesSaved = summary.bytesBefore - summary.bytesAfter;
|
|
91
|
+
const tokensSaved = Math.round(bytesSaved / 4);
|
|
66
92
|
if (options.dryRun) {
|
|
67
|
-
this.ui.log.info(`Files
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
const previews =
|
|
72
|
-
.
|
|
73
|
-
.
|
|
74
|
-
|
|
75
|
-
|
|
93
|
+
this.ui.log.info(`Files affected: ${summary.filesChanged}/${summary.filesProcessed}, comments: ${summary.commentsRemoved}`);
|
|
94
|
+
this.ui.log.info(`Bytes saved: ${bytesSaved} (~${tokensSaved} tokens)`);
|
|
95
|
+
const limit = options.verbose ? Number.POSITIVE_INFINITY : 3;
|
|
96
|
+
for (const report of summary.reports.filter((r) => r.removed > 0)) {
|
|
97
|
+
const previews = options.verbose
|
|
98
|
+
? report.previews
|
|
99
|
+
: report.previews.slice(0, limit);
|
|
100
|
+
const more = !options.verbose && report.previews.length > limit
|
|
101
|
+
? ` +${report.previews.length - limit} more`
|
|
102
|
+
: '';
|
|
103
|
+
this.ui.log.info(` ${report.file} (${report.removed}): ${previews.map((p) => `"${p}"`).join(', ')}${more}`);
|
|
104
|
+
}
|
|
76
105
|
return;
|
|
77
106
|
}
|
|
78
107
|
this.ui.log.success(`Files cleaned: ${summary.filesChanged}, comments removed: ${summary.commentsRemoved}`);
|
|
108
|
+
this.ui.log.info(`Bytes saved: ${bytesSaved} (~${tokensSaved} tokens)`);
|
|
109
|
+
if (options.backup && summary.filesChanged > 0) {
|
|
110
|
+
this.ui.log.info('Originals backed up to .kodu/backup/');
|
|
111
|
+
}
|
|
79
112
|
}
|
|
80
113
|
catch (error) {
|
|
81
114
|
spinner.error('Error during cleaning');
|
|
@@ -84,28 +117,60 @@ let CleanCommand = class CleanCommand extends nest_commander_1.CommandRunner {
|
|
|
84
117
|
process.exitCode = 1;
|
|
85
118
|
}
|
|
86
119
|
}
|
|
120
|
+
async runStdin(options) {
|
|
121
|
+
try {
|
|
122
|
+
const input = await this.readStdin();
|
|
123
|
+
const cleaned = this.cleaner.cleanContent('stdin.ts', input, options.noJsdoc ? false : undefined);
|
|
124
|
+
process.stdout.write(cleaned);
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
128
|
+
this.ui.log.error(message);
|
|
129
|
+
process.exitCode = 1;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
readStdin() {
|
|
133
|
+
return new Promise((resolve, reject) => {
|
|
134
|
+
const chunks = [];
|
|
135
|
+
const stream = (0, node_fs_1.createReadStream)('/dev/stdin');
|
|
136
|
+
stream.on('data', (chunk) => chunks.push(typeof chunk === 'string' ? Buffer.from(chunk) : chunk));
|
|
137
|
+
stream.on('end', () => resolve(Buffer.concat(chunks).toString('utf8')));
|
|
138
|
+
stream.on('error', reject);
|
|
139
|
+
});
|
|
140
|
+
}
|
|
87
141
|
buildSpinnerText(options) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
142
|
+
if (options.staged)
|
|
143
|
+
return 'Cleaning staged files...';
|
|
144
|
+
if (options.changed)
|
|
145
|
+
return 'Cleaning changed files...';
|
|
146
|
+
return options.dryRun ? 'Analysing...' : 'Cleaning...';
|
|
91
147
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
if (
|
|
96
|
-
return
|
|
148
|
+
noFilesMessage(options) {
|
|
149
|
+
if (options.staged)
|
|
150
|
+
return 'No staged files to clean.';
|
|
151
|
+
if (options.changed)
|
|
152
|
+
return 'No changed files to clean.';
|
|
153
|
+
return 'No files to clean.';
|
|
154
|
+
}
|
|
155
|
+
async collectTargets(allFiles, inputs, options) {
|
|
156
|
+
const supported = allFiles.filter((f) => SUPPORTED_EXTENSIONS.test(f));
|
|
157
|
+
if (inputs.length > 0) {
|
|
158
|
+
return supported.filter((f) => inputs.some((i) => f === i || f.startsWith(`${i.replace(/\/$/, '')}/`)));
|
|
159
|
+
}
|
|
160
|
+
if (options.staged) {
|
|
161
|
+
const staged = new Set(await this.git.getStagedFiles());
|
|
162
|
+
return supported.filter((f) => staged.has(f));
|
|
97
163
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
164
|
+
if (options.changed) {
|
|
165
|
+
const changed = new Set(await this.git.getChangedFiles());
|
|
166
|
+
return supported.filter((f) => changed.has(f));
|
|
167
|
+
}
|
|
168
|
+
return supported;
|
|
101
169
|
}
|
|
102
170
|
};
|
|
103
171
|
exports.CleanCommand = CleanCommand;
|
|
104
172
|
__decorate([
|
|
105
|
-
(0, nest_commander_1.Option)({
|
|
106
|
-
flags: '-d, --dry-run',
|
|
107
|
-
description: 'Show what will be removed',
|
|
108
|
-
}),
|
|
173
|
+
(0, nest_commander_1.Option)({ flags: '-d, --dry-run', description: 'Show what will be removed' }),
|
|
109
174
|
__metadata("design:type", Function),
|
|
110
175
|
__metadata("design:paramtypes", []),
|
|
111
176
|
__metadata("design:returntype", Boolean)
|
|
@@ -113,12 +178,57 @@ __decorate([
|
|
|
113
178
|
__decorate([
|
|
114
179
|
(0, nest_commander_1.Option)({
|
|
115
180
|
flags: '-c, --changed',
|
|
116
|
-
description: 'Clean only changed files',
|
|
181
|
+
description: 'Clean only git-changed files (staged + unstaged + untracked)',
|
|
117
182
|
}),
|
|
118
183
|
__metadata("design:type", Function),
|
|
119
184
|
__metadata("design:paramtypes", []),
|
|
120
185
|
__metadata("design:returntype", Boolean)
|
|
121
186
|
], CleanCommand.prototype, "parseChanged", null);
|
|
187
|
+
__decorate([
|
|
188
|
+
(0, nest_commander_1.Option)({
|
|
189
|
+
flags: '-s, --staged',
|
|
190
|
+
description: 'Clean only git-staged files',
|
|
191
|
+
}),
|
|
192
|
+
__metadata("design:type", Function),
|
|
193
|
+
__metadata("design:paramtypes", []),
|
|
194
|
+
__metadata("design:returntype", Boolean)
|
|
195
|
+
], CleanCommand.prototype, "parseStaged", null);
|
|
196
|
+
__decorate([
|
|
197
|
+
(0, nest_commander_1.Option)({
|
|
198
|
+
flags: '-b, --backup',
|
|
199
|
+
description: 'Save originals to .kodu/backup/ before modifying',
|
|
200
|
+
}),
|
|
201
|
+
__metadata("design:type", Function),
|
|
202
|
+
__metadata("design:paramtypes", []),
|
|
203
|
+
__metadata("design:returntype", Boolean)
|
|
204
|
+
], CleanCommand.prototype, "parseBackup", null);
|
|
205
|
+
__decorate([
|
|
206
|
+
(0, nest_commander_1.Option)({
|
|
207
|
+
flags: '-n, --no-jsdoc',
|
|
208
|
+
description: 'Remove JSDoc comments (overrides config keepJSDoc)',
|
|
209
|
+
}),
|
|
210
|
+
__metadata("design:type", Function),
|
|
211
|
+
__metadata("design:paramtypes", []),
|
|
212
|
+
__metadata("design:returntype", Boolean)
|
|
213
|
+
], CleanCommand.prototype, "parseNoJsdoc", null);
|
|
214
|
+
__decorate([
|
|
215
|
+
(0, nest_commander_1.Option)({
|
|
216
|
+
flags: '-v, --verbose',
|
|
217
|
+
description: 'Show all removed comments in dry-run (not just first 3)',
|
|
218
|
+
}),
|
|
219
|
+
__metadata("design:type", Function),
|
|
220
|
+
__metadata("design:paramtypes", []),
|
|
221
|
+
__metadata("design:returntype", Boolean)
|
|
222
|
+
], CleanCommand.prototype, "parseVerbose", null);
|
|
223
|
+
__decorate([
|
|
224
|
+
(0, nest_commander_1.Option)({
|
|
225
|
+
flags: '--stdin',
|
|
226
|
+
description: 'Read from stdin, write cleaned result to stdout',
|
|
227
|
+
}),
|
|
228
|
+
__metadata("design:type", Function),
|
|
229
|
+
__metadata("design:paramtypes", []),
|
|
230
|
+
__metadata("design:returntype", Boolean)
|
|
231
|
+
], CleanCommand.prototype, "parseStdin", null);
|
|
122
232
|
exports.CleanCommand = CleanCommand = __decorate([
|
|
123
233
|
(0, nest_commander_1.Command)({ name: 'clean', description: 'Remove comments from code' }),
|
|
124
234
|
__metadata("design:paramtypes", [ui_service_1.UiService,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clean.command.js","sourceRoot":"","sources":["../../../../src/commands/clean/clean.command.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAAgE;AAChE,qEAAiE;AACjE,kEAA8D;AAC9D,yDAAqD;AACrD,0EAAsE;AACtE,8DAA0D;
|
|
1
|
+
{"version":3,"file":"clean.command.js","sourceRoot":"","sources":["../../../../src/commands/clean/clean.command.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAA2C;AAC3C,mDAAgE;AAChE,qEAAiE;AACjE,kEAA8D;AAC9D,yDAAqD;AACrD,0EAAsE;AACtE,8DAA0D;AAE1D,MAAM,oBAAoB,GAAG,sCAAsC,CAAC;AAa7D,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,8BAAa;IAE1B;IACA;IACA;IACA;IACA;IALnB,YACmB,EAAa,EACb,SAAoB,EACpB,OAAuB,EACvB,MAAqB,EACrB,GAAe;QAEhC,KAAK,EAAE,CAAC;QANS,OAAE,GAAF,EAAE,CAAW;QACb,cAAS,GAAT,SAAS,CAAW;QACpB,YAAO,GAAP,OAAO,CAAgB;QACvB,WAAM,GAAN,MAAM,CAAe;QACrB,QAAG,GAAH,GAAG,CAAY;IAGlC,CAAC;IAGD,WAAW;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,YAAY;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,WAAW;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,WAAW;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,YAAY;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,YAAY;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,UAAU;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,MAAgB,EAAE,UAAwB,EAAE;QACpD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE;aACpB,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;aACvD,KAAK,EAAE,CAAC;QAEX,IAAI,CAAC;YACH,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACnE,MAAM,cAAc,GAAG;gBACrB,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;gBACxB,GAAG,CAAC,aAAa,CAAC,MAAM,IAAI,EAAE,CAAC;aAChC,CAAC;YACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC;gBACrD,YAAY,EAAE,aAAa,CAAC,YAAY;gBACxC,MAAM,EAAE,cAAc;aACvB,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAErE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;gBACzC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtB,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;gBACrD,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;gBAC9C,UAAU,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;oBAC7B,OAAO,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,OAAO,IAAI,KAAK,GAAG,CAAC;gBAC3E,CAAC;aACF,CAAC,CAAC;YAEH,OAAO,CAAC,OAAO,CACb,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,CAC3D,CAAC;YAEF,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;YAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;YAE/C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CACd,mBAAmB,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,cAAc,eAAe,OAAO,CAAC,eAAe,EAAE,CAC1G,CAAC;gBACF,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,UAAU,MAAM,WAAW,UAAU,CAAC,CAAC;gBAExE,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7D,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC;oBAClE,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO;wBAC9B,CAAC,CAAC,MAAM,CAAC,QAAQ;wBACjB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;oBACpC,MAAM,IAAI,GACR,CAAC,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK;wBAChD,CAAC,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,OAAO;wBAC5C,CAAC,CAAC,EAAE,CAAC;oBACT,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CACd,KAAK,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAC3F,CAAC;gBACJ,CAAC;gBACD,OAAO;YACT,CAAC;YAED,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CACjB,kBAAkB,OAAO,CAAC,YAAY,uBAAuB,OAAO,CAAC,eAAe,EAAE,CACvF,CAAC;YACF,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,UAAU,MAAM,WAAW,UAAU,CAAC,CAAC;YAExE,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;gBAC/C,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACvC,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACzE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3B,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,OAAqB;QAC1C,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CACvC,UAAU,EACV,KAAK,EACL,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CACpC,CAAC;YACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACzE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3B,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAEO,SAAS;QACf,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAA,0BAAgB,EAAC,YAAY,CAAC,CAAC;YAC9C,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAC1B,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CACpE,CAAC;YACF,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACxE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,gBAAgB,CAAC,OAAqB;QAC5C,IAAI,OAAO,CAAC,MAAM;YAAE,OAAO,0BAA0B,CAAC;QACtD,IAAI,OAAO,CAAC,OAAO;YAAE,OAAO,2BAA2B,CAAC;QACxD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC;IACzD,CAAC;IAEO,cAAc,CAAC,OAAqB;QAC1C,IAAI,OAAO,CAAC,MAAM;YAAE,OAAO,2BAA2B,CAAC;QACvD,IAAI,OAAO,CAAC,OAAO;YAAE,OAAO,4BAA4B,CAAC;QACzD,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAEO,KAAK,CAAC,cAAc,CAC1B,QAAkB,EAClB,MAAgB,EAChB,OAAqB;QAErB,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAEvE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC5B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CACxE,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;YACxD,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC;YAC1D,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACF,CAAA;AArNY,oCAAY;AAYvB;IADC,IAAA,uBAAM,EAAC,EAAE,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,2BAA2B,EAAE,CAAC;;;;+CAG5E;AAMD;IAJC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,8DAA8D;KAC5E,CAAC;;;;gDAGD;AAMD;IAJC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,6BAA6B;KAC3C,CAAC;;;;+CAGD;AAMD;IAJC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,kDAAkD;KAChE,CAAC;;;;+CAGD;AAMD;IAJC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE,oDAAoD;KAClE,CAAC;;;;gDAGD;AAMD;IAJC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,yDAAyD;KACvE,CAAC;;;;gDAGD;AAMD;IAJC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,iDAAiD;KAC/D,CAAC;;;;8CAGD;uBA9DU,YAAY;IADxB,IAAA,wBAAO,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,2BAA2B,EAAE,CAAC;qCAG5C,sBAAS;QACF,sBAAS;QACX,gCAAc;QACf,8BAAa;QAChB,wBAAU;GANvB,YAAY,CAqNxB"}
|
|
@@ -3,6 +3,7 @@ import { ConfigService } from '../../core/config/config.service';
|
|
|
3
3
|
import { PromptService } from '../../core/config/prompt.service';
|
|
4
4
|
import { FsService } from '../../core/file-system/fs.service';
|
|
5
5
|
import { UiService } from '../../core/ui/ui.service';
|
|
6
|
+
import { CleanerService } from '../../shared/cleaner/cleaner.service';
|
|
6
7
|
import { TokenizerService } from '../../shared/tokenizer/tokenizer.service';
|
|
7
8
|
type OutputFormat = 'xml' | 'text';
|
|
8
9
|
type PackOptions = {
|
|
@@ -13,6 +14,7 @@ type PackOptions = {
|
|
|
13
14
|
exclude?: string[];
|
|
14
15
|
list?: boolean;
|
|
15
16
|
format?: OutputFormat;
|
|
17
|
+
clean?: boolean;
|
|
16
18
|
};
|
|
17
19
|
export declare class PackCommand extends CommandRunner {
|
|
18
20
|
private readonly ui;
|
|
@@ -20,13 +22,15 @@ export declare class PackCommand extends CommandRunner {
|
|
|
20
22
|
private readonly promptService;
|
|
21
23
|
private readonly fsService;
|
|
22
24
|
private readonly tokenizer;
|
|
23
|
-
|
|
25
|
+
private readonly cleaner;
|
|
26
|
+
constructor(ui: UiService, configService: ConfigService, promptService: PromptService, fsService: FsService, tokenizer: TokenizerService, cleaner: CleanerService);
|
|
24
27
|
parseCopy(): boolean;
|
|
25
28
|
parseTemplate(value: string): string;
|
|
26
29
|
parseOut(value: string): string;
|
|
27
30
|
parsePath(value: string, previous?: string[]): string[];
|
|
28
31
|
parseExclude(value: string, previous?: string[]): string[];
|
|
29
32
|
parseList(): boolean;
|
|
33
|
+
parseClean(): boolean;
|
|
30
34
|
parseFormat(value: string): OutputFormat;
|
|
31
35
|
run(_inputs: string[], options: PackOptions): Promise<void>;
|
|
32
36
|
private buildContext;
|
|
@@ -21,6 +21,7 @@ const config_service_1 = require("../../core/config/config.service");
|
|
|
21
21
|
const prompt_service_1 = require("../../core/config/prompt.service");
|
|
22
22
|
const fs_service_1 = require("../../core/file-system/fs.service");
|
|
23
23
|
const ui_service_1 = require("../../core/ui/ui.service");
|
|
24
|
+
const cleaner_service_1 = require("../../shared/cleaner/cleaner.service");
|
|
24
25
|
const tokenizer_service_1 = require("../../shared/tokenizer/tokenizer.service");
|
|
25
26
|
let PackCommand = class PackCommand extends nest_commander_1.CommandRunner {
|
|
26
27
|
ui;
|
|
@@ -28,13 +29,15 @@ let PackCommand = class PackCommand extends nest_commander_1.CommandRunner {
|
|
|
28
29
|
promptService;
|
|
29
30
|
fsService;
|
|
30
31
|
tokenizer;
|
|
31
|
-
|
|
32
|
+
cleaner;
|
|
33
|
+
constructor(ui, configService, promptService, fsService, tokenizer, cleaner) {
|
|
32
34
|
super();
|
|
33
35
|
this.ui = ui;
|
|
34
36
|
this.configService = configService;
|
|
35
37
|
this.promptService = promptService;
|
|
36
38
|
this.fsService = fsService;
|
|
37
39
|
this.tokenizer = tokenizer;
|
|
40
|
+
this.cleaner = cleaner;
|
|
38
41
|
}
|
|
39
42
|
parseCopy() {
|
|
40
43
|
return true;
|
|
@@ -54,6 +57,9 @@ let PackCommand = class PackCommand extends nest_commander_1.CommandRunner {
|
|
|
54
57
|
parseList() {
|
|
55
58
|
return true;
|
|
56
59
|
}
|
|
60
|
+
parseClean() {
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
57
63
|
parseFormat(value) {
|
|
58
64
|
if (value !== 'xml' && value !== 'text') {
|
|
59
65
|
this.ui.log.warn(`Unknown format "${value}", using "xml"`);
|
|
@@ -88,7 +94,7 @@ let PackCommand = class PackCommand extends nest_commander_1.CommandRunner {
|
|
|
88
94
|
return;
|
|
89
95
|
}
|
|
90
96
|
const format = options.format ?? 'xml';
|
|
91
|
-
const context = await this.buildContext(files, format);
|
|
97
|
+
const context = await this.buildContext(files, format, options.clean);
|
|
92
98
|
const fileList = files.join('\n');
|
|
93
99
|
const { tokens, usdEstimate } = this.tokenizer.count(context);
|
|
94
100
|
const basePrompt = await this.applyConfiguredPrompt({
|
|
@@ -113,7 +119,7 @@ let PackCommand = class PackCommand extends nest_commander_1.CommandRunner {
|
|
|
113
119
|
this.ui.log.info(`Files: ${files.length}`);
|
|
114
120
|
this.ui.log.info(`Tokens: ${tokens}`);
|
|
115
121
|
this.ui.log.info(`Cost estimate: ~$${usdEstimate.toFixed(4)}`);
|
|
116
|
-
this.ui.log.info(`Format: ${format}`);
|
|
122
|
+
this.ui.log.info(`Format: ${format}${options.clean ? ' (comments stripped)' : ''}`);
|
|
117
123
|
this.ui.log.success(`Saved to ${outputPath}`);
|
|
118
124
|
if (options.copy) {
|
|
119
125
|
this.ui.log.success('Result copied to clipboard');
|
|
@@ -126,9 +132,12 @@ let PackCommand = class PackCommand extends nest_commander_1.CommandRunner {
|
|
|
126
132
|
process.exitCode = 1;
|
|
127
133
|
}
|
|
128
134
|
}
|
|
129
|
-
async buildContext(files, format) {
|
|
135
|
+
async buildContext(files, format, clean = false) {
|
|
130
136
|
const chunks = await Promise.all(files.map(async (file) => {
|
|
131
|
-
|
|
137
|
+
let content = await this.fsService.readFileRelative(file);
|
|
138
|
+
if (clean) {
|
|
139
|
+
content = this.cleaner.cleanContent(file, content);
|
|
140
|
+
}
|
|
132
141
|
if (format === 'xml') {
|
|
133
142
|
return `<file path="${file}">\n${content}\n</file>`;
|
|
134
143
|
}
|
|
@@ -159,8 +168,14 @@ let PackCommand = class PackCommand extends nest_commander_1.CommandRunner {
|
|
|
159
168
|
if (!packPrompt) {
|
|
160
169
|
return ctx.context;
|
|
161
170
|
}
|
|
162
|
-
|
|
163
|
-
|
|
171
|
+
try {
|
|
172
|
+
const template = await this.promptService.load(packPrompt);
|
|
173
|
+
return this.fillTemplate(template, ctx);
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
this.ui.log.warn(`Prompt file not found: ${packPrompt}, using raw context`);
|
|
177
|
+
return ctx.context;
|
|
178
|
+
}
|
|
164
179
|
}
|
|
165
180
|
fillTemplate(template, ctx) {
|
|
166
181
|
const filled = template
|
|
@@ -226,6 +241,15 @@ __decorate([
|
|
|
226
241
|
__metadata("design:paramtypes", []),
|
|
227
242
|
__metadata("design:returntype", Boolean)
|
|
228
243
|
], PackCommand.prototype, "parseList", null);
|
|
244
|
+
__decorate([
|
|
245
|
+
(0, nest_commander_1.Option)({
|
|
246
|
+
flags: '--clean',
|
|
247
|
+
description: 'Strip comments in-memory before packing (files not modified)',
|
|
248
|
+
}),
|
|
249
|
+
__metadata("design:type", Function),
|
|
250
|
+
__metadata("design:paramtypes", []),
|
|
251
|
+
__metadata("design:returntype", Boolean)
|
|
252
|
+
], PackCommand.prototype, "parseClean", null);
|
|
229
253
|
__decorate([
|
|
230
254
|
(0, nest_commander_1.Option)({
|
|
231
255
|
flags: '-f, --format <format>',
|
|
@@ -244,6 +268,7 @@ exports.PackCommand = PackCommand = __decorate([
|
|
|
244
268
|
config_service_1.ConfigService,
|
|
245
269
|
prompt_service_1.PromptService,
|
|
246
270
|
fs_service_1.FsService,
|
|
247
|
-
tokenizer_service_1.TokenizerService
|
|
271
|
+
tokenizer_service_1.TokenizerService,
|
|
272
|
+
cleaner_service_1.CleanerService])
|
|
248
273
|
], PackCommand);
|
|
249
274
|
//# sourceMappingURL=pack.command.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pack.command.js","sourceRoot":"","sources":["../../../../src/commands/pack/pack.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,qCAAyC;AACzC,0DAA6B;AAC7B,4DAAmC;AACnC,mDAAgE;AAChE,qEAAiE;AACjE,qEAAiE;AACjE,kEAA8D;AAC9D,yDAAqD;AACrD,gFAA4E;
|
|
1
|
+
{"version":3,"file":"pack.command.js","sourceRoot":"","sources":["../../../../src/commands/pack/pack.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ const common_1 = require("@nestjs/common");
|
|
|
11
11
|
const config_module_1 = require("../../core/config/config.module");
|
|
12
12
|
const fs_module_1 = require("../../core/file-system/fs.module");
|
|
13
13
|
const ui_module_1 = require("../../core/ui/ui.module");
|
|
14
|
+
const cleaner_service_1 = require("../../shared/cleaner/cleaner.service");
|
|
14
15
|
const tokenizer_module_1 = require("../../shared/tokenizer/tokenizer.module");
|
|
15
16
|
const pack_command_1 = require("./pack.command");
|
|
16
17
|
let PackModule = class PackModule {
|
|
@@ -19,7 +20,7 @@ exports.PackModule = PackModule;
|
|
|
19
20
|
exports.PackModule = PackModule = __decorate([
|
|
20
21
|
(0, common_1.Module)({
|
|
21
22
|
imports: [config_module_1.ConfigModule, ui_module_1.UiModule, fs_module_1.FsModule, tokenizer_module_1.TokenizerModule],
|
|
22
|
-
providers: [pack_command_1.PackCommand],
|
|
23
|
+
providers: [pack_command_1.PackCommand, cleaner_service_1.CleanerService],
|
|
23
24
|
})
|
|
24
25
|
], PackModule);
|
|
25
26
|
//# sourceMappingURL=pack.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pack.module.js","sourceRoot":"","sources":["../../../../src/commands/pack/pack.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,mEAA+D;AAC/D,gEAA4D;AAC5D,uDAAmD;AACnD,8EAA0E;AAC1E,iDAA6C;AAMtC,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAG,CAAA;AAAb,gCAAU;qBAAV,UAAU;IAJtB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,4BAAY,EAAE,oBAAQ,EAAE,oBAAQ,EAAE,kCAAe,CAAC;QAC5D,SAAS,EAAE,CAAC,0BAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"pack.module.js","sourceRoot":"","sources":["../../../../src/commands/pack/pack.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,mEAA+D;AAC/D,gEAA4D;AAC5D,uDAAmD;AACnD,0EAAsE;AACtE,8EAA0E;AAC1E,iDAA6C;AAMtC,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAG,CAAA;AAAb,gCAAU;qBAAV,UAAU;IAJtB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,4BAAY,EAAE,oBAAQ,EAAE,oBAAQ,EAAE,kCAAe,CAAC;QAC5D,SAAS,EAAE,CAAC,0BAAW,EAAE,gCAAc,CAAC;KACzC,CAAC;GACW,UAAU,CAAG"}
|
|
@@ -7,6 +7,7 @@ export declare class CleanerService {
|
|
|
7
7
|
private readonly project;
|
|
8
8
|
private readonly systemWhitelist;
|
|
9
9
|
constructor(configService: ConfigService, fsService: FsService);
|
|
10
|
+
cleanContent(filename: string, content: string, keepJSDoc?: boolean): string;
|
|
10
11
|
cleanFiles(files: string[], options?: CleanOptions): Promise<CleanSummary>;
|
|
11
12
|
private cleanSource;
|
|
12
13
|
private collectCommentRanges;
|
|
@@ -15,6 +16,7 @@ export declare class CleanerService {
|
|
|
15
16
|
private getReplacement;
|
|
16
17
|
private buildWhitelist;
|
|
17
18
|
private writeFile;
|
|
19
|
+
private backupFile;
|
|
18
20
|
private addRange;
|
|
19
21
|
private collectHtmlCommentRanges;
|
|
20
22
|
private shouldCollectHtmlComments;
|