agent-ide 0.9.2 → 0.9.4
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/core/deadcode/dead-code-remover.d.ts +4 -3
- package/dist/core/deadcode/dead-code-remover.d.ts.map +1 -1
- package/dist/core/deadcode/dead-code-remover.js +13 -12
- package/dist/core/deadcode/dead-code-remover.js.map +1 -1
- package/dist/core/deadcode/file-operations.d.ts +6 -9
- package/dist/core/deadcode/file-operations.d.ts.map +1 -1
- package/dist/core/deadcode/file-operations.js +12 -17
- package/dist/core/deadcode/file-operations.js.map +1 -1
- package/dist/core/deadcode/import-cleaner.d.ts +6 -11
- package/dist/core/deadcode/import-cleaner.d.ts.map +1 -1
- package/dist/core/deadcode/import-cleaner.js +15 -23
- package/dist/core/deadcode/import-cleaner.js.map +1 -1
- package/dist/core/deadcode/index.d.ts +1 -0
- package/dist/core/deadcode/index.d.ts.map +1 -1
- package/dist/core/deadcode/index.js +1 -0
- package/dist/core/deadcode/index.js.map +1 -1
- package/dist/core/deadcode/shared-cache.d.ts +70 -0
- package/dist/core/deadcode/shared-cache.d.ts.map +1 -0
- package/dist/core/deadcode/shared-cache.js +95 -0
- package/dist/core/deadcode/shared-cache.js.map +1 -0
- package/dist/core/foundations/indexing/index-engine.d.ts +18 -0
- package/dist/core/foundations/indexing/index-engine.d.ts.map +1 -1
- package/dist/core/foundations/indexing/index-engine.js +120 -26
- package/dist/core/foundations/indexing/index-engine.js.map +1 -1
- package/dist/core/impact/impact-analyzer.d.ts.map +1 -1
- package/dist/core/impact/impact-analyzer.js +4 -2
- package/dist/core/impact/impact-analyzer.js.map +1 -1
- package/dist/core/move/file-scanner.d.ts +2 -1
- package/dist/core/move/file-scanner.d.ts.map +1 -1
- package/dist/core/move/file-scanner.js +6 -3
- package/dist/core/move/file-scanner.js.map +1 -1
- package/dist/core/move/path-calculator.d.ts +3 -1
- package/dist/core/move/path-calculator.d.ts.map +1 -1
- package/dist/core/move/path-calculator.js +25 -3
- package/dist/core/move/path-calculator.js.map +1 -1
- package/dist/core/rename/reference-updater.d.ts +2 -0
- package/dist/core/rename/reference-updater.d.ts.map +1 -1
- package/dist/core/rename/reference-updater.js +4 -1
- package/dist/core/rename/reference-updater.js.map +1 -1
- package/dist/infrastructure/cache/index.d.ts +10 -31
- 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/worker-pool/index.d.ts +7 -0
- package/dist/infrastructure/worker-pool/index.d.ts.map +1 -0
- package/dist/infrastructure/worker-pool/index.js +6 -0
- package/dist/infrastructure/worker-pool/index.js.map +1 -0
- package/dist/infrastructure/worker-pool/parser-pool.d.ts +47 -0
- package/dist/infrastructure/worker-pool/parser-pool.d.ts.map +1 -0
- package/dist/infrastructure/worker-pool/parser-pool.js +105 -0
- package/dist/infrastructure/worker-pool/parser-pool.js.map +1 -0
- package/dist/infrastructure/worker-pool/types.d.ts +39 -0
- package/dist/infrastructure/worker-pool/types.d.ts.map +1 -0
- package/dist/infrastructure/worker-pool/types.js +6 -0
- package/dist/infrastructure/worker-pool/types.js.map +1 -0
- package/dist/infrastructure/worker-pool/workers/parse-worker.d.ts +17 -0
- package/dist/infrastructure/worker-pool/workers/parse-worker.d.ts.map +1 -0
- package/dist/infrastructure/worker-pool/workers/parse-worker.js +67 -0
- package/dist/infrastructure/worker-pool/workers/parse-worker.js.map +1 -0
- package/dist/plugins/javascript/declaration-analyzer.d.ts +4 -4
- package/dist/plugins/javascript/declaration-analyzer.d.ts.map +1 -1
- package/dist/plugins/javascript/declaration-analyzer.js +8 -14
- package/dist/plugins/javascript/declaration-analyzer.js.map +1 -1
- package/dist/plugins/javascript/parser.d.ts +3 -2
- package/dist/plugins/javascript/parser.d.ts.map +1 -1
- package/dist/plugins/javascript/parser.js +6 -4
- package/dist/plugins/javascript/parser.js.map +1 -1
- package/dist/plugins/javascript/reference-finder.d.ts +4 -14
- package/dist/plugins/javascript/reference-finder.d.ts.map +1 -1
- package/dist/plugins/javascript/reference-finder.js +8 -44
- package/dist/plugins/javascript/reference-finder.js.map +1 -1
- package/dist/plugins/typescript/declaration-analyzer.d.ts +3 -3
- package/dist/plugins/typescript/declaration-analyzer.d.ts.map +1 -1
- package/dist/plugins/typescript/declaration-analyzer.js +7 -6
- package/dist/plugins/typescript/declaration-analyzer.js.map +1 -1
- package/dist/plugins/typescript/language-service.d.ts +7 -0
- package/dist/plugins/typescript/language-service.d.ts.map +1 -1
- package/dist/plugins/typescript/language-service.js +26 -1
- package/dist/plugins/typescript/language-service.js.map +1 -1
- package/package.json +2 -1
|
@@ -6,17 +6,18 @@ import type { IFileSystem } from '../../infrastructure/storage/file-system.inter
|
|
|
6
6
|
import type { ParserRegistry } from '../../infrastructure/parser/registry.js';
|
|
7
7
|
import type { Changeset } from '../../infrastructure/changeset/index.js';
|
|
8
8
|
import type { DeadCodeItem, DeadCodeRemovalOptions, DeadCodeRemovalPreview, DeadCodeRemovalResult } from './types.js';
|
|
9
|
+
import { DeadCodeCacheService } from './shared-cache.js';
|
|
9
10
|
/**
|
|
10
11
|
* Dead Code 刪除器
|
|
11
12
|
*/
|
|
12
13
|
export declare class DeadCodeRemover {
|
|
13
14
|
private readonly fileSystem;
|
|
14
15
|
private readonly options;
|
|
15
|
-
private readonly fileCache;
|
|
16
16
|
private readonly rangeExpander;
|
|
17
17
|
private readonly importCleaner;
|
|
18
18
|
private readonly fileOperations;
|
|
19
|
-
|
|
19
|
+
private readonly cacheService;
|
|
20
|
+
constructor(fileSystem: IFileSystem, parserRegistry: ParserRegistry, options?: DeadCodeRemovalOptions, cacheService?: DeadCodeCacheService);
|
|
20
21
|
/**
|
|
21
22
|
* 預覽刪除操作
|
|
22
23
|
*/
|
|
@@ -48,7 +49,7 @@ export declare class DeadCodeRemover {
|
|
|
48
49
|
*/
|
|
49
50
|
private createEmptySummary;
|
|
50
51
|
/**
|
|
51
|
-
*
|
|
52
|
+
* 讀取檔案(使用共用快取)
|
|
52
53
|
* 檔案不存在時快取 null,避免重複讀取
|
|
53
54
|
*/
|
|
54
55
|
private readFile;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dead-code-remover.d.ts","sourceRoot":"","sources":["../../../src/core/deadcode/dead-code-remover.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kDAAkD,CAAC;AACpF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAEpE,OAAO,KAAK,EACV,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EAKtB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"dead-code-remover.d.ts","sourceRoot":"","sources":["../../../src/core/deadcode/dead-code-remover.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kDAAkD,CAAC;AACpF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAEpE,OAAO,KAAK,EACV,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EAKtB,MAAM,YAAY,CAAC;AAKpB,OAAO,EAAE,oBAAoB,EAA8B,MAAM,mBAAmB,CAAC;AAErF;;GAEG;AACH,qBAAa,eAAe;IAQxB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAP7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAC3D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwB;IACvD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuB;gBAGjC,UAAU,EAAE,WAAW,EACxC,cAAc,EAAE,cAAc,EAC9B,OAAO,CAAC,EAAE,sBAAsB,EAChC,YAAY,CAAC,EAAE,oBAAoB;IASrC;;OAEG;IACG,OAAO,CAAC,aAAa,EAAE,SAAS,YAAY,EAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA+CtF;;;;OAIG;IACG,iBAAiB,CAAC,aAAa,EAAE,SAAS,YAAY,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IAkDnF;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAkC9E;;OAEG;IACH,OAAO,CAAC,WAAW;IA4BnB;;OAEG;YACW,yBAAyB;IAoCvC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;;OAGG;YACW,QAAQ;IAoBtB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAS7B;;OAEG;IACH,UAAU,IAAI,IAAI;CAGnB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,WAAW,EACvB,cAAc,EAAE,cAAc,EAC9B,OAAO,CAAC,EAAE,sBAAsB,GAC/B,eAAe,CAEjB"}
|
|
@@ -8,22 +8,24 @@ import { DEFAULT_REMOVAL_OPTIONS } from './types.js';
|
|
|
8
8
|
import { RangeExpander } from './range-expander.js';
|
|
9
9
|
import { ImportCleaner } from './import-cleaner.js';
|
|
10
10
|
import { FileOperationsHandler } from './file-operations.js';
|
|
11
|
+
import { createDeadCodeCacheService } from './shared-cache.js';
|
|
11
12
|
/**
|
|
12
13
|
* Dead Code 刪除器
|
|
13
14
|
*/
|
|
14
15
|
export class DeadCodeRemover {
|
|
15
16
|
fileSystem;
|
|
16
17
|
options;
|
|
17
|
-
fileCache = new Map();
|
|
18
18
|
rangeExpander;
|
|
19
19
|
importCleaner;
|
|
20
20
|
fileOperations;
|
|
21
|
-
|
|
21
|
+
cacheService;
|
|
22
|
+
constructor(fileSystem, parserRegistry, options, cacheService) {
|
|
22
23
|
this.fileSystem = fileSystem;
|
|
23
24
|
this.options = { ...DEFAULT_REMOVAL_OPTIONS, ...options };
|
|
25
|
+
this.cacheService = cacheService ?? createDeadCodeCacheService();
|
|
24
26
|
this.rangeExpander = new RangeExpander(parserRegistry);
|
|
25
|
-
this.importCleaner = new ImportCleaner(fileSystem, parserRegistry);
|
|
26
|
-
this.fileOperations = new FileOperationsHandler(fileSystem);
|
|
27
|
+
this.importCleaner = new ImportCleaner(fileSystem, parserRegistry, this.cacheService);
|
|
28
|
+
this.fileOperations = new FileOperationsHandler(fileSystem, this.cacheService);
|
|
27
29
|
}
|
|
28
30
|
/**
|
|
29
31
|
* 預覽刪除操作
|
|
@@ -219,23 +221,24 @@ export class DeadCodeRemover {
|
|
|
219
221
|
};
|
|
220
222
|
}
|
|
221
223
|
/**
|
|
222
|
-
*
|
|
224
|
+
* 讀取檔案(使用共用快取)
|
|
223
225
|
* 檔案不存在時快取 null,避免重複讀取
|
|
224
226
|
*/
|
|
225
227
|
async readFile(filePath) {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
+
const cached = this.cacheService.getFile(filePath);
|
|
229
|
+
if (cached !== undefined) {
|
|
230
|
+
return cached;
|
|
228
231
|
}
|
|
229
232
|
try {
|
|
230
233
|
const content = await this.fileSystem.readFile(filePath, 'utf-8');
|
|
231
234
|
const contentStr = typeof content === 'string' ? content : content.toString('utf-8');
|
|
232
|
-
this.
|
|
235
|
+
this.cacheService.setFile(filePath, contentStr);
|
|
233
236
|
return contentStr;
|
|
234
237
|
}
|
|
235
238
|
catch (error) {
|
|
236
239
|
// 檔案不存在時快取 null,避免重複讀取
|
|
237
240
|
if (error instanceof Error && error.message.includes('ENOENT')) {
|
|
238
|
-
this.
|
|
241
|
+
this.cacheService.setFile(filePath, null);
|
|
239
242
|
}
|
|
240
243
|
return null;
|
|
241
244
|
}
|
|
@@ -256,9 +259,7 @@ export class DeadCodeRemover {
|
|
|
256
259
|
* 清除快取
|
|
257
260
|
*/
|
|
258
261
|
clearCache() {
|
|
259
|
-
this.
|
|
260
|
-
this.importCleaner.clearCache();
|
|
261
|
-
this.fileOperations.clearCache();
|
|
262
|
+
this.cacheService.clear();
|
|
262
263
|
}
|
|
263
264
|
}
|
|
264
265
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dead-code-remover.js","sourceRoot":"","sources":["../../../src/core/deadcode/dead-code-remover.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAItC,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAWrH,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"dead-code-remover.js","sourceRoot":"","sources":["../../../src/core/deadcode/dead-code-remover.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import type { Range } from '../../shared/types/core.js';
|
|
6
6
|
import type { IFileSystem } from '../../infrastructure/storage/file-system.interface.js';
|
|
7
7
|
import type { DeadCodeRemovalPreview, ImportCleanupOperation, RemovalOperation, UpdatedFile } from './types.js';
|
|
8
|
+
import type { DeadCodeCacheService } from './shared-cache.js';
|
|
8
9
|
/**
|
|
9
10
|
* 檔案操作類型列舉
|
|
10
11
|
* 排序優先級:import-partial (0) > import-delete (1) > removal (2)
|
|
@@ -33,8 +34,8 @@ export interface FileOperation {
|
|
|
33
34
|
*/
|
|
34
35
|
export declare class FileOperationsHandler {
|
|
35
36
|
private readonly fileSystem;
|
|
36
|
-
private readonly
|
|
37
|
-
constructor(fileSystem: IFileSystem);
|
|
37
|
+
private readonly cacheService;
|
|
38
|
+
constructor(fileSystem: IFileSystem, cacheService: DeadCodeCacheService);
|
|
38
39
|
/**
|
|
39
40
|
* 按檔案分組操作(去重相同 range)
|
|
40
41
|
*/
|
|
@@ -48,11 +49,11 @@ export declare class FileOperationsHandler {
|
|
|
48
49
|
*/
|
|
49
50
|
private cleanupEmptyLines;
|
|
50
51
|
/**
|
|
51
|
-
*
|
|
52
|
+
* 讀取檔案(使用共用快取)
|
|
52
53
|
*/
|
|
53
54
|
readFile(filePath: string): Promise<string | null>;
|
|
54
55
|
/**
|
|
55
|
-
*
|
|
56
|
+
* 寫入檔案(同步更新共用快取)
|
|
56
57
|
*/
|
|
57
58
|
writeFile(filePath: string, content: string): Promise<void>;
|
|
58
59
|
/**
|
|
@@ -73,13 +74,9 @@ export declare class FileOperationsHandler {
|
|
|
73
74
|
* 收集影響的檔案
|
|
74
75
|
*/
|
|
75
76
|
collectAffectedFiles(removals: readonly RemovalOperation[], importCleanups: readonly ImportCleanupOperation[]): string[];
|
|
76
|
-
/**
|
|
77
|
-
* 清除快取
|
|
78
|
-
*/
|
|
79
|
-
clearCache(): void;
|
|
80
77
|
}
|
|
81
78
|
/**
|
|
82
79
|
* 建立 FileOperationsHandler 實例
|
|
83
80
|
*/
|
|
84
|
-
export declare function createFileOperationsHandler(fileSystem: IFileSystem): FileOperationsHandler;
|
|
81
|
+
export declare function createFileOperationsHandler(fileSystem: IFileSystem, cacheService: DeadCodeCacheService): FileOperationsHandler;
|
|
85
82
|
//# sourceMappingURL=file-operations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-operations.d.ts","sourceRoot":"","sources":["../../../src/core/deadcode/file-operations.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kDAAkD,CAAC;AACpF,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACtB,gBAAgB,EAChB,WAAW,EACZ,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"file-operations.d.ts","sourceRoot":"","sources":["../../../src/core/deadcode/file-operations.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kDAAkD,CAAC;AACpF,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACtB,gBAAgB,EAChB,WAAW,EACZ,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D;;;GAGG;AACH,oBAAY,iBAAiB;IAC3B,uBAAuB;IACvB,aAAa,mBAAmB;IAChC,mBAAmB;IACnB,YAAY,kBAAkB;IAC9B,WAAW;IACX,OAAO,YAAY;CACpB;AAYD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,WAAW;IACX,KAAK,EAAE,KAAK,CAAC;IACb,WAAW;IACX,IAAI,EAAE,iBAAiB,CAAC;IACxB,gBAAgB;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBADZ,UAAU,EAAE,WAAW,EACvB,YAAY,EAAE,oBAAoB;IAGrD;;OAEG;IACH,qBAAqB,CACnB,OAAO,EAAE,sBAAsB,GAC9B,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC;IA0C/B;;OAEG;IACG,mBAAmB,CACvB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,aAAa,EAAE,GAC1B,OAAO,CAAC,WAAW,CAAC;IAsEvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAmBzB;;OAEG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAgBxD;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjE;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM;IA0BlD;;OAEG;IACH,gBAAgB,CACd,QAAQ,EAAE,SAAS,gBAAgB,EAAE,EACrC,cAAc,EAAE,SAAS,sBAAsB,EAAE,GAChD;QACD,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;KAC1B;IA8BD;;OAEG;IACH,oBAAoB,CAClB,QAAQ,EAAE,SAAS,gBAAgB,EAAE,EACrC,cAAc,EAAE,SAAS,sBAAsB,EAAE,GAChD,MAAM,EAAE;CAaZ;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,WAAW,EACvB,YAAY,EAAE,oBAAoB,GACjC,qBAAqB,CAEvB"}
|
|
@@ -29,9 +29,10 @@ const FILE_OPERATION_PRIORITY = {
|
|
|
29
29
|
*/
|
|
30
30
|
export class FileOperationsHandler {
|
|
31
31
|
fileSystem;
|
|
32
|
-
|
|
33
|
-
constructor(fileSystem) {
|
|
32
|
+
cacheService;
|
|
33
|
+
constructor(fileSystem, cacheService) {
|
|
34
34
|
this.fileSystem = fileSystem;
|
|
35
|
+
this.cacheService = cacheService;
|
|
35
36
|
}
|
|
36
37
|
/**
|
|
37
38
|
* 按檔案分組操作(去重相同 range)
|
|
@@ -155,29 +156,29 @@ export class FileOperationsHandler {
|
|
|
155
156
|
return result;
|
|
156
157
|
}
|
|
157
158
|
/**
|
|
158
|
-
*
|
|
159
|
+
* 讀取檔案(使用共用快取)
|
|
159
160
|
*/
|
|
160
161
|
async readFile(filePath) {
|
|
161
|
-
|
|
162
|
-
|
|
162
|
+
const cached = this.cacheService.getFile(filePath);
|
|
163
|
+
if (cached !== undefined) {
|
|
164
|
+
return cached;
|
|
163
165
|
}
|
|
164
166
|
try {
|
|
165
167
|
const content = await this.fileSystem.readFile(filePath, 'utf-8');
|
|
166
168
|
const contentStr = typeof content === 'string' ? content : content.toString('utf-8');
|
|
167
|
-
this.
|
|
169
|
+
this.cacheService.setFile(filePath, contentStr);
|
|
168
170
|
return contentStr;
|
|
169
171
|
}
|
|
170
172
|
catch {
|
|
171
|
-
this.fileCache.delete(filePath);
|
|
172
173
|
return null;
|
|
173
174
|
}
|
|
174
175
|
}
|
|
175
176
|
/**
|
|
176
|
-
*
|
|
177
|
+
* 寫入檔案(同步更新共用快取)
|
|
177
178
|
*/
|
|
178
179
|
async writeFile(filePath, content) {
|
|
179
180
|
await this.fileSystem.writeFile(filePath, content);
|
|
180
|
-
this.
|
|
181
|
+
this.cacheService.updateFile(filePath, content);
|
|
181
182
|
}
|
|
182
183
|
/**
|
|
183
184
|
* 提取程式碼
|
|
@@ -247,17 +248,11 @@ export class FileOperationsHandler {
|
|
|
247
248
|
}
|
|
248
249
|
return Array.from(files);
|
|
249
250
|
}
|
|
250
|
-
/**
|
|
251
|
-
* 清除快取
|
|
252
|
-
*/
|
|
253
|
-
clearCache() {
|
|
254
|
-
this.fileCache.clear();
|
|
255
|
-
}
|
|
256
251
|
}
|
|
257
252
|
/**
|
|
258
253
|
* 建立 FileOperationsHandler 實例
|
|
259
254
|
*/
|
|
260
|
-
export function createFileOperationsHandler(fileSystem) {
|
|
261
|
-
return new FileOperationsHandler(fileSystem);
|
|
255
|
+
export function createFileOperationsHandler(fileSystem, cacheService) {
|
|
256
|
+
return new FileOperationsHandler(fileSystem, cacheService);
|
|
262
257
|
}
|
|
263
258
|
//# sourceMappingURL=file-operations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-operations.js","sourceRoot":"","sources":["../../../src/core/deadcode/file-operations.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"file-operations.js","sourceRoot":"","sources":["../../../src/core/deadcode/file-operations.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH;;;GAGG;AACH,MAAM,CAAN,IAAY,iBAOX;AAPD,WAAY,iBAAiB;IAC3B,uBAAuB;IACvB,qDAAgC,CAAA;IAChC,mBAAmB;IACnB,mDAA8B,CAAA;IAC9B,WAAW;IACX,wCAAmB,CAAA;AACrB,CAAC,EAPW,iBAAiB,KAAjB,iBAAiB,QAO5B;AAED;;;GAGG;AACH,MAAM,uBAAuB,GAAsC;IACjE,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,CAAC;IACpC,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC;IACnC,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;CAC/B,CAAC;AAcF;;GAEG;AACH,MAAM,OAAO,qBAAqB;IAEb;IACA;IAFnB,YACmB,UAAuB,EACvB,YAAkC;QADlC,eAAU,GAAV,UAAU,CAAa;QACvB,iBAAY,GAAZ,YAAY,CAAsB;IAClD,CAAC;IAEJ;;OAEG;IACH,qBAAqB,CACnB,OAA+B;QAE/B,MAAM,cAAc,GAAG,IAAI,GAAG,EAA2B,CAAC;QAE1D,kBAAkB;QAClB,MAAM,QAAQ,GAAG,CAAC,CAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QACjG,MAAM,UAAU,GAAG,IAAI,GAAG,EAAuB,CAAC;QAElD,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAE,EAAiB,EAAE,EAAE;YAC3D,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpD,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;YACnD,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YAE/B,oBAAoB;YACpB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAClB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACd,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACvC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACjC,CAAC;QACH,CAAC,CAAC;QAEF,SAAS;QACT,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACvC,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5F,CAAC;QAED,iBAAiB;QACjB,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC7C,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBAC3D,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE;oBAC7B,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,IAAI,EAAE,iBAAiB,CAAC,aAAa;oBACrC,UAAU,EAAE,OAAO,CAAC,SAAS;iBAC9B,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,iBAAiB,CAAC,YAAY,EAAE,CAAC,CAAC;YACjG,CAAC;QACH,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CACvB,QAAgB,EAChB,UAA2B;QAE3B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,WAAW,QAAQ,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,oBAAoB;QACpB,qCAAqC;QACrC,MAAM,SAAS,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC9C,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC9C,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;YACjD,CAAC;YACD,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAClD,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;YACrD,CAAC;YACD,OAAO,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,IAAI,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,cAAc,GAAG,CAAC,CAAC;QAEvB,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;YAC3B,kBAAkB;YAClB,oCAAoC;YACpC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,SAAS;YACX,CAAC;YACD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YAClC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC3E,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC/E,MAAM,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,CAAC,CAAC;YAE5C,IAAI,EAAE,CAAC,IAAI,KAAK,iBAAiB,CAAC,aAAa,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;gBACjE,cAAc;gBACd,IAAI,SAAS,GAAG,KAAK,CAAC,MAAM,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;oBAChD,SAAS;oBACT,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACnE,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,cAAc,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC;gBACvE,CAAC;gBACD,cAAc,EAAE,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,OAAO;gBACP,IAAI,SAAS,GAAG,KAAK,CAAC,MAAM,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;oBAChD,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;gBACvC,CAAC;gBAED,IAAI,EAAE,CAAC,IAAI,KAAK,iBAAiB,CAAC,OAAO,EAAE,CAAC;oBAC1C,cAAc,EAAE,CAAC;gBACnB,CAAC;qBAAM,CAAC;oBACN,cAAc,EAAE,CAAC;gBACnB,CAAC;YACH,CAAC;QACH,CAAC;QAED,iBAAiB;QACjB,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEtC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEpC,OAAO;QACP,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAE3C,OAAO;YACL,QAAQ;YACR,cAAc;YACd,cAAc;SACf,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,KAAe;QACvC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;YAEnC,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;gBACzB,UAAU;gBACV,SAAS;YACX,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,SAAS,GAAG,OAAO,CAAC;QACtB,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,QAAgB;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClE,MAAM,UAAU,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACrF,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAChD,OAAO,UAAU,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,QAAgB,EAAE,OAAe;QAC/C,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,OAAe,EAAE,KAAY;QACvC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,kBAAkB;QAClB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAChF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAE5E,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACtD,CAAC;iBAAM,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;gBACzB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,gBAAgB,CACd,QAAqC,EACrC,cAAiD;QAQjD,MAAM,MAAM,GAA2B,EAAE,CAAC;QAE1C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;YAC5B,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;YAChC,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;SACvC,CAAC,CAAC,IAAI,CAAC;QAER,UAAU;QACV,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,YAAY,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;QACxE,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;YACrC,YAAY,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;QACxE,CAAC;QAED,OAAO;YACL,aAAa,EAAE,QAAQ,CAAC,MAAM;YAC9B,MAAM;YACN,aAAa;YACb,YAAY;YACZ,gBAAgB,EAAE,cAAc,CAAC,MAAM;SACxC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,oBAAoB,CAClB,QAAqC,EACrC,cAAiD;QAEjD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAEhC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;YACrC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;CAEF;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CACzC,UAAuB,EACvB,YAAkC;IAElC,OAAO,IAAI,qBAAqB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AAC7D,CAAC"}
|
|
@@ -5,17 +5,16 @@
|
|
|
5
5
|
import type { IFileSystem } from '../../infrastructure/storage/file-system.interface.js';
|
|
6
6
|
import type { ParserRegistry } from '../../infrastructure/parser/registry.js';
|
|
7
7
|
import type { ImportCleanupOperation, RemovalOperation } from './types.js';
|
|
8
|
+
import type { DeadCodeCacheService } from './shared-cache.js';
|
|
8
9
|
/**
|
|
9
10
|
* Import 清理器
|
|
10
11
|
*/
|
|
11
12
|
export declare class ImportCleaner {
|
|
12
13
|
private readonly fileSystem;
|
|
14
|
+
private readonly cacheService;
|
|
13
15
|
private readonly importParser;
|
|
14
16
|
private readonly symbolFinder;
|
|
15
|
-
|
|
16
|
-
/** 符號引用快取:key = `${filePath}:${symbolName}` */
|
|
17
|
-
private readonly referenceCache;
|
|
18
|
-
constructor(fileSystem: IFileSystem, parserRegistry: ParserRegistry);
|
|
17
|
+
constructor(fileSystem: IFileSystem, parserRegistry: ParserRegistry, cacheService: DeadCodeCacheService);
|
|
19
18
|
/**
|
|
20
19
|
* 分析需要清理的 import
|
|
21
20
|
* 支援部分清理:當 import { A, B, C } 中只有部分符號未使用時,保留其他符號
|
|
@@ -35,7 +34,7 @@ export declare class ImportCleaner {
|
|
|
35
34
|
*/
|
|
36
35
|
private isImportStillUsed;
|
|
37
36
|
/**
|
|
38
|
-
*
|
|
37
|
+
* 使用共用快取查詢符號引用
|
|
39
38
|
* 確保每個 (filePath, symbolName) 組合只查詢一次
|
|
40
39
|
*/
|
|
41
40
|
private findReferencesWithCache;
|
|
@@ -48,16 +47,12 @@ export declare class ImportCleaner {
|
|
|
48
47
|
*/
|
|
49
48
|
private isLineInRemovalRange;
|
|
50
49
|
/**
|
|
51
|
-
*
|
|
50
|
+
* 讀取檔案(使用共用快取)
|
|
52
51
|
*/
|
|
53
52
|
private readFile;
|
|
54
|
-
/**
|
|
55
|
-
* 清除快取
|
|
56
|
-
*/
|
|
57
|
-
clearCache(): void;
|
|
58
53
|
}
|
|
59
54
|
/**
|
|
60
55
|
* 建立 ImportCleaner 實例
|
|
61
56
|
*/
|
|
62
|
-
export declare function createImportCleaner(fileSystem: IFileSystem, parserRegistry: ParserRegistry): ImportCleaner;
|
|
57
|
+
export declare function createImportCleaner(fileSystem: IFileSystem, parserRegistry: ParserRegistry, cacheService: DeadCodeCacheService): ImportCleaner;
|
|
63
58
|
//# sourceMappingURL=import-cleaner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-cleaner.d.ts","sourceRoot":"","sources":["../../../src/core/deadcode/import-cleaner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kDAAkD,CAAC;
|
|
1
|
+
{"version":3,"file":"import-cleaner.d.ts","sourceRoot":"","sources":["../../../src/core/deadcode/import-cleaner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kDAAkD,CAAC;AAMpF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D;;GAEG;AACH,qBAAa,aAAa;IAKtB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAE3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAN/B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;gBAGzB,UAAU,EAAE,WAAW,EACxC,cAAc,EAAE,cAAc,EACb,YAAY,EAAE,oBAAoB;IAMrD;;;OAGG;IACG,qBAAqB,CACzB,QAAQ,EAAE,SAAS,gBAAgB,EAAE,GACpC,OAAO,CAAC;QAAE,QAAQ,EAAE,sBAAsB,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAuEtE;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAkD7B;;;OAGG;YACW,iBAAiB;IAsB/B;;;OAGG;YACW,uBAAuB;IAcrC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAQ9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAuB5B;;OAEG;YACW,QAAQ;CAevB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,WAAW,EACvB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,oBAAoB,GACjC,aAAa,CAEf"}
|
|
@@ -9,13 +9,12 @@ import { ImportParser } from './import-parser.js';
|
|
|
9
9
|
*/
|
|
10
10
|
export class ImportCleaner {
|
|
11
11
|
fileSystem;
|
|
12
|
+
cacheService;
|
|
12
13
|
importParser;
|
|
13
14
|
symbolFinder;
|
|
14
|
-
|
|
15
|
-
/** 符號引用快取:key = `${filePath}:${symbolName}` */
|
|
16
|
-
referenceCache = new Map();
|
|
17
|
-
constructor(fileSystem, parserRegistry) {
|
|
15
|
+
constructor(fileSystem, parserRegistry, cacheService) {
|
|
18
16
|
this.fileSystem = fileSystem;
|
|
17
|
+
this.cacheService = cacheService;
|
|
19
18
|
this.importParser = new ImportParser(parserRegistry);
|
|
20
19
|
this.symbolFinder = createSymbolFinder(parserRegistry, fileSystem);
|
|
21
20
|
}
|
|
@@ -153,16 +152,16 @@ export class ImportCleaner {
|
|
|
153
152
|
return remainingRefs.length > 0;
|
|
154
153
|
}
|
|
155
154
|
/**
|
|
156
|
-
*
|
|
155
|
+
* 使用共用快取查詢符號引用
|
|
157
156
|
* 確保每個 (filePath, symbolName) 組合只查詢一次
|
|
158
157
|
*/
|
|
159
158
|
async findReferencesWithCache(filePath, symbolName) {
|
|
160
|
-
const
|
|
161
|
-
if (
|
|
162
|
-
return
|
|
159
|
+
const cached = this.cacheService.getReferences(filePath, symbolName);
|
|
160
|
+
if (cached) {
|
|
161
|
+
return cached;
|
|
163
162
|
}
|
|
164
163
|
const references = await this.symbolFinder.findReferencesInFile(filePath, symbolName);
|
|
165
|
-
this.
|
|
164
|
+
this.cacheService.setReferences(filePath, symbolName, references);
|
|
166
165
|
return references;
|
|
167
166
|
}
|
|
168
167
|
/**
|
|
@@ -195,35 +194,28 @@ export class ImportCleaner {
|
|
|
195
194
|
return false;
|
|
196
195
|
}
|
|
197
196
|
/**
|
|
198
|
-
*
|
|
197
|
+
* 讀取檔案(使用共用快取)
|
|
199
198
|
*/
|
|
200
199
|
async readFile(filePath) {
|
|
201
|
-
|
|
202
|
-
|
|
200
|
+
const cached = this.cacheService.getFile(filePath);
|
|
201
|
+
if (cached !== undefined) {
|
|
202
|
+
return cached;
|
|
203
203
|
}
|
|
204
204
|
try {
|
|
205
205
|
const content = await this.fileSystem.readFile(filePath, 'utf-8');
|
|
206
206
|
const contentStr = typeof content === 'string' ? content : content.toString('utf-8');
|
|
207
|
-
this.
|
|
207
|
+
this.cacheService.setFile(filePath, contentStr);
|
|
208
208
|
return contentStr;
|
|
209
209
|
}
|
|
210
210
|
catch {
|
|
211
|
-
this.fileCache.delete(filePath);
|
|
212
211
|
return null;
|
|
213
212
|
}
|
|
214
213
|
}
|
|
215
|
-
/**
|
|
216
|
-
* 清除快取
|
|
217
|
-
*/
|
|
218
|
-
clearCache() {
|
|
219
|
-
this.fileCache.clear();
|
|
220
|
-
this.referenceCache.clear();
|
|
221
|
-
}
|
|
222
214
|
}
|
|
223
215
|
/**
|
|
224
216
|
* 建立 ImportCleaner 實例
|
|
225
217
|
*/
|
|
226
|
-
export function createImportCleaner(fileSystem, parserRegistry) {
|
|
227
|
-
return new ImportCleaner(fileSystem, parserRegistry);
|
|
218
|
+
export function createImportCleaner(fileSystem, parserRegistry, cacheService) {
|
|
219
|
+
return new ImportCleaner(fileSystem, parserRegistry, cacheService);
|
|
228
220
|
}
|
|
229
221
|
//# sourceMappingURL=import-cleaner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-cleaner.js","sourceRoot":"","sources":["../../../src/core/deadcode/import-cleaner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,kBAAkB,EAClB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"import-cleaner.js","sourceRoot":"","sources":["../../../src/core/deadcode/import-cleaner.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export { DeadCodeDetector, createDeadCodeDetector } from './dead-code-detector.js';
|
|
6
6
|
export { DeadCodeRemover, createDeadCodeRemover } from './dead-code-remover.js';
|
|
7
|
+
export { DeadCodeCacheService, createDeadCodeCacheService } from './shared-cache.js';
|
|
7
8
|
export type { DeadCodeItem, DeadCodeDetectorOptions, DeadCodeDetectionResult, DeadCodeStats, DeadCodeRemovalOptions, DeadCodeRemovalPreview, DeadCodeRemovalResult, RemovalOperation, ImportCleanupOperation, RemovalSummary, UpdatedFile } from './types.js';
|
|
8
9
|
export { DEFAULT_DEAD_CODE_OPTIONS, DEFAULT_REMOVAL_OPTIONS } from './types.js';
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/deadcode/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAChF,YAAY,EACV,YAAY,EACZ,uBAAuB,EACvB,uBAAuB,EACvB,aAAa,EACb,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,WAAW,EACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/deadcode/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AACrF,YAAY,EACV,YAAY,EACZ,uBAAuB,EACvB,uBAAuB,EACvB,aAAa,EACb,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,WAAW,EACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -4,5 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export { DeadCodeDetector, createDeadCodeDetector } from './dead-code-detector.js';
|
|
6
6
|
export { DeadCodeRemover, createDeadCodeRemover } from './dead-code-remover.js';
|
|
7
|
+
export { DeadCodeCacheService, createDeadCodeCacheService } from './shared-cache.js';
|
|
7
8
|
export { DEFAULT_DEAD_CODE_OPTIONS, DEFAULT_REMOVAL_OPTIONS } from './types.js';
|
|
8
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/deadcode/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/deadcode/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAcrF,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deadcode 模組共用快取服務
|
|
3
|
+
* 統一管理檔案內容和符號引用快取,避免重複快取相同資料
|
|
4
|
+
* 注意:LRU 淘汰由 MemoryCache 自動處理
|
|
5
|
+
*/
|
|
6
|
+
import type { SymbolReference } from '../foundations/symbol-finder/index.js';
|
|
7
|
+
/**
|
|
8
|
+
* Deadcode 模組共用快取服務
|
|
9
|
+
* 提供統一的檔案內容和符號引用快取管理
|
|
10
|
+
* 注意:LRU 淘汰由 MemoryCache 自動處理
|
|
11
|
+
*/
|
|
12
|
+
export declare class DeadCodeCacheService {
|
|
13
|
+
/** 檔案內容快取(content 為 null 表示檔案不存在) */
|
|
14
|
+
private readonly fileCache;
|
|
15
|
+
/** 符號引用快取:key = `${filePath}:${symbolName}` */
|
|
16
|
+
private readonly referenceCache;
|
|
17
|
+
/**
|
|
18
|
+
* 取得檔案內容(從快取或返回 undefined)
|
|
19
|
+
* @param filePath 檔案路徑
|
|
20
|
+
* @returns 快取的內容或 undefined(未快取)
|
|
21
|
+
*/
|
|
22
|
+
getFile(filePath: string): string | null | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* 設定檔案內容快取
|
|
25
|
+
* @param filePath 檔案路徑
|
|
26
|
+
* @param content 檔案內容(null 表示檔案不存在)
|
|
27
|
+
*/
|
|
28
|
+
setFile(filePath: string, content: string | null): void;
|
|
29
|
+
/**
|
|
30
|
+
* 檢查檔案是否已快取
|
|
31
|
+
* @param filePath 檔案路徑
|
|
32
|
+
*/
|
|
33
|
+
hasFile(filePath: string): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* 取得符號引用(從快取或返回 undefined)
|
|
36
|
+
* @param filePath 檔案路徑
|
|
37
|
+
* @param symbolName 符號名稱
|
|
38
|
+
* @returns 快取的引用或 undefined(未快取)
|
|
39
|
+
*/
|
|
40
|
+
getReferences(filePath: string, symbolName: string): SymbolReference[] | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* 設定符號引用快取
|
|
43
|
+
* @param filePath 檔案路徑
|
|
44
|
+
* @param symbolName 符號名稱
|
|
45
|
+
* @param references 引用列表
|
|
46
|
+
*/
|
|
47
|
+
setReferences(filePath: string, symbolName: string, references: SymbolReference[]): void;
|
|
48
|
+
/**
|
|
49
|
+
* 更新檔案內容(寫入後同步更新快取)
|
|
50
|
+
* @param filePath 檔案路徑
|
|
51
|
+
* @param content 新內容
|
|
52
|
+
*/
|
|
53
|
+
updateFile(filePath: string, content: string): void;
|
|
54
|
+
/**
|
|
55
|
+
* 清除所有快取
|
|
56
|
+
*/
|
|
57
|
+
clear(): void;
|
|
58
|
+
/**
|
|
59
|
+
* 取得快取統計資訊
|
|
60
|
+
*/
|
|
61
|
+
getStats(): {
|
|
62
|
+
fileCount: number;
|
|
63
|
+
referenceCount: number;
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* 建立 DeadCodeCacheService 實例
|
|
68
|
+
*/
|
|
69
|
+
export declare function createDeadCodeCacheService(): DeadCodeCacheService;
|
|
70
|
+
//# sourceMappingURL=shared-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared-cache.d.ts","sourceRoot":"","sources":["../../../src/core/deadcode/shared-cache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAGhF;;;;GAIG;AACH,qBAAa,oBAAoB;IAC/B,qCAAqC;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2D;IAErF,+CAA+C;IAC/C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgE;IAE/F;;;;OAIG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS;IAKpD;;;;OAIG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAKvD;;;OAGG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIlC;;;;;OAKG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,eAAe,EAAE,GAAG,SAAS;IAMlF;;;;;OAKG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,IAAI;IAMxF;;;;OAIG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAInD;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,QAAQ,IAAI;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE;CAM1D;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,oBAAoB,CAEjE"}
|