agent-ide 0.7.6 → 0.8.1

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 (116) hide show
  1. package/dist/core/deadcode/dead-code-remover.d.ts +27 -9
  2. package/dist/core/deadcode/dead-code-remover.d.ts.map +1 -1
  3. package/dist/core/deadcode/dead-code-remover.js +100 -26
  4. package/dist/core/deadcode/dead-code-remover.js.map +1 -1
  5. package/dist/core/move/import-resolver.d.ts +0 -3
  6. package/dist/core/move/import-resolver.d.ts.map +1 -1
  7. package/dist/core/move/import-resolver.js +0 -10
  8. package/dist/core/move/import-resolver.js.map +1 -1
  9. package/dist/core/move-member/index.d.ts +1 -1
  10. package/dist/core/move-member/index.d.ts.map +1 -1
  11. package/dist/core/move-member/index.js.map +1 -1
  12. package/dist/core/move-member/move-member-service.d.ts +2 -0
  13. package/dist/core/move-member/move-member-service.d.ts.map +1 -1
  14. package/dist/core/move-member/move-member-service.js +24 -31
  15. package/dist/core/move-member/move-member-service.js.map +1 -1
  16. package/dist/core/move-member/types.d.ts +48 -23
  17. package/dist/core/move-member/types.d.ts.map +1 -1
  18. package/dist/core/move-member/types.js.map +1 -1
  19. package/dist/core/shared/symbol-finder.d.ts +39 -11
  20. package/dist/core/shared/symbol-finder.d.ts.map +1 -1
  21. package/dist/core/shared/symbol-finder.js +101 -71
  22. package/dist/core/shared/symbol-finder.js.map +1 -1
  23. package/dist/core/snapshot/snapshot-generator.d.ts +11 -0
  24. package/dist/core/snapshot/snapshot-generator.d.ts.map +1 -1
  25. package/dist/core/snapshot/snapshot-generator.js +117 -5
  26. package/dist/core/snapshot/snapshot-generator.js.map +1 -1
  27. package/dist/infrastructure/parser/base.d.ts +2 -6
  28. package/dist/infrastructure/parser/base.d.ts.map +1 -1
  29. package/dist/infrastructure/parser/base.js +1 -16
  30. package/dist/infrastructure/parser/base.js.map +1 -1
  31. package/dist/infrastructure/parser/index.d.ts +2 -0
  32. package/dist/infrastructure/parser/index.d.ts.map +1 -1
  33. package/dist/infrastructure/parser/index.js +1 -0
  34. package/dist/infrastructure/parser/index.js.map +1 -1
  35. package/dist/infrastructure/parser/interface.d.ts +197 -0
  36. package/dist/infrastructure/parser/interface.d.ts.map +1 -1
  37. package/dist/infrastructure/parser/interface.js +13 -0
  38. package/dist/infrastructure/parser/interface.js.map +1 -1
  39. package/dist/interfaces/cli/commands/deadcode.command.js +7 -1
  40. package/dist/interfaces/cli/commands/deadcode.command.js.map +1 -1
  41. package/dist/interfaces/cli/commands/move-member.command.d.ts.map +1 -1
  42. package/dist/interfaces/cli/commands/move-member.command.js +6 -11
  43. package/dist/interfaces/cli/commands/move-member.command.js.map +1 -1
  44. package/dist/plugins/javascript/code-analyzer.d.ts +68 -0
  45. package/dist/plugins/javascript/code-analyzer.d.ts.map +1 -0
  46. package/dist/plugins/javascript/code-analyzer.js +302 -0
  47. package/dist/plugins/javascript/code-analyzer.js.map +1 -0
  48. package/dist/plugins/javascript/declaration-analyzer.d.ts +58 -0
  49. package/dist/plugins/javascript/declaration-analyzer.d.ts.map +1 -0
  50. package/dist/plugins/javascript/declaration-analyzer.js +374 -0
  51. package/dist/plugins/javascript/declaration-analyzer.js.map +1 -0
  52. package/dist/plugins/javascript/parser.d.ts +21 -36
  53. package/dist/plugins/javascript/parser.d.ts.map +1 -1
  54. package/dist/plugins/javascript/parser.js +55 -321
  55. package/dist/plugins/javascript/parser.js.map +1 -1
  56. package/dist/plugins/javascript/pattern-analyzer.d.ts +33 -0
  57. package/dist/plugins/javascript/pattern-analyzer.d.ts.map +1 -0
  58. package/dist/plugins/javascript/pattern-analyzer.js +142 -0
  59. package/dist/plugins/javascript/pattern-analyzer.js.map +1 -0
  60. package/dist/plugins/javascript/reference-finder.d.ts +38 -0
  61. package/dist/plugins/javascript/reference-finder.d.ts.map +1 -0
  62. package/dist/plugins/javascript/reference-finder.js +210 -0
  63. package/dist/plugins/javascript/reference-finder.js.map +1 -0
  64. package/dist/plugins/javascript/types.d.ts +2 -4
  65. package/dist/plugins/javascript/types.d.ts.map +1 -1
  66. package/dist/plugins/javascript/types.js +4 -12
  67. package/dist/plugins/javascript/types.js.map +1 -1
  68. package/dist/plugins/shared/constants.d.ts +32 -0
  69. package/dist/plugins/shared/constants.d.ts.map +1 -0
  70. package/dist/plugins/shared/constants.js +78 -0
  71. package/dist/plugins/shared/constants.js.map +1 -0
  72. package/dist/plugins/shared/index.d.ts +7 -0
  73. package/dist/plugins/shared/index.d.ts.map +1 -0
  74. package/dist/plugins/shared/index.js +9 -0
  75. package/dist/plugins/shared/index.js.map +1 -0
  76. package/dist/plugins/shared/parser-helpers.d.ts +109 -0
  77. package/dist/plugins/shared/parser-helpers.d.ts.map +1 -0
  78. package/dist/plugins/shared/parser-helpers.js +223 -0
  79. package/dist/plugins/shared/parser-helpers.js.map +1 -0
  80. package/dist/plugins/typescript/declaration-analyzer.d.ts +123 -0
  81. package/dist/plugins/typescript/declaration-analyzer.d.ts.map +1 -0
  82. package/dist/plugins/typescript/declaration-analyzer.js +484 -0
  83. package/dist/plugins/typescript/declaration-analyzer.js.map +1 -0
  84. package/dist/plugins/typescript/dependency-analyzer.d.ts +0 -6
  85. package/dist/plugins/typescript/dependency-analyzer.d.ts.map +1 -1
  86. package/dist/plugins/typescript/dependency-analyzer.js +0 -34
  87. package/dist/plugins/typescript/dependency-analyzer.js.map +1 -1
  88. package/dist/plugins/typescript/index.d.ts +5 -0
  89. package/dist/plugins/typescript/index.d.ts.map +1 -1
  90. package/dist/plugins/typescript/index.js +5 -0
  91. package/dist/plugins/typescript/index.js.map +1 -1
  92. package/dist/plugins/typescript/language-service.d.ts +93 -0
  93. package/dist/plugins/typescript/language-service.d.ts.map +1 -0
  94. package/dist/plugins/typescript/language-service.js +159 -0
  95. package/dist/plugins/typescript/language-service.js.map +1 -0
  96. package/dist/plugins/typescript/parser.d.ts +27 -34
  97. package/dist/plugins/typescript/parser.d.ts.map +1 -1
  98. package/dist/plugins/typescript/parser.js +74 -429
  99. package/dist/plugins/typescript/parser.js.map +1 -1
  100. package/dist/plugins/typescript/pattern-analyzer.d.ts +59 -0
  101. package/dist/plugins/typescript/pattern-analyzer.d.ts.map +1 -0
  102. package/dist/plugins/typescript/pattern-analyzer.js +179 -0
  103. package/dist/plugins/typescript/pattern-analyzer.js.map +1 -0
  104. package/dist/plugins/typescript/reference-finder.d.ts +51 -0
  105. package/dist/plugins/typescript/reference-finder.d.ts.map +1 -0
  106. package/dist/plugins/typescript/reference-finder.js +214 -0
  107. package/dist/plugins/typescript/reference-finder.js.map +1 -0
  108. package/dist/plugins/typescript/scope-analyzer.d.ts +61 -0
  109. package/dist/plugins/typescript/scope-analyzer.d.ts.map +1 -0
  110. package/dist/plugins/typescript/scope-analyzer.js +300 -0
  111. package/dist/plugins/typescript/scope-analyzer.js.map +1 -0
  112. package/dist/plugins/typescript/types.d.ts +2 -4
  113. package/dist/plugins/typescript/types.d.ts.map +1 -1
  114. package/dist/plugins/typescript/types.js +4 -12
  115. package/dist/plugins/typescript/types.js.map +1 -1
  116. 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 languageService;
