agent-ide 0.7.5 → 0.8.0
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 +27 -9
- package/dist/core/deadcode/dead-code-remover.d.ts.map +1 -1
- package/dist/core/deadcode/dead-code-remover.js +100 -26
- package/dist/core/deadcode/dead-code-remover.js.map +1 -1
- package/dist/core/move/import-resolver.d.ts +0 -3
- package/dist/core/move/import-resolver.d.ts.map +1 -1
- package/dist/core/move/import-resolver.js +0 -10
- package/dist/core/move/import-resolver.js.map +1 -1
- package/dist/core/move-member/index.d.ts +1 -1
- package/dist/core/move-member/index.d.ts.map +1 -1
- package/dist/core/move-member/index.js.map +1 -1
- package/dist/core/move-member/move-member-service.d.ts +2 -0
- package/dist/core/move-member/move-member-service.d.ts.map +1 -1
- package/dist/core/move-member/move-member-service.js +24 -31
- package/dist/core/move-member/move-member-service.js.map +1 -1
- package/dist/core/move-member/types.d.ts +48 -23
- package/dist/core/move-member/types.d.ts.map +1 -1
- package/dist/core/move-member/types.js.map +1 -1
- package/dist/core/rename/reference-updater.d.ts.map +1 -1
- package/dist/core/rename/reference-updater.js +3 -1
- package/dist/core/rename/reference-updater.js.map +1 -1
- package/dist/core/shared/symbol-finder.d.ts +39 -11
- package/dist/core/shared/symbol-finder.d.ts.map +1 -1
- package/dist/core/shared/symbol-finder.js +109 -75
- package/dist/core/shared/symbol-finder.js.map +1 -1
- package/dist/core/snapshot/snapshot-generator.d.ts +11 -0
- package/dist/core/snapshot/snapshot-generator.d.ts.map +1 -1
- package/dist/core/snapshot/snapshot-generator.js +117 -5
- package/dist/core/snapshot/snapshot-generator.js.map +1 -1
- package/dist/infrastructure/formatters/diff-generator.js +93 -26
- package/dist/infrastructure/formatters/diff-generator.js.map +1 -1
- package/dist/infrastructure/formatters/diff-utils.d.ts +24 -0
- package/dist/infrastructure/formatters/diff-utils.d.ts.map +1 -0
- package/dist/infrastructure/formatters/diff-utils.js +104 -0
- package/dist/infrastructure/formatters/diff-utils.js.map +1 -0
- package/dist/infrastructure/formatters/preview-converter.d.ts +2 -0
- package/dist/infrastructure/formatters/preview-converter.d.ts.map +1 -1
- package/dist/infrastructure/formatters/preview-converter.js +43 -5
- package/dist/infrastructure/formatters/preview-converter.js.map +1 -1
- package/dist/infrastructure/parser/base.d.ts +2 -6
- package/dist/infrastructure/parser/base.d.ts.map +1 -1
- package/dist/infrastructure/parser/base.js +1 -16
- package/dist/infrastructure/parser/base.js.map +1 -1
- package/dist/infrastructure/parser/index.d.ts +2 -0
- package/dist/infrastructure/parser/index.d.ts.map +1 -1
- package/dist/infrastructure/parser/index.js +1 -0
- package/dist/infrastructure/parser/index.js.map +1 -1
- package/dist/infrastructure/parser/interface.d.ts +197 -0
- package/dist/infrastructure/parser/interface.d.ts.map +1 -1
- package/dist/infrastructure/parser/interface.js +13 -0
- package/dist/infrastructure/parser/interface.js.map +1 -1
- package/dist/interfaces/cli/commands/cycles.command.js +8 -1
- package/dist/interfaces/cli/commands/cycles.command.js.map +1 -1
- package/dist/interfaces/cli/commands/deadcode.command.js +7 -1
- package/dist/interfaces/cli/commands/deadcode.command.js.map +1 -1
- package/dist/interfaces/cli/commands/impact.command.js +19 -5
- package/dist/interfaces/cli/commands/impact.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 +55 -29
- package/dist/interfaces/cli/commands/move-member.command.js.map +1 -1
- package/dist/plugins/javascript/code-analyzer.d.ts +68 -0
- package/dist/plugins/javascript/code-analyzer.d.ts.map +1 -0
- package/dist/plugins/javascript/code-analyzer.js +302 -0
- package/dist/plugins/javascript/code-analyzer.js.map +1 -0
- package/dist/plugins/javascript/declaration-analyzer.d.ts +58 -0
- package/dist/plugins/javascript/declaration-analyzer.d.ts.map +1 -0
- package/dist/plugins/javascript/declaration-analyzer.js +367 -0
- package/dist/plugins/javascript/declaration-analyzer.js.map +1 -0
- package/dist/plugins/javascript/parser.d.ts +21 -36
- package/dist/plugins/javascript/parser.d.ts.map +1 -1
- package/dist/plugins/javascript/parser.js +55 -321
- package/dist/plugins/javascript/parser.js.map +1 -1
- package/dist/plugins/javascript/pattern-analyzer.d.ts +33 -0
- package/dist/plugins/javascript/pattern-analyzer.d.ts.map +1 -0
- package/dist/plugins/javascript/pattern-analyzer.js +142 -0
- package/dist/plugins/javascript/pattern-analyzer.js.map +1 -0
- package/dist/plugins/javascript/reference-finder.d.ts +38 -0
- package/dist/plugins/javascript/reference-finder.d.ts.map +1 -0
- package/dist/plugins/javascript/reference-finder.js +210 -0
- package/dist/plugins/javascript/reference-finder.js.map +1 -0
- package/dist/plugins/javascript/types.d.ts +2 -4
- package/dist/plugins/javascript/types.d.ts.map +1 -1
- package/dist/plugins/javascript/types.js +4 -12
- package/dist/plugins/javascript/types.js.map +1 -1
- package/dist/plugins/shared/constants.d.ts +32 -0
- package/dist/plugins/shared/constants.d.ts.map +1 -0
- package/dist/plugins/shared/constants.js +78 -0
- package/dist/plugins/shared/constants.js.map +1 -0
- package/dist/plugins/shared/index.d.ts +7 -0
- package/dist/plugins/shared/index.d.ts.map +1 -0
- package/dist/plugins/shared/index.js +9 -0
- package/dist/plugins/shared/index.js.map +1 -0
- package/dist/plugins/shared/parser-helpers.d.ts +109 -0
- package/dist/plugins/shared/parser-helpers.d.ts.map +1 -0
- package/dist/plugins/shared/parser-helpers.js +223 -0
- package/dist/plugins/shared/parser-helpers.js.map +1 -0
- package/dist/plugins/typescript/declaration-analyzer.d.ts +123 -0
- package/dist/plugins/typescript/declaration-analyzer.d.ts.map +1 -0
- package/dist/plugins/typescript/declaration-analyzer.js +474 -0
- package/dist/plugins/typescript/declaration-analyzer.js.map +1 -0
- package/dist/plugins/typescript/dependency-analyzer.d.ts +0 -6
- package/dist/plugins/typescript/dependency-analyzer.d.ts.map +1 -1
- package/dist/plugins/typescript/dependency-analyzer.js +0 -34
- package/dist/plugins/typescript/dependency-analyzer.js.map +1 -1
- package/dist/plugins/typescript/index.d.ts +5 -0
- package/dist/plugins/typescript/index.d.ts.map +1 -1
- package/dist/plugins/typescript/index.js +5 -0
- package/dist/plugins/typescript/index.js.map +1 -1
- package/dist/plugins/typescript/language-service.d.ts +93 -0
- package/dist/plugins/typescript/language-service.d.ts.map +1 -0
- package/dist/plugins/typescript/language-service.js +159 -0
- package/dist/plugins/typescript/language-service.js.map +1 -0
- package/dist/plugins/typescript/parser.d.ts +27 -34
- package/dist/plugins/typescript/parser.d.ts.map +1 -1
- package/dist/plugins/typescript/parser.js +74 -429
- package/dist/plugins/typescript/parser.js.map +1 -1
- package/dist/plugins/typescript/pattern-analyzer.d.ts +59 -0
- package/dist/plugins/typescript/pattern-analyzer.d.ts.map +1 -0
- package/dist/plugins/typescript/pattern-analyzer.js +179 -0
- package/dist/plugins/typescript/pattern-analyzer.js.map +1 -0
- package/dist/plugins/typescript/reference-finder.d.ts +51 -0
- package/dist/plugins/typescript/reference-finder.d.ts.map +1 -0
- package/dist/plugins/typescript/reference-finder.js +214 -0
- package/dist/plugins/typescript/reference-finder.js.map +1 -0
- package/dist/plugins/typescript/scope-analyzer.d.ts +61 -0
- package/dist/plugins/typescript/scope-analyzer.d.ts.map +1 -0
- package/dist/plugins/typescript/scope-analyzer.js +300 -0
- package/dist/plugins/typescript/scope-analyzer.js.map +1 -0
- package/dist/plugins/typescript/symbol-extractor.d.ts +5 -0
- package/dist/plugins/typescript/symbol-extractor.d.ts.map +1 -1
- package/dist/plugins/typescript/symbol-extractor.js +25 -0
- package/dist/plugins/typescript/symbol-extractor.js.map +1 -1
- package/dist/plugins/typescript/types.d.ts +2 -4
- package/dist/plugins/typescript/types.d.ts.map +1 -1
- package/dist/plugins/typescript/types.js +4 -12
- package/dist/plugins/typescript/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript Language Service 管理模組
|
|
3
|
+
* 提供 Language Service 初始化、檔案管理與符號位置查詢
|
|
4
|
+
*/
|
|
5
|
+
import * as ts from 'typescript';
|
|
6
|
+
import type { Disposable } from '../../shared/utils/memory-monitor.js';
|
|
7
|
+
import type { TypeScriptSymbol } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* 檔案資訊
|
|
10
|
+
*/
|
|
11
|
+
interface FileInfo {
|
|
12
|
+
version: number;
|
|
13
|
+
content: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Language Service Manager 介面
|
|
17
|
+
*/
|
|
18
|
+
export interface ILanguageServiceManager extends Disposable {
|
|
19
|
+
/** 取得 Language Service(可能為 null) */
|
|
20
|
+
readonly languageService: ts.LanguageService | null;
|
|
21
|
+
/** 取得 Language Service Host(可能為 null) */
|
|
22
|
+
readonly languageServiceHost: ts.LanguageServiceHost | null;
|
|
23
|
+
/** 取得檔案 Map */
|
|
24
|
+
readonly files: ReadonlyMap<string, FileInfo>;
|
|
25
|
+
/**
|
|
26
|
+
* 確保 Language Service 已初始化
|
|
27
|
+
* @param sourceFile 來源檔案
|
|
28
|
+
*/
|
|
29
|
+
ensureInitialized(sourceFile: ts.SourceFile): void;
|
|
30
|
+
/**
|
|
31
|
+
* 更新檔案內容
|
|
32
|
+
* @param fileName 檔案名稱
|
|
33
|
+
* @param content 檔案內容
|
|
34
|
+
*/
|
|
35
|
+
updateFile(fileName: string, content: string): void;
|
|
36
|
+
/**
|
|
37
|
+
* 根據檔案名稱取得 SourceFile
|
|
38
|
+
* @param fileName 檔案名稱
|
|
39
|
+
*/
|
|
40
|
+
getSourceFileFromFileName(fileName: string): ts.SourceFile | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* 取得符號在檔案中的位置
|
|
43
|
+
* @param symbol TypeScript 符號
|
|
44
|
+
* @param sourceFile 來源檔案
|
|
45
|
+
* @param getIdentifierFromSymbolNode 取得識別符的函式
|
|
46
|
+
*/
|
|
47
|
+
getSymbolPosition(symbol: TypeScriptSymbol, sourceFile: ts.SourceFile, getIdentifierFromSymbolNode: (node: ts.Node) => ts.Identifier | undefined): number | undefined;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Language Service Manager 實作
|
|
51
|
+
* 管理 TypeScript Language Service 生命週期
|
|
52
|
+
*/
|
|
53
|
+
export declare class LanguageServiceManager implements ILanguageServiceManager {
|
|
54
|
+
private _languageService;
|
|
55
|
+
private _languageServiceHost;
|
|
56
|
+
private _files;
|
|
57
|
+
private compilerOptions;
|
|
58
|
+
constructor(compilerOptions: ts.CompilerOptions);
|
|
59
|
+
get languageService(): ts.LanguageService | null;
|
|
60
|
+
get languageServiceHost(): ts.LanguageServiceHost | null;
|
|
61
|
+
get files(): ReadonlyMap<string, FileInfo>;
|
|
62
|
+
/**
|
|
63
|
+
* 確保 Language Service 已初始化
|
|
64
|
+
*/
|
|
65
|
+
ensureInitialized(sourceFile: ts.SourceFile): void;
|
|
66
|
+
/**
|
|
67
|
+
* 建立 Language Service Host
|
|
68
|
+
*/
|
|
69
|
+
private createLanguageServiceHost;
|
|
70
|
+
/**
|
|
71
|
+
* 更新檔案內容
|
|
72
|
+
*/
|
|
73
|
+
updateFile(fileName: string, content: string): void;
|
|
74
|
+
/**
|
|
75
|
+
* 根據檔案名稱取得 SourceFile
|
|
76
|
+
*/
|
|
77
|
+
getSourceFileFromFileName(fileName: string): ts.SourceFile | undefined;
|
|
78
|
+
/**
|
|
79
|
+
* 取得符號在檔案中的位置
|
|
80
|
+
*/
|
|
81
|
+
getSymbolPosition(symbol: TypeScriptSymbol, sourceFile: ts.SourceFile, getIdentifierFromSymbolNode: (node: ts.Node) => ts.Identifier | undefined): number | undefined;
|
|
82
|
+
/**
|
|
83
|
+
* 釋放資源
|
|
84
|
+
*/
|
|
85
|
+
dispose(): Promise<void>;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* 建立 Language Service Manager 實例
|
|
89
|
+
* @param compilerOptions TypeScript 編譯器選項
|
|
90
|
+
*/
|
|
91
|
+
export declare function createLanguageServiceManager(compilerOptions: ts.CompilerOptions): ILanguageServiceManager;
|
|
92
|
+
export {};
|
|
93
|
+
//# sourceMappingURL=language-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-service.d.ts","sourceRoot":"","sources":["../../../src/plugins/typescript/language-service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;GAEG;AACH,UAAU,QAAQ;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,UAAU;IACzD,oCAAoC;IACpC,QAAQ,CAAC,eAAe,EAAE,EAAE,CAAC,eAAe,GAAG,IAAI,CAAC;IAEpD,yCAAyC;IACzC,QAAQ,CAAC,mBAAmB,EAAE,EAAE,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAE5D,eAAe;IACf,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAE9C;;;OAGG;IACH,iBAAiB,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC;IAEnD;;;;OAIG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpD;;;OAGG;IACH,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,GAAG,SAAS,CAAC;IAEvE;;;;;OAKG;IACH,iBAAiB,CACf,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,2BAA2B,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,GAAG,SAAS,GACxE,MAAM,GAAG,SAAS,CAAC;CACvB;AAED;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,uBAAuB;IACpE,OAAO,CAAC,gBAAgB,CAAmC;IAC3D,OAAO,CAAC,oBAAoB,CAAuC;IACnE,OAAO,CAAC,MAAM,CAAoC;IAClD,OAAO,CAAC,eAAe,CAAqB;gBAEhC,eAAe,EAAE,EAAE,CAAC,eAAe;IAI/C,IAAI,eAAe,IAAI,EAAE,CAAC,eAAe,GAAG,IAAI,CAE/C;IAED,IAAI,mBAAmB,IAAI,EAAE,CAAC,mBAAmB,GAAG,IAAI,CAEvD;IAED,IAAI,KAAK,IAAI,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAEzC;IAED;;OAEG;IACH,iBAAiB,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,IAAI;IAoBlD;;OAEG;IACH,OAAO,CAAC,yBAAyB;IA0DjC;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAYnD;;OAEG;IACH,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,GAAG,SAAS;IAQtE;;OAEG;IACH,iBAAiB,CACf,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,2BAA2B,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,GAAG,SAAS,GACxE,MAAM,GAAG,SAAS;IAQrB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAa/B;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,eAAe,EAAE,EAAE,CAAC,eAAe,GAClC,uBAAuB,CAEzB"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript Language Service 管理模組
|
|
3
|
+
* 提供 Language Service 初始化、檔案管理與符號位置查詢
|
|
4
|
+
*/
|
|
5
|
+
import * as ts from 'typescript';
|
|
6
|
+
/**
|
|
7
|
+
* Language Service Manager 實作
|
|
8
|
+
* 管理 TypeScript Language Service 生命週期
|
|
9
|
+
*/
|
|
10
|
+
export class LanguageServiceManager {
|
|
11
|
+
_languageService = null;
|
|
12
|
+
_languageServiceHost = null;
|
|
13
|
+
_files = new Map();
|
|
14
|
+
compilerOptions;
|
|
15
|
+
constructor(compilerOptions) {
|
|
16
|
+
this.compilerOptions = compilerOptions;
|
|
17
|
+
}
|
|
18
|
+
get languageService() {
|
|
19
|
+
return this._languageService;
|
|
20
|
+
}
|
|
21
|
+
get languageServiceHost() {
|
|
22
|
+
return this._languageServiceHost;
|
|
23
|
+
}
|
|
24
|
+
get files() {
|
|
25
|
+
return this._files;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 確保 Language Service 已初始化
|
|
29
|
+
*/
|
|
30
|
+
ensureInitialized(sourceFile) {
|
|
31
|
+
if (this._languageService) {
|
|
32
|
+
// 更新檔案內容
|
|
33
|
+
this.updateFile(sourceFile.fileName, sourceFile.text);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
// 添加當前檔案到檔案列表
|
|
37
|
+
this.updateFile(sourceFile.fileName, sourceFile.text);
|
|
38
|
+
// 建立 Language Service Host
|
|
39
|
+
this._languageServiceHost = this.createLanguageServiceHost(sourceFile);
|
|
40
|
+
// 建立 Language Service
|
|
41
|
+
this._languageService = ts.createLanguageService(this._languageServiceHost, ts.createDocumentRegistry());
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 建立 Language Service Host
|
|
45
|
+
*/
|
|
46
|
+
createLanguageServiceHost(sourceFile) {
|
|
47
|
+
return {
|
|
48
|
+
getScriptFileNames: () => {
|
|
49
|
+
const fileNames = Array.from(this._files.keys());
|
|
50
|
+
// 確保包含當前檔案
|
|
51
|
+
if (!fileNames.includes(sourceFile.fileName)) {
|
|
52
|
+
fileNames.push(sourceFile.fileName);
|
|
53
|
+
}
|
|
54
|
+
return fileNames;
|
|
55
|
+
},
|
|
56
|
+
getScriptVersion: (fileName) => {
|
|
57
|
+
const file = this._files.get(fileName);
|
|
58
|
+
return file ? String(file.version) : '0';
|
|
59
|
+
},
|
|
60
|
+
getScriptSnapshot: (fileName) => {
|
|
61
|
+
const file = this._files.get(fileName);
|
|
62
|
+
if (file) {
|
|
63
|
+
return ts.ScriptSnapshot.fromString(file.content);
|
|
64
|
+
}
|
|
65
|
+
// 嘗試讀取實際檔案
|
|
66
|
+
try {
|
|
67
|
+
const content = ts.sys.readFile(fileName);
|
|
68
|
+
if (content) {
|
|
69
|
+
return ts.ScriptSnapshot.fromString(content);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
// 忽略錯誤
|
|
74
|
+
}
|
|
75
|
+
return undefined;
|
|
76
|
+
},
|
|
77
|
+
getCurrentDirectory: () => process.cwd(),
|
|
78
|
+
getCompilationSettings: () => ({
|
|
79
|
+
...this.compilerOptions,
|
|
80
|
+
// 確保啟用必要的選項
|
|
81
|
+
allowNonTsExtensions: true,
|
|
82
|
+
noResolve: false,
|
|
83
|
+
noLib: false,
|
|
84
|
+
lib: this.compilerOptions.lib || ['lib.es2020.d.ts']
|
|
85
|
+
}),
|
|
86
|
+
getDefaultLibFileName: (options) => ts.getDefaultLibFilePath(options),
|
|
87
|
+
fileExists: (fileName) => {
|
|
88
|
+
return this._files.has(fileName) || (ts.sys.fileExists ? ts.sys.fileExists(fileName) : false);
|
|
89
|
+
},
|
|
90
|
+
readFile: (fileName) => {
|
|
91
|
+
const file = this._files.get(fileName);
|
|
92
|
+
if (file) {
|
|
93
|
+
return file.content;
|
|
94
|
+
}
|
|
95
|
+
return ts.sys.readFile ? ts.sys.readFile(fileName) : undefined;
|
|
96
|
+
},
|
|
97
|
+
readDirectory: ts.sys.readDirectory ? ts.sys.readDirectory : () => [],
|
|
98
|
+
getDirectories: ts.sys.getDirectories ? ts.sys.getDirectories : () => [],
|
|
99
|
+
directoryExists: ts.sys.directoryExists ? ts.sys.directoryExists : () => false,
|
|
100
|
+
realpath: ts.sys.realpath ? ts.sys.realpath : (path) => path,
|
|
101
|
+
getNewLine: () => '\n'
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* 更新檔案內容
|
|
106
|
+
*/
|
|
107
|
+
updateFile(fileName, content) {
|
|
108
|
+
const existing = this._files.get(fileName);
|
|
109
|
+
if (existing && existing.content === content) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
this._files.set(fileName, {
|
|
113
|
+
version: existing ? existing.version + 1 : 0,
|
|
114
|
+
content
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* 根據檔案名稱取得 SourceFile
|
|
119
|
+
*/
|
|
120
|
+
getSourceFileFromFileName(fileName) {
|
|
121
|
+
if (!this._languageService) {
|
|
122
|
+
return undefined;
|
|
123
|
+
}
|
|
124
|
+
const program = this._languageService.getProgram();
|
|
125
|
+
return program?.getSourceFile(fileName);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* 取得符號在檔案中的位置
|
|
129
|
+
*/
|
|
130
|
+
getSymbolPosition(symbol, sourceFile, getIdentifierFromSymbolNode) {
|
|
131
|
+
const identifier = getIdentifierFromSymbolNode(symbol.tsNode);
|
|
132
|
+
if (!identifier) {
|
|
133
|
+
return undefined;
|
|
134
|
+
}
|
|
135
|
+
return identifier.getStart(sourceFile);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* 釋放資源
|
|
139
|
+
*/
|
|
140
|
+
async dispose() {
|
|
141
|
+
// 清理 Language Service
|
|
142
|
+
if (this._languageService) {
|
|
143
|
+
this._languageService.dispose();
|
|
144
|
+
this._languageService = null;
|
|
145
|
+
}
|
|
146
|
+
// 清理 Language Service Host
|
|
147
|
+
this._languageServiceHost = null;
|
|
148
|
+
// 清理檔案快取
|
|
149
|
+
this._files.clear();
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* 建立 Language Service Manager 實例
|
|
154
|
+
* @param compilerOptions TypeScript 編譯器選項
|
|
155
|
+
*/
|
|
156
|
+
export function createLanguageServiceManager(compilerOptions) {
|
|
157
|
+
return new LanguageServiceManager(compilerOptions);
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=language-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-service.js","sourceRoot":"","sources":["../../../src/plugins/typescript/language-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* 實作 ParserPlugin 介面
|
|
4
4
|
*/
|
|
5
5
|
import * as ts from 'typescript';
|
|
6
|
-
import { ParserPlugin, CodeEdit, Definition, Usage, ValidationResult } from '../../infrastructure/parser/index.js';
|
|
6
|
+
import { ParserPlugin, CodeEdit, Definition, Usage, ValidationResult, type ImportDeclaration, type FormattedSignature, type Documentation, type PatternInfo, type ScopedFindReferencesOptions, type ScopedReference } from '../../infrastructure/parser/index.js';
|
|
7
7
|
import type { AST, Symbol, Reference, Dependency, Position, Range } from '../../shared/types/index.js';
|
|
8
8
|
import { type Disposable } from '../../shared/utils/memory-monitor.js';
|
|
9
9
|
/**
|
|
@@ -17,9 +17,11 @@ export declare class TypeScriptParser implements ParserPlugin, Disposable {
|
|
|
17
17
|
private symbolExtractor;
|
|
18
18
|
private dependencyAnalyzer;
|
|
19
19
|
private compilerOptions;
|
|
20
|
-
private
|
|
21
|
-
private
|
|
22
|
-
private
|
|
20
|
+
private languageServiceManager;
|
|
21
|
+
private scopeAnalyzer;
|
|
22
|
+
private declarationAnalyzer;
|
|
23
|
+
private patternAnalyzer;
|
|
24
|
+
private referenceFinder;
|
|
23
25
|
constructor(compilerOptions?: ts.CompilerOptions);
|
|
24
26
|
/**
|
|
25
27
|
* 解析 TypeScript 程式碼
|
|
@@ -49,7 +51,7 @@ export declare class TypeScriptParser implements ParserPlugin, Disposable {
|
|
|
49
51
|
/**
|
|
50
52
|
* 提取函式重構
|
|
51
53
|
*/
|
|
52
|
-
extractFunction(
|
|
54
|
+
extractFunction(_ast: AST, _selection: Range): Promise<CodeEdit[]>;
|
|
53
55
|
/**
|
|
54
56
|
* 查找定義
|
|
55
57
|
*/
|
|
@@ -86,18 +88,7 @@ export declare class TypeScriptParser implements ParserPlugin, Disposable {
|
|
|
86
88
|
private validateRenameInput;
|
|
87
89
|
private getScriptKind;
|
|
88
90
|
private getLanguageFromFilePath;
|
|
89
|
-
private getSyntacticDiagnostics;
|
|
90
91
|
private findNodeAtPosition;
|
|
91
|
-
private isReferenceToSymbol;
|
|
92
|
-
private getIdentifierFromSymbolNode;
|
|
93
|
-
private getNodeScope;
|
|
94
|
-
private isInSameScope;
|
|
95
|
-
private isScopeNode;
|
|
96
|
-
private getReferenceType;
|
|
97
|
-
/**
|
|
98
|
-
* 檢查節點是否位於 import 語句內
|
|
99
|
-
*/
|
|
100
|
-
private isInImportStatement;
|
|
101
92
|
private isRenameableNode;
|
|
102
93
|
private isDefinitionNode;
|
|
103
94
|
private isDeclarationNode;
|
|
@@ -107,36 +98,38 @@ export declare class TypeScriptParser implements ParserPlugin, Disposable {
|
|
|
107
98
|
private findSymbolAtPosition;
|
|
108
99
|
private isPositionInRange;
|
|
109
100
|
/**
|
|
110
|
-
*
|
|
111
|
-
*/
|
|
112
|
-
private ensureLanguageServiceInitialized;
|
|
113
|
-
/**
|
|
114
|
-
* 更新檔案內容
|
|
101
|
+
* 判斷檔案是否為測試檔案
|
|
115
102
|
*/
|
|
116
|
-
|
|
103
|
+
isTestFile(filePath: string): boolean;
|
|
117
104
|
/**
|
|
118
|
-
*
|
|
105
|
+
* 取得符號的完整宣告範圍(包含 JSDoc、裝飾器)
|
|
106
|
+
* 委託給 DeclarationAnalyzer
|
|
119
107
|
*/
|
|
120
|
-
|
|
108
|
+
getFullDeclarationRange(code: string, symbolName: string, symbolType: string, startLine: number): Range | null;
|
|
121
109
|
/**
|
|
122
|
-
*
|
|
110
|
+
* 解析程式碼中的所有 import 宣告
|
|
111
|
+
* 委託給 DeclarationAnalyzer
|
|
123
112
|
*/
|
|
124
|
-
|
|
113
|
+
getImportDeclarations(code: string): ImportDeclaration[] | null;
|
|
125
114
|
/**
|
|
126
|
-
*
|
|
115
|
+
* 格式化函數簽章
|
|
116
|
+
* 委託給 DeclarationAnalyzer
|
|
127
117
|
*/
|
|
128
|
-
|
|
118
|
+
formatSignature(code: string, functionName: string, line: number): FormattedSignature | null;
|
|
129
119
|
/**
|
|
130
|
-
*
|
|
120
|
+
* 提取符號的 JSDoc 文件註解
|
|
121
|
+
* 委託給 DeclarationAnalyzer
|
|
131
122
|
*/
|
|
132
|
-
|
|
123
|
+
getDocumentation(code: string, symbolName: string, symbolType: string, line: number): Documentation | null;
|
|
133
124
|
/**
|
|
134
|
-
*
|
|
125
|
+
* 識別程式碼中的設計模式
|
|
126
|
+
* 委託給 PatternAnalyzer
|
|
135
127
|
*/
|
|
136
|
-
|
|
128
|
+
identifyPatterns(code: string): PatternInfo[] | null;
|
|
137
129
|
/**
|
|
138
|
-
*
|
|
130
|
+
* 作用域感知的符號引用查找
|
|
131
|
+
* 委託給 ReferenceFinder
|
|
139
132
|
*/
|
|
140
|
-
|
|
133
|
+
findScopedReferences(code: string, symbolName: string, options?: ScopedFindReferencesOptions): ScopedReference[] | null;
|
|
141
134
|
}
|
|
142
135
|
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/plugins/typescript/parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,KAAK,EACL,gBAAgB,
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/plugins/typescript/parser.ts"],"names":[],"mappings":"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"}
|