agent-ide 0.8.0 → 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.
Files changed (314) hide show
  1. package/dist/application/index.d.ts +1 -12
  2. package/dist/application/index.d.ts.map +1 -1
  3. package/dist/application/index.js +0 -16
  4. package/dist/application/index.js.map +1 -1
  5. package/dist/application/services/cache-coordinator.service.d.ts.map +1 -1
  6. package/dist/application/services/cache-coordinator.service.js.map +1 -1
  7. package/dist/application/services/module-coordinator.service.d.ts +3 -8
  8. package/dist/application/services/module-coordinator.service.d.ts.map +1 -1
  9. package/dist/application/services/module-coordinator.service.js +5 -139
  10. package/dist/application/services/module-coordinator.service.js.map +1 -1
  11. package/dist/application/types.d.ts +0 -63
  12. package/dist/application/types.d.ts.map +1 -1
  13. package/dist/application/types.js +1 -9
  14. package/dist/application/types.js.map +1 -1
  15. package/dist/core/call-hierarchy/call-hierarchy-analyzer.d.ts.map +1 -1
  16. package/dist/core/call-hierarchy/call-hierarchy-analyzer.js +3 -5
  17. package/dist/core/call-hierarchy/call-hierarchy-analyzer.js.map +1 -1
  18. package/dist/core/change-signature/change-signature-service.d.ts +9 -0
  19. package/dist/core/change-signature/change-signature-service.d.ts.map +1 -1
  20. package/dist/core/change-signature/change-signature-service.js +86 -4
  21. package/dist/core/change-signature/change-signature-service.js.map +1 -1
  22. package/dist/core/change-signature/signature-parser.d.ts +46 -4
  23. package/dist/core/change-signature/signature-parser.d.ts.map +1 -1
  24. package/dist/core/change-signature/signature-parser.js +180 -9
  25. package/dist/core/change-signature/signature-parser.js.map +1 -1
  26. package/dist/core/deadcode/dead-code-detector.d.ts +22 -1
  27. package/dist/core/deadcode/dead-code-detector.d.ts.map +1 -1
  28. package/dist/core/deadcode/dead-code-detector.js +134 -61
  29. package/dist/core/deadcode/dead-code-detector.js.map +1 -1
  30. package/dist/core/deadcode/dead-code-remover.d.ts +11 -93
  31. package/dist/core/deadcode/dead-code-remover.d.ts.map +1 -1
  32. package/dist/core/deadcode/dead-code-remover.js +71 -690
  33. package/dist/core/deadcode/dead-code-remover.js.map +1 -1
  34. package/dist/core/deadcode/file-operations.d.ts +85 -0
  35. package/dist/core/deadcode/file-operations.d.ts.map +1 -0
  36. package/dist/core/deadcode/file-operations.js +263 -0
  37. package/dist/core/deadcode/file-operations.js.map +1 -0
  38. package/dist/core/deadcode/import-cleaner.d.ts +63 -0
  39. package/dist/core/deadcode/import-cleaner.d.ts.map +1 -0
  40. package/dist/core/deadcode/import-cleaner.js +229 -0
  41. package/dist/core/deadcode/import-cleaner.js.map +1 -0
  42. package/dist/core/deadcode/import-parser.d.ts +79 -0
  43. package/dist/core/deadcode/import-parser.d.ts.map +1 -0
  44. package/dist/core/deadcode/import-parser.js +229 -0
  45. package/dist/core/deadcode/import-parser.js.map +1 -0
  46. package/dist/core/deadcode/range-expander.d.ts +38 -0
  47. package/dist/core/deadcode/range-expander.d.ts.map +1 -0
  48. package/dist/core/deadcode/range-expander.js +175 -0
  49. package/dist/core/deadcode/range-expander.js.map +1 -0
  50. package/dist/core/deadcode/types.d.ts +2 -0
  51. package/dist/core/deadcode/types.d.ts.map +1 -1
  52. package/dist/core/deadcode/types.js.map +1 -1
  53. package/dist/core/find-references/index.d.ts +2 -2
  54. package/dist/core/find-references/index.d.ts.map +1 -1
  55. package/dist/core/find-references/index.js +1 -1
  56. package/dist/core/find-references/index.js.map +1 -1
  57. package/dist/core/move/import-resolver.d.ts +5 -0
  58. package/dist/core/move/import-resolver.d.ts.map +1 -1
  59. package/dist/core/move/import-resolver.js +7 -0
  60. package/dist/core/move/import-resolver.js.map +1 -1
  61. package/dist/core/move/move-service.d.ts +39 -1
  62. package/dist/core/move/move-service.d.ts.map +1 -1
  63. package/dist/core/move/move-service.js +230 -63
  64. package/dist/core/move/move-service.js.map +1 -1
  65. package/dist/core/move/types.d.ts.map +1 -1
  66. package/dist/core/move-member/member-extractor.d.ts.map +1 -1
  67. package/dist/core/move-member/member-extractor.js +2 -2
  68. package/dist/core/move-member/member-extractor.js.map +1 -1
  69. package/dist/core/move-member/move-member-service.d.ts +6 -0
  70. package/dist/core/move-member/move-member-service.d.ts.map +1 -1
  71. package/dist/core/move-member/move-member-service.js +60 -3
  72. package/dist/core/move-member/move-member-service.js.map +1 -1
  73. package/dist/core/move-member/types.d.ts.map +1 -1
  74. package/dist/core/rename/reference-updater.d.ts +1 -35
  75. package/dist/core/rename/reference-updater.d.ts.map +1 -1
  76. package/dist/core/rename/reference-updater.js +4 -250
  77. package/dist/core/rename/reference-updater.js.map +1 -1
  78. package/dist/core/rename/rename-engine.d.ts +14 -22
  79. package/dist/core/rename/rename-engine.d.ts.map +1 -1
  80. package/dist/core/rename/rename-engine.js +37 -207
  81. package/dist/core/rename/rename-engine.js.map +1 -1
  82. package/dist/core/rename/scope-analyzer.d.ts.map +1 -1
  83. package/dist/core/shared/index.d.ts +1 -1
  84. package/dist/core/shared/index.d.ts.map +1 -1
  85. package/dist/core/shared/index.js +1 -1
  86. package/dist/core/shared/index.js.map +1 -1
  87. package/dist/core/shared/indexing/index-engine.d.ts +1 -1
  88. package/dist/core/shared/indexing/index-engine.d.ts.map +1 -1
  89. package/dist/core/shared/indexing/index-engine.js +1 -1
  90. package/dist/core/shared/indexing/index-engine.js.map +1 -1
  91. package/dist/core/shared/symbol-finder/call-site-parser.d.ts +71 -0
  92. package/dist/core/shared/symbol-finder/call-site-parser.d.ts.map +1 -0
  93. package/dist/core/shared/symbol-finder/call-site-parser.js +369 -0
  94. package/dist/core/shared/symbol-finder/call-site-parser.js.map +1 -0
  95. package/dist/core/shared/symbol-finder/index.d.ts +9 -0
  96. package/dist/core/shared/symbol-finder/index.d.ts.map +1 -0
  97. package/dist/core/shared/symbol-finder/index.js +12 -0
  98. package/dist/core/shared/symbol-finder/index.js.map +1 -0
  99. package/dist/core/shared/{symbol-finder.d.ts → symbol-finder/symbol-finder.d.ts} +27 -133
  100. package/dist/core/shared/symbol-finder/symbol-finder.d.ts.map +1 -0
  101. package/dist/core/shared/symbol-finder/symbol-finder.js +544 -0
  102. package/dist/core/shared/symbol-finder/symbol-finder.js.map +1 -0
  103. package/dist/core/shared/symbol-finder/text-matcher.d.ts +45 -0
  104. package/dist/core/shared/symbol-finder/text-matcher.d.ts.map +1 -0
  105. package/dist/core/shared/symbol-finder/text-matcher.js +195 -0
  106. package/dist/core/shared/symbol-finder/text-matcher.js.map +1 -0
  107. package/dist/core/shared/symbol-finder/types.d.ts +108 -0
  108. package/dist/core/shared/symbol-finder/types.d.ts.map +1 -0
  109. package/dist/core/shared/symbol-finder/types.js +71 -0
  110. package/dist/core/shared/symbol-finder/types.js.map +1 -0
  111. package/dist/core/snapshot/snapshot-generator.d.ts +16 -4
  112. package/dist/core/snapshot/snapshot-generator.d.ts.map +1 -1
  113. package/dist/core/snapshot/snapshot-generator.js +91 -18
  114. package/dist/core/snapshot/snapshot-generator.js.map +1 -1
  115. package/dist/infrastructure/cache/cache-manager.d.ts.map +1 -1
  116. package/dist/infrastructure/cache/cache-manager.js +4 -0
  117. package/dist/infrastructure/cache/cache-manager.js.map +1 -1
  118. package/dist/infrastructure/cache/index.d.ts +15 -9
  119. package/dist/infrastructure/cache/index.d.ts.map +1 -1
  120. package/dist/infrastructure/cache/index.js +5 -5
  121. package/dist/infrastructure/cache/index.js.map +1 -1
  122. package/dist/infrastructure/cache/memory-cache.d.ts.map +1 -1
  123. package/dist/infrastructure/cache/memory-cache.js.map +1 -1
  124. package/dist/infrastructure/cache/strategies.d.ts.map +1 -1
  125. package/dist/infrastructure/cache/strategies.js +2 -1
  126. package/dist/infrastructure/cache/strategies.js.map +1 -1
  127. package/dist/infrastructure/cache/types.d.ts +4 -4
  128. package/dist/infrastructure/cache/types.d.ts.map +1 -1
  129. package/dist/infrastructure/changeset/change-applicator.d.ts +95 -0
  130. package/dist/infrastructure/changeset/change-applicator.d.ts.map +1 -0
  131. package/dist/infrastructure/changeset/change-applicator.js +466 -0
  132. package/dist/infrastructure/changeset/change-applicator.js.map +1 -0
  133. package/dist/infrastructure/changeset/changeset-builder.d.ts +107 -0
  134. package/dist/infrastructure/changeset/changeset-builder.d.ts.map +1 -0
  135. package/dist/infrastructure/changeset/changeset-builder.js +183 -0
  136. package/dist/infrastructure/changeset/changeset-builder.js.map +1 -0
  137. package/dist/infrastructure/changeset/changeset-converter.d.ts +15 -0
  138. package/dist/infrastructure/changeset/changeset-converter.d.ts.map +1 -0
  139. package/dist/infrastructure/changeset/changeset-converter.js +369 -0
  140. package/dist/infrastructure/changeset/changeset-converter.js.map +1 -0
  141. package/dist/infrastructure/changeset/index.d.ts +9 -0
  142. package/dist/infrastructure/changeset/index.d.ts.map +1 -0
  143. package/dist/infrastructure/changeset/index.js +11 -0
  144. package/dist/infrastructure/changeset/index.js.map +1 -0
  145. package/dist/infrastructure/changeset/types.d.ts +110 -0
  146. package/dist/infrastructure/changeset/types.d.ts.map +1 -0
  147. package/dist/infrastructure/changeset/types.js +6 -0
  148. package/dist/infrastructure/changeset/types.js.map +1 -0
  149. package/dist/infrastructure/parser/base.d.ts.map +1 -1
  150. package/dist/infrastructure/parser/base.js +4 -3
  151. package/dist/infrastructure/parser/base.js.map +1 -1
  152. package/dist/infrastructure/parser/interface.d.ts +4 -2
  153. package/dist/infrastructure/parser/interface.d.ts.map +1 -1
  154. package/dist/infrastructure/parser/interface.js.map +1 -1
  155. package/dist/infrastructure/storage/file-system.d.ts.map +1 -1
  156. package/dist/infrastructure/storage/file-system.js +61 -54
  157. package/dist/infrastructure/storage/file-system.js.map +1 -1
  158. package/dist/interfaces/cli/commands/change-signature.command.d.ts.map +1 -1
  159. package/dist/interfaces/cli/commands/change-signature.command.js +31 -107
  160. package/dist/interfaces/cli/commands/change-signature.command.js.map +1 -1
  161. package/dist/interfaces/cli/commands/deadcode.command.js +51 -46
  162. package/dist/interfaces/cli/commands/deadcode.command.js.map +1 -1
  163. package/dist/interfaces/cli/commands/find-references.command.d.ts.map +1 -1
  164. package/dist/interfaces/cli/commands/find-references.command.js +18 -3
  165. package/dist/interfaces/cli/commands/find-references.command.js.map +1 -1
  166. package/dist/interfaces/cli/commands/move-member.command.d.ts.map +1 -1
  167. package/dist/interfaces/cli/commands/move-member.command.js +32 -103
  168. package/dist/interfaces/cli/commands/move-member.command.js.map +1 -1
  169. package/dist/interfaces/cli/commands/move.command.js +43 -54
  170. package/dist/interfaces/cli/commands/move.command.js.map +1 -1
  171. package/dist/interfaces/cli/commands/rename.command.js +27 -61
  172. package/dist/interfaces/cli/commands/rename.command.js.map +1 -1
  173. package/dist/interfaces/cli/output-formatter.d.ts +2 -2
  174. package/dist/interfaces/cli/output-formatter.d.ts.map +1 -1
  175. package/dist/interfaces/cli/output-formatter.js.map +1 -1
  176. package/dist/plugins/javascript/declaration-analyzer.d.ts.map +1 -1
  177. package/dist/plugins/javascript/declaration-analyzer.js +7 -0
  178. package/dist/plugins/javascript/declaration-analyzer.js.map +1 -1
  179. package/dist/plugins/javascript/parser.d.ts +11 -10
  180. package/dist/plugins/javascript/parser.d.ts.map +1 -1
  181. package/dist/plugins/javascript/parser.js +57 -53
  182. package/dist/plugins/javascript/parser.js.map +1 -1
  183. package/dist/plugins/javascript/pattern-analyzer.d.ts.map +1 -1
  184. package/dist/plugins/javascript/pattern-analyzer.js +4 -3
  185. package/dist/plugins/javascript/pattern-analyzer.js.map +1 -1
  186. package/dist/plugins/javascript/reference-finder.d.ts +21 -0
  187. package/dist/plugins/javascript/reference-finder.d.ts.map +1 -1
  188. package/dist/plugins/javascript/reference-finder.js +119 -76
  189. package/dist/plugins/javascript/reference-finder.js.map +1 -1
  190. package/dist/plugins/javascript/types.d.ts +4 -7
  191. package/dist/plugins/javascript/types.d.ts.map +1 -1
  192. package/dist/plugins/javascript/types.js +9 -9
  193. package/dist/plugins/javascript/types.js.map +1 -1
  194. package/dist/plugins/shared/parser-helpers.js.map +1 -1
  195. package/dist/{shared → plugins/shared}/utils/array.d.ts +6 -1
  196. package/dist/plugins/shared/utils/array.d.ts.map +1 -0
  197. package/dist/plugins/shared/utils/array.js.map +1 -0
  198. package/dist/{shared → plugins/shared}/utils/async.d.ts +1 -1
  199. package/dist/plugins/shared/utils/async.d.ts.map +1 -0
  200. package/dist/{shared → plugins/shared}/utils/async.js +2 -0
  201. package/dist/plugins/shared/utils/async.js.map +1 -0
  202. package/dist/{shared → plugins/shared}/utils/index.d.ts +0 -20
  203. package/dist/plugins/shared/utils/index.d.ts.map +1 -0
  204. package/dist/{shared → plugins/shared}/utils/index.js +0 -20
  205. package/dist/plugins/shared/utils/index.js.map +1 -0
  206. package/dist/plugins/shared/utils/memory-monitor.d.ts.map +1 -0
  207. package/dist/plugins/shared/utils/memory-monitor.js.map +1 -0
  208. package/dist/{shared → plugins/shared}/utils/object.d.ts +6 -6
  209. package/dist/plugins/shared/utils/object.d.ts.map +1 -0
  210. package/dist/{shared → plugins/shared}/utils/object.js +21 -3
  211. package/dist/plugins/shared/utils/object.js.map +1 -0
  212. package/dist/plugins/shared/utils/path.d.ts.map +1 -0
  213. package/dist/plugins/shared/utils/path.js.map +1 -0
  214. package/dist/{shared → plugins/shared}/utils/string.d.ts +1 -1
  215. package/dist/plugins/shared/utils/string.d.ts.map +1 -0
  216. package/dist/{shared → plugins/shared}/utils/string.js +7 -4
  217. package/dist/plugins/shared/utils/string.js.map +1 -0
  218. package/dist/plugins/typescript/declaration-analyzer.d.ts +4 -4
  219. package/dist/plugins/typescript/declaration-analyzer.d.ts.map +1 -1
  220. package/dist/plugins/typescript/declaration-analyzer.js +21 -8
  221. package/dist/plugins/typescript/declaration-analyzer.js.map +1 -1
  222. package/dist/plugins/typescript/language-service.d.ts +1 -1
  223. package/dist/plugins/typescript/language-service.d.ts.map +1 -1
  224. package/dist/plugins/typescript/parser.d.ts +3 -2
  225. package/dist/plugins/typescript/parser.d.ts.map +1 -1
  226. package/dist/plugins/typescript/parser.js +18 -13
  227. package/dist/plugins/typescript/parser.js.map +1 -1
  228. package/dist/plugins/typescript/reference-finder.d.ts +3 -0
  229. package/dist/plugins/typescript/reference-finder.d.ts.map +1 -1
  230. package/dist/plugins/typescript/reference-finder.js +5 -2
  231. package/dist/plugins/typescript/reference-finder.js.map +1 -1
  232. package/dist/plugins/typescript/symbol-extractor.d.ts +4 -0
  233. package/dist/plugins/typescript/symbol-extractor.d.ts.map +1 -1
  234. package/dist/plugins/typescript/symbol-extractor.js +18 -4
  235. package/dist/plugins/typescript/symbol-extractor.js.map +1 -1
  236. package/dist/plugins/typescript/types.d.ts +0 -3
  237. package/dist/plugins/typescript/types.d.ts.map +1 -1
  238. package/dist/plugins/typescript/types.js +6 -9
  239. package/dist/plugins/typescript/types.js.map +1 -1
  240. package/dist/shared/errors/index.d.ts +1 -1
  241. package/dist/shared/errors/index.d.ts.map +1 -1
  242. package/dist/shared/errors/parser-error.js +5 -5
  243. package/dist/shared/errors/parser-error.js.map +1 -1
  244. package/dist/shared/errors/validation-error.d.ts +2 -2
  245. package/dist/shared/errors/validation-error.d.ts.map +1 -1
  246. package/dist/shared/errors/validation-error.js.map +1 -1
  247. package/dist/shared/types/ast.d.ts +4 -4
  248. package/dist/shared/types/ast.d.ts.map +1 -1
  249. package/dist/shared/types/ast.js.map +1 -1
  250. package/dist/shared/types/core.d.ts +1 -1
  251. package/dist/shared/types/core.d.ts.map +1 -1
  252. package/dist/shared/types/index.d.ts +1 -0
  253. package/dist/shared/types/index.d.ts.map +1 -1
  254. package/dist/shared/types/index.js +2 -0
  255. package/dist/shared/types/index.js.map +1 -1
  256. package/dist/shared/types/line-number.d.ts +22 -0
  257. package/dist/shared/types/line-number.d.ts.map +1 -0
  258. package/dist/shared/types/line-number.js +28 -0
  259. package/dist/shared/types/line-number.js.map +1 -0
  260. package/package.json +2 -2
  261. package/dist/application/services/workflow-engine.service.d.ts +0 -76
  262. package/dist/application/services/workflow-engine.service.d.ts.map +0 -1
  263. package/dist/application/services/workflow-engine.service.js +0 -405
  264. package/dist/application/services/workflow-engine.service.js.map +0 -1
  265. package/dist/application/workflows/analysis-workflow.d.ts +0 -239
  266. package/dist/application/workflows/analysis-workflow.d.ts.map +0 -1
  267. package/dist/application/workflows/analysis-workflow.js +0 -395
  268. package/dist/application/workflows/analysis-workflow.js.map +0 -1
  269. package/dist/application/workflows/base-workflow.d.ts +0 -108
  270. package/dist/application/workflows/base-workflow.d.ts.map +0 -1
  271. package/dist/application/workflows/base-workflow.js +0 -236
  272. package/dist/application/workflows/base-workflow.js.map +0 -1
  273. package/dist/application/workflows/index.d.ts +0 -115
  274. package/dist/application/workflows/index.d.ts.map +0 -1
  275. package/dist/application/workflows/index.js +0 -218
  276. package/dist/application/workflows/index.js.map +0 -1
  277. package/dist/application/workflows/refactor-workflow.d.ts +0 -107
  278. package/dist/application/workflows/refactor-workflow.d.ts.map +0 -1
  279. package/dist/application/workflows/refactor-workflow.js +0 -310
  280. package/dist/application/workflows/refactor-workflow.js.map +0 -1
  281. package/dist/core/shared/symbol-finder.d.ts.map +0 -1
  282. package/dist/core/shared/symbol-finder.js +0 -882
  283. package/dist/core/shared/symbol-finder.js.map +0 -1
  284. package/dist/plugins/javascript/code-analyzer.d.ts +0 -68
  285. package/dist/plugins/javascript/code-analyzer.d.ts.map +0 -1
  286. package/dist/plugins/javascript/code-analyzer.js +0 -302
  287. package/dist/plugins/javascript/code-analyzer.js.map +0 -1
  288. package/dist/plugins/javascript/index.d.ts +0 -12
  289. package/dist/plugins/javascript/index.d.ts.map +0 -1
  290. package/dist/plugins/javascript/index.js +0 -16
  291. package/dist/plugins/javascript/index.js.map +0 -1
  292. package/dist/plugins/typescript/index.d.ts +0 -14
  293. package/dist/plugins/typescript/index.d.ts.map +0 -1
  294. package/dist/plugins/typescript/index.js +0 -13
  295. package/dist/plugins/typescript/index.js.map +0 -1
  296. package/dist/shared/utils/array.d.ts.map +0 -1
  297. package/dist/shared/utils/array.js.map +0 -1
  298. package/dist/shared/utils/async.d.ts.map +0 -1
  299. package/dist/shared/utils/async.js.map +0 -1
  300. package/dist/shared/utils/index.d.ts.map +0 -1
  301. package/dist/shared/utils/index.js.map +0 -1
  302. package/dist/shared/utils/memory-monitor.d.ts.map +0 -1
  303. package/dist/shared/utils/memory-monitor.js.map +0 -1
  304. package/dist/shared/utils/object.d.ts.map +0 -1
  305. package/dist/shared/utils/object.js.map +0 -1
  306. package/dist/shared/utils/path.d.ts.map +0 -1
  307. package/dist/shared/utils/path.js.map +0 -1
  308. package/dist/shared/utils/string.d.ts.map +0 -1
  309. package/dist/shared/utils/string.js.map +0 -1
  310. /package/dist/{shared → plugins/shared}/utils/array.js +0 -0
  311. /package/dist/{shared → plugins/shared}/utils/memory-monitor.d.ts +0 -0
  312. /package/dist/{shared → plugins/shared}/utils/memory-monitor.js +0 -0
  313. /package/dist/{shared → plugins/shared}/utils/path.d.ts +0 -0
  314. /package/dist/{shared → plugins/shared}/utils/path.js +0 -0
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Changeset 建構器
3
+ * 提供流式 API 建構變更集
4
+ */
5
+ /**
6
+ * Changeset 建構器 - 流式 API
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * const changeset = createChangesetBuilder()
11
+ * .forCommand('rename')
12
+ * .withDescription('Rename foo to bar')
13
+ * .addTextChange('/path/to/file.ts', [
14
+ * { range: { start: { line: 1, column: 1 }, end: { line: 1, column: 4 } }, newText: 'bar' }
15
+ * ])
16
+ * .build();
17
+ * ```
18
+ */
19
+ export class ChangesetBuilder {
20
+ /** 文字變更列表 */
21
+ textChanges = [];
22
+ /** 檔案操作列表 */
23
+ fileOperations = [];
24
+ /** 變更描述 */
25
+ description = '';
26
+ /** 命令類型 */
27
+ command = 'rename';
28
+ /** 錯誤訊息列表 */
29
+ errors = [];
30
+ /** 警告訊息列表 */
31
+ warnings = [];
32
+ /**
33
+ * 設定命令類型
34
+ * @param command - 命令類型
35
+ * @returns this - 支援鏈式調用
36
+ */
37
+ forCommand(command) {
38
+ this.command = command;
39
+ return this;
40
+ }
41
+ /**
42
+ * 設定變更描述
43
+ * @param description - 變更描述
44
+ * @returns this - 支援鏈式調用
45
+ */
46
+ withDescription(description) {
47
+ this.description = description;
48
+ return this;
49
+ }
50
+ /**
51
+ * 新增檔案文字變更
52
+ * 如果同檔案已存在變更,自動合併 edits
53
+ *
54
+ * @param filePath - 檔案路徑
55
+ * @param edits - 文字編輯列表
56
+ * @param operationType - 操作類型(可選)
57
+ * @returns this - 支援鏈式調用
58
+ */
59
+ addTextChange(filePath, edits, operationType) {
60
+ const existing = this.textChanges.find(tc => tc.filePath === filePath);
61
+ if (existing) {
62
+ // 合併到現有的變更
63
+ const existingIndex = this.textChanges.indexOf(existing);
64
+ this.textChanges[existingIndex] = {
65
+ ...existing,
66
+ edits: [...existing.edits, ...edits],
67
+ operationType: operationType ?? existing.operationType
68
+ };
69
+ }
70
+ else {
71
+ // 新增變更
72
+ this.textChanges.push({
73
+ filePath,
74
+ edits,
75
+ operationType
76
+ });
77
+ }
78
+ return this;
79
+ }
80
+ /**
81
+ * 新增檔案建立操作
82
+ * @param filePath - 檔案路徑
83
+ * @param content - 檔案內容
84
+ * @returns this - 支援鏈式調用
85
+ */
86
+ addFileCreate(filePath, content) {
87
+ const existing = this.fileOperations.find(op => op.sourcePath === filePath);
88
+ if (existing) {
89
+ this.warnings.push(`重複的檔案操作: 已存在對 ${filePath} 的 ${existing.type} 操作`);
90
+ }
91
+ this.fileOperations.push({
92
+ type: 'create',
93
+ sourcePath: filePath,
94
+ targetPath: filePath,
95
+ content
96
+ });
97
+ return this;
98
+ }
99
+ /**
100
+ * 新增檔案刪除操作
101
+ * @param filePath - 檔案路徑
102
+ * @returns this - 支援鏈式調用
103
+ */
104
+ addFileDelete(filePath) {
105
+ const existing = this.fileOperations.find(op => op.sourcePath === filePath);
106
+ if (existing) {
107
+ this.warnings.push(`重複的檔案操作: 已存在對 ${filePath} 的 ${existing.type} 操作`);
108
+ }
109
+ this.fileOperations.push({
110
+ type: 'delete',
111
+ sourcePath: filePath
112
+ });
113
+ return this;
114
+ }
115
+ /**
116
+ * 新增檔案移動操作
117
+ * @param sourcePath - 來源路徑
118
+ * @param targetPath - 目標路徑
119
+ * @returns this - 支援鏈式調用
120
+ */
121
+ addFileMove(sourcePath, targetPath) {
122
+ const existing = this.fileOperations.find(op => op.sourcePath === sourcePath);
123
+ if (existing) {
124
+ this.warnings.push(`重複的檔案操作: 已存在對 ${sourcePath} 的 ${existing.type} 操作`);
125
+ }
126
+ this.fileOperations.push({
127
+ type: 'move',
128
+ sourcePath,
129
+ targetPath
130
+ });
131
+ return this;
132
+ }
133
+ /**
134
+ * 新增錯誤訊息
135
+ * @param error - 錯誤訊息
136
+ * @returns this - 支援鏈式調用
137
+ */
138
+ addError(error) {
139
+ this.errors.push(error);
140
+ return this;
141
+ }
142
+ /**
143
+ * 新增警告訊息
144
+ * @param warning - 警告訊息
145
+ * @returns this - 支援鏈式調用
146
+ */
147
+ addWarning(warning) {
148
+ this.warnings.push(warning);
149
+ return this;
150
+ }
151
+ /**
152
+ * 建構 Changeset
153
+ * @returns 完整的 Changeset 物件
154
+ */
155
+ build() {
156
+ return {
157
+ textChanges: this.textChanges,
158
+ fileOperations: this.fileOperations,
159
+ description: this.description,
160
+ command: this.command,
161
+ success: this.errors.length === 0,
162
+ errors: this.errors.length > 0 ? this.errors : undefined,
163
+ warnings: this.warnings.length > 0 ? this.warnings : undefined
164
+ };
165
+ }
166
+ }
167
+ /**
168
+ * 建立 ChangesetBuilder 實例
169
+ * @returns 新的 ChangesetBuilder 實例
170
+ *
171
+ * @example
172
+ * ```typescript
173
+ * const changeset = createChangesetBuilder()
174
+ * .forCommand('move')
175
+ * .withDescription('Move file to new location')
176
+ * .addFileMove('/old/path.ts', '/new/path.ts')
177
+ * .build();
178
+ * ```
179
+ */
180
+ export function createChangesetBuilder() {
181
+ return new ChangesetBuilder();
182
+ }
183
+ //# sourceMappingURL=changeset-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changeset-builder.js","sourceRoot":"","sources":["../../../src/infrastructure/changeset/changeset-builder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,gBAAgB;IAC3B,aAAa;IACL,WAAW,GAAqB,EAAE,CAAC;IAE3C,aAAa;IACL,cAAc,GAAoB,EAAE,CAAC;IAE7C,WAAW;IACH,WAAW,GAAG,EAAE,CAAC;IAEzB,WAAW;IACH,OAAO,GAAyB,QAAQ,CAAC;IAEjD,aAAa;IACL,MAAM,GAAa,EAAE,CAAC;IAE9B,aAAa;IACL,QAAQ,GAAa,EAAE,CAAC;IAEhC;;;;OAIG;IACH,UAAU,CAAC,OAA6B;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,eAAe,CAAC,WAAmB;QACjC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;OAQG;IACH,aAAa,CACX,QAAgB,EAChB,KAAiB,EACjB,aAA+C;QAE/C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;QAEvE,IAAI,QAAQ,EAAE,CAAC;YACb,WAAW;YACX,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACzD,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG;gBAChC,GAAG,QAAQ;gBACX,KAAK,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC;gBACpC,aAAa,EAAE,aAAa,IAAI,QAAQ,CAAC,aAAa;aACvD,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO;YACP,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACpB,QAAQ;gBACR,KAAK;gBACL,aAAa;aACd,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,QAAgB,EAAE,OAAe;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CACvC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,KAAK,QAAQ,CACjC,CAAC;QAEF,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,iBAAiB,QAAQ,MAAM,QAAQ,CAAC,IAAI,KAAK,CAClD,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YACvB,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,QAAQ;YACpB,UAAU,EAAE,QAAQ;YACpB,OAAO;SACR,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,QAAgB;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CACvC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,KAAK,QAAQ,CACjC,CAAC;QAEF,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,iBAAiB,QAAQ,MAAM,QAAQ,CAAC,IAAI,KAAK,CAClD,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YACvB,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,QAAQ;SACrB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,UAAkB,EAAE,UAAkB;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CACvC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,KAAK,UAAU,CACnC,CAAC;QAEF,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,iBAAiB,UAAU,MAAM,QAAQ,CAAC,IAAI,KAAK,CACpD,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YACvB,IAAI,EAAE,MAAM;YACZ,UAAU;YACV,UAAU;SACX,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAC,KAAa;QACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,OAAe;QACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YACjC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YACxD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;SAC/D,CAAC;IACJ,CAAC;CACF;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,IAAI,gBAAgB,EAAE,CAAC;AAChC,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Changeset 轉換器
3
+ * 將 Changeset 轉換為 PreviewInput 格式,用於統一輸出
4
+ */
5
+ import type { Changeset } from './types.js';
6
+ import type { PreviewInput } from '../formatters/types.js';
7
+ import type { IFileSystem } from '../storage/file-system.interface.js';
8
+ /**
9
+ * 將 Changeset 轉換為 PreviewInput
10
+ * @param changeset - 變更集
11
+ * @param fileSystem - 檔案系統介面
12
+ * @returns PreviewInput 物件
13
+ */
14
+ export declare function convertChangesetToPreviewInput(changeset: Changeset, fileSystem: IFileSystem): Promise<PreviewInput>;
15
+ //# sourceMappingURL=changeset-converter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changeset-converter.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/changeset/changeset-converter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAA2C,MAAM,YAAY,CAAC;AACrF,OAAO,KAAK,EACV,YAAY,EAIb,MAAM,qCAAqC,CAAC;AAE7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kDAAkD,CAAC;AAkZpF;;;;;GAKG;AACH,wBAAsB,8BAA8B,CAClD,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,WAAW,GACtB,OAAO,CAAC,YAAY,CAAC,CA+BvB"}
@@ -0,0 +1,369 @@
1
+ /**
2
+ * Changeset 轉換器
3
+ * 將 Changeset 轉換為 PreviewInput 格式,用於統一輸出
4
+ */
5
+ import { PreviewCommand } from '../formatters/types.js';
6
+ /**
7
+ * 建立修改行的 LineChange
8
+ * @param line - 1-based 行號
9
+ * @param oldContent - 原始內容
10
+ * @param newContent - 新內容
11
+ */
12
+ function createModifyLineChange(line, oldContent, newContent) {
13
+ return { line, oldContent, newContent };
14
+ }
15
+ /**
16
+ * 建立新增行的 LineChange
17
+ * @param line - 1-based 行號
18
+ * @param newContent - 新內容
19
+ */
20
+ function createInsertLineChange(line, newContent) {
21
+ return { line, oldContent: null, newContent };
22
+ }
23
+ /**
24
+ * 建立刪除行的 LineChange
25
+ * @param line - 1-based 行號
26
+ * @param oldContent - 原始內容
27
+ */
28
+ function createDeleteLineChange(line, oldContent) {
29
+ return { line, oldContent, newContent: null };
30
+ }
31
+ /**
32
+ * 將 Changeset 命令類型映射到 PreviewCommand
33
+ */
34
+ function mapCommandType(command) {
35
+ switch (command) {
36
+ case 'rename':
37
+ return PreviewCommand.Rename;
38
+ case 'move':
39
+ case 'move-member':
40
+ return PreviewCommand.Move;
41
+ case 'deadcode':
42
+ return PreviewCommand.DeadCodeRemoval;
43
+ case 'change-signature':
44
+ return PreviewCommand.Refactor;
45
+ }
46
+ }
47
+ /**
48
+ * 讀取檔案原始內容
49
+ * @param filePath - 檔案路徑
50
+ * @param fileSystem - 檔案系統介面
51
+ * @returns 檔案內容,檔案不存在時回傳空字串
52
+ */
53
+ async function readOriginalContent(filePath, fileSystem) {
54
+ const exists = await fileSystem.exists(filePath);
55
+ if (!exists) {
56
+ return '';
57
+ }
58
+ const content = await fileSystem.readFile(filePath, 'utf-8');
59
+ return typeof content === 'string' ? content : content.toString('utf-8');
60
+ }
61
+ /**
62
+ * 應用單行的編輯操作,產生新內容
63
+ * @param originalLine - 原始行內容
64
+ * @param edits - 該行的編輯操作(已按列號排序)
65
+ * @returns 編輯後的行內容
66
+ */
67
+ function applyEditsToLine(originalLine, edits) {
68
+ // 按列號降序排序,從後往前應用避免偏移問題
69
+ const sortedEdits = [...edits].sort((a, b) => b.range.start.column - a.range.start.column);
70
+ let result = originalLine;
71
+ for (const edit of sortedEdits) {
72
+ const startCol = edit.range.start.column - 1; // 轉為 0-based
73
+ const endCol = edit.range.end.column - 1;
74
+ result = result.substring(0, startCol) + edit.newText + result.substring(endCol);
75
+ }
76
+ return result;
77
+ }
78
+ /**
79
+ * 處理單行編輯
80
+ * 將同一行的多個編輯操作合併後產生 LineChange
81
+ * @param lineNum - 1-based 行號
82
+ * @param lineEdits - 該行的編輯操作列表
83
+ * @param originalLines - 原始檔案各行
84
+ * @returns LineChange 或 null(內容未改變時)
85
+ */
86
+ function processSingleLineEdit(lineNum, lineEdits, originalLines) {
87
+ // 取得原始行內容(1-based 轉 0-based 索引)
88
+ const originalLine = originalLines[lineNum - 1] ?? '';
89
+ // 應用所有編輯產生新內容
90
+ const newLine = applyEditsToLine(originalLine, lineEdits);
91
+ // 內容未改變時不產生 change
92
+ if (originalLine === newLine) {
93
+ return null;
94
+ }
95
+ return createModifyLineChange(lineNum, originalLine, newLine);
96
+ }
97
+ /**
98
+ * 處理跨行編輯的起始行
99
+ * 保留 startCol 之前的部分,接上新內容
100
+ * @param lineNum - 1-based 行號
101
+ * @param lineContent - 原始行內容
102
+ * @param startCol - 1-based 起始列號
103
+ * @param newText - 要插入的新文字
104
+ * @returns 起始行的 LineChange 陣列(可能包含新增行)
105
+ */
106
+ function processMultiLineEditStart(lineNum, lineContent, startCol, newText) {
107
+ const changes = [];
108
+ // startCol 是 1-based,substring 是 0-based
109
+ // 範例:startCol=3 表示從第 3 列開始刪除,保留 0~2(即前 2 個字元)
110
+ const prefix = lineContent.substring(0, startCol - 1);
111
+ const newContent = prefix + newText;
112
+ // 起始行:原內容被替換為 prefix + newText 的第一行
113
+ const newLines = newContent.split('\n');
114
+ changes.push(createModifyLineChange(lineNum, lineContent, newLines[0] ?? ''));
115
+ // 若 newText 包含換行,後續行為新增行
116
+ for (let i = 1; i < newLines.length; i++) {
117
+ changes.push(createInsertLineChange(lineNum + i, newLines[i]));
118
+ }
119
+ return changes;
120
+ }
121
+ /**
122
+ * 處理跨行編輯的結束行
123
+ * 保留 endCol 之後的部分,附加到前一個 change
124
+ * @param lineNum - 1-based 行號
125
+ * @param lineContent - 原始行內容
126
+ * @param endCol - 1-based 結束列號(此列開始被刪除)
127
+ * @param changes - 累積的 changes 陣列(會原地修改)
128
+ */
129
+ function processMultiLineEditEnd(lineNum, lineContent, endCol, changes) {
130
+ // endCol 是 1-based,表示「從第 endCol 列開始被刪除」
131
+ // 範例:endCol=5 表示刪除第 5 列及之後,保留第 5 列之後的內容
132
+ // substring(endCol-1) = substring(4) 取得索引 4 開始的字元
133
+ // 但實際上 endCol 指向「被刪除範圍的結束位置」,該位置的字元應保留
134
+ // 因此 suffix = lineContent.substring(endCol - 1) 是正確的
135
+ const suffix = lineContent.substring(endCol - 1);
136
+ // 將 suffix 附加到最後一個有新內容的 change
137
+ if (suffix) {
138
+ const lastChange = changes[changes.length - 1];
139
+ if (lastChange && lastChange.newContent !== null) {
140
+ lastChange.newContent += suffix;
141
+ }
142
+ }
143
+ // 結束行本身被刪除(原內容消失)
144
+ changes.push(createDeleteLineChange(lineNum, lineContent));
145
+ }
146
+ /**
147
+ * 處理跨行編輯的中間行
148
+ * 完全刪除該行
149
+ * @param lineNum - 1-based 行號
150
+ * @param lineContent - 原始行內容
151
+ * @returns 刪除行的 LineChange
152
+ */
153
+ function processMultiLineEditMiddle(lineNum, lineContent) {
154
+ return createDeleteLineChange(lineNum, lineContent);
155
+ }
156
+ /**
157
+ * 處理跨行編輯
158
+ * 刪除多行並插入新內容
159
+ * @param edit - 跨行編輯操作
160
+ * @param originalLines - 原始檔案各行
161
+ * @param processedLines - 已處理的行號集合(會原地修改)
162
+ * @returns LineChange 陣列
163
+ */
164
+ function processMultiLineEdit(edit, originalLines, processedLines) {
165
+ const changes = [];
166
+ const { start, end } = edit.range;
167
+ // 跳過起始行已被單行編輯處理的情況
168
+ if (processedLines.has(start.line)) {
169
+ return [];
170
+ }
171
+ // 逐行處理:起始行 → 中間行 → 結束行
172
+ for (let lineNum = start.line; lineNum <= end.line && lineNum <= originalLines.length; lineNum++) {
173
+ const lineContent = originalLines[lineNum - 1] ?? '';
174
+ if (lineNum === start.line) {
175
+ // 起始行:保留 startCol 之前 + 新內容
176
+ const startChanges = processMultiLineEditStart(lineNum, lineContent, start.column, edit.newText);
177
+ changes.push(...startChanges);
178
+ }
179
+ else if (lineNum === end.line) {
180
+ // 結束行:保留 endCol 之後,附加到前一個 change
181
+ processMultiLineEditEnd(lineNum, lineContent, end.column, changes);
182
+ }
183
+ else {
184
+ // 中間行:完全刪除
185
+ changes.push(processMultiLineEditMiddle(lineNum, lineContent));
186
+ }
187
+ processedLines.add(lineNum);
188
+ }
189
+ return changes;
190
+ }
191
+ /**
192
+ * 將 TextEdit 列表轉換為 LineChange 列表
193
+ * @param originalContent - 原始檔案內容
194
+ * @param edits - 文字編輯操作列表
195
+ * @returns LineChange 陣列
196
+ */
197
+ function convertEditsToLineChanges(originalContent, edits) {
198
+ if (edits.length === 0) {
199
+ return [];
200
+ }
201
+ const originalLines = originalContent.split('\n');
202
+ const changes = [];
203
+ // 第一步:分類編輯 — 單行編輯按行號分組,跨行編輯獨立收集
204
+ const singleLineEditsByLine = new Map();
205
+ const multiLineEdits = [];
206
+ for (const edit of edits) {
207
+ const { line: startLine } = edit.range.start;
208
+ const { line: endLine } = edit.range.end;
209
+ if (startLine === endLine) {
210
+ // 單行編輯:同一行可能有多個編輯,按行號分組
211
+ if (!singleLineEditsByLine.has(startLine)) {
212
+ singleLineEditsByLine.set(startLine, []);
213
+ }
214
+ singleLineEditsByLine.get(startLine).push(edit);
215
+ }
216
+ else {
217
+ // 跨行編輯:需特殊處理起始/中間/結束行
218
+ multiLineEdits.push(edit);
219
+ }
220
+ }
221
+ // 第二步:處理單行編輯 — 同行多編輯合併處理
222
+ for (const [lineNum, lineEdits] of singleLineEditsByLine) {
223
+ const change = processSingleLineEdit(lineNum, lineEdits, originalLines);
224
+ if (change) {
225
+ changes.push(change);
226
+ }
227
+ }
228
+ // 第三步:處理跨行編輯 — 避免與已處理的單行編輯衝突
229
+ const processedLines = new Set(singleLineEditsByLine.keys());
230
+ for (const edit of multiLineEdits) {
231
+ const multiChanges = processMultiLineEdit(edit, originalLines, processedLines);
232
+ changes.push(...multiChanges);
233
+ }
234
+ // 按行號排序確保輸出順序一致
235
+ return changes.sort((a, b) => a.line - b.line);
236
+ }
237
+ /**
238
+ * 將檔案建立操作轉換為 LineChange(全部新增)
239
+ * @param content - 新檔案內容
240
+ * @returns LineChange 陣列
241
+ */
242
+ function convertCreateToLineChanges(content) {
243
+ const lines = content.split('\n');
244
+ return lines.map((line, index) => ({
245
+ line: index + 1,
246
+ oldContent: null,
247
+ newContent: line
248
+ }));
249
+ }
250
+ /**
251
+ * 將檔案刪除操作轉換為 LineChange(全部刪除)
252
+ * @param content - 原始檔案內容
253
+ * @returns LineChange 陣列
254
+ */
255
+ function convertDeleteToLineChanges(content) {
256
+ const lines = content.split('\n');
257
+ return lines.map((line, index) => ({
258
+ line: index + 1,
259
+ oldContent: line,
260
+ newContent: null
261
+ }));
262
+ }
263
+ /**
264
+ * 處理單一 FileTextChange 轉換為 FileChangeInput
265
+ */
266
+ async function convertFileTextChange(change, fileSystem) {
267
+ const originalContent = await readOriginalContent(change.filePath, fileSystem);
268
+ const lineChanges = convertEditsToLineChanges(originalContent, change.edits);
269
+ return {
270
+ filePath: change.filePath,
271
+ originalContent,
272
+ changes: lineChanges
273
+ };
274
+ }
275
+ /**
276
+ * 處理檔案操作轉換為 FileChangeInput
277
+ */
278
+ async function convertFileOperation(operation, fileSystem) {
279
+ switch (operation.type) {
280
+ case 'create': {
281
+ const content = operation.content ?? '';
282
+ return {
283
+ filePath: operation.targetPath ?? operation.sourcePath,
284
+ originalContent: '',
285
+ changes: convertCreateToLineChanges(content)
286
+ };
287
+ }
288
+ case 'delete': {
289
+ const originalContent = await readOriginalContent(operation.sourcePath, fileSystem);
290
+ return {
291
+ filePath: operation.sourcePath,
292
+ originalContent,
293
+ changes: convertDeleteToLineChanges(originalContent)
294
+ };
295
+ }
296
+ case 'move': {
297
+ // Move 操作由 CLI 層處理,這裡不轉換
298
+ return null;
299
+ }
300
+ }
301
+ }
302
+ /**
303
+ * 將 Changeset 的 warnings 轉換為 ConflictInfo 格式
304
+ * warnings 格式:type:message(如 "reserved_keyword:'function' 是保留字")
305
+ *
306
+ * 永遠返回陣列(可能為空),確保 JSON 輸出包含 conflicts 欄位
307
+ *
308
+ * @param warnings - 警告訊息列表
309
+ * @returns ConflictInfo 陣列(永遠不為 undefined)
310
+ */
311
+ function convertWarningsToConflicts(warnings) {
312
+ if (!warnings || warnings.length === 0) {
313
+ return [];
314
+ }
315
+ return warnings.map(warning => {
316
+ // 解析格式:type:message
317
+ const colonIndex = warning.indexOf(':');
318
+ if (colonIndex > 0) {
319
+ return {
320
+ type: warning.substring(0, colonIndex),
321
+ message: warning.substring(colonIndex + 1),
322
+ filePath: null,
323
+ line: null
324
+ };
325
+ }
326
+ // 無法解析時,使用 unknown 類型
327
+ return {
328
+ type: 'unknown',
329
+ message: warning,
330
+ filePath: null,
331
+ line: null
332
+ };
333
+ });
334
+ }
335
+ /**
336
+ * 將 Changeset 轉換為 PreviewInput
337
+ * @param changeset - 變更集
338
+ * @param fileSystem - 檔案系統介面
339
+ * @returns PreviewInput 物件
340
+ */
341
+ export async function convertChangesetToPreviewInput(changeset, fileSystem) {
342
+ const fileChanges = [];
343
+ // 轉換文字變更
344
+ for (const textChange of changeset.textChanges) {
345
+ const converted = await convertFileTextChange(textChange, fileSystem);
346
+ // 只加入有實際變更的檔案
347
+ if (converted.changes.length > 0) {
348
+ fileChanges.push(converted);
349
+ }
350
+ }
351
+ // 轉換檔案操作
352
+ for (const operation of changeset.fileOperations) {
353
+ const converted = await convertFileOperation(operation, fileSystem);
354
+ if (converted !== null && converted.changes.length > 0) {
355
+ fileChanges.push(converted);
356
+ }
357
+ }
358
+ // 轉換 warnings 為 conflicts
359
+ const conflicts = convertWarningsToConflicts(changeset.warnings);
360
+ return {
361
+ command: mapCommandType(changeset.command),
362
+ success: changeset.success,
363
+ fileChanges,
364
+ operationDescription: changeset.description,
365
+ conflicts,
366
+ errors: changeset.errors ? [...changeset.errors] : undefined
367
+ };
368
+ }
369
+ //# sourceMappingURL=changeset-converter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changeset-converter.js","sourceRoot":"","sources":["../../../src/infrastructure/changeset/changeset-converter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Changeset 模組導出
3
+ * 提供統一的變更集管理和應用功能
4
+ */
5
+ export type { TextEdit, FileTextChange, FileOperation, Changeset, ApplyResult, ApplyOptions, BackupEntry } from './types.js';
6
+ export { convertChangesetToPreviewInput } from './changeset-converter.js';
7
+ export { ChangesetBuilder, createChangesetBuilder } from './changeset-builder.js';
8
+ export { ChangeApplicator } from './change-applicator.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/changeset/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,QAAQ,EACR,cAAc,EACd,aAAa,EACb,SAAS,EACT,WAAW,EACX,YAAY,EACZ,WAAW,EACZ,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAG1E,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAGlF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Changeset 模組導出
3
+ * 提供統一的變更集管理和應用功能
4
+ */
5
+ // 轉換器
6
+ export { convertChangesetToPreviewInput } from './changeset-converter.js';
7
+ // 建構器
8
+ export { ChangesetBuilder, createChangesetBuilder } from './changeset-builder.js';
9
+ // 應用器
10
+ export { ChangeApplicator } from './change-applicator.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/infrastructure/changeset/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,MAAM;AACN,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAE1E,MAAM;AACN,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAElF,MAAM;AACN,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC"}