21
- private languageServiceHost;
22
- private files;
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(ast: AST, selection: Range): Promise<CodeEdit[]>;
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
- * 初始化 Language Service
111
- */
112
- private ensureLanguageServiceInitialized;
113
- /**
114
- * 更新檔案內容
101
+ * 判斷檔案是否為測試檔案
115
102
  */
116
- private updateFile;
103
+ isTestFile(filePath: string): boolean;
117
104
  /**
118
- * 取得符號在檔案中的位置
105
+ * 取得符號的完整宣告範圍(包含 JSDoc、裝飾器)
106
+ * 委託給 DeclarationAnalyzer
119
107
  */
120
- private getSymbolPosition;
108
+ getFullDeclarationRange(code: string, symbolName: string, symbolType: string, startLine: number): Range | null;
121
109
  /**
122
- * 根據檔案名稱取得 SourceFile
110
+ * 解析程式碼中的所有 import 宣告
111
+ * 委託給 DeclarationAnalyzer
123
112
  */
124
- private getSourceFileFromFileName;
113
+ getImportDeclarations(code: string): ImportDeclaration[] | null;
125
114
  /**
126
- * 取得節點的作用域容器
115
+ * 格式化函數簽章
116
+ * 委託給 DeclarationAnalyzer
127
117
  */
128
- private getScopeContainer;
118
+ formatSignature(code: string, functionName: string, line: number): FormattedSignature | null;
129
119
  /**
130
- * 檢查節點是否在指定作用域鏈內
120
+ * 提取符號的 JSDoc 文件註解
121
+ * 委託給 DeclarationAnalyzer
131
122
  */
132
- private isInScopeChain;
123
+ getDocumentation(code: string, symbolName: string, symbolType: string, line: number): Documentation | null;
133
124
  /**
134
- * 檢查符號是否被遮蔽
125
+ * 識別程式碼中的設計模式
126
+ * 委託給 PatternAnalyzer
135
127
  */
136
- private isShadowed;
128
+ identifyPatterns(code: string): PatternInfo[] | null;
137
129
  /**
138
- * 判斷檔案是否為測試檔案
130
+ * 作用域感知的符號引用查找
131
+ * 委託給 ReferenceFinder
139
132
  */
140
- isTestFile(filePath: string): boolean;
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":"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"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/plugins/typescript/parser.ts"],"names":[],"mappings":"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"}