agent-ide 0.8.1 → 0.8.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/dist/application/index.d.ts +1 -12
- package/dist/application/index.d.ts.map +1 -1
- package/dist/application/index.js +0 -16
- package/dist/application/index.js.map +1 -1
- package/dist/application/services/cache-coordinator.service.d.ts.map +1 -1
- package/dist/application/services/cache-coordinator.service.js.map +1 -1
- package/dist/application/services/module-coordinator.service.d.ts +3 -8
- package/dist/application/services/module-coordinator.service.d.ts.map +1 -1
- package/dist/application/services/module-coordinator.service.js +5 -139
- package/dist/application/services/module-coordinator.service.js.map +1 -1
- package/dist/application/types.d.ts +0 -63
- package/dist/application/types.d.ts.map +1 -1
- package/dist/application/types.js +1 -9
- package/dist/application/types.js.map +1 -1
- package/dist/core/call-hierarchy/call-hierarchy-analyzer.d.ts.map +1 -1
- package/dist/core/call-hierarchy/call-hierarchy-analyzer.js +3 -5
- package/dist/core/call-hierarchy/call-hierarchy-analyzer.js.map +1 -1
- package/dist/core/change-signature/change-signature-service.d.ts +9 -0
- package/dist/core/change-signature/change-signature-service.d.ts.map +1 -1
- package/dist/core/change-signature/change-signature-service.js +86 -4
- package/dist/core/change-signature/change-signature-service.js.map +1 -1
- package/dist/core/change-signature/signature-parser.d.ts +46 -4
- package/dist/core/change-signature/signature-parser.d.ts.map +1 -1
- package/dist/core/change-signature/signature-parser.js +180 -9
- package/dist/core/change-signature/signature-parser.js.map +1 -1
- package/dist/core/deadcode/dead-code-detector.d.ts +22 -1
- package/dist/core/deadcode/dead-code-detector.d.ts.map +1 -1
- package/dist/core/deadcode/dead-code-detector.js +134 -61
- package/dist/core/deadcode/dead-code-detector.js.map +1 -1
- package/dist/core/deadcode/dead-code-remover.d.ts +11 -93
- package/dist/core/deadcode/dead-code-remover.d.ts.map +1 -1
- package/dist/core/deadcode/dead-code-remover.js +71 -690
- package/dist/core/deadcode/dead-code-remover.js.map +1 -1
- package/dist/core/deadcode/file-operations.d.ts +85 -0
- package/dist/core/deadcode/file-operations.d.ts.map +1 -0
- package/dist/core/deadcode/file-operations.js +263 -0
- package/dist/core/deadcode/file-operations.js.map +1 -0
- package/dist/core/deadcode/import-cleaner.d.ts +63 -0
- package/dist/core/deadcode/import-cleaner.d.ts.map +1 -0
- package/dist/core/deadcode/import-cleaner.js +229 -0
- package/dist/core/deadcode/import-cleaner.js.map +1 -0
- package/dist/core/deadcode/import-parser.d.ts +79 -0
- package/dist/core/deadcode/import-parser.d.ts.map +1 -0
- package/dist/core/deadcode/import-parser.js +229 -0
- package/dist/core/deadcode/import-parser.js.map +1 -0
- package/dist/core/deadcode/range-expander.d.ts +38 -0
- package/dist/core/deadcode/range-expander.d.ts.map +1 -0
- package/dist/core/deadcode/range-expander.js +175 -0
- package/dist/core/deadcode/range-expander.js.map +1 -0
- package/dist/core/deadcode/types.d.ts +2 -0
- package/dist/core/deadcode/types.d.ts.map +1 -1
- package/dist/core/deadcode/types.js.map +1 -1
- package/dist/core/find-references/index.d.ts +2 -2
- package/dist/core/find-references/index.d.ts.map +1 -1
- package/dist/core/find-references/index.js +1 -1
- package/dist/core/find-references/index.js.map +1 -1
- package/dist/core/move/import-resolver.d.ts +5 -0
- package/dist/core/move/import-resolver.d.ts.map +1 -1
- package/dist/core/move/import-resolver.js +7 -0
- package/dist/core/move/import-resolver.js.map +1 -1
- package/dist/core/move/move-service.d.ts +39 -1
- package/dist/core/move/move-service.d.ts.map +1 -1
- package/dist/core/move/move-service.js +230 -63
- package/dist/core/move/move-service.js.map +1 -1
- package/dist/core/move/types.d.ts.map +1 -1
- package/dist/core/move-member/member-extractor.d.ts.map +1 -1
- package/dist/core/move-member/member-extractor.js +2 -2
- package/dist/core/move-member/member-extractor.js.map +1 -1
- package/dist/core/move-member/move-member-service.d.ts +6 -0
- package/dist/core/move-member/move-member-service.d.ts.map +1 -1
- package/dist/core/move-member/move-member-service.js +60 -3
- package/dist/core/move-member/move-member-service.js.map +1 -1
- package/dist/core/move-member/types.d.ts.map +1 -1
- package/dist/core/rename/reference-updater.d.ts +1 -35
- package/dist/core/rename/reference-updater.d.ts.map +1 -1
- package/dist/core/rename/reference-updater.js +4 -250
- package/dist/core/rename/reference-updater.js.map +1 -1
- package/dist/core/rename/rename-engine.d.ts +14 -22
- package/dist/core/rename/rename-engine.d.ts.map +1 -1
- package/dist/core/rename/rename-engine.js +37 -207
- package/dist/core/rename/rename-engine.js.map +1 -1
- package/dist/core/rename/scope-analyzer.d.ts.map +1 -1
- package/dist/core/shared/index.d.ts +1 -1
- package/dist/core/shared/index.d.ts.map +1 -1
- package/dist/core/shared/index.js +1 -1
- package/dist/core/shared/index.js.map +1 -1
- package/dist/core/shared/indexing/index-engine.d.ts +1 -1
- package/dist/core/shared/indexing/index-engine.d.ts.map +1 -1
- package/dist/core/shared/indexing/index-engine.js +1 -1
- package/dist/core/shared/indexing/index-engine.js.map +1 -1
- package/dist/core/shared/symbol-finder/call-site-parser.d.ts +71 -0
- package/dist/core/shared/symbol-finder/call-site-parser.d.ts.map +1 -0
- package/dist/core/shared/symbol-finder/call-site-parser.js +369 -0
- package/dist/core/shared/symbol-finder/call-site-parser.js.map +1 -0
- package/dist/core/shared/symbol-finder/index.d.ts +9 -0
- package/dist/core/shared/symbol-finder/index.d.ts.map +1 -0
- package/dist/core/shared/symbol-finder/index.js +12 -0
- package/dist/core/shared/symbol-finder/index.js.map +1 -0
- package/dist/core/shared/{symbol-finder.d.ts → symbol-finder/symbol-finder.d.ts} +27 -133
- package/dist/core/shared/symbol-finder/symbol-finder.d.ts.map +1 -0
- package/dist/core/shared/symbol-finder/symbol-finder.js +544 -0
- package/dist/core/shared/symbol-finder/symbol-finder.js.map +1 -0
- package/dist/core/shared/symbol-finder/text-matcher.d.ts +45 -0
- package/dist/core/shared/symbol-finder/text-matcher.d.ts.map +1 -0
- package/dist/core/shared/symbol-finder/text-matcher.js +195 -0
- package/dist/core/shared/symbol-finder/text-matcher.js.map +1 -0
- package/dist/core/shared/symbol-finder/types.d.ts +108 -0
- package/dist/core/shared/symbol-finder/types.d.ts.map +1 -0
- package/dist/core/shared/symbol-finder/types.js +71 -0
- package/dist/core/shared/symbol-finder/types.js.map +1 -0
- package/dist/core/snapshot/snapshot-generator.d.ts +16 -4
- package/dist/core/snapshot/snapshot-generator.d.ts.map +1 -1
- package/dist/core/snapshot/snapshot-generator.js +91 -18
- package/dist/core/snapshot/snapshot-generator.js.map +1 -1
- package/dist/infrastructure/cache/cache-manager.d.ts.map +1 -1
- package/dist/infrastructure/cache/cache-manager.js +4 -0
- package/dist/infrastructure/cache/cache-manager.js.map +1 -1
- package/dist/infrastructure/cache/index.d.ts +15 -9
- package/dist/infrastructure/cache/index.d.ts.map +1 -1
- package/dist/infrastructure/cache/index.js +5 -5
- package/dist/infrastructure/cache/index.js.map +1 -1
- package/dist/infrastructure/cache/memory-cache.d.ts.map +1 -1
- package/dist/infrastructure/cache/memory-cache.js.map +1 -1
- package/dist/infrastructure/cache/strategies.d.ts.map +1 -1
- package/dist/infrastructure/cache/strategies.js +2 -1
- package/dist/infrastructure/cache/strategies.js.map +1 -1
- package/dist/infrastructure/cache/types.d.ts +4 -4
- package/dist/infrastructure/cache/types.d.ts.map +1 -1
- package/dist/infrastructure/changeset/change-applicator.d.ts +95 -0
- package/dist/infrastructure/changeset/change-applicator.d.ts.map +1 -0
- package/dist/infrastructure/changeset/change-applicator.js +466 -0
- package/dist/infrastructure/changeset/change-applicator.js.map +1 -0
- package/dist/infrastructure/changeset/changeset-builder.d.ts +107 -0
- package/dist/infrastructure/changeset/changeset-builder.d.ts.map +1 -0
- package/dist/infrastructure/changeset/changeset-builder.js +183 -0
- package/dist/infrastructure/changeset/changeset-builder.js.map +1 -0
- package/dist/infrastructure/changeset/changeset-converter.d.ts +15 -0
- package/dist/infrastructure/changeset/changeset-converter.d.ts.map +1 -0
- package/dist/infrastructure/changeset/changeset-converter.js +369 -0
- package/dist/infrastructure/changeset/changeset-converter.js.map +1 -0
- package/dist/infrastructure/changeset/index.d.ts +9 -0
- package/dist/infrastructure/changeset/index.d.ts.map +1 -0
- package/dist/infrastructure/changeset/index.js +11 -0
- package/dist/infrastructure/changeset/index.js.map +1 -0
- package/dist/infrastructure/changeset/types.d.ts +110 -0
- package/dist/infrastructure/changeset/types.d.ts.map +1 -0
- package/dist/infrastructure/changeset/types.js +6 -0
- package/dist/infrastructure/changeset/types.js.map +1 -0
- package/dist/infrastructure/parser/base.d.ts.map +1 -1
- package/dist/infrastructure/parser/base.js +4 -3
- package/dist/infrastructure/parser/base.js.map +1 -1
- package/dist/infrastructure/parser/interface.d.ts +4 -2
- package/dist/infrastructure/parser/interface.d.ts.map +1 -1
- package/dist/infrastructure/parser/interface.js.map +1 -1
- package/dist/infrastructure/storage/file-system.d.ts.map +1 -1
- package/dist/infrastructure/storage/file-system.js +61 -54
- package/dist/infrastructure/storage/file-system.js.map +1 -1
- package/dist/interfaces/cli/commands/change-signature.command.d.ts.map +1 -1
- package/dist/interfaces/cli/commands/change-signature.command.js +31 -107
- package/dist/interfaces/cli/commands/change-signature.command.js.map +1 -1
- package/dist/interfaces/cli/commands/deadcode.command.js +51 -46
- package/dist/interfaces/cli/commands/deadcode.command.js.map +1 -1
- package/dist/interfaces/cli/commands/find-references.command.d.ts.map +1 -1
- package/dist/interfaces/cli/commands/find-references.command.js +18 -3
- package/dist/interfaces/cli/commands/find-references.command.js.map +1 -1
- package/dist/interfaces/cli/commands/move-member.command.d.ts.map +1 -1
- package/dist/interfaces/cli/commands/move-member.command.js +32 -103
- package/dist/interfaces/cli/commands/move-member.command.js.map +1 -1
- package/dist/interfaces/cli/commands/move.command.js +43 -54
- package/dist/interfaces/cli/commands/move.command.js.map +1 -1
- package/dist/interfaces/cli/commands/rename.command.js +27 -61
- package/dist/interfaces/cli/commands/rename.command.js.map +1 -1
- package/dist/interfaces/cli/output-formatter.d.ts +2 -2
- package/dist/interfaces/cli/output-formatter.d.ts.map +1 -1
- package/dist/interfaces/cli/output-formatter.js.map +1 -1
- package/dist/plugins/javascript/parser.d.ts +11 -10
- package/dist/plugins/javascript/parser.d.ts.map +1 -1
- package/dist/plugins/javascript/parser.js +57 -53
- package/dist/plugins/javascript/parser.js.map +1 -1
- package/dist/plugins/javascript/pattern-analyzer.d.ts.map +1 -1
- package/dist/plugins/javascript/pattern-analyzer.js +4 -3
- package/dist/plugins/javascript/pattern-analyzer.js.map +1 -1
- package/dist/plugins/javascript/reference-finder.d.ts +21 -0
- package/dist/plugins/javascript/reference-finder.d.ts.map +1 -1
- package/dist/plugins/javascript/reference-finder.js +119 -76
- package/dist/plugins/javascript/reference-finder.js.map +1 -1
- package/dist/plugins/javascript/types.d.ts +4 -7
- package/dist/plugins/javascript/types.d.ts.map +1 -1
- package/dist/plugins/javascript/types.js +9 -9
- package/dist/plugins/javascript/types.js.map +1 -1
- package/dist/plugins/shared/parser-helpers.js.map +1 -1
- package/dist/{shared → plugins/shared}/utils/array.d.ts +6 -1
- package/dist/plugins/shared/utils/array.d.ts.map +1 -0
- package/dist/plugins/shared/utils/array.js.map +1 -0
- package/dist/{shared → plugins/shared}/utils/async.d.ts +1 -1
- package/dist/plugins/shared/utils/async.d.ts.map +1 -0
- package/dist/{shared → plugins/shared}/utils/async.js +2 -0
- package/dist/plugins/shared/utils/async.js.map +1 -0
- package/dist/{shared → plugins/shared}/utils/index.d.ts +0 -20
- package/dist/plugins/shared/utils/index.d.ts.map +1 -0
- package/dist/{shared → plugins/shared}/utils/index.js +0 -20
- package/dist/plugins/shared/utils/index.js.map +1 -0
- package/dist/plugins/shared/utils/memory-monitor.d.ts.map +1 -0
- package/dist/plugins/shared/utils/memory-monitor.js.map +1 -0
- package/dist/{shared → plugins/shared}/utils/object.d.ts +6 -6
- package/dist/plugins/shared/utils/object.d.ts.map +1 -0
- package/dist/{shared → plugins/shared}/utils/object.js +21 -3
- package/dist/plugins/shared/utils/object.js.map +1 -0
- package/dist/plugins/shared/utils/path.d.ts.map +1 -0
- package/dist/plugins/shared/utils/path.js.map +1 -0
- package/dist/{shared → plugins/shared}/utils/string.d.ts +1 -1
- package/dist/plugins/shared/utils/string.d.ts.map +1 -0
- package/dist/{shared → plugins/shared}/utils/string.js +7 -4
- package/dist/plugins/shared/utils/string.js.map +1 -0
- package/dist/plugins/typescript/declaration-analyzer.d.ts +4 -4
- package/dist/plugins/typescript/declaration-analyzer.d.ts.map +1 -1
- package/dist/plugins/typescript/declaration-analyzer.js +9 -6
- package/dist/plugins/typescript/declaration-analyzer.js.map +1 -1
- package/dist/plugins/typescript/language-service.d.ts +1 -1
- package/dist/plugins/typescript/language-service.d.ts.map +1 -1
- package/dist/plugins/typescript/parser.d.ts +3 -2
- package/dist/plugins/typescript/parser.d.ts.map +1 -1
- package/dist/plugins/typescript/parser.js +18 -13
- package/dist/plugins/typescript/parser.js.map +1 -1
- package/dist/plugins/typescript/reference-finder.d.ts +3 -0
- package/dist/plugins/typescript/reference-finder.d.ts.map +1 -1
- package/dist/plugins/typescript/reference-finder.js +5 -2
- package/dist/plugins/typescript/reference-finder.js.map +1 -1
- package/dist/plugins/typescript/symbol-extractor.d.ts +4 -0
- package/dist/plugins/typescript/symbol-extractor.d.ts.map +1 -1
- package/dist/plugins/typescript/symbol-extractor.js +18 -4
- package/dist/plugins/typescript/symbol-extractor.js.map +1 -1
- package/dist/plugins/typescript/types.d.ts +0 -3
- package/dist/plugins/typescript/types.d.ts.map +1 -1
- package/dist/plugins/typescript/types.js +6 -9
- package/dist/plugins/typescript/types.js.map +1 -1
- package/dist/shared/errors/index.d.ts +1 -1
- package/dist/shared/errors/index.d.ts.map +1 -1
- package/dist/shared/errors/parser-error.js +5 -5
- package/dist/shared/errors/parser-error.js.map +1 -1
- package/dist/shared/errors/validation-error.d.ts +2 -2
- package/dist/shared/errors/validation-error.d.ts.map +1 -1
- package/dist/shared/errors/validation-error.js.map +1 -1
- package/dist/shared/types/ast.d.ts +4 -4
- package/dist/shared/types/ast.d.ts.map +1 -1
- package/dist/shared/types/ast.js.map +1 -1
- package/dist/shared/types/core.d.ts +1 -1
- package/dist/shared/types/core.d.ts.map +1 -1
- package/dist/shared/types/index.d.ts +1 -0
- package/dist/shared/types/index.d.ts.map +1 -1
- package/dist/shared/types/index.js +2 -0
- package/dist/shared/types/index.js.map +1 -1
- package/dist/shared/types/line-number.d.ts +22 -0
- package/dist/shared/types/line-number.d.ts.map +1 -0
- package/dist/shared/types/line-number.js +28 -0
- package/dist/shared/types/line-number.js.map +1 -0
- package/package.json +2 -2
- package/dist/application/services/workflow-engine.service.d.ts +0 -76
- package/dist/application/services/workflow-engine.service.d.ts.map +0 -1
- package/dist/application/services/workflow-engine.service.js +0 -405
- package/dist/application/services/workflow-engine.service.js.map +0 -1
- package/dist/application/workflows/analysis-workflow.d.ts +0 -239
- package/dist/application/workflows/analysis-workflow.d.ts.map +0 -1
- package/dist/application/workflows/analysis-workflow.js +0 -395
- package/dist/application/workflows/analysis-workflow.js.map +0 -1
- package/dist/application/workflows/base-workflow.d.ts +0 -108
- package/dist/application/workflows/base-workflow.d.ts.map +0 -1
- package/dist/application/workflows/base-workflow.js +0 -236
- package/dist/application/workflows/base-workflow.js.map +0 -1
- package/dist/application/workflows/index.d.ts +0 -115
- package/dist/application/workflows/index.d.ts.map +0 -1
- package/dist/application/workflows/index.js +0 -218
- package/dist/application/workflows/index.js.map +0 -1
- package/dist/application/workflows/refactor-workflow.d.ts +0 -107
- package/dist/application/workflows/refactor-workflow.d.ts.map +0 -1
- package/dist/application/workflows/refactor-workflow.js +0 -310
- package/dist/application/workflows/refactor-workflow.js.map +0 -1
- package/dist/core/shared/symbol-finder.d.ts.map +0 -1
- package/dist/core/shared/symbol-finder.js +0 -882
- package/dist/core/shared/symbol-finder.js.map +0 -1
- package/dist/plugins/javascript/code-analyzer.d.ts +0 -68
- package/dist/plugins/javascript/code-analyzer.d.ts.map +0 -1
- package/dist/plugins/javascript/code-analyzer.js +0 -302
- package/dist/plugins/javascript/code-analyzer.js.map +0 -1
- package/dist/plugins/javascript/index.d.ts +0 -12
- package/dist/plugins/javascript/index.d.ts.map +0 -1
- package/dist/plugins/javascript/index.js +0 -16
- package/dist/plugins/javascript/index.js.map +0 -1
- package/dist/plugins/typescript/index.d.ts +0 -14
- package/dist/plugins/typescript/index.d.ts.map +0 -1
- package/dist/plugins/typescript/index.js +0 -13
- package/dist/plugins/typescript/index.js.map +0 -1
- package/dist/shared/utils/array.d.ts.map +0 -1
- package/dist/shared/utils/array.js.map +0 -1
- package/dist/shared/utils/async.d.ts.map +0 -1
- package/dist/shared/utils/async.js.map +0 -1
- package/dist/shared/utils/index.d.ts.map +0 -1
- package/dist/shared/utils/index.js.map +0 -1
- package/dist/shared/utils/memory-monitor.d.ts.map +0 -1
- package/dist/shared/utils/memory-monitor.js.map +0 -1
- package/dist/shared/utils/object.d.ts.map +0 -1
- package/dist/shared/utils/object.js.map +0 -1
- package/dist/shared/utils/path.d.ts.map +0 -1
- package/dist/shared/utils/path.js.map +0 -1
- package/dist/shared/utils/string.d.ts.map +0 -1
- package/dist/shared/utils/string.js.map +0 -1
- /package/dist/{shared → plugins/shared}/utils/array.js +0 -0
- /package/dist/{shared → plugins/shared}/utils/memory-monitor.d.ts +0 -0
- /package/dist/{shared → plugins/shared}/utils/memory-monitor.js +0 -0
- /package/dist/{shared → plugins/shared}/utils/path.d.ts +0 -0
- /package/dist/{shared → plugins/shared}/utils/path.js +0 -0
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import * as path from 'path';
|
|
6
6
|
import { ChangeSignatureService, SignatureChangeType } from '../../../core/change-signature/index.js';
|
|
7
7
|
import { ParserRegistry } from '../../../infrastructure/parser/registry.js';
|
|
8
|
+
import { ChangeApplicator, convertChangesetToPreviewInput } from '../../../infrastructure/changeset/index.js';
|
|
8
9
|
import { createUnifiedOutputHandler, parseOutputFormat, OutputFormat } from '../../cli/unified-output-handler.js';
|
|
9
10
|
/**
|
|
10
11
|
* 設定 change-signature 命令
|
|
@@ -52,57 +53,53 @@ async function handleChangeSignatureCommand(file, functionName, options, context
|
|
|
52
53
|
return;
|
|
53
54
|
}
|
|
54
55
|
if (!isJsonFormat) {
|
|
55
|
-
console.log(
|
|
56
|
-
console.log(
|
|
56
|
+
console.log(` 修改函式簽名: ${functionName}`);
|
|
57
|
+
console.log(` 檔案: ${path.relative(process.cwd(), filePath)}`);
|
|
57
58
|
}
|
|
58
59
|
// 取得 ParserRegistry(單例)
|
|
59
60
|
const parserRegistry = ParserRegistry.getInstance();
|
|
60
61
|
// 建立服務
|
|
61
62
|
const changeSignatureService = new ChangeSignatureService(parserRegistry, context.fileSystem);
|
|
62
|
-
//
|
|
63
|
-
const
|
|
63
|
+
// 使用新的 Changeset 流程
|
|
64
|
+
const applicator = new ChangeApplicator(context.fileSystem);
|
|
65
|
+
// 生成 Changeset
|
|
66
|
+
const changeset = await changeSignatureService.generateChangeset({
|
|
64
67
|
filePath,
|
|
65
68
|
functionName,
|
|
66
69
|
changes,
|
|
67
|
-
projectRoot
|
|
68
|
-
|
|
70
|
+
projectRoot
|
|
71
|
+
});
|
|
72
|
+
if (!changeset.success) {
|
|
73
|
+
outputHandler.outputError(changeset.errors?.join(', ') ?? '生成變更失敗', format, 'change-signature');
|
|
74
|
+
process.exitCode = 1;
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
// 轉換為 PreviewInput
|
|
78
|
+
const previewInput = await convertChangesetToPreviewInput(changeset, context.fileSystem);
|
|
79
|
+
// Dry-run 模式只輸出預覽
|
|
80
|
+
if (options.dryRun) {
|
|
81
|
+
outputHandler.outputMutation(previewInput, format);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
// 執行變更(帶回滾)
|
|
85
|
+
if (!isJsonFormat) {
|
|
86
|
+
console.log(' 執行變更...');
|
|
87
|
+
}
|
|
88
|
+
const result = await applicator.apply(changeset, {
|
|
89
|
+
atomic: true,
|
|
90
|
+
rollbackOnError: true
|
|
69
91
|
});
|
|
70
92
|
if (result.success) {
|
|
71
|
-
|
|
72
|
-
console.log(JSON.stringify({
|
|
73
|
-
success: true,
|
|
74
|
-
originalSignature: formatSignatureForJson(result.originalSignature),
|
|
75
|
-
newSignature: formatSignatureForJson(result.newSignature),
|
|
76
|
-
definitionUpdate: {
|
|
77
|
-
filePath: result.definitionUpdate.filePath,
|
|
78
|
-
originalCode: result.definitionUpdate.originalCode,
|
|
79
|
-
newCode: result.definitionUpdate.newCode
|
|
80
|
-
},
|
|
81
|
-
callSiteUpdates: result.callSiteUpdates.map(u => ({
|
|
82
|
-
filePath: u.filePath,
|
|
83
|
-
originalCode: u.originalCode,
|
|
84
|
-
newCode: u.newCode,
|
|
85
|
-
line: u.location.range.start.line
|
|
86
|
-
})),
|
|
87
|
-
executed: result.executed,
|
|
88
|
-
stats: result.stats
|
|
89
|
-
}));
|
|
90
|
-
}
|
|
91
|
-
else if (format === OutputFormat.Diff) {
|
|
92
|
-
printDiffOutput(result, projectRoot);
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
printSummaryOutput(result, projectRoot);
|
|
96
|
-
}
|
|
93
|
+
outputHandler.outputMutation(previewInput, format);
|
|
97
94
|
}
|
|
98
95
|
else {
|
|
99
|
-
outputHandler.outputError(result.
|
|
96
|
+
outputHandler.outputError(result.errors?.join(', ') ?? '執行失敗', format, 'change-signature');
|
|
100
97
|
process.exitCode = 1;
|
|
101
98
|
}
|
|
102
99
|
}
|
|
103
100
|
catch (error) {
|
|
104
101
|
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
105
|
-
outputHandler.outputError(errorMsg, format);
|
|
102
|
+
outputHandler.outputError(errorMsg, format, 'change-signature');
|
|
106
103
|
process.exitCode = 1;
|
|
107
104
|
}
|
|
108
105
|
}
|
|
@@ -214,77 +211,4 @@ function parseAddParameter(param) {
|
|
|
214
211
|
callSiteValue: defaultValue
|
|
215
212
|
};
|
|
216
213
|
}
|
|
217
|
-
/**
|
|
218
|
-
* 格式化簽名為 JSON
|
|
219
|
-
*/
|
|
220
|
-
function formatSignatureForJson(signature) {
|
|
221
|
-
return {
|
|
222
|
-
name: signature.name,
|
|
223
|
-
parameters: signature.parameters.map((p) => ({
|
|
224
|
-
name: p.name,
|
|
225
|
-
type: p.type,
|
|
226
|
-
optional: p.optional,
|
|
227
|
-
defaultValue: p.defaultValue
|
|
228
|
-
})),
|
|
229
|
-
returnType: signature.returnType,
|
|
230
|
-
isMethod: signature.isMethod,
|
|
231
|
-
className: signature.className,
|
|
232
|
-
modifiers: signature.modifiers
|
|
233
|
-
};
|
|
234
|
-
}
|
|
235
|
-
/**
|
|
236
|
-
* 印出 diff 輸出
|
|
237
|
-
*/
|
|
238
|
-
function printDiffOutput(result, projectRoot) {
|
|
239
|
-
console.log('\n📝 定義變更:');
|
|
240
|
-
console.log(`--- ${path.relative(projectRoot, result.definitionUpdate.filePath)}`);
|
|
241
|
-
console.log(`+++ ${path.relative(projectRoot, result.definitionUpdate.filePath)}`);
|
|
242
|
-
console.log(`- ${result.definitionUpdate.originalCode}`);
|
|
243
|
-
console.log(`+ ${result.definitionUpdate.newCode}`);
|
|
244
|
-
if (result.callSiteUpdates.length > 0) {
|
|
245
|
-
console.log('\n📞 呼叫點變更:');
|
|
246
|
-
for (const update of result.callSiteUpdates) {
|
|
247
|
-
console.log(`\n--- ${path.relative(projectRoot, update.filePath)}:${update.location.range.start.line}`);
|
|
248
|
-
console.log(`- ${update.originalCode.trim()}`);
|
|
249
|
-
console.log(`+ ${update.newCode.trim()}`);
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
console.log('\n' + (result.executed ? '✅ 變更已執行' : '🔍 預覽模式(使用 --dry-run)'));
|
|
253
|
-
console.log(`📊 統計: ${result.stats.callSitesUpdated} 個呼叫點, ${result.stats.filesAffected} 個檔案`);
|
|
254
|
-
}
|
|
255
|
-
/**
|
|
256
|
-
* 印出摘要輸出
|
|
257
|
-
*/
|
|
258
|
-
function printSummaryOutput(result, projectRoot) {
|
|
259
|
-
console.log('\n✅ 簽名修改成功!');
|
|
260
|
-
console.log(`📝 原始: ${formatSignatureString(result.originalSignature)}`);
|
|
261
|
-
console.log(`📝 新的: ${formatSignatureString(result.newSignature)}`);
|
|
262
|
-
console.log(`📊 更新了 ${result.stats.callSitesUpdated} 個呼叫點,影響 ${result.stats.filesAffected} 個檔案`);
|
|
263
|
-
if (!result.executed) {
|
|
264
|
-
console.log('\n🔍 預覽模式 - 執行時移除 --dry-run');
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
/**
|
|
268
|
-
* 格式化簽名字串
|
|
269
|
-
*/
|
|
270
|
-
function formatSignatureString(signature) {
|
|
271
|
-
const params = signature.parameters.map((p) => {
|
|
272
|
-
let str = p.name;
|
|
273
|
-
if (p.optional && !p.defaultValue) {
|
|
274
|
-
str += '?';
|
|
275
|
-
}
|
|
276
|
-
if (p.type) {
|
|
277
|
-
str += `: ${p.type}`;
|
|
278
|
-
}
|
|
279
|
-
if (p.defaultValue) {
|
|
280
|
-
str += ` = ${p.defaultValue}`;
|
|
281
|
-
}
|
|
282
|
-
return str;
|
|
283
|
-
}).join(', ');
|
|
284
|
-
let result = `${signature.name}(${params})`;
|
|
285
|
-
if (signature.returnType) {
|
|
286
|
-
result += `: ${signature.returnType}`;
|
|
287
|
-
}
|
|
288
|
-
return result;
|
|
289
|
-
}
|
|
290
214
|
//# sourceMappingURL=change-signature.command.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change-signature.command.js","sourceRoot":"","sources":["../../../../src/interfaces/cli/commands/change-signature.command.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,
|
|
1
|
+
{"version":3,"file":"change-signature.command.js","sourceRoot":"","sources":["../../../../src/interfaces/cli/commands/change-signature.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import { IndexEngine, createIndexConfig, CLI_INDEX_DEFAULTS } from '../../../core/shared/indexing/index.js';
|
|
6
6
|
import { createDeadCodeDetector, createDeadCodeRemover } from '../../../core/deadcode/index.js';
|
|
7
7
|
import { ParserRegistry } from '../../../infrastructure/parser/registry.js';
|
|
8
|
-
import {
|
|
8
|
+
import { ChangeApplicator, convertChangesetToPreviewInput } from '../../../infrastructure/changeset/index.js';
|
|
9
9
|
import { createUnifiedOutputHandler, parseOutputFormat, OutputFormat } from '../../cli/unified-output-handler.js';
|
|
10
10
|
/**
|
|
11
11
|
* 設定 deadcode 命令
|
|
@@ -50,8 +50,9 @@ async function handleDeadCodeCommand(options, context) {
|
|
|
50
50
|
process.exitCode = 1;
|
|
51
51
|
throw new Error('不支援的輸出格式');
|
|
52
52
|
}
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
const isJsonFormat = format === OutputFormat.Json;
|
|
54
|
+
if (!isJsonFormat) {
|
|
55
|
+
console.log(' 檢測並準備刪除 Dead Code...');
|
|
55
56
|
}
|
|
56
57
|
const projectPath = options.path || process.cwd();
|
|
57
58
|
// 檢查路徑是否存在
|
|
@@ -68,7 +69,7 @@ async function handleDeadCodeCommand(options, context) {
|
|
|
68
69
|
try {
|
|
69
70
|
// 索引專案
|
|
70
71
|
await indexEngine.indexProject(projectPath);
|
|
71
|
-
// 1.
|
|
72
|
+
// 1. 執行 dead code 檢測
|
|
72
73
|
const detectionResult = await runDeadCodeDetection(options, context, indexEngine, parserRegistry);
|
|
73
74
|
if (!detectionResult.success) {
|
|
74
75
|
outputHandler.outputError(`檢測失敗: ${detectionResult.error}`, format);
|
|
@@ -76,8 +77,8 @@ async function handleDeadCodeCommand(options, context) {
|
|
|
76
77
|
return;
|
|
77
78
|
}
|
|
78
79
|
if (detectionResult.items.length === 0) {
|
|
79
|
-
if (
|
|
80
|
-
console.log('
|
|
80
|
+
if (!isJsonFormat) {
|
|
81
|
+
console.log(' 沒有檢測到 dead code');
|
|
81
82
|
}
|
|
82
83
|
else {
|
|
83
84
|
console.log(JSON.stringify({ success: true, message: '沒有檢測到 dead code', removals: [] }));
|
|
@@ -86,7 +87,6 @@ async function handleDeadCodeCommand(options, context) {
|
|
|
86
87
|
}
|
|
87
88
|
// 2. 建立 DeadCodeRemover
|
|
88
89
|
// 區分 --exclude 參數中的檔案模式和符號名稱
|
|
89
|
-
// 包含 /、*、? 或以 . 開頭的視為檔案模式,其餘為符號名稱
|
|
90
90
|
const excludePatterns = options.exclude || [];
|
|
91
91
|
const excludeFiles = excludePatterns.filter(p => p.includes('/') || p.includes('*') || p.includes('?') || p.startsWith('.'));
|
|
92
92
|
const excludeSymbols = excludePatterns.filter(p => !p.includes('/') && !p.includes('*') && !p.includes('?') && !p.startsWith('.'));
|
|
@@ -95,19 +95,20 @@ async function handleDeadCodeCommand(options, context) {
|
|
|
95
95
|
excludeSymbols,
|
|
96
96
|
cleanupImports: true
|
|
97
97
|
});
|
|
98
|
-
// 3.
|
|
99
|
-
const
|
|
100
|
-
if (!
|
|
101
|
-
outputHandler.outputError(
|
|
98
|
+
// 3. 使用新的 Changeset 流程
|
|
99
|
+
const changeset = await remover.generateChangeset(detectionResult.items);
|
|
100
|
+
if (!changeset.success) {
|
|
101
|
+
outputHandler.outputError(changeset.errors?.join(', ') ?? '生成變更失敗', format, 'deadcode');
|
|
102
102
|
process.exitCode = 1;
|
|
103
103
|
return;
|
|
104
104
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
105
|
+
// 無變更時的處理
|
|
106
|
+
if (changeset.textChanges.length === 0) {
|
|
107
|
+
if (!isJsonFormat) {
|
|
108
|
+
console.log(' 符合條件的 dead code 已被過濾(排除規則)');
|
|
109
|
+
if (changeset.warnings && changeset.warnings.length > 0) {
|
|
110
|
+
console.log('\n 警告:');
|
|
111
|
+
for (const warning of changeset.warnings) {
|
|
111
112
|
console.log(` ${warning}`);
|
|
112
113
|
}
|
|
113
114
|
}
|
|
@@ -116,45 +117,49 @@ async function handleDeadCodeCommand(options, context) {
|
|
|
116
117
|
console.log(JSON.stringify({
|
|
117
118
|
success: true,
|
|
118
119
|
message: '符合條件的 dead code 已被過濾',
|
|
119
|
-
warnings:
|
|
120
|
+
warnings: changeset.warnings,
|
|
120
121
|
removals: []
|
|
121
122
|
}));
|
|
122
123
|
}
|
|
123
124
|
return;
|
|
124
125
|
}
|
|
125
|
-
// 4.
|
|
126
|
-
const
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
originalContents.set(filePath, typeof content === 'string' ? content : content.toString('utf-8'));
|
|
130
|
-
}
|
|
131
|
-
// 5. 轉換為 PreviewInput
|
|
132
|
-
const previewInput = convertDeadCodeRemovalPreview(preview, originalContents);
|
|
133
|
-
// 6. 輸出或執行
|
|
134
|
-
const isDryRun = options.dryRun === true;
|
|
135
|
-
if (isDryRun) {
|
|
136
|
-
// Dry-run 模式:只輸出預覽
|
|
126
|
+
// 4. 轉換為 PreviewInput
|
|
127
|
+
const previewInput = await convertChangesetToPreviewInput(changeset, context.fileSystem);
|
|
128
|
+
// 5. Dry-run 模式只輸出預覽
|
|
129
|
+
if (options.dryRun) {
|
|
137
130
|
outputHandler.outputMutation(previewInput, format);
|
|
138
|
-
if (
|
|
139
|
-
console.log('\n
|
|
131
|
+
if (!isJsonFormat) {
|
|
132
|
+
console.log('\n 移除 --dry-run 實際執行刪除');
|
|
140
133
|
}
|
|
134
|
+
return;
|
|
141
135
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
136
|
+
// 6. 應用變更(帶回滾)
|
|
137
|
+
if (!isJsonFormat) {
|
|
138
|
+
console.log(' 執行刪除...');
|
|
139
|
+
}
|
|
140
|
+
const applicator = new ChangeApplicator(context.fileSystem);
|
|
141
|
+
const result = await applicator.apply(changeset, {
|
|
142
|
+
atomic: true,
|
|
143
|
+
rollbackOnError: true
|
|
144
|
+
});
|
|
145
|
+
if (result.success) {
|
|
146
|
+
outputHandler.outputMutation(previewInput, format);
|
|
147
|
+
if (!isJsonFormat) {
|
|
148
|
+
const totalRemovals = changeset.textChanges
|
|
149
|
+
.flatMap(tc => tc.edits)
|
|
150
|
+
.filter(e => e.description?.startsWith('Remove ')).length;
|
|
151
|
+
const importsCleanedUp = changeset.textChanges
|
|
152
|
+
.flatMap(tc => tc.edits)
|
|
153
|
+
.filter(e => e.description?.includes('import')).length;
|
|
154
|
+
console.log(`\n 已刪除 ${totalRemovals} 個 dead code`);
|
|
155
|
+
if (importsCleanedUp > 0) {
|
|
156
|
+
console.log(` 並清理 ${importsCleanedUp} 個未使用的 import`);
|
|
152
157
|
}
|
|
153
158
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
outputHandler.outputError(result.errors?.join(', ') ?? '執行失敗', format, 'deadcode');
|
|
162
|
+
process.exitCode = 1;
|
|
158
163
|
}
|
|
159
164
|
}
|
|
160
165
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deadcode.command.js","sourceRoot":"","sources":["../../../../src/interfaces/cli/commands/deadcode.command.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpG,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EAEtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"deadcode.command.js","sourceRoot":"","sources":["../../../../src/interfaces/cli/commands/deadcode.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-references.command.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/cli/commands/find-references.command.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"find-references.command.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/cli/commands/find-references.command.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsBzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAQxE;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAS1F"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* 語義級引用搜尋,精確找出符號的定義和所有引用位置
|
|
4
4
|
*/
|
|
5
5
|
import { IndexEngine, createIndexConfig, CLI_INDEX_DEFAULTS } from '../../../core/shared/indexing/index.js';
|
|
6
|
-
import { createSymbolFinder, SymbolReferenceType } from '../../../core/shared/symbol-finder.js';
|
|
6
|
+
import { createSymbolFinder, SymbolReferenceType, symbolToKey, serializeSymbolKey } from '../../../core/shared/symbol-finder/index.js';
|
|
7
7
|
import { ParserRegistry } from '../../../infrastructure/parser/registry.js';
|
|
8
8
|
import { QueryCommand } from '../../../infrastructure/formatters/index.js';
|
|
9
9
|
import { createUnifiedOutputHandler, parseOutputFormat, OutputFormat } from '../../cli/unified-output-handler.js';
|
|
@@ -66,8 +66,23 @@ async function handleFindReferencesCommand(symbolName, options, context) {
|
|
|
66
66
|
// 建立 SymbolFinder 查找所有引用
|
|
67
67
|
const parserRegistry = ParserRegistry.getInstance();
|
|
68
68
|
const symbolFinder = createSymbolFinder(parserRegistry, context.fileSystem);
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
// 收集所有引用(包括所有同名符號的定義)
|
|
70
|
+
let refs = [];
|
|
71
|
+
if (symbolResults.length > 0) {
|
|
72
|
+
// 有找到定義:使用完整 Symbol 資訊查找引用
|
|
73
|
+
const symbols = symbolResults.map(r => r.symbol);
|
|
74
|
+
const refsMap = await symbolFinder.findReferencesMultiple(symbols, filePaths);
|
|
75
|
+
// 合併所有同名符號的引用
|
|
76
|
+
for (const symbol of symbols) {
|
|
77
|
+
const key = serializeSymbolKey(symbolToKey(symbol));
|
|
78
|
+
const symbolRefs = refsMap.get(key) ?? [];
|
|
79
|
+
refs.push(...symbolRefs);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
// 無定義:使用作用域感知查找(fallback)
|
|
84
|
+
refs = await symbolFinder.findScopedReferences(symbolName, filePaths);
|
|
85
|
+
}
|
|
71
86
|
// 轉換為輸出格式
|
|
72
87
|
const references = refs.map(ref => ({
|
|
73
88
|
file: ref.location.filePath,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-references.command.js","sourceRoot":"","sources":["../../../../src/interfaces/cli/commands/find-references.command.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpG,OAAO,
|
|
1
|
+
{"version":3,"file":"find-references.command.js","sourceRoot":"","sources":["../../../../src/interfaces/cli/commands/find-references.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"move-member.command.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/cli/commands/move-member.command.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"move-member.command.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/cli/commands/move-member.command.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAexE;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAiBtF"}
|