agent-ide 0.1.6 → 0.1.8
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/analysis/complexity-analyzer.d.ts.map +1 -1
- package/dist/core/analysis/complexity-analyzer.js +3 -2
- package/dist/core/analysis/complexity-analyzer.js.map +1 -1
- package/dist/core/analysis/dead-code-detector.d.ts +34 -10
- package/dist/core/analysis/dead-code-detector.d.ts.map +1 -1
- package/dist/core/analysis/dead-code-detector.js +121 -82
- package/dist/core/analysis/dead-code-detector.js.map +1 -1
- package/dist/core/analysis/index.d.ts +1 -1
- package/dist/core/analysis/index.d.ts.map +1 -1
- package/dist/core/dependency/dependency-analyzer.d.ts.map +1 -1
- package/dist/core/dependency/dependency-analyzer.js +11 -4
- package/dist/core/dependency/dependency-analyzer.js.map +1 -1
- package/dist/core/indexing/index-engine.d.ts +9 -0
- package/dist/core/indexing/index-engine.d.ts.map +1 -1
- package/dist/core/indexing/index-engine.js +60 -1
- package/dist/core/indexing/index-engine.js.map +1 -1
- package/dist/core/move/import-resolver.d.ts +8 -0
- package/dist/core/move/import-resolver.d.ts.map +1 -1
- package/dist/core/move/import-resolver.js +62 -1
- package/dist/core/move/import-resolver.js.map +1 -1
- package/dist/core/move/move-service.d.ts +9 -0
- package/dist/core/move/move-service.d.ts.map +1 -1
- package/dist/core/move/move-service.js +105 -8
- package/dist/core/move/move-service.js.map +1 -1
- package/dist/core/move/types.d.ts +1 -1
- package/dist/core/move/types.d.ts.map +1 -1
- package/dist/core/refactor/extract-function.d.ts +26 -4
- package/dist/core/refactor/extract-function.d.ts.map +1 -1
- package/dist/core/refactor/extract-function.js +300 -48
- package/dist/core/refactor/extract-function.js.map +1 -1
- package/dist/core/rename/reference-updater.d.ts +10 -10
- package/dist/core/rename/reference-updater.d.ts.map +1 -1
- package/dist/core/rename/reference-updater.js +84 -79
- package/dist/core/rename/reference-updater.js.map +1 -1
- package/dist/core/rename/rename-engine.d.ts.map +1 -1
- package/dist/core/rename/rename-engine.js +68 -17
- package/dist/core/rename/rename-engine.js.map +1 -1
- package/dist/infrastructure/parser/base.d.ts +10 -0
- package/dist/infrastructure/parser/base.d.ts.map +1 -1
- package/dist/infrastructure/parser/base.js +39 -0
- package/dist/infrastructure/parser/base.js.map +1 -1
- package/dist/infrastructure/parser/interface.d.ts +12 -0
- package/dist/infrastructure/parser/interface.d.ts.map +1 -1
- package/dist/infrastructure/parser/interface.js +2 -0
- package/dist/infrastructure/parser/interface.js.map +1 -1
- package/dist/interfaces/cli/cli.d.ts +17 -1
- package/dist/interfaces/cli/cli.d.ts.map +1 -1
- package/dist/interfaces/cli/cli.js +220 -43
- package/dist/interfaces/cli/cli.js.map +1 -1
- package/dist/interfaces/cli/output-formatter.d.ts +55 -0
- package/dist/interfaces/cli/output-formatter.d.ts.map +1 -0
- package/dist/interfaces/cli/output-formatter.js +195 -0
- package/dist/interfaces/cli/output-formatter.js.map +1 -0
- package/dist/plugins/javascript/parser.d.ts +10 -0
- package/dist/plugins/javascript/parser.d.ts.map +1 -1
- package/dist/plugins/javascript/parser.js +62 -0
- package/dist/plugins/javascript/parser.js.map +1 -1
- package/dist/plugins/typescript/parser.d.ts +10 -0
- package/dist/plugins/typescript/parser.d.ts.map +1 -1
- package/dist/plugins/typescript/parser.js +59 -0
- package/dist/plugins/typescript/parser.js.map +1 -1
- package/package.json +8 -14
- package/dist/core/performance/analyzer.d.ts +0 -62
- package/dist/core/performance/analyzer.d.ts.map +0 -1
- package/dist/core/performance/analyzer.js +0 -378
- package/dist/core/performance/analyzer.js.map +0 -1
- package/dist/core/performance/cache-manager.d.ts +0 -161
- package/dist/core/performance/cache-manager.d.ts.map +0 -1
- package/dist/core/performance/cache-manager.js +0 -375
- package/dist/core/performance/cache-manager.js.map +0 -1
- package/dist/core/performance/index.d.ts +0 -14
- package/dist/core/performance/index.d.ts.map +0 -1
- package/dist/core/performance/index.js +0 -17
- package/dist/core/performance/index.js.map +0 -1
- package/dist/core/performance/interfaces.d.ts +0 -188
- package/dist/core/performance/interfaces.d.ts.map +0 -1
- package/dist/core/performance/interfaces.js +0 -17
- package/dist/core/performance/interfaces.js.map +0 -1
- package/dist/core/performance/memory-manager.d.ts +0 -176
- package/dist/core/performance/memory-manager.d.ts.map +0 -1
- package/dist/core/performance/memory-manager.js +0 -364
- package/dist/core/performance/memory-manager.js.map +0 -1
- package/dist/core/performance/monitor.d.ts +0 -92
- package/dist/core/performance/monitor.d.ts.map +0 -1
- package/dist/core/performance/monitor.js +0 -228
- package/dist/core/performance/monitor.js.map +0 -1
- package/dist/plugins/swift/index.d.ts +0 -11
- package/dist/plugins/swift/index.d.ts.map +0 -1
- package/dist/plugins/swift/index.js +0 -15
- package/dist/plugins/swift/index.js.map +0 -1
- package/dist/plugins/swift/parser.d.ts +0 -98
- package/dist/plugins/swift/parser.d.ts.map +0 -1
- package/dist/plugins/swift/parser.js +0 -612
- package/dist/plugins/swift/parser.js.map +0 -1
- package/dist/plugins/swift/types.d.ts +0 -196
- package/dist/plugins/swift/types.d.ts.map +0 -1
- package/dist/plugins/swift/types.js +0 -268
- package/dist/plugins/swift/types.js.map +0 -1
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* 提取函式重構器
|
|
3
3
|
* 將選取的程式碼片段提取為獨立函式
|
|
4
4
|
*/
|
|
5
|
+
import * as ts from 'typescript';
|
|
5
6
|
export interface Range {
|
|
6
7
|
start: {
|
|
7
8
|
line: number;
|
|
@@ -33,6 +34,8 @@ export interface ExtractionResult {
|
|
|
33
34
|
returnType?: string;
|
|
34
35
|
errors: string[];
|
|
35
36
|
warnings: string[];
|
|
37
|
+
targetFileContent?: string;
|
|
38
|
+
importStatement?: string;
|
|
36
39
|
}
|
|
37
40
|
export interface ASTNode {
|
|
38
41
|
type: string;
|
|
@@ -52,6 +55,8 @@ export interface ASTNode {
|
|
|
52
55
|
name?: string;
|
|
53
56
|
value?: any;
|
|
54
57
|
code?: string;
|
|
58
|
+
tsNode?: ts.Node;
|
|
59
|
+
tsSourceFile?: ts.SourceFile;
|
|
55
60
|
}
|
|
56
61
|
export interface ExtractConfig {
|
|
57
62
|
functionName?: string;
|
|
@@ -59,21 +64,26 @@ export interface ExtractConfig {
|
|
|
59
64
|
preserveFormatting: boolean;
|
|
60
65
|
validateExtraction: boolean;
|
|
61
66
|
insertionPoint?: 'before' | 'after' | 'top';
|
|
67
|
+
targetFile?: string;
|
|
68
|
+
sourceFile?: string;
|
|
62
69
|
}
|
|
63
70
|
/**
|
|
64
71
|
* 函式提取分析器
|
|
65
72
|
* 分析選取的程式碼是否適合提取為函式
|
|
66
73
|
*/
|
|
67
74
|
export declare class ExtractionAnalyzer {
|
|
75
|
+
private parser;
|
|
76
|
+
constructor();
|
|
68
77
|
/**
|
|
69
78
|
* 分析程式碼片段的可提取性
|
|
70
79
|
*/
|
|
71
|
-
analyze(code: string, selection: Range): {
|
|
80
|
+
analyze(code: string, selection: Range): Promise<{
|
|
72
81
|
canExtract: boolean;
|
|
73
82
|
issues: string[];
|
|
74
83
|
variables: VariableInfo[];
|
|
75
84
|
dependencies: string[];
|
|
76
|
-
|
|
85
|
+
returnType?: string;
|
|
86
|
+
}>;
|
|
77
87
|
/**
|
|
78
88
|
* 檢查提取限制
|
|
79
89
|
*/
|
|
@@ -83,7 +93,7 @@ export declare class ExtractionAnalyzer {
|
|
|
83
93
|
*/
|
|
84
94
|
private analyzeVariables;
|
|
85
95
|
/**
|
|
86
|
-
*
|
|
96
|
+
* 使用 TypeScript Parser 解析程式碼
|
|
87
97
|
*/
|
|
88
98
|
private parseCode;
|
|
89
99
|
/**
|
|
@@ -91,9 +101,17 @@ export declare class ExtractionAnalyzer {
|
|
|
91
101
|
*/
|
|
92
102
|
private traverse;
|
|
93
103
|
/**
|
|
94
|
-
* 檢查是否包含 return
|
|
104
|
+
* 檢查是否包含 return 語句(使用真實 TypeScript AST)
|
|
95
105
|
*/
|
|
96
106
|
private containsReturn;
|
|
107
|
+
/**
|
|
108
|
+
* 推導返回值型別
|
|
109
|
+
*/
|
|
110
|
+
private extractReturnType;
|
|
111
|
+
/**
|
|
112
|
+
* 從表達式推導型別
|
|
113
|
+
*/
|
|
114
|
+
private inferTypeFromExpression;
|
|
97
115
|
/**
|
|
98
116
|
* 檢查是否包含跳躍語句
|
|
99
117
|
*/
|
|
@@ -147,6 +165,10 @@ export declare class FunctionExtractor {
|
|
|
147
165
|
* 產生編輯操作
|
|
148
166
|
*/
|
|
149
167
|
private generateEdits;
|
|
168
|
+
/**
|
|
169
|
+
* 跨檔案提取:將函式提取到獨立檔案
|
|
170
|
+
*/
|
|
171
|
+
private extractToSeparateFile;
|
|
150
172
|
/**
|
|
151
173
|
* 批次提取
|
|
152
174
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract-function.d.ts","sourceRoot":"","sources":["../../../src/core/refactor/extract-function.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"extract-function.d.ts","sourceRoot":"","sources":["../../../src/core/refactor/extract-function.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,15 +2,21 @@
|
|
|
2
2
|
* 提取函式重構器
|
|
3
3
|
* 將選取的程式碼片段提取為獨立函式
|
|
4
4
|
*/
|
|
5
|
+
import * as ts from 'typescript';
|
|
6
|
+
import { TypeScriptParser } from '../../plugins/typescript/parser.js';
|
|
5
7
|
/**
|
|
6
8
|
* 函式提取分析器
|
|
7
9
|
* 分析選取的程式碼是否適合提取為函式
|
|
8
10
|
*/
|
|
9
11
|
export class ExtractionAnalyzer {
|
|
12
|
+
parser;
|
|
13
|
+
constructor() {
|
|
14
|
+
this.parser = new TypeScriptParser();
|
|
15
|
+
}
|
|
10
16
|
/**
|
|
11
17
|
* 分析程式碼片段的可提取性
|
|
12
18
|
*/
|
|
13
|
-
analyze(code, selection) {
|
|
19
|
+
async analyze(code, selection) {
|
|
14
20
|
const issues = [];
|
|
15
21
|
const variables = [];
|
|
16
22
|
const dependencies = [];
|
|
@@ -20,7 +26,7 @@ export class ExtractionAnalyzer {
|
|
|
20
26
|
return { canExtract: false, issues, variables, dependencies };
|
|
21
27
|
}
|
|
22
28
|
// 解析 AST
|
|
23
|
-
const ast = this.parseCode(code);
|
|
29
|
+
const ast = await this.parseCode(code);
|
|
24
30
|
if (!ast) {
|
|
25
31
|
issues.push('程式碼解析失敗');
|
|
26
32
|
return { canExtract: false, issues, variables, dependencies };
|
|
@@ -32,11 +38,14 @@ export class ExtractionAnalyzer {
|
|
|
32
38
|
this.checkExtractionConstraints(ast, selection, issues);
|
|
33
39
|
// 分析依賴
|
|
34
40
|
dependencies.push(...this.findDependencies(ast));
|
|
41
|
+
// 推導返回值型別
|
|
42
|
+
const returnType = this.extractReturnType(ast);
|
|
35
43
|
return {
|
|
36
44
|
canExtract: issues.length === 0,
|
|
37
45
|
issues,
|
|
38
46
|
variables,
|
|
39
|
-
dependencies
|
|
47
|
+
dependencies,
|
|
48
|
+
returnType
|
|
40
49
|
};
|
|
41
50
|
}
|
|
42
51
|
/**
|
|
@@ -59,45 +68,47 @@ export class ExtractionAnalyzer {
|
|
|
59
68
|
}
|
|
60
69
|
// 檢查外部變數修改
|
|
61
70
|
if (ast.code) {
|
|
62
|
-
// 尋找所有變數賦值
|
|
63
|
-
const assignmentPattern = /\b([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=/g;
|
|
64
|
-
const assignments = [];
|
|
65
|
-
let match;
|
|
66
71
|
// 先找出所有宣告的變數
|
|
67
72
|
const declaredVars = new Set();
|
|
68
73
|
const declarationPattern = /(?:const|let|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;
|
|
69
|
-
|
|
70
|
-
|
|
74
|
+
let declMatch;
|
|
75
|
+
while ((declMatch = declarationPattern.exec(ast.code)) !== null) {
|
|
76
|
+
declaredVars.add(declMatch[1]);
|
|
71
77
|
}
|
|
72
|
-
//
|
|
73
|
-
|
|
78
|
+
// 然後找出所有賦值(簡化邏輯:只檢測真正的外部變數修改)
|
|
79
|
+
// 使用更精確的模式:變數名後面直接跟 = (中間只能有空白)
|
|
80
|
+
const simpleAssignmentPattern = /([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=(?!=)/g;
|
|
74
81
|
const uniqueAssignments = new Set();
|
|
75
|
-
|
|
76
|
-
|
|
82
|
+
let assignMatch;
|
|
83
|
+
while ((assignMatch = simpleAssignmentPattern.exec(ast.code)) !== null) {
|
|
84
|
+
const varName = assignMatch[1];
|
|
85
|
+
const position = assignMatch.index || 0;
|
|
86
|
+
const fullMatch = assignMatch[0]; // 例如 "varName ="
|
|
87
|
+
// 檢查完整匹配中是否包含型別註解
|
|
88
|
+
// 如果變數名前面有 ':' 字元,很可能是型別註解
|
|
89
|
+
const beforeVar = ast.code.substring(Math.max(0, position - 5), position);
|
|
90
|
+
if (beforeVar.includes(':') || beforeVar.includes('.')) {
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
// 檢查是否為變數宣告
|
|
94
|
+
const beforeDecl = ast.code.substring(Math.max(0, position - 10), position);
|
|
95
|
+
if (/(?:const|let|var|type|interface)\s+$/.test(beforeDecl)) {
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
77
98
|
// 檢查是否為外部變數(沒有在程式碼中宣告)
|
|
78
99
|
if (!declaredVars.has(varName) &&
|
|
79
|
-
!['return', 'function', 'if', 'else', 'for', 'while'].includes(varName)) {
|
|
80
|
-
|
|
81
|
-
const position = match.index || 0;
|
|
82
|
-
const beforeAssignment = ast.code.substring(Math.max(0, position - 10), position);
|
|
83
|
-
if (!/(?:const|let|var)\s+$/.test(beforeAssignment)) {
|
|
84
|
-
uniqueAssignments.add(varName); // 使用 Set 來避免重複
|
|
85
|
-
}
|
|
100
|
+
!['return', 'function', 'if', 'else', 'for', 'while', 'case'].includes(varName)) {
|
|
101
|
+
uniqueAssignments.add(varName);
|
|
86
102
|
}
|
|
87
103
|
}
|
|
88
|
-
//
|
|
104
|
+
// FIXME: 外部變數檢測使用正則表達式太不可靠,暫時禁用
|
|
105
|
+
// TODO: 未來使用真正的 TypeScript AST parser 改進
|
|
106
|
+
// 如果有多個不同的外部變數修改,發出警告但不阻止提取
|
|
89
107
|
const uniqueCount = uniqueAssignments.size;
|
|
90
108
|
if (uniqueCount > 1) {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
// 特殊情況:如果外部變數最後被 return,是允許的
|
|
95
|
-
const assignedVar = Array.from(uniqueAssignments)[0];
|
|
96
|
-
const returnPattern = new RegExp(`return\\s+${assignedVar}\\s*;?\\s*$`);
|
|
97
|
-
if (!returnPattern.test(ast.code)) {
|
|
98
|
-
// 只有當 return 的不是同一個變數時才拒絕
|
|
99
|
-
issues.push('無法提取:混合了返回語句和外部變數修改');
|
|
100
|
-
}
|
|
109
|
+
// 暫時只警告,不阻止
|
|
110
|
+
// const vars = Array.from(uniqueAssignments).join(', ');
|
|
111
|
+
// issues.push(`警告:可能有多個返回值 (檢測到: ${vars})`);
|
|
101
112
|
}
|
|
102
113
|
}
|
|
103
114
|
}
|
|
@@ -155,11 +166,32 @@ export class ExtractionAnalyzer {
|
|
|
155
166
|
return { variables };
|
|
156
167
|
}
|
|
157
168
|
/**
|
|
158
|
-
*
|
|
169
|
+
* 使用 TypeScript Parser 解析程式碼
|
|
159
170
|
*/
|
|
160
|
-
parseCode(code) {
|
|
171
|
+
async parseCode(code) {
|
|
161
172
|
try {
|
|
162
|
-
//
|
|
173
|
+
// 使用 TypeScript Parser 解析程式碼片段
|
|
174
|
+
// 為了解析片段,我們將它包裝在一個函式中以形成完整的語句
|
|
175
|
+
const wrappedCode = `function __extractedCode__() {\n${code}\n}`;
|
|
176
|
+
const virtualPath = 'virtual-extract.ts';
|
|
177
|
+
const tsAST = await this.parser.parse(wrappedCode, virtualPath);
|
|
178
|
+
const sourceFile = tsAST.tsSourceFile;
|
|
179
|
+
if (!sourceFile) {
|
|
180
|
+
return null;
|
|
181
|
+
}
|
|
182
|
+
// 找到我們包裝的函式內部的語句
|
|
183
|
+
let extractedStatements = null;
|
|
184
|
+
ts.forEachChild(sourceFile, (node) => {
|
|
185
|
+
if (ts.isFunctionDeclaration(node) && node.name?.text === '__extractedCode__') {
|
|
186
|
+
if (node.body) {
|
|
187
|
+
extractedStatements = node.body;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
if (!extractedStatements) {
|
|
192
|
+
return null;
|
|
193
|
+
}
|
|
194
|
+
// 建立我們的 ASTNode 結構(相容舊版介面)
|
|
163
195
|
return {
|
|
164
196
|
type: 'Program',
|
|
165
197
|
start: 0,
|
|
@@ -169,10 +201,13 @@ export class ExtractionAnalyzer {
|
|
|
169
201
|
end: { line: code.split('\n').length, column: 0 }
|
|
170
202
|
},
|
|
171
203
|
children: [],
|
|
172
|
-
code
|
|
204
|
+
code,
|
|
205
|
+
tsNode: extractedStatements, // 保存 TypeScript AST 節點
|
|
206
|
+
tsSourceFile: sourceFile // 保存 SourceFile 供型別檢查使用
|
|
173
207
|
};
|
|
174
208
|
}
|
|
175
209
|
catch (error) {
|
|
210
|
+
console.debug('Parse error:', error);
|
|
176
211
|
return null;
|
|
177
212
|
}
|
|
178
213
|
}
|
|
@@ -188,17 +223,131 @@ export class ExtractionAnalyzer {
|
|
|
188
223
|
}
|
|
189
224
|
}
|
|
190
225
|
/**
|
|
191
|
-
* 檢查是否包含 return
|
|
226
|
+
* 檢查是否包含 return 語句(使用真實 TypeScript AST)
|
|
192
227
|
*/
|
|
193
228
|
containsReturn(ast) {
|
|
229
|
+
if (!ast.tsNode) {
|
|
230
|
+
// 降級到舊邏輯
|
|
231
|
+
let hasReturn = false;
|
|
232
|
+
this.traverse(ast, (node) => {
|
|
233
|
+
if (node.type === 'ReturnStatement') {
|
|
234
|
+
hasReturn = true;
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
return hasReturn;
|
|
238
|
+
}
|
|
194
239
|
let hasReturn = false;
|
|
195
|
-
|
|
196
|
-
if (node
|
|
240
|
+
const visit = (node) => {
|
|
241
|
+
if (ts.isReturnStatement(node)) {
|
|
197
242
|
hasReturn = true;
|
|
243
|
+
return; // 找到就可以停止
|
|
198
244
|
}
|
|
199
|
-
|
|
245
|
+
ts.forEachChild(node, visit);
|
|
246
|
+
};
|
|
247
|
+
visit(ast.tsNode);
|
|
200
248
|
return hasReturn;
|
|
201
249
|
}
|
|
250
|
+
/**
|
|
251
|
+
* 推導返回值型別
|
|
252
|
+
*/
|
|
253
|
+
extractReturnType(ast) {
|
|
254
|
+
if (!ast.tsNode || !ast.tsSourceFile) {
|
|
255
|
+
// 降級:簡單檢查是否有 return
|
|
256
|
+
return this.containsReturn(ast) ? 'any' : 'void';
|
|
257
|
+
}
|
|
258
|
+
// 收集所有 return 語句的型別
|
|
259
|
+
const returnTypes = [];
|
|
260
|
+
let hasReturnWithoutValue = false;
|
|
261
|
+
const visit = (node) => {
|
|
262
|
+
if (ts.isReturnStatement(node)) {
|
|
263
|
+
if (node.expression) {
|
|
264
|
+
// 嘗試推導 return 表達式的型別
|
|
265
|
+
const type = this.inferTypeFromExpression(node.expression, ast.tsSourceFile);
|
|
266
|
+
returnTypes.push(type);
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
hasReturnWithoutValue = true;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
ts.forEachChild(node, visit);
|
|
273
|
+
};
|
|
274
|
+
visit(ast.tsNode);
|
|
275
|
+
// 決定最終返回型別
|
|
276
|
+
if (returnTypes.length === 0 && !hasReturnWithoutValue) {
|
|
277
|
+
return 'void';
|
|
278
|
+
}
|
|
279
|
+
if (hasReturnWithoutValue && returnTypes.length === 0) {
|
|
280
|
+
return 'void';
|
|
281
|
+
}
|
|
282
|
+
if (returnTypes.length === 0) {
|
|
283
|
+
return 'void';
|
|
284
|
+
}
|
|
285
|
+
// 如果所有返回型別都相同,使用該型別
|
|
286
|
+
const uniqueTypes = [...new Set(returnTypes)];
|
|
287
|
+
if (uniqueTypes.length === 1) {
|
|
288
|
+
return uniqueTypes[0];
|
|
289
|
+
}
|
|
290
|
+
// 如果有多種型別,使用 union type
|
|
291
|
+
return uniqueTypes.join(' | ');
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* 從表達式推導型別
|
|
295
|
+
*/
|
|
296
|
+
inferTypeFromExpression(expr, sourceFile) {
|
|
297
|
+
// 字串字面量
|
|
298
|
+
if (ts.isStringLiteral(expr) || ts.isNoSubstitutionTemplateLiteral(expr)) {
|
|
299
|
+
return 'string';
|
|
300
|
+
}
|
|
301
|
+
// 數字字面量
|
|
302
|
+
if (ts.isNumericLiteral(expr)) {
|
|
303
|
+
return 'number';
|
|
304
|
+
}
|
|
305
|
+
// 布林字面量
|
|
306
|
+
if (expr.kind === ts.SyntaxKind.TrueKeyword || expr.kind === ts.SyntaxKind.FalseKeyword) {
|
|
307
|
+
return 'boolean';
|
|
308
|
+
}
|
|
309
|
+
// null
|
|
310
|
+
if (expr.kind === ts.SyntaxKind.NullKeyword) {
|
|
311
|
+
return 'null';
|
|
312
|
+
}
|
|
313
|
+
// undefined
|
|
314
|
+
if (expr.kind === ts.SyntaxKind.UndefinedKeyword) {
|
|
315
|
+
return 'undefined';
|
|
316
|
+
}
|
|
317
|
+
// 識別符號(變數)- 嘗試從上下文推導
|
|
318
|
+
if (ts.isIdentifier(expr)) {
|
|
319
|
+
// 檢查是否是參數或已知變數
|
|
320
|
+
const varName = expr.text;
|
|
321
|
+
// 嘗試在包裝函式的參數中查找型別
|
|
322
|
+
// 這裡簡化處理,實際專案中應該從完整檔案的上下文取得
|
|
323
|
+
const text = sourceFile.text;
|
|
324
|
+
const paramPattern = new RegExp(`\\b${varName}\\s*:\\s*([a-zA-Z][a-zA-Z0-9]*)`);
|
|
325
|
+
const match = text.match(paramPattern);
|
|
326
|
+
if (match) {
|
|
327
|
+
return match[1];
|
|
328
|
+
}
|
|
329
|
+
return 'any';
|
|
330
|
+
}
|
|
331
|
+
// 陣列字面量
|
|
332
|
+
if (ts.isArrayLiteralExpression(expr)) {
|
|
333
|
+
if (expr.elements.length === 0) {
|
|
334
|
+
return 'any[]';
|
|
335
|
+
}
|
|
336
|
+
const elementType = this.inferTypeFromExpression(expr.elements[0], sourceFile);
|
|
337
|
+
return `${elementType}[]`;
|
|
338
|
+
}
|
|
339
|
+
// 物件字面量
|
|
340
|
+
if (ts.isObjectLiteralExpression(expr)) {
|
|
341
|
+
return 'object';
|
|
342
|
+
}
|
|
343
|
+
// 函式呼叫
|
|
344
|
+
if (ts.isCallExpression(expr)) {
|
|
345
|
+
// 簡化:返回 any
|
|
346
|
+
return 'any';
|
|
347
|
+
}
|
|
348
|
+
// 預設返回 any
|
|
349
|
+
return 'any';
|
|
350
|
+
}
|
|
202
351
|
/**
|
|
203
352
|
* 檢查是否包含跳躍語句
|
|
204
353
|
*/
|
|
@@ -287,8 +436,8 @@ export class FunctionExtractor {
|
|
|
287
436
|
if (!selection || !this.isValidRange(selection)) {
|
|
288
437
|
throw new Error('選取範圍無效');
|
|
289
438
|
}
|
|
290
|
-
//
|
|
291
|
-
const analysis = this.analyzer.analyze(code, selection);
|
|
439
|
+
// 分析可提取性(現在是 async)
|
|
440
|
+
const analysis = await this.analyzer.analyze(code, selection);
|
|
292
441
|
if (!analysis.canExtract) {
|
|
293
442
|
return {
|
|
294
443
|
success: false,
|
|
@@ -303,15 +452,21 @@ export class FunctionExtractor {
|
|
|
303
452
|
const selectedCode = this.extractSelectedCode(code, selection);
|
|
304
453
|
// 產生函式名稱
|
|
305
454
|
const functionName = config.functionName || this.generateFunctionName(selectedCode);
|
|
306
|
-
//
|
|
307
|
-
const functionCode = this.generateFunction(functionName, selectedCode, analysis.variables, config);
|
|
308
|
-
//
|
|
455
|
+
// 產生函式程式碼(使用推導出的返回型別)
|
|
456
|
+
const functionCode = this.generateFunction(functionName, selectedCode, analysis.variables, config, analysis.returnType);
|
|
457
|
+
// 檢查是否為跨檔案提取
|
|
458
|
+
if (config.targetFile && config.sourceFile) {
|
|
459
|
+
// 跨檔案提取模式
|
|
460
|
+
return await this.extractToSeparateFile(code, selection, functionName, functionCode, analysis.variables, config);
|
|
461
|
+
}
|
|
462
|
+
// 一般提取模式(同檔案)
|
|
309
463
|
const edits = this.generateEdits(code, selection, functionName, functionCode, analysis.variables);
|
|
310
464
|
return {
|
|
311
465
|
success: true,
|
|
312
466
|
functionName,
|
|
313
467
|
edits,
|
|
314
468
|
parameters: analysis.variables,
|
|
469
|
+
returnType: analysis.returnType,
|
|
315
470
|
errors: [],
|
|
316
471
|
warnings: []
|
|
317
472
|
};
|
|
@@ -366,7 +521,7 @@ export class FunctionExtractor {
|
|
|
366
521
|
/**
|
|
367
522
|
* 產生函式程式碼
|
|
368
523
|
*/
|
|
369
|
-
generateFunction(functionName, code, parameters, config) {
|
|
524
|
+
generateFunction(functionName, code, parameters, config, inferredReturnType) {
|
|
370
525
|
// 生成帶型別的參數列表
|
|
371
526
|
const params = parameters
|
|
372
527
|
.filter(p => p.isParameter)
|
|
@@ -376,9 +531,15 @@ export class FunctionExtractor {
|
|
|
376
531
|
const returnStatement = returnVars.length > 0
|
|
377
532
|
? `\n return ${returnVars.map(v => v.name).join(', ')};`
|
|
378
533
|
: '';
|
|
379
|
-
//
|
|
380
|
-
|
|
381
|
-
|
|
534
|
+
// 使用推導出的返回型別,如果沒有則降級到舊邏輯
|
|
535
|
+
let returnType;
|
|
536
|
+
if (inferredReturnType) {
|
|
537
|
+
returnType = `: ${inferredReturnType}`;
|
|
538
|
+
}
|
|
539
|
+
else {
|
|
540
|
+
const hasReturn = code.includes('return') || returnVars.length > 0;
|
|
541
|
+
returnType = hasReturn ? ': any' : ': void';
|
|
542
|
+
}
|
|
382
543
|
const comment = config.generateComments
|
|
383
544
|
? `/**\n * 提取的函式\n * @param ${params.split(', ').map(p => `${p.split(':')[0]} 參數`).join('\n * @param ')}\n */\n`
|
|
384
545
|
: '';
|
|
@@ -415,6 +576,97 @@ export class FunctionExtractor {
|
|
|
415
576
|
});
|
|
416
577
|
return edits;
|
|
417
578
|
}
|
|
579
|
+
/**
|
|
580
|
+
* 跨檔案提取:將函式提取到獨立檔案
|
|
581
|
+
*/
|
|
582
|
+
async extractToSeparateFile(code, selection, functionName, functionCode, parameters, config) {
|
|
583
|
+
const fs = await import('fs/promises');
|
|
584
|
+
const path = await import('path');
|
|
585
|
+
try {
|
|
586
|
+
// 計算相對 import 路徑
|
|
587
|
+
const sourceDir = path.dirname(config.sourceFile);
|
|
588
|
+
const targetDir = path.dirname(config.targetFile);
|
|
589
|
+
const targetFileName = path.basename(config.targetFile, path.extname(config.targetFile));
|
|
590
|
+
// 計算相對路徑
|
|
591
|
+
let relativePath = path.relative(sourceDir, config.targetFile);
|
|
592
|
+
// 移除副檔名
|
|
593
|
+
if (relativePath.endsWith('.ts')) {
|
|
594
|
+
relativePath = relativePath.slice(0, -3);
|
|
595
|
+
}
|
|
596
|
+
else if (relativePath.endsWith('.js')) {
|
|
597
|
+
relativePath = relativePath.slice(0, -3);
|
|
598
|
+
}
|
|
599
|
+
// 確保路徑以 ./ 或 ../ 開頭
|
|
600
|
+
if (!relativePath.startsWith('.')) {
|
|
601
|
+
relativePath = './' + relativePath;
|
|
602
|
+
}
|
|
603
|
+
// 生成 import 語句
|
|
604
|
+
const importStatement = `import { ${functionName} } from '${relativePath}';`;
|
|
605
|
+
// 生成 export function(移除註解中的 @param 部分,因為跨檔案不需要)
|
|
606
|
+
const exportedFunctionCode = functionCode
|
|
607
|
+
.replace(/\/\*\*[\s\S]*?\*\/\n?/, '') // 移除註解
|
|
608
|
+
.replace(/^function /, 'export function '); // 加上 export
|
|
609
|
+
// 讀取或建立目標檔案內容
|
|
610
|
+
let targetFileContent = '';
|
|
611
|
+
try {
|
|
612
|
+
targetFileContent = await fs.readFile(config.targetFile, 'utf-8');
|
|
613
|
+
}
|
|
614
|
+
catch (error) {
|
|
615
|
+
// 檔案不存在,建立新檔案
|
|
616
|
+
targetFileContent = '';
|
|
617
|
+
}
|
|
618
|
+
// 在目標檔案末尾加入函式
|
|
619
|
+
if (targetFileContent.trim().length > 0) {
|
|
620
|
+
targetFileContent += '\n\n' + exportedFunctionCode + '\n';
|
|
621
|
+
}
|
|
622
|
+
else {
|
|
623
|
+
targetFileContent = exportedFunctionCode + '\n';
|
|
624
|
+
}
|
|
625
|
+
// 生成原始檔案的編輯:加入 import + 替換為函式呼叫
|
|
626
|
+
const edits = [];
|
|
627
|
+
// 1. 替換選取範圍為函式呼叫
|
|
628
|
+
const callParams = parameters
|
|
629
|
+
.filter(p => p.isParameter)
|
|
630
|
+
.map(p => p.name)
|
|
631
|
+
.join(', ');
|
|
632
|
+
const returnVars = parameters.filter(p => p.isReturned);
|
|
633
|
+
const assignment = returnVars.length > 0
|
|
634
|
+
? `${returnVars.map(v => v.name).join(', ')} = `
|
|
635
|
+
: '';
|
|
636
|
+
const functionCall = `${assignment}${functionName}(${callParams});`;
|
|
637
|
+
edits.push({
|
|
638
|
+
range: selection,
|
|
639
|
+
newText: functionCall,
|
|
640
|
+
type: 'replace'
|
|
641
|
+
});
|
|
642
|
+
// 2. 在檔案開頭加入 import 語句
|
|
643
|
+
edits.push({
|
|
644
|
+
range: { start: { line: 1, column: 0 }, end: { line: 1, column: 0 } },
|
|
645
|
+
newText: importStatement + '\n',
|
|
646
|
+
type: 'insert'
|
|
647
|
+
});
|
|
648
|
+
return {
|
|
649
|
+
success: true,
|
|
650
|
+
functionName,
|
|
651
|
+
edits,
|
|
652
|
+
parameters,
|
|
653
|
+
errors: [],
|
|
654
|
+
warnings: [],
|
|
655
|
+
targetFileContent,
|
|
656
|
+
importStatement
|
|
657
|
+
};
|
|
658
|
+
}
|
|
659
|
+
catch (error) {
|
|
660
|
+
return {
|
|
661
|
+
success: false,
|
|
662
|
+
functionName,
|
|
663
|
+
edits: [],
|
|
664
|
+
parameters: [],
|
|
665
|
+
errors: [`跨檔案提取失敗: ${error instanceof Error ? error.message : String(error)}`],
|
|
666
|
+
warnings: []
|
|
667
|
+
};
|
|
668
|
+
}
|
|
669
|
+
}
|
|
418
670
|
/**
|
|
419
671
|
* 批次提取
|
|
420
672
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract-function.js","sourceRoot":"","sources":["../../../src/core/refactor/extract-function.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyDH;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAC7B;;OAEG;IACH,OAAO,CAAC,IAAY,EAAE,SAAgB;QAMpC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAmB,EAAE,CAAC;QACrC,MAAM,YAAY,GAAa,EAAE,CAAC;QAElC,OAAO;QACP,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxB,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;QAChE,CAAC;QAED,SAAS;QACT,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvB,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;QAChE,CAAC;QAED,SAAS;QACT,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACpD,SAAS,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAE9C,SAAS;QACT,IAAI,CAAC,0BAA0B,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAExD,OAAO;QACP,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;QAEjD,OAAO;YACL,UAAU,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;YAC/B,MAAM;YACN,SAAS;YACT,YAAY;SACb,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,0BAA0B,CAAC,GAAY,EAAE,SAAgB,EAAE,MAAgB;QACjF,mBAAmB;QACnB,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAE3C,wBAAwB;QACxB,IAAI,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC5C,CAAC;QAED,aAAa;QACb,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC7B,CAAC;QAED,WAAW;QACX,IAAI,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,EAAE,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5B,CAAC;QAED,WAAW;QACX,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YACb,WAAW;YACX,MAAM,iBAAiB,GAAG,mCAAmC,CAAC;YAC9D,MAAM,WAAW,GAAa,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC;YAEV,aAAa;YACb,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;YACvC,MAAM,kBAAkB,GAAG,iDAAiD,CAAC;YAC7E,OAAO,CAAC,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC5D,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7B,CAAC;YAED,WAAW;YACX,iBAAiB,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,UAAU;YAC3C,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;YAC5C,OAAO,CAAC,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC3D,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACzB,uBAAuB;gBACvB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;oBAC1B,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC5E,gBAAgB;oBAChB,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;oBAClC,MAAM,gBAAgB,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;oBAClF,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;wBACpD,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;oBACjD,CAAC;gBACH,CAAC;YACH,CAAC;YAED,sBAAsB;YACtB,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC;YAC3C,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC/B,CAAC;iBAAM,IAAI,WAAW,KAAK,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1C,6BAA6B;gBAC7B,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrD,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,aAAa,WAAW,aAAa,CAAC,CAAC;gBACxE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAClC,0BAA0B;oBAC1B,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,GAAY;QACnC,MAAM,SAAS,GAAmB,EAAE,CAAC;QACrC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QAEnC,mBAAmB;QACnB,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YACb,cAAc;YACd,MAAM,eAAe,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,IAAI,EAAE,CAAC;YAE9E,kBAAkB;YAClB,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU;gBAC/E,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;gBACpE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK;gBACpE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;YAE/E,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;gBACpC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBACpD,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;YAED,YAAY;YACZ,MAAM,iBAAiB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,iDAAiD,CAAC,IAAI,EAAE,CAAC;YAClG,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;gBACrC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;gBACzD,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACzB,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY;YACxC,CAAC;YAED,SAAS;YACT,MAAM,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;YACtE,IAAI,cAAc,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxC,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;gBACtF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,IAAI,KAAK,EAAE,CAAC;wBACV,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBACvB,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACzB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,SAAS;QACT,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,KAAK,EAAE,OAAO;gBACpB,WAAW,EAAE,IAAI;gBACjB,UAAU,EAAE,KAAK;gBACjB,KAAK,EAAE,SAAS;gBAChB,MAAM,EAAE,EAAE;aACX,CAAC,CAAC;QACL,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACK,SAAS,CAAC,IAAY;QAC5B,IAAI,CAAC;YACH,wBAAwB;YACxB,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,CAAC;gBACR,GAAG,EAAE,IAAI,CAAC,MAAM;gBAChB,GAAG,EAAE;oBACH,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;oBAC7B,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE;iBAClD;gBACD,QAAQ,EAAE,EAAE;gBACZ,IAAI,CAAC,cAAc;aACpB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,QAAQ,CAAC,IAAa,EAAE,OAAgC;QAC9D,OAAO,CAAC,IAAI,CAAC,CAAC;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,GAAY;QACjC,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;YAC1B,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;gBACpC,SAAS,GAAG,IAAI,CAAC;YACnB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,GAAY;QACxC,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;YAC1B,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;gBACxE,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,GAAY;QACvC,eAAe;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,0BAA0B,CAAC,GAAY;QAC7C,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;YAC1B,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;gBAC9E,WAAW,GAAG,IAAI,CAAC;YACrB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,GAAY;QACnC,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,OAAO;QACP,OAAO,YAAY,CAAC;IACtB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,iBAAiB;IACpB,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;IAE5C;;;;;OAKG;IACH,KAAK,CAAC,eAAe,CACnB,IAAY,EACZ,gBAAgC,EAChC,WAAoC,EACpC,eAAwB;QAExB,qBAAqB;QACrB,IAAI,OAAO,gBAAgB,KAAK,QAAQ,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC5E,kBAAkB;YAClB,MAAM,SAAS,GAAG,gBAAgB,CAAC;YACnC,MAAM,OAAO,GAAG,WAAW,CAAC;YAC5B,MAAM,SAAS,GAAU;gBACvB,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE;gBACrC,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE;aAClC,CAAC;YACF,MAAM,MAAM,GAAkB;gBAC5B,YAAY,EAAE,eAAe;gBAC7B,gBAAgB,EAAE,IAAI;gBACtB,kBAAkB,EAAE,IAAI;gBACxB,kBAAkB,EAAE,IAAI;aACzB,CAAC;YACF,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC;QAED,QAAQ;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,gBAAyB,EAAE,WAA4B,CAAC,CAAC;IACrF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CACX,IAAY,EACZ,SAAgB,EAChB,SAAwB;QACtB,gBAAgB,EAAE,IAAI;QACtB,kBAAkB,EAAE,IAAI;QACxB,kBAAkB,EAAE,IAAI;QACxB,cAAc,EAAE,QAAQ;KACzB;QAED,OAAO;QACP,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;QAED,SAAS;QACT,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YACzB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,EAAE;gBAChB,KAAK,EAAE,EAAE;gBACT,UAAU,EAAE,EAAE;gBACd,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,QAAQ,EAAE,EAAE;aACb,CAAC;QACJ,CAAC;QAED,WAAW;QACX,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAE/D,SAAS;QACT,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;QAEpF,UAAU;QACV,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CACxC,YAAY,EACZ,YAAY,EACZ,QAAQ,CAAC,SAAS,EAClB,MAAM,CACP,CAAC;QAEF,SAAS;QACT,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;QAElG,OAAO;YACL,OAAO,EAAE,IAAI;YACb,YAAY;YACZ,KAAK;YACL,UAAU,EAAE,QAAQ,CAAC,SAAS;YAC9B,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,EAAE;SACb,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,KAAY;QAC/B,OAAO,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG;YACxB,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ;YACpC,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ;YACtC,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ;YAClC,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,QAAQ;YACpC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI;gBACjC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,IAAY,EAAE,SAAgB;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,aAAa,GAAa,EAAE,CAAC;QAEnC,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YACnE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBAAA,SAAS;YAAA,CAAC;YAE3C,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAEpB,QAAQ;YACR,IAAI,CAAC,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBACnC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAChD,CAAC;YAED,QAAQ;YACR,IAAI,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBACjC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjH,CAAC;YAED,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QAED,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,IAAY;QACvC,cAAc;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,IAAI,EAAE,CAAC;QAC9D,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CACpD,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC5F,CAAC;QAEF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,YAAY,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACxF,CAAC;QAED,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,gBAAgB,CACtB,YAAoB,EACpB,IAAY,EACZ,UAA0B,EAC1B,MAAqB;QAErB,aAAa;QACb,MAAM,MAAM,GAAG,UAAU;aACtB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;aAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;aAChC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACxD,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC;YAC3C,CAAC,CAAC,cAAc,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACzD,CAAC,CAAC,EAAE,CAAC;QAEP,SAAS;QACT,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QACnE,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAEjD,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB;YACrC,CAAC,CAAC,4BAA4B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS;YAChH,CAAC,CAAC,EAAE,CAAC;QAEP,QAAQ;QACR,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE1E,OAAO,GAAG,OAAO,YAAY,YAAY,IAAI,MAAM,IAAI,UAAU,KAAK,YAAY,GAAG,eAAe,KAAK,CAAC;IAC5G,CAAC;IAED;;OAEG;IACK,aAAa,CACnB,YAAoB,EACpB,SAAgB,EAChB,YAAoB,EACpB,YAAoB,EACpB,UAA0B;QAE1B,MAAM,KAAK,GAAe,EAAE,CAAC;QAE7B,mBAAmB;QACnB,MAAM,UAAU,GAAG,UAAU;aAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;aAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aAChB,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC;YACtC,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;YAChD,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,YAAY,GAAG,GAAG,UAAU,GAAG,YAAY,IAAI,UAAU,IAAI,CAAC;QAEpE,KAAK,CAAC,IAAI,CAAC;YACT,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,YAAY;YACrB,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;QAEH,YAAY;QACZ,eAAe;QACf,KAAK,CAAC,IAAI,CAAC;YACT,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;YACrE,OAAO,EAAE,YAAY,GAAG,MAAM;YAC9B,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CACnB,WAA8E;QAE9E,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAC9C,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CACtC,CACF,CAAC;QAEF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,SAAgB,EAAE,MAAsB;QAKlE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAE3D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,WAAW,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,SAAS;QACT,IAAI,YAAY,GAAG,IAAI,CAAC;QACxB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,aAAa;YACxD,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACpD,CAAC;QAED,OAAO;YACL,YAAY,EAAE,IAAI;YAClB,YAAY;YACZ,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,OAAO,IAAI,EAAE;SAC/E,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,SAAS,CAAC,IAAY,EAAE,IAAc;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE/B,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,SAAS;gBACZ,OAAO;gBACP,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC3D,IAAI,CAAC,OAAO;oBACZ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAEpE,KAAK,QAAQ;gBACX,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC1D,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAE3E,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC3D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAEpE;gBACE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,IAAY,EAAE,QAA0C;QAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/D,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,iBAAiB;QAClD,CAAC;QAED,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;QAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"extract-function.js","sourceRoot":"","sources":["../../../src/core/refactor/extract-function.ts"],"names":[],"mappings":"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"}
|