agent-ide 0.5.1 → 0.6.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/change-signature/change-signature-service.d.ts.map +1 -1
- package/dist/core/change-signature/change-signature-service.js +5 -9
- package/dist/core/change-signature/change-signature-service.js.map +1 -1
- package/dist/core/change-signature/signature-parser.d.ts +0 -16
- package/dist/core/change-signature/signature-parser.d.ts.map +1 -1
- package/dist/core/change-signature/signature-parser.js +0 -109
- package/dist/core/change-signature/signature-parser.js.map +1 -1
- package/dist/core/dead-code/dead-code-detector.d.ts +63 -0
- package/dist/core/dead-code/dead-code-detector.d.ts.map +1 -0
- package/dist/core/dead-code/dead-code-detector.js +256 -0
- package/dist/core/dead-code/dead-code-detector.js.map +1 -0
- package/dist/core/dead-code/index.d.ts +8 -0
- package/dist/core/dead-code/index.d.ts.map +1 -0
- package/dist/core/dead-code/index.js +7 -0
- package/dist/core/dead-code/index.js.map +1 -0
- package/dist/core/dead-code/types.d.ts +68 -0
- package/dist/core/dead-code/types.d.ts.map +1 -0
- package/dist/core/dead-code/types.js +20 -0
- package/dist/core/dead-code/types.js.map +1 -0
- package/dist/core/dependency/dependency-analyzer.d.ts.map +1 -1
- package/dist/core/dependency/dependency-analyzer.js +2 -15
- package/dist/core/dependency/dependency-analyzer.js.map +1 -1
- package/dist/core/indexing/index-engine.d.ts.map +1 -1
- package/dist/core/indexing/index-engine.js +0 -12
- package/dist/core/indexing/index-engine.js.map +1 -1
- package/dist/core/indexing/types.d.ts +1 -1
- package/dist/core/indexing/types.js +1 -1
- package/dist/core/indexing/types.js.map +1 -1
- package/dist/core/move-file/import-resolver.d.ts +1 -1
- package/dist/core/move-file/import-resolver.d.ts.map +1 -1
- package/dist/core/move-file/import-resolver.js +1 -9
- package/dist/core/move-file/import-resolver.js.map +1 -1
- package/dist/core/move-file/move-service.d.ts +8 -0
- package/dist/core/move-file/move-service.d.ts.map +1 -1
- package/dist/core/move-file/move-service.js +102 -21
- package/dist/core/move-file/move-service.js.map +1 -1
- package/dist/core/move-member/member-extractor.d.ts +0 -8
- package/dist/core/move-member/member-extractor.d.ts.map +1 -1
- package/dist/core/move-member/member-extractor.js +0 -49
- package/dist/core/move-member/member-extractor.js.map +1 -1
- package/dist/core/move-member/move-member-service.js +1 -1
- package/dist/core/move-member/move-member-service.js.map +1 -1
- package/dist/core/snapshot/index.d.ts +2 -0
- package/dist/core/snapshot/index.d.ts.map +1 -1
- package/dist/core/snapshot/index.js +1 -0
- package/dist/core/snapshot/index.js.map +1 -1
- package/dist/core/snapshot/snapshot-cache.d.ts +103 -0
- package/dist/core/snapshot/snapshot-cache.d.ts.map +1 -0
- package/dist/core/snapshot/snapshot-cache.js +249 -0
- package/dist/core/snapshot/snapshot-cache.js.map +1 -0
- package/dist/core/snapshot/snapshot-generator.d.ts +12 -0
- package/dist/core/snapshot/snapshot-generator.d.ts.map +1 -1
- package/dist/core/snapshot/snapshot-generator.js +61 -3
- package/dist/core/snapshot/snapshot-generator.js.map +1 -1
- package/dist/infrastructure/formatters/index.d.ts +1 -1
- package/dist/infrastructure/formatters/index.d.ts.map +1 -1
- package/dist/infrastructure/formatters/index.js.map +1 -1
- package/dist/infrastructure/formatters/query-formatter.d.ts +16 -0
- package/dist/infrastructure/formatters/query-formatter.d.ts.map +1 -1
- package/dist/infrastructure/formatters/query-formatter.js +155 -3
- package/dist/infrastructure/formatters/query-formatter.js.map +1 -1
- package/dist/infrastructure/formatters/query-types.d.ts +73 -2
- package/dist/infrastructure/formatters/query-types.d.ts.map +1 -1
- package/dist/interfaces/cli/cli.d.ts.map +1 -1
- package/dist/interfaces/cli/cli.js +2 -29
- package/dist/interfaces/cli/cli.js.map +1 -1
- package/dist/interfaces/cli/commands/deadcode.command.d.ts +11 -0
- package/dist/interfaces/cli/commands/deadcode.command.d.ts.map +1 -0
- package/dist/interfaces/cli/commands/deadcode.command.js +103 -0
- package/dist/interfaces/cli/commands/deadcode.command.js.map +1 -0
- package/dist/interfaces/cli/commands/index.d.ts +1 -0
- package/dist/interfaces/cli/commands/index.d.ts.map +1 -1
- package/dist/interfaces/cli/commands/index.js +1 -0
- package/dist/interfaces/cli/commands/index.js.map +1 -1
- package/dist/interfaces/cli/commands/move.command.js +1 -1
- package/dist/interfaces/cli/commands/move.command.js.map +1 -1
- package/dist/interfaces/cli/commands/rename.command.js +2 -3
- package/dist/interfaces/cli/commands/rename.command.js.map +1 -1
- package/dist/interfaces/cli/commands/snapshot.command.d.ts.map +1 -1
- package/dist/interfaces/cli/commands/snapshot.command.js +20 -0
- package/dist/interfaces/cli/commands/snapshot.command.js.map +1 -1
- package/package.json +10 -12
- package/dist/plugins/python/dependency-analyzer.d.ts +0 -86
- package/dist/plugins/python/dependency-analyzer.d.ts.map +0 -1
- package/dist/plugins/python/dependency-analyzer.js +0 -252
- package/dist/plugins/python/dependency-analyzer.js.map +0 -1
- package/dist/plugins/python/index.d.ts +0 -9
- package/dist/plugins/python/index.d.ts.map +0 -1
- package/dist/plugins/python/index.js +0 -14
- package/dist/plugins/python/index.js.map +0 -1
- package/dist/plugins/python/parser.d.ts +0 -117
- package/dist/plugins/python/parser.d.ts.map +0 -1
- package/dist/plugins/python/parser.js +0 -414
- package/dist/plugins/python/parser.js.map +0 -1
- package/dist/plugins/python/symbol-extractor.d.ts +0 -108
- package/dist/plugins/python/symbol-extractor.d.ts.map +0 -1
- package/dist/plugins/python/symbol-extractor.js +0 -389
- package/dist/plugins/python/symbol-extractor.js.map +0 -1
- package/dist/plugins/python/tree-sitter-bridge.d.ts +0 -57
- package/dist/plugins/python/tree-sitter-bridge.d.ts.map +0 -1
- package/dist/plugins/python/tree-sitter-bridge.js +0 -269
- package/dist/plugins/python/tree-sitter-bridge.js.map +0 -1
- package/dist/plugins/python/types.d.ts +0 -191
- package/dist/plugins/python/types.d.ts.map +0 -1
- package/dist/plugins/python/types.js +0 -279
- package/dist/plugins/python/types.js.map +0 -1
- package/dist/plugins/swift/dependency-analyzer.d.ts +0 -33
- package/dist/plugins/swift/dependency-analyzer.d.ts.map +0 -1
- package/dist/plugins/swift/dependency-analyzer.js +0 -95
- package/dist/plugins/swift/dependency-analyzer.js.map +0 -1
- package/dist/plugins/swift/index.d.ts +0 -14
- package/dist/plugins/swift/index.d.ts.map +0 -1
- package/dist/plugins/swift/index.js +0 -19
- package/dist/plugins/swift/index.js.map +0 -1
- package/dist/plugins/swift/parser.d.ts +0 -164
- package/dist/plugins/swift/parser.d.ts.map +0 -1
- package/dist/plugins/swift/parser.js +0 -688
- package/dist/plugins/swift/parser.js.map +0 -1
- package/dist/plugins/swift/swift-bridge/swift-parser +0 -0
- package/dist/plugins/swift/symbol-extractor.d.ts +0 -46
- package/dist/plugins/swift/symbol-extractor.d.ts.map +0 -1
- package/dist/plugins/swift/symbol-extractor.js +0 -187
- package/dist/plugins/swift/symbol-extractor.js.map +0 -1
- package/dist/plugins/swift/types.d.ts +0 -149
- package/dist/plugins/swift/types.d.ts.map +0 -1
- package/dist/plugins/swift/types.js +0 -251
- package/dist/plugins/swift/types.js.map +0 -1
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Python Parser 主類別
|
|
3
|
-
* 實作 ParserPlugin 介面,提供 Python 程式碼解析功能
|
|
4
|
-
*/
|
|
5
|
-
import type { AST, Symbol, Reference, Dependency, Position, Range } from '../../shared/types/index.js';
|
|
6
|
-
import { BaseParserPlugin } from '../../infrastructure/parser/base.js';
|
|
7
|
-
import type { CodeEdit, Definition, Usage, ValidationResult, ParserCapabilities } from '../../infrastructure/parser/types.js';
|
|
8
|
-
/**
|
|
9
|
-
* Python Parser 類別
|
|
10
|
-
*/
|
|
11
|
-
export declare class PythonParser extends BaseParserPlugin {
|
|
12
|
-
readonly name = "python";
|
|
13
|
-
readonly version = "1.0.0";
|
|
14
|
-
readonly supportedExtensions: readonly [".py", ".pyi", ".pyw"];
|
|
15
|
-
readonly supportedLanguages: readonly ["python", "python3"];
|
|
16
|
-
private symbolExtractor;
|
|
17
|
-
private dependencyAnalyzer;
|
|
18
|
-
constructor();
|
|
19
|
-
/**
|
|
20
|
-
* 解析 Python 程式碼並生成 AST
|
|
21
|
-
*/
|
|
22
|
-
parse(code: string, filePath: string): Promise<AST>;
|
|
23
|
-
/**
|
|
24
|
-
* 從 AST 提取符號
|
|
25
|
-
*/
|
|
26
|
-
extractSymbols(ast: AST): Promise<Symbol[]>;
|
|
27
|
-
/**
|
|
28
|
-
* 查找符號引用
|
|
29
|
-
*/
|
|
30
|
-
findReferences(ast: AST, symbol: Symbol): Promise<Reference[]>;
|
|
31
|
-
/**
|
|
32
|
-
* 判斷引用類型
|
|
33
|
-
*/
|
|
34
|
-
private getReferenceType;
|
|
35
|
-
/**
|
|
36
|
-
* 檢查節點是否位於 import 語句內
|
|
37
|
-
*/
|
|
38
|
-
private isInImportStatement;
|
|
39
|
-
/**
|
|
40
|
-
* 提取依賴關係
|
|
41
|
-
*/
|
|
42
|
-
extractDependencies(ast: AST): Promise<Dependency[]>;
|
|
43
|
-
/**
|
|
44
|
-
* 重命名符號
|
|
45
|
-
*/
|
|
46
|
-
rename(ast: AST, position: Position, newName: string): Promise<CodeEdit[]>;
|
|
47
|
-
/**
|
|
48
|
-
* 提取函式重構
|
|
49
|
-
* 將選取的程式碼片段提取為獨立函式
|
|
50
|
-
*/
|
|
51
|
-
extractFunction(ast: AST, selection: Range): Promise<CodeEdit[]>;
|
|
52
|
-
/**
|
|
53
|
-
* 取得原始碼
|
|
54
|
-
*/
|
|
55
|
-
private getSourceCode;
|
|
56
|
-
/**
|
|
57
|
-
* 取得縮排
|
|
58
|
-
*/
|
|
59
|
-
private getIndentation;
|
|
60
|
-
/**
|
|
61
|
-
* 分析變數使用,找出參數和返回值
|
|
62
|
-
*/
|
|
63
|
-
private analyzeVariables;
|
|
64
|
-
/**
|
|
65
|
-
* 檢查節點是否在範圍內
|
|
66
|
-
*/
|
|
67
|
-
private isNodeInRange;
|
|
68
|
-
/**
|
|
69
|
-
* 找到函式插入點
|
|
70
|
-
*/
|
|
71
|
-
private findInsertionPoint;
|
|
72
|
-
/**
|
|
73
|
-
* 檢查是否為 Python 內建名稱
|
|
74
|
-
*/
|
|
75
|
-
private isPythonBuiltin;
|
|
76
|
-
/**
|
|
77
|
-
* 查找定義
|
|
78
|
-
*/
|
|
79
|
-
findDefinition(ast: AST, position: Position): Promise<Definition | null>;
|
|
80
|
-
/**
|
|
81
|
-
* 將 SymbolType 轉換為 DefinitionKind
|
|
82
|
-
*/
|
|
83
|
-
private symbolTypeToDefinitionKind;
|
|
84
|
-
/**
|
|
85
|
-
* 查找使用位置
|
|
86
|
-
*/
|
|
87
|
-
findUsages(ast: AST, symbol: Symbol): Promise<Usage[]>;
|
|
88
|
-
/**
|
|
89
|
-
* 驗證插件狀態
|
|
90
|
-
*/
|
|
91
|
-
validate(): Promise<ValidationResult>;
|
|
92
|
-
/**
|
|
93
|
-
* 清理資源
|
|
94
|
-
*/
|
|
95
|
-
dispose(): Promise<void>;
|
|
96
|
-
/**
|
|
97
|
-
* 獲取插件能力聲明
|
|
98
|
-
*/
|
|
99
|
-
getCapabilities(): ParserCapabilities;
|
|
100
|
-
/**
|
|
101
|
-
* 獲取 Python 專用的排除模式
|
|
102
|
-
*/
|
|
103
|
-
getDefaultExcludePatterns(): string[];
|
|
104
|
-
/**
|
|
105
|
-
* 判斷是否為測試檔案
|
|
106
|
-
*/
|
|
107
|
-
isTestFile(filePath: string): boolean;
|
|
108
|
-
/**
|
|
109
|
-
* 判斷符號是否為抽象宣告
|
|
110
|
-
*/
|
|
111
|
-
isAbstractDeclaration(symbol: Symbol): boolean;
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* 創建 Python Parser 實例
|
|
115
|
-
*/
|
|
116
|
-
export declare function createPythonParser(): PythonParser;
|
|
117
|
-
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/plugins/python/parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAElG,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EAEV,KAAK,EACL,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,iCAAiC,CAAC;AAkBzC;;GAEG;AACH,qBAAa,YAAa,SAAQ,gBAAgB;IAChD,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,mBAAmB,mCAAoC;IAChE,QAAQ,CAAC,kBAAkB,iCAAkC;IAE7D,OAAO,CAAC,eAAe,CAAwB;IAC/C,OAAO,CAAC,kBAAkB,CAA2B;;IAQrD;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAiBzD;;OAEG;IACG,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKjD;;OAEG;IACG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAsBpE;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiBxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAc3B;;OAEG;IACG,mBAAmB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAK1D;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAwBhF;;;OAGG;IACG,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IA2EtE;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAKtB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsDxB;;OAEG;IACH,OAAO,CAAC,aAAa;IAOrB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAYvB;;OAEG;IACG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IA0B9E;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAUlC;;OAEG;IACG,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAO5D;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAgC3C;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAM9B;;OAEG;IACM,eAAe,IAAI,kBAAkB;IAU9C;;OAEG;IACM,yBAAyB,IAAI,MAAM,EAAE;IAwB9C;;OAEG;IACM,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI9C;;OAEG;IACM,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;CAYxD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,CAEjD"}
|
|
@@ -1,414 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Python Parser 主類別
|
|
3
|
-
* 實作 ParserPlugin 介面,提供 Python 程式碼解析功能
|
|
4
|
-
*/
|
|
5
|
-
import { ReferenceType, createReference, SymbolType } from '../../shared/types/index.js';
|
|
6
|
-
import { BaseParserPlugin } from '../../infrastructure/parser/base.js';
|
|
7
|
-
import { createValidationSuccess, createValidationFailure, createDefinition, createUsage } from '../../infrastructure/parser/types.js';
|
|
8
|
-
import { PythonNodeKind, isPythonTestFile } from './types.js';
|
|
9
|
-
import { initializeParser, parseCode, createPythonAST, disposeParser, isParserInitialized, findNodeAtPosition, getNodeText, traverseAST } from './tree-sitter-bridge.js';
|
|
10
|
-
import { PythonSymbolExtractor } from './symbol-extractor.js';
|
|
11
|
-
import { PythonDependencyAnalyzer } from './dependency-analyzer.js';
|
|
12
|
-
/**
|
|
13
|
-
* Python Parser 類別
|
|
14
|
-
*/
|
|
15
|
-
export class PythonParser extends BaseParserPlugin {
|
|
16
|
-
name = 'python';
|
|
17
|
-
version = '1.0.0';
|
|
18
|
-
supportedExtensions = ['.py', '.pyi', '.pyw'];
|
|
19
|
-
supportedLanguages = ['python', 'python3'];
|
|
20
|
-
symbolExtractor;
|
|
21
|
-
dependencyAnalyzer;
|
|
22
|
-
constructor() {
|
|
23
|
-
super();
|
|
24
|
-
this.symbolExtractor = new PythonSymbolExtractor();
|
|
25
|
-
this.dependencyAnalyzer = new PythonDependencyAnalyzer();
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* 解析 Python 程式碼並生成 AST
|
|
29
|
-
*/
|
|
30
|
-
async parse(code, filePath) {
|
|
31
|
-
this.log('debug', `Parsing Python file: ${filePath}`);
|
|
32
|
-
if (!this.validateCode(code)) {
|
|
33
|
-
throw new Error('無效的程式碼內容');
|
|
34
|
-
}
|
|
35
|
-
// 確保 Parser 已初始化
|
|
36
|
-
await initializeParser();
|
|
37
|
-
const startTime = performance.now();
|
|
38
|
-
const tree = await parseCode(code);
|
|
39
|
-
const parseTime = performance.now() - startTime;
|
|
40
|
-
return createPythonAST(tree, filePath, parseTime);
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* 從 AST 提取符號
|
|
44
|
-
*/
|
|
45
|
-
async extractSymbols(ast) {
|
|
46
|
-
this.log('debug', `Extracting symbols from ${ast.sourceFile}`);
|
|
47
|
-
return this.symbolExtractor.extractSymbols(ast);
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* 查找符號引用
|
|
51
|
-
*/
|
|
52
|
-
async findReferences(ast, symbol) {
|
|
53
|
-
this.log('debug', `Finding references for symbol: ${symbol.name}`);
|
|
54
|
-
const pythonAST = ast;
|
|
55
|
-
const references = [];
|
|
56
|
-
traverseAST(pythonAST.root, (node) => {
|
|
57
|
-
if (node.pythonKind === PythonNodeKind.Identifier) {
|
|
58
|
-
const text = getNodeText(node);
|
|
59
|
-
if (text === symbol.name) {
|
|
60
|
-
references.push(createReference(symbol, { filePath: ast.sourceFile, range: node.range }, this.getReferenceType(node, symbol)));
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
return references;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* 判斷引用類型
|
|
68
|
-
*/
|
|
69
|
-
getReferenceType(node, symbol) {
|
|
70
|
-
// 檢查是否為符號定義位置
|
|
71
|
-
if (node.range.start.line === symbol.location.range.start.line
|
|
72
|
-
&& node.range.start.column === symbol.location.range.start.column) {
|
|
73
|
-
return ReferenceType.Definition;
|
|
74
|
-
}
|
|
75
|
-
// 檢查是否在 import 語句內
|
|
76
|
-
if (this.isInImportStatement(node)) {
|
|
77
|
-
return ReferenceType.Import;
|
|
78
|
-
}
|
|
79
|
-
return ReferenceType.Usage;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* 檢查節點是否位於 import 語句內
|
|
83
|
-
*/
|
|
84
|
-
isInImportStatement(node) {
|
|
85
|
-
let current = node.treeSitterNode.parent;
|
|
86
|
-
while (current) {
|
|
87
|
-
if (current.type === PythonNodeKind.ImportStatement
|
|
88
|
-
|| current.type === PythonNodeKind.ImportFromStatement) {
|
|
89
|
-
return true;
|
|
90
|
-
}
|
|
91
|
-
current = current.parent;
|
|
92
|
-
}
|
|
93
|
-
return false;
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* 提取依賴關係
|
|
97
|
-
*/
|
|
98
|
-
async extractDependencies(ast) {
|
|
99
|
-
this.log('debug', `Extracting dependencies from ${ast.sourceFile}`);
|
|
100
|
-
return this.dependencyAnalyzer.extractDependencies(ast);
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* 重命名符號
|
|
104
|
-
*/
|
|
105
|
-
async rename(ast, position, newName) {
|
|
106
|
-
this.log('debug', `Renaming at position ${position.line}:${position.column} to ${newName}`);
|
|
107
|
-
const pythonAST = ast;
|
|
108
|
-
const edits = [];
|
|
109
|
-
// 找到位置對應的節點
|
|
110
|
-
const targetNode = findNodeAtPosition(pythonAST.root, position.line, position.column);
|
|
111
|
-
if (!targetNode || targetNode.pythonKind !== PythonNodeKind.Identifier) {
|
|
112
|
-
return edits;
|
|
113
|
-
}
|
|
114
|
-
const oldName = getNodeText(targetNode);
|
|
115
|
-
// 查找所有同名引用
|
|
116
|
-
traverseAST(pythonAST.root, (node) => {
|
|
117
|
-
if (node.pythonKind === PythonNodeKind.Identifier && getNodeText(node) === oldName) {
|
|
118
|
-
edits.push(this.createCodeEdit(ast.sourceFile, node.range, newName, 'rename'));
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
return edits;
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* 提取函式重構
|
|
125
|
-
* 將選取的程式碼片段提取為獨立函式
|
|
126
|
-
*/
|
|
127
|
-
async extractFunction(ast, selection) {
|
|
128
|
-
this.log('debug', 'Extracting function from selection');
|
|
129
|
-
const pythonAST = ast;
|
|
130
|
-
const edits = [];
|
|
131
|
-
// 取得選取範圍的程式碼
|
|
132
|
-
const sourceCode = this.getSourceCode(pythonAST);
|
|
133
|
-
const lines = sourceCode.split('\n');
|
|
134
|
-
const selectedLines = lines.slice(selection.start.line, selection.end.line + 1);
|
|
135
|
-
if (selectedLines.length === 0) {
|
|
136
|
-
return edits;
|
|
137
|
-
}
|
|
138
|
-
// 計算基礎縮排
|
|
139
|
-
const baseIndent = this.getIndentation(selectedLines[0]);
|
|
140
|
-
// 移除基礎縮排,準備函式內容
|
|
141
|
-
const bodyLines = selectedLines.map(line => {
|
|
142
|
-
if (line.startsWith(baseIndent)) {
|
|
143
|
-
return ' ' + line.slice(baseIndent.length);
|
|
144
|
-
}
|
|
145
|
-
return ' ' + line;
|
|
146
|
-
});
|
|
147
|
-
// 分析變數使用
|
|
148
|
-
const { parameters, returnVars } = this.analyzeVariables(pythonAST, selection, selectedLines.join('\n'));
|
|
149
|
-
// 生成函式名稱
|
|
150
|
-
const functionName = 'extracted_function';
|
|
151
|
-
// 生成參數列表
|
|
152
|
-
const paramList = parameters.join(', ');
|
|
153
|
-
// 生成返回語句
|
|
154
|
-
let returnStatement = '';
|
|
155
|
-
if (returnVars.length > 0) {
|
|
156
|
-
returnStatement = `\n return ${returnVars.length === 1 ? returnVars[0] : returnVars.join(', ')}`;
|
|
157
|
-
}
|
|
158
|
-
// 生成新函式定義
|
|
159
|
-
const functionDef = `def ${functionName}(${paramList}):\n${bodyLines.join('\n')}${returnStatement}\n\n`;
|
|
160
|
-
// 找到插入點(選取範圍前面的函式定義位置)
|
|
161
|
-
const insertLine = this.findInsertionPoint(pythonAST, selection.start.line);
|
|
162
|
-
// 新增函式定義編輯
|
|
163
|
-
edits.push(this.createCodeEdit(ast.sourceFile, {
|
|
164
|
-
start: { line: insertLine, column: 0, offset: 0 },
|
|
165
|
-
end: { line: insertLine, column: 0, offset: 0 }
|
|
166
|
-
}, functionDef, 'extract'));
|
|
167
|
-
// 生成函式呼叫
|
|
168
|
-
let functionCall = `${functionName}(${paramList})`;
|
|
169
|
-
if (returnVars.length > 0) {
|
|
170
|
-
functionCall = `${returnVars.length === 1 ? returnVars[0] : returnVars.join(', ')} = ${functionCall}`;
|
|
171
|
-
}
|
|
172
|
-
// 替換選取範圍為函式呼叫
|
|
173
|
-
edits.push(this.createCodeEdit(ast.sourceFile, selection, baseIndent + functionCall, 'extract'));
|
|
174
|
-
return edits;
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* 取得原始碼
|
|
178
|
-
*/
|
|
179
|
-
getSourceCode(ast) {
|
|
180
|
-
return ast.tree.rootNode.text;
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* 取得縮排
|
|
184
|
-
*/
|
|
185
|
-
getIndentation(line) {
|
|
186
|
-
const match = line.match(/^(\s*)/);
|
|
187
|
-
return match ? match[1] : '';
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* 分析變數使用,找出參數和返回值
|
|
191
|
-
*/
|
|
192
|
-
analyzeVariables(ast, selection, _selectedCode) {
|
|
193
|
-
const parameters = new Set();
|
|
194
|
-
const returnVars = new Set();
|
|
195
|
-
const definedInSelection = new Set();
|
|
196
|
-
// 遍歷選取範圍內的節點
|
|
197
|
-
traverseAST(ast.root, (node) => {
|
|
198
|
-
const inSelection = this.isNodeInRange(node, selection);
|
|
199
|
-
if (inSelection) {
|
|
200
|
-
// 找出在選取範圍內定義的變數
|
|
201
|
-
if (node.pythonKind === PythonNodeKind.Assignment) {
|
|
202
|
-
const nameNode = node.treeSitterNode.childForFieldName('left');
|
|
203
|
-
if (nameNode && nameNode.type === 'identifier') {
|
|
204
|
-
definedInSelection.add(nameNode.text);
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
// 找出使用的識別符
|
|
208
|
-
if (node.pythonKind === PythonNodeKind.Identifier) {
|
|
209
|
-
const name = getNodeText(node);
|
|
210
|
-
// 排除 Python 內建名稱
|
|
211
|
-
if (!this.isPythonBuiltin(name)) {
|
|
212
|
-
// 檢查是否在選取範圍前定義
|
|
213
|
-
if (!definedInSelection.has(name)) {
|
|
214
|
-
parameters.add(name);
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
});
|
|
220
|
-
// 找出選取範圍後使用的變數(需要返回)
|
|
221
|
-
traverseAST(ast.root, (node) => {
|
|
222
|
-
if (node.range.start.line > selection.end.line) {
|
|
223
|
-
if (node.pythonKind === PythonNodeKind.Identifier) {
|
|
224
|
-
const name = getNodeText(node);
|
|
225
|
-
if (definedInSelection.has(name)) {
|
|
226
|
-
returnVars.add(name);
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
});
|
|
231
|
-
return {
|
|
232
|
-
parameters: Array.from(parameters),
|
|
233
|
-
returnVars: Array.from(returnVars)
|
|
234
|
-
};
|
|
235
|
-
}
|
|
236
|
-
/**
|
|
237
|
-
* 檢查節點是否在範圍內
|
|
238
|
-
*/
|
|
239
|
-
isNodeInRange(node, selection) {
|
|
240
|
-
return (node.range.start.line >= selection.start.line
|
|
241
|
-
&& node.range.end.line <= selection.end.line);
|
|
242
|
-
}
|
|
243
|
-
/**
|
|
244
|
-
* 找到函式插入點
|
|
245
|
-
*/
|
|
246
|
-
findInsertionPoint(ast, beforeLine) {
|
|
247
|
-
let insertLine = 0;
|
|
248
|
-
traverseAST(ast.root, (node) => {
|
|
249
|
-
if ((node.pythonKind === PythonNodeKind.FunctionDefinition
|
|
250
|
-
|| node.pythonKind === PythonNodeKind.AsyncFunctionDefinition)
|
|
251
|
-
&& node.range.end.line < beforeLine) {
|
|
252
|
-
insertLine = Math.max(insertLine, node.range.end.line + 1);
|
|
253
|
-
}
|
|
254
|
-
});
|
|
255
|
-
return insertLine;
|
|
256
|
-
}
|
|
257
|
-
/**
|
|
258
|
-
* 檢查是否為 Python 內建名稱
|
|
259
|
-
*/
|
|
260
|
-
isPythonBuiltin(name) {
|
|
261
|
-
const builtins = new Set([
|
|
262
|
-
'True', 'False', 'None',
|
|
263
|
-
'print', 'len', 'range', 'str', 'int', 'float', 'list', 'dict', 'set', 'tuple',
|
|
264
|
-
'open', 'type', 'isinstance', 'issubclass', 'hasattr', 'getattr', 'setattr',
|
|
265
|
-
'sum', 'min', 'max', 'abs', 'round', 'sorted', 'reversed', 'enumerate', 'zip',
|
|
266
|
-
'map', 'filter', 'any', 'all', 'iter', 'next', 'input', 'format',
|
|
267
|
-
'self', 'cls', 'super'
|
|
268
|
-
]);
|
|
269
|
-
return builtins.has(name);
|
|
270
|
-
}
|
|
271
|
-
/**
|
|
272
|
-
* 查找定義
|
|
273
|
-
*/
|
|
274
|
-
async findDefinition(ast, position) {
|
|
275
|
-
this.log('debug', `Finding definition at position ${position.line}:${position.column}`);
|
|
276
|
-
const pythonAST = ast;
|
|
277
|
-
const targetNode = findNodeAtPosition(pythonAST.root, position.line, position.column);
|
|
278
|
-
if (!targetNode || targetNode.pythonKind !== PythonNodeKind.Identifier) {
|
|
279
|
-
return null;
|
|
280
|
-
}
|
|
281
|
-
const name = getNodeText(targetNode);
|
|
282
|
-
const symbols = await this.extractSymbols(ast);
|
|
283
|
-
// 查找同名符號的定義
|
|
284
|
-
const symbol = symbols.find(s => s.name === name);
|
|
285
|
-
if (symbol) {
|
|
286
|
-
return createDefinition(symbol.location, this.symbolTypeToDefinitionKind(symbol.type), symbol.scope?.name);
|
|
287
|
-
}
|
|
288
|
-
return null;
|
|
289
|
-
}
|
|
290
|
-
/**
|
|
291
|
-
* 將 SymbolType 轉換為 DefinitionKind
|
|
292
|
-
*/
|
|
293
|
-
symbolTypeToDefinitionKind(symbolType) {
|
|
294
|
-
switch (symbolType) {
|
|
295
|
-
case SymbolType.Class: return 'class';
|
|
296
|
-
case SymbolType.Function: return 'function';
|
|
297
|
-
case SymbolType.Variable: return 'variable';
|
|
298
|
-
case SymbolType.Module: return 'module';
|
|
299
|
-
default: return 'variable';
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
/**
|
|
303
|
-
* 查找使用位置
|
|
304
|
-
*/
|
|
305
|
-
async findUsages(ast, symbol) {
|
|
306
|
-
this.log('debug', `Finding usages for symbol: ${symbol.name}`);
|
|
307
|
-
const references = await this.findReferences(ast, symbol);
|
|
308
|
-
return references.map(ref => createUsage(ref.location, 'reference'));
|
|
309
|
-
}
|
|
310
|
-
/**
|
|
311
|
-
* 驗證插件狀態
|
|
312
|
-
*/
|
|
313
|
-
async validate() {
|
|
314
|
-
this.log('debug', 'Validating Python parser');
|
|
315
|
-
if (this.isDisposed()) {
|
|
316
|
-
return createValidationFailure([{
|
|
317
|
-
code: 'PLUGIN_DISPOSED',
|
|
318
|
-
message: '插件已被清理',
|
|
319
|
-
location: { filePath: '', range: { start: { line: 0, column: 0, offset: 0 }, end: { line: 0, column: 0, offset: 0 } } }
|
|
320
|
-
}]);
|
|
321
|
-
}
|
|
322
|
-
// 檢查 tree-sitter 是否可用
|
|
323
|
-
try {
|
|
324
|
-
await initializeParser();
|
|
325
|
-
if (!isParserInitialized()) {
|
|
326
|
-
return createValidationFailure([{
|
|
327
|
-
code: 'PARSER_NOT_INITIALIZED',
|
|
328
|
-
message: 'tree-sitter Parser 初始化失敗',
|
|
329
|
-
location: { filePath: '', range: { start: { line: 0, column: 0, offset: 0 }, end: { line: 0, column: 0, offset: 0 } } }
|
|
330
|
-
}]);
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
catch (error) {
|
|
334
|
-
return createValidationFailure([{
|
|
335
|
-
code: 'INITIALIZATION_ERROR',
|
|
336
|
-
message: `Parser 初始化錯誤: ${error.message}`,
|
|
337
|
-
location: { filePath: '', range: { start: { line: 0, column: 0, offset: 0 }, end: { line: 0, column: 0, offset: 0 } } }
|
|
338
|
-
}]);
|
|
339
|
-
}
|
|
340
|
-
return createValidationSuccess();
|
|
341
|
-
}
|
|
342
|
-
/**
|
|
343
|
-
* 清理資源
|
|
344
|
-
*/
|
|
345
|
-
async dispose() {
|
|
346
|
-
this.log('info', 'Disposing Python parser');
|
|
347
|
-
await disposeParser();
|
|
348
|
-
await super.dispose();
|
|
349
|
-
}
|
|
350
|
-
/**
|
|
351
|
-
* 獲取插件能力聲明
|
|
352
|
-
*/
|
|
353
|
-
getCapabilities() {
|
|
354
|
-
return {
|
|
355
|
-
supportsRename: true,
|
|
356
|
-
supportsExtractFunction: true,
|
|
357
|
-
supportsGoToDefinition: true,
|
|
358
|
-
supportsFindUsages: true,
|
|
359
|
-
supportsCodeActions: false
|
|
360
|
-
};
|
|
361
|
-
}
|
|
362
|
-
/**
|
|
363
|
-
* 獲取 Python 專用的排除模式
|
|
364
|
-
*/
|
|
365
|
-
getDefaultExcludePatterns() {
|
|
366
|
-
return [
|
|
367
|
-
...super.getDefaultExcludePatterns(),
|
|
368
|
-
'__pycache__/**',
|
|
369
|
-
'*.pyc',
|
|
370
|
-
'*.pyo',
|
|
371
|
-
'*.pyd',
|
|
372
|
-
'.eggs/**',
|
|
373
|
-
'*.egg-info/**',
|
|
374
|
-
'.venv/**',
|
|
375
|
-
'venv/**',
|
|
376
|
-
'env/**',
|
|
377
|
-
'.env/**',
|
|
378
|
-
'.tox/**',
|
|
379
|
-
'.nox/**',
|
|
380
|
-
'.pytest_cache/**',
|
|
381
|
-
'.mypy_cache/**',
|
|
382
|
-
'.hypothesis/**',
|
|
383
|
-
'htmlcov/**',
|
|
384
|
-
'.coverage',
|
|
385
|
-
'migrations/**'
|
|
386
|
-
];
|
|
387
|
-
}
|
|
388
|
-
/**
|
|
389
|
-
* 判斷是否為測試檔案
|
|
390
|
-
*/
|
|
391
|
-
isTestFile(filePath) {
|
|
392
|
-
return isPythonTestFile(filePath);
|
|
393
|
-
}
|
|
394
|
-
/**
|
|
395
|
-
* 判斷符號是否為抽象宣告
|
|
396
|
-
*/
|
|
397
|
-
isAbstractDeclaration(symbol) {
|
|
398
|
-
// Python 中,class 和 function 都是抽象宣告
|
|
399
|
-
// variable 和 constant 是具體值
|
|
400
|
-
const abstractTypes = [
|
|
401
|
-
SymbolType.Class,
|
|
402
|
-
SymbolType.Function,
|
|
403
|
-
SymbolType.Module
|
|
404
|
-
];
|
|
405
|
-
return abstractTypes.includes(symbol.type);
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
/**
|
|
409
|
-
* 創建 Python Parser 實例
|
|
410
|
-
*/
|
|
411
|
-
export function createPythonParser() {
|
|
412
|
-
return new PythonParser();
|
|
413
|
-
}
|
|
414
|
-
//# sourceMappingURL=parser.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/plugins/python/parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Python 符號提取器
|
|
3
|
-
* 從 AST 中提取 class、function、variable 等符號
|
|
4
|
-
*/
|
|
5
|
-
import type { Symbol } from '../../shared/types/index.js';
|
|
6
|
-
import { type PythonAST } from './types.js';
|
|
7
|
-
/**
|
|
8
|
-
* Python 符號提取器類別
|
|
9
|
-
*/
|
|
10
|
-
export declare class PythonSymbolExtractor {
|
|
11
|
-
/**
|
|
12
|
-
* 從 AST 提取所有符號
|
|
13
|
-
*/
|
|
14
|
-
extractSymbols(ast: PythonAST): Promise<Symbol[]>;
|
|
15
|
-
/**
|
|
16
|
-
* 遞歸訪問節點並提取符號
|
|
17
|
-
*/
|
|
18
|
-
private visitNode;
|
|
19
|
-
/**
|
|
20
|
-
* 訪問子節點
|
|
21
|
-
*/
|
|
22
|
-
private visitChildren;
|
|
23
|
-
/**
|
|
24
|
-
* 提取類別符號
|
|
25
|
-
*/
|
|
26
|
-
private extractClassSymbol;
|
|
27
|
-
/**
|
|
28
|
-
* 提取函式符號
|
|
29
|
-
*/
|
|
30
|
-
private extractFunctionSymbol;
|
|
31
|
-
/**
|
|
32
|
-
* 處理帶裝飾器的定義
|
|
33
|
-
*/
|
|
34
|
-
private handleDecoratedDefinition;
|
|
35
|
-
/**
|
|
36
|
-
* 提取變數符號
|
|
37
|
-
*/
|
|
38
|
-
private extractVariableSymbols;
|
|
39
|
-
/**
|
|
40
|
-
* 提取函式參數
|
|
41
|
-
*/
|
|
42
|
-
private extractParameters;
|
|
43
|
-
/**
|
|
44
|
-
* 訪問類別主體
|
|
45
|
-
*/
|
|
46
|
-
private visitClassBody;
|
|
47
|
-
/**
|
|
48
|
-
* 訪問函式主體
|
|
49
|
-
*/
|
|
50
|
-
private visitFunctionBody;
|
|
51
|
-
/**
|
|
52
|
-
* 獲取節點名稱
|
|
53
|
-
*/
|
|
54
|
-
private getNodeName;
|
|
55
|
-
/**
|
|
56
|
-
* 提取類別修飾符
|
|
57
|
-
*/
|
|
58
|
-
private extractClassModifiers;
|
|
59
|
-
/**
|
|
60
|
-
* 提取函式修飾符
|
|
61
|
-
*/
|
|
62
|
-
private extractFunctionModifiers;
|
|
63
|
-
/**
|
|
64
|
-
* 提取變數修飾符
|
|
65
|
-
*/
|
|
66
|
-
private extractVariableModifiers;
|
|
67
|
-
/**
|
|
68
|
-
* 提取父類別
|
|
69
|
-
*/
|
|
70
|
-
private extractSuperclass;
|
|
71
|
-
/**
|
|
72
|
-
* 提取實現的協議/介面
|
|
73
|
-
*/
|
|
74
|
-
private extractImplementedProtocols;
|
|
75
|
-
/**
|
|
76
|
-
* 獲取賦值目標
|
|
77
|
-
*/
|
|
78
|
-
private getAssignmentTargets;
|
|
79
|
-
/**
|
|
80
|
-
* 提取參數名稱
|
|
81
|
-
*/
|
|
82
|
-
private extractParameterName;
|
|
83
|
-
/**
|
|
84
|
-
* 查找指定類型的子節點
|
|
85
|
-
*/
|
|
86
|
-
private findChildByKind;
|
|
87
|
-
/**
|
|
88
|
-
* 創建位置資訊
|
|
89
|
-
*/
|
|
90
|
-
private createLocation;
|
|
91
|
-
/**
|
|
92
|
-
* 檢查是否為常量(全大寫命名)
|
|
93
|
-
*/
|
|
94
|
-
private isConstant;
|
|
95
|
-
/**
|
|
96
|
-
* 檢查是否為私有或 dunder 名稱
|
|
97
|
-
*/
|
|
98
|
-
private isPrivateOrDunder;
|
|
99
|
-
/**
|
|
100
|
-
* 檢查是否為特殊參數
|
|
101
|
-
*/
|
|
102
|
-
private isSpecialParameter;
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* 創建符號提取器實例
|
|
106
|
-
*/
|
|
107
|
-
export declare function createSymbolExtractor(): PythonSymbolExtractor;
|
|
108
|
-
//# sourceMappingURL=symbol-extractor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"symbol-extractor.d.ts","sourceRoot":"","sources":["../../../src/plugins/python/symbol-extractor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAmB,MAAM,wBAAwB,CAAC;AAEtE,OAAO,EAEL,KAAK,SAAS,EAGf,MAAM,YAAY,CAAC;AAGpB;;GAEG;AACH,qBAAa,qBAAqB;IAChC;;OAEG;IACG,cAAc,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IASvD;;OAEG;IACH,OAAO,CAAC,SAAS;IAoCjB;;OAEG;IACH,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgC1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA+B7B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAiCjC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA8B9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA2BzB;;OAEG;IACH,OAAO,CAAC,cAAc;IActB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAczB;;OAEG;IACH,OAAO,CAAC,WAAW;IAcnB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkB7B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA2BhC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAgBhC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAazB;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAenC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA8B5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA2B5B;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAG3B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,qBAAqB,CAE7D"}
|