agent-ide 0.1.10 → 0.2.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/README.md +89 -12
- package/dist/application/services/module-coordinator.service.d.ts +0 -1
- package/dist/application/services/module-coordinator.service.d.ts.map +1 -1
- package/dist/application/services/module-coordinator.service.js +2 -8
- package/dist/application/services/module-coordinator.service.js.map +1 -1
- package/dist/core/analysis/index.d.ts +1 -4
- package/dist/core/analysis/index.d.ts.map +1 -1
- package/dist/core/analysis/index.js +1 -7
- package/dist/core/analysis/index.js.map +1 -1
- package/dist/core/dependency/dependency-analyzer.d.ts.map +1 -1
- package/dist/core/dependency/dependency-analyzer.js +10 -0
- package/dist/core/dependency/dependency-analyzer.js.map +1 -1
- package/dist/core/indexing/index-engine.d.ts +4 -0
- package/dist/core/indexing/index-engine.d.ts.map +1 -1
- package/dist/core/indexing/index-engine.js +25 -1
- package/dist/core/indexing/index-engine.js.map +1 -1
- package/dist/core/indexing/symbol-index.d.ts +4 -0
- package/dist/core/indexing/symbol-index.d.ts.map +1 -1
- package/dist/core/indexing/symbol-index.js +17 -0
- package/dist/core/indexing/symbol-index.js.map +1 -1
- package/dist/core/move/import-resolver.d.ts.map +1 -1
- package/dist/core/move/import-resolver.js +8 -0
- package/dist/core/move/import-resolver.js.map +1 -1
- package/dist/core/move/move-service.js +7 -7
- package/dist/core/move/move-service.js.map +1 -1
- package/dist/core/refactor/swift-extractor.d.ts +98 -0
- package/dist/core/refactor/swift-extractor.d.ts.map +1 -0
- package/dist/core/refactor/swift-extractor.js +283 -0
- package/dist/core/refactor/swift-extractor.js.map +1 -0
- package/dist/core/rename/reference-updater.d.ts.map +1 -1
- package/dist/core/rename/reference-updater.js +16 -8
- package/dist/core/rename/reference-updater.js.map +1 -1
- package/dist/core/search/engines/text-engine.js +1 -1
- package/dist/core/search/engines/text-engine.js.map +1 -1
- package/dist/core/shit-score/grading.d.ts +39 -0
- package/dist/core/shit-score/grading.d.ts.map +1 -0
- package/dist/core/shit-score/grading.js +253 -0
- package/dist/core/shit-score/grading.js.map +1 -0
- package/dist/core/shit-score/index.d.ts +9 -0
- package/dist/core/shit-score/index.d.ts.map +1 -0
- package/dist/core/shit-score/index.js +8 -0
- package/dist/core/shit-score/index.js.map +1 -0
- package/dist/core/shit-score/score-calculator.d.ts +75 -0
- package/dist/core/shit-score/score-calculator.d.ts.map +1 -0
- package/dist/core/shit-score/score-calculator.js +240 -0
- package/dist/core/shit-score/score-calculator.js.map +1 -0
- package/dist/core/shit-score/shit-score-analyzer.d.ts +84 -0
- package/dist/core/shit-score/shit-score-analyzer.d.ts.map +1 -0
- package/dist/core/shit-score/shit-score-analyzer.js +595 -0
- package/dist/core/shit-score/shit-score-analyzer.js.map +1 -0
- package/dist/core/shit-score/types.d.ts +231 -0
- package/dist/core/shit-score/types.d.ts.map +1 -0
- package/dist/core/shit-score/types.js +73 -0
- package/dist/core/shit-score/types.js.map +1 -0
- package/dist/core/snapshot/code-compressor.d.ts +39 -0
- package/dist/core/snapshot/code-compressor.d.ts.map +1 -0
- package/dist/core/snapshot/code-compressor.js +211 -0
- package/dist/core/snapshot/code-compressor.js.map +1 -0
- package/dist/core/snapshot/config.d.ts +60 -0
- package/dist/core/snapshot/config.d.ts.map +1 -0
- package/dist/core/snapshot/config.js +136 -0
- package/dist/core/snapshot/config.js.map +1 -0
- package/dist/core/snapshot/index.d.ts +23 -0
- package/dist/core/snapshot/index.d.ts.map +1 -0
- package/dist/core/snapshot/index.js +27 -0
- package/dist/core/snapshot/index.js.map +1 -0
- package/dist/core/snapshot/snapshot-differ.d.ts +54 -0
- package/dist/core/snapshot/snapshot-differ.d.ts.map +1 -0
- package/dist/core/snapshot/snapshot-differ.js +262 -0
- package/dist/core/snapshot/snapshot-differ.js.map +1 -0
- package/dist/core/snapshot/snapshot-engine.d.ts +94 -0
- package/dist/core/snapshot/snapshot-engine.d.ts.map +1 -0
- package/dist/core/snapshot/snapshot-engine.js +492 -0
- package/dist/core/snapshot/snapshot-engine.js.map +1 -0
- package/dist/core/snapshot/types.d.ts +216 -0
- package/dist/core/snapshot/types.d.ts.map +1 -0
- package/dist/core/snapshot/types.js +79 -0
- package/dist/core/snapshot/types.js.map +1 -0
- package/dist/infrastructure/parser/analysis-types.d.ts +198 -0
- package/dist/infrastructure/parser/analysis-types.d.ts.map +1 -0
- package/dist/infrastructure/parser/analysis-types.js +6 -0
- package/dist/infrastructure/parser/analysis-types.js.map +1 -0
- package/dist/infrastructure/parser/base.d.ts +36 -0
- package/dist/infrastructure/parser/base.d.ts.map +1 -1
- package/dist/infrastructure/parser/base.js +72 -0
- package/dist/infrastructure/parser/base.js.map +1 -1
- package/dist/infrastructure/parser/index.d.ts +1 -0
- package/dist/infrastructure/parser/index.d.ts.map +1 -1
- package/dist/infrastructure/parser/index.js.map +1 -1
- package/dist/infrastructure/parser/interface.d.ts +63 -0
- package/dist/infrastructure/parser/interface.d.ts.map +1 -1
- package/dist/infrastructure/parser/interface.js +11 -1
- package/dist/infrastructure/parser/interface.js.map +1 -1
- package/dist/interfaces/cli/cli.d.ts +24 -0
- package/dist/interfaces/cli/cli.d.ts.map +1 -1
- package/dist/interfaces/cli/cli.js +1417 -141
- package/dist/interfaces/cli/cli.js.map +1 -1
- package/dist/plugins/javascript/parser.d.ts +41 -0
- package/dist/plugins/javascript/parser.d.ts.map +1 -1
- package/dist/plugins/javascript/parser.js +284 -0
- package/dist/plugins/javascript/parser.js.map +1 -1
- package/dist/plugins/swift/analyzers/complexity-analyzer.d.ts +41 -0
- package/dist/plugins/swift/analyzers/complexity-analyzer.d.ts.map +1 -0
- package/dist/plugins/swift/analyzers/complexity-analyzer.js +206 -0
- package/dist/plugins/swift/analyzers/complexity-analyzer.js.map +1 -0
- package/dist/plugins/swift/analyzers/duplication-detector.d.ts +89 -0
- package/dist/plugins/swift/analyzers/duplication-detector.d.ts.map +1 -0
- package/dist/plugins/swift/analyzers/duplication-detector.js +271 -0
- package/dist/plugins/swift/analyzers/duplication-detector.js.map +1 -0
- package/dist/plugins/swift/analyzers/error-handling-checker.d.ts +34 -0
- package/dist/plugins/swift/analyzers/error-handling-checker.d.ts.map +1 -0
- package/dist/plugins/swift/analyzers/error-handling-checker.js +135 -0
- package/dist/plugins/swift/analyzers/error-handling-checker.js.map +1 -0
- package/dist/plugins/swift/analyzers/naming-checker.d.ts +47 -0
- package/dist/plugins/swift/analyzers/naming-checker.d.ts.map +1 -0
- package/dist/plugins/swift/analyzers/naming-checker.js +161 -0
- package/dist/plugins/swift/analyzers/naming-checker.js.map +1 -0
- package/dist/plugins/swift/analyzers/pattern-detector.d.ts +78 -0
- package/dist/plugins/swift/analyzers/pattern-detector.d.ts.map +1 -0
- package/dist/plugins/swift/analyzers/pattern-detector.js +247 -0
- package/dist/plugins/swift/analyzers/pattern-detector.js.map +1 -0
- package/dist/plugins/swift/analyzers/security-checker.d.ts +38 -0
- package/dist/plugins/swift/analyzers/security-checker.d.ts.map +1 -0
- package/dist/plugins/swift/analyzers/security-checker.js +135 -0
- package/dist/plugins/swift/analyzers/security-checker.js.map +1 -0
- package/dist/plugins/swift/analyzers/test-coverage-checker.d.ts +26 -0
- package/dist/plugins/swift/analyzers/test-coverage-checker.d.ts.map +1 -0
- package/dist/plugins/swift/analyzers/test-coverage-checker.js +63 -0
- package/dist/plugins/swift/analyzers/test-coverage-checker.js.map +1 -0
- package/dist/plugins/swift/analyzers/type-safety-checker.d.ts +41 -0
- package/dist/plugins/swift/analyzers/type-safety-checker.d.ts.map +1 -0
- package/dist/plugins/swift/analyzers/type-safety-checker.js +121 -0
- package/dist/plugins/swift/analyzers/type-safety-checker.js.map +1 -0
- package/dist/plugins/swift/analyzers/unused-symbol-detector.d.ts +38 -0
- package/dist/plugins/swift/analyzers/unused-symbol-detector.d.ts.map +1 -0
- package/dist/plugins/swift/analyzers/unused-symbol-detector.js +211 -0
- package/dist/plugins/swift/analyzers/unused-symbol-detector.js.map +1 -0
- package/dist/plugins/swift/dependency-analyzer.d.ts +33 -0
- package/dist/plugins/swift/dependency-analyzer.d.ts.map +1 -0
- package/dist/plugins/swift/dependency-analyzer.js +95 -0
- package/dist/plugins/swift/dependency-analyzer.js.map +1 -0
- package/dist/plugins/swift/index.d.ts +14 -0
- package/dist/plugins/swift/index.d.ts.map +1 -0
- package/dist/plugins/swift/index.js +19 -0
- package/dist/plugins/swift/index.js.map +1 -0
- package/dist/plugins/swift/parser.d.ts +160 -0
- package/dist/plugins/swift/parser.d.ts.map +1 -0
- package/dist/plugins/swift/parser.js +670 -0
- package/dist/plugins/swift/parser.js.map +1 -0
- package/dist/plugins/swift/swift-bridge/swift-parser +0 -0
- package/dist/plugins/swift/symbol-extractor.d.ts +46 -0
- package/dist/plugins/swift/symbol-extractor.d.ts.map +1 -0
- package/dist/plugins/swift/symbol-extractor.js +187 -0
- package/dist/plugins/swift/symbol-extractor.js.map +1 -0
- package/dist/plugins/swift/types.d.ts +137 -0
- package/dist/plugins/swift/types.d.ts.map +1 -0
- package/dist/plugins/swift/types.js +212 -0
- package/dist/plugins/swift/types.js.map +1 -0
- package/dist/plugins/typescript/analyzers/complexity-analyzer.d.ts +39 -0
- package/dist/plugins/typescript/analyzers/complexity-analyzer.d.ts.map +1 -0
- package/dist/plugins/typescript/analyzers/complexity-analyzer.js +196 -0
- package/dist/plugins/typescript/analyzers/complexity-analyzer.js.map +1 -0
- package/dist/{core/analysis → plugins/typescript/analyzers}/duplication-detector.d.ts +34 -3
- package/dist/plugins/typescript/analyzers/duplication-detector.d.ts.map +1 -0
- package/dist/plugins/typescript/analyzers/duplication-detector.js +695 -0
- package/dist/plugins/typescript/analyzers/duplication-detector.js.map +1 -0
- package/dist/plugins/typescript/analyzers/error-handling-checker.d.ts +26 -0
- package/dist/plugins/typescript/analyzers/error-handling-checker.d.ts.map +1 -0
- package/dist/plugins/typescript/analyzers/error-handling-checker.js +84 -0
- package/dist/plugins/typescript/analyzers/error-handling-checker.js.map +1 -0
- package/dist/plugins/typescript/analyzers/naming-checker.d.ts +30 -0
- package/dist/plugins/typescript/analyzers/naming-checker.d.ts.map +1 -0
- package/dist/plugins/typescript/analyzers/naming-checker.js +116 -0
- package/dist/plugins/typescript/analyzers/naming-checker.js.map +1 -0
- package/dist/plugins/typescript/analyzers/pattern-detector.d.ts +80 -0
- package/dist/plugins/typescript/analyzers/pattern-detector.d.ts.map +1 -0
- package/dist/plugins/typescript/analyzers/pattern-detector.js +267 -0
- package/dist/plugins/typescript/analyzers/pattern-detector.js.map +1 -0
- package/dist/plugins/typescript/analyzers/security-checker.d.ts +34 -0
- package/dist/plugins/typescript/analyzers/security-checker.d.ts.map +1 -0
- package/dist/plugins/typescript/analyzers/security-checker.js +126 -0
- package/dist/plugins/typescript/analyzers/security-checker.js.map +1 -0
- package/dist/plugins/typescript/analyzers/test-coverage-checker.d.ts +22 -0
- package/dist/plugins/typescript/analyzers/test-coverage-checker.d.ts.map +1 -0
- package/dist/plugins/typescript/analyzers/test-coverage-checker.js +62 -0
- package/dist/plugins/typescript/analyzers/test-coverage-checker.js.map +1 -0
- package/dist/plugins/typescript/analyzers/type-safety-checker.d.ts +32 -0
- package/dist/plugins/typescript/analyzers/type-safety-checker.d.ts.map +1 -0
- package/dist/plugins/typescript/analyzers/type-safety-checker.js +86 -0
- package/dist/plugins/typescript/analyzers/type-safety-checker.js.map +1 -0
- package/dist/plugins/typescript/analyzers/unused-symbol-detector.d.ts +47 -0
- package/dist/plugins/typescript/analyzers/unused-symbol-detector.d.ts.map +1 -0
- package/dist/plugins/typescript/analyzers/unused-symbol-detector.js +152 -0
- package/dist/plugins/typescript/analyzers/unused-symbol-detector.js.map +1 -0
- package/dist/plugins/typescript/parser.d.ts +41 -0
- package/dist/plugins/typescript/parser.d.ts.map +1 -1
- package/dist/plugins/typescript/parser.js +336 -0
- package/dist/plugins/typescript/parser.js.map +1 -1
- package/dist/shared/types/symbol.d.ts +7 -1
- package/dist/shared/types/symbol.d.ts.map +1 -1
- package/dist/shared/types/symbol.js +8 -2
- package/dist/shared/types/symbol.js.map +1 -1
- package/package.json +17 -7
- package/bin/mcp-server.js +0 -20
- package/dist/core/analysis/complexity-analyzer.d.ts +0 -81
- package/dist/core/analysis/complexity-analyzer.d.ts.map +0 -1
- package/dist/core/analysis/complexity-analyzer.js +0 -255
- package/dist/core/analysis/complexity-analyzer.js.map +0 -1
- package/dist/core/analysis/dead-code-detector.d.ts +0 -152
- package/dist/core/analysis/dead-code-detector.d.ts.map +0 -1
- package/dist/core/analysis/dead-code-detector.js +0 -351
- package/dist/core/analysis/dead-code-detector.js.map +0 -1
- package/dist/core/analysis/duplication-detector.d.ts.map +0 -1
- package/dist/core/analysis/duplication-detector.js +0 -433
- package/dist/core/analysis/duplication-detector.js.map +0 -1
- package/dist/interfaces/mcp/index.d.ts +0 -7
- package/dist/interfaces/mcp/index.d.ts.map +0 -1
- package/dist/interfaces/mcp/index.js +0 -6
- package/dist/interfaces/mcp/index.js.map +0 -1
- package/dist/interfaces/mcp/mcp-server.d.ts +0 -34
- package/dist/interfaces/mcp/mcp-server.d.ts.map +0 -1
- package/dist/interfaces/mcp/mcp-server.js +0 -162
- package/dist/interfaces/mcp/mcp-server.js.map +0 -1
- package/dist/interfaces/mcp/mcp.d.ts +0 -52
- package/dist/interfaces/mcp/mcp.d.ts.map +0 -1
- package/dist/interfaces/mcp/mcp.js +0 -853
- package/dist/interfaces/mcp/mcp.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/plugins/swift/parser.ts"],"names":[],"mappings":"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"}
|
|
Binary file
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Swift Symbol Extractor
|
|
3
|
+
* 從 AST 中提取符號資訊
|
|
4
|
+
*/
|
|
5
|
+
import type { Symbol } from '../../shared/types/index.js';
|
|
6
|
+
import type { SwiftAST } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Swift 符號提取器
|
|
9
|
+
*/
|
|
10
|
+
export declare class SwiftSymbolExtractor {
|
|
11
|
+
/**
|
|
12
|
+
* 從 AST 提取所有符號
|
|
13
|
+
*/
|
|
14
|
+
extractSymbols(ast: SwiftAST): Promise<Symbol[]>;
|
|
15
|
+
/**
|
|
16
|
+
* 從節點遞歸提取符號
|
|
17
|
+
*/
|
|
18
|
+
private extractSymbolsFromNode;
|
|
19
|
+
/**
|
|
20
|
+
* 從節點建立符號
|
|
21
|
+
*/
|
|
22
|
+
private createSymbolFromNode;
|
|
23
|
+
/**
|
|
24
|
+
* 判斷節點是否為型別宣告(Class/Struct/Protocol/Enum)
|
|
25
|
+
*/
|
|
26
|
+
private isTypeDeclaration;
|
|
27
|
+
/**
|
|
28
|
+
* 提取存取層級
|
|
29
|
+
*/
|
|
30
|
+
private extractAccessLevel;
|
|
31
|
+
/**
|
|
32
|
+
* 提取 property wrappers
|
|
33
|
+
* attributes 現在包含 @ 符號(如 '@Published'),需要去掉 @ 再比對
|
|
34
|
+
*/
|
|
35
|
+
private extractPropertyWrappers;
|
|
36
|
+
/**
|
|
37
|
+
* 提取繼承和協定資訊
|
|
38
|
+
* 從類別宣告如 "class Foo: Bar, Baz, Protocol" 提取 superclass 和 implements
|
|
39
|
+
*/
|
|
40
|
+
private extractInheritance;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* 建立符號提取器實例
|
|
44
|
+
*/
|
|
45
|
+
export declare function createSymbolExtractor(): SwiftSymbolExtractor;
|
|
46
|
+
//# sourceMappingURL=symbol-extractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbol-extractor.d.ts","sourceRoot":"","sources":["../../../src/plugins/swift/symbol-extractor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAmB,MAAM,6BAA6B,CAAC;AAE3E,OAAO,KAAK,EAAE,QAAQ,EAA6B,MAAM,YAAY,CAAC;AAWtE;;GAEG;AACH,qBAAa,oBAAoB;IAC/B;;OAEG;IACG,cAAc,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAMtD;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAsB9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA6D5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IASzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAmB/B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;CAgD3B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,oBAAoB,CAE5D"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Swift Symbol Extractor
|
|
3
|
+
* 從 AST 中提取符號資訊
|
|
4
|
+
*/
|
|
5
|
+
import { SymbolType } from '../../shared/types/index.js';
|
|
6
|
+
import { SwiftNodeKind, swiftKindToSymbolType, getNodeName, extractModifiers, extractAttributes, isDeclarationNode, SwiftAccessLevel } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Swift 符號提取器
|
|
9
|
+
*/
|
|
10
|
+
export class SwiftSymbolExtractor {
|
|
11
|
+
/**
|
|
12
|
+
* 從 AST 提取所有符號
|
|
13
|
+
*/
|
|
14
|
+
async extractSymbols(ast) {
|
|
15
|
+
const symbols = [];
|
|
16
|
+
this.extractSymbolsFromNode(ast.root, ast.sourceFile, symbols, undefined);
|
|
17
|
+
return symbols;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 從節點遞歸提取符號
|
|
21
|
+
*/
|
|
22
|
+
extractSymbolsFromNode(node, filePath, symbols, parentNode) {
|
|
23
|
+
// 如果是宣告節點,建立符號
|
|
24
|
+
if (isDeclarationNode(node)) {
|
|
25
|
+
const symbol = this.createSymbolFromNode(node, filePath, parentNode);
|
|
26
|
+
if (symbol) {
|
|
27
|
+
symbols.push(symbol);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// 遞歸處理子節點
|
|
31
|
+
if (node.children) {
|
|
32
|
+
for (const child of node.children) {
|
|
33
|
+
this.extractSymbolsFromNode(child, filePath, symbols, node);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* 從節點建立符號
|
|
39
|
+
*/
|
|
40
|
+
createSymbolFromNode(node, filePath, parentNode) {
|
|
41
|
+
const name = getNodeName(node);
|
|
42
|
+
if (!name) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
let symbolType = swiftKindToSymbolType(node.swiftKind);
|
|
46
|
+
const modifiers = extractModifiers(node.source || '');
|
|
47
|
+
const attributes = extractAttributes(node.source || '');
|
|
48
|
+
// 如果是 Variable 且有屬性包裝器(@Published, @State 等),或有存取修飾符,視為 Property
|
|
49
|
+
if (symbolType === SymbolType.Variable) {
|
|
50
|
+
const hasPropertyWrapper = attributes.some(attr => ['@Published', '@State', '@Binding', '@ObservedObject', '@StateObject',
|
|
51
|
+
'@EnvironmentObject', '@Environment', '@AppStorage', '@SceneStorage'].includes(attr));
|
|
52
|
+
const hasAccessModifier = modifiers.some(mod => ['public', 'private', 'internal', 'fileprivate', 'open'].includes(mod));
|
|
53
|
+
if (hasPropertyWrapper || hasAccessModifier) {
|
|
54
|
+
symbolType = SymbolType.Property;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const accessLevel = this.extractAccessLevel(modifiers);
|
|
58
|
+
const propertyWrappers = this.extractPropertyWrappers(attributes);
|
|
59
|
+
const { superclass, implements: protocols } = this.extractInheritance(node.source || '');
|
|
60
|
+
// 建立位置資訊(從 node.range 或簡化版)
|
|
61
|
+
const range = node.range || {
|
|
62
|
+
start: { line: 1, column: 1, offset: 0 },
|
|
63
|
+
end: { line: 1, column: 1, offset: 0 }
|
|
64
|
+
};
|
|
65
|
+
const location = {
|
|
66
|
+
filePath,
|
|
67
|
+
range
|
|
68
|
+
};
|
|
69
|
+
const symbol = {
|
|
70
|
+
name,
|
|
71
|
+
type: symbolType,
|
|
72
|
+
location,
|
|
73
|
+
scope: undefined, // TODO: 實作 scope 分析
|
|
74
|
+
modifiers,
|
|
75
|
+
...(attributes.length > 0 ? { attributes } : {}),
|
|
76
|
+
...(superclass ? { superclass } : {}),
|
|
77
|
+
...(protocols.length > 0 ? { implements: protocols } : {}),
|
|
78
|
+
swiftNode: node,
|
|
79
|
+
propertyWrappers,
|
|
80
|
+
accessLevel
|
|
81
|
+
};
|
|
82
|
+
return symbol;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* 判斷節點是否為型別宣告(Class/Struct/Protocol/Enum)
|
|
86
|
+
*/
|
|
87
|
+
isTypeDeclaration(node) {
|
|
88
|
+
return [
|
|
89
|
+
SwiftNodeKind.Class,
|
|
90
|
+
SwiftNodeKind.Struct,
|
|
91
|
+
SwiftNodeKind.Protocol,
|
|
92
|
+
SwiftNodeKind.Enum
|
|
93
|
+
].includes(node.swiftKind);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* 提取存取層級
|
|
97
|
+
*/
|
|
98
|
+
extractAccessLevel(modifiers) {
|
|
99
|
+
if (modifiers.includes('open')) {
|
|
100
|
+
return SwiftAccessLevel.Open;
|
|
101
|
+
}
|
|
102
|
+
if (modifiers.includes('public')) {
|
|
103
|
+
return SwiftAccessLevel.Public;
|
|
104
|
+
}
|
|
105
|
+
if (modifiers.includes('fileprivate')) {
|
|
106
|
+
return SwiftAccessLevel.FilePrivate;
|
|
107
|
+
}
|
|
108
|
+
if (modifiers.includes('private')) {
|
|
109
|
+
return SwiftAccessLevel.Private;
|
|
110
|
+
}
|
|
111
|
+
return SwiftAccessLevel.Internal; // 預設為 internal
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* 提取 property wrappers
|
|
115
|
+
* attributes 現在包含 @ 符號(如 '@Published'),需要去掉 @ 再比對
|
|
116
|
+
*/
|
|
117
|
+
extractPropertyWrappers(attributes) {
|
|
118
|
+
const propertyWrappers = [
|
|
119
|
+
'Published',
|
|
120
|
+
'State',
|
|
121
|
+
'Binding',
|
|
122
|
+
'ObservedObject',
|
|
123
|
+
'StateObject',
|
|
124
|
+
'EnvironmentObject',
|
|
125
|
+
'Environment',
|
|
126
|
+
'AppStorage',
|
|
127
|
+
'SceneStorage',
|
|
128
|
+
'FetchRequest'
|
|
129
|
+
];
|
|
130
|
+
return attributes
|
|
131
|
+
.map(attr => attr.startsWith('@') ? attr.slice(1) : attr)
|
|
132
|
+
.filter(attr => propertyWrappers.includes(attr));
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* 提取繼承和協定資訊
|
|
136
|
+
* 從類別宣告如 "class Foo: Bar, Baz, Protocol" 提取 superclass 和 implements
|
|
137
|
+
*/
|
|
138
|
+
extractInheritance(source) {
|
|
139
|
+
// 匹配類別宣告: class ClassName: SuperClass, Protocol1, Protocol2
|
|
140
|
+
// 或 struct/enum 實作協定: struct Foo: Protocol1, Protocol2
|
|
141
|
+
const classMatch = source.match(/(?:class|struct|enum)\s+\w+\s*:\s*([^{]+)/);
|
|
142
|
+
if (!classMatch) {
|
|
143
|
+
return { implements: [] };
|
|
144
|
+
}
|
|
145
|
+
const inheritanceList = classMatch[1]
|
|
146
|
+
.split(',')
|
|
147
|
+
.map(s => s.trim())
|
|
148
|
+
.filter(s => s.length > 0);
|
|
149
|
+
if (inheritanceList.length === 0) {
|
|
150
|
+
return { implements: [] };
|
|
151
|
+
}
|
|
152
|
+
// 對於 class,第一個是 superclass(如果不是協定)
|
|
153
|
+
// 常見協定:ObservableObject, Identifiable, Codable, Equatable, Hashable 等
|
|
154
|
+
const knownProtocols = new Set([
|
|
155
|
+
'ObservableObject',
|
|
156
|
+
'Identifiable',
|
|
157
|
+
'Codable',
|
|
158
|
+
'Equatable',
|
|
159
|
+
'Hashable',
|
|
160
|
+
'Comparable',
|
|
161
|
+
'CustomStringConvertible',
|
|
162
|
+
'Decodable',
|
|
163
|
+
'Encodable',
|
|
164
|
+
'Error',
|
|
165
|
+
'CaseIterable'
|
|
166
|
+
]);
|
|
167
|
+
// 如果是 class 且第一個不是已知協定,則視為 superclass
|
|
168
|
+
if (source.startsWith('class') || source.includes('class ')) {
|
|
169
|
+
const first = inheritanceList[0];
|
|
170
|
+
if (first && !knownProtocols.has(first) && !first.endsWith('Protocol')) {
|
|
171
|
+
return {
|
|
172
|
+
superclass: first,
|
|
173
|
+
implements: inheritanceList.slice(1)
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
// 否則全部視為協定
|
|
178
|
+
return { implements: inheritanceList };
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* 建立符號提取器實例
|
|
183
|
+
*/
|
|
184
|
+
export function createSymbolExtractor() {
|
|
185
|
+
return new SwiftSymbolExtractor();
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=symbol-extractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbol-extractor.js","sourceRoot":"","sources":["../../../src/plugins/swift/symbol-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Swift Parser 型別定義
|
|
3
|
+
*/
|
|
4
|
+
import type { AST, ASTNode, Symbol } from '../../shared/types/index.js';
|
|
5
|
+
import { SymbolType } from '../../shared/types/index.js';
|
|
6
|
+
/**
|
|
7
|
+
* Swift AST 節點
|
|
8
|
+
*/
|
|
9
|
+
export interface SwiftASTNode extends ASTNode {
|
|
10
|
+
/** Swift 節點類型 */
|
|
11
|
+
swiftKind: SwiftNodeKind;
|
|
12
|
+
/** 屬性(如 @Published, @State 等) */
|
|
13
|
+
attributes?: string[];
|
|
14
|
+
/** 修飾符(如 public, private, static 等) */
|
|
15
|
+
modifiers?: string[];
|
|
16
|
+
/** 節點原始碼片段(可選,用於提取名稱等資訊) */
|
|
17
|
+
source?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Swift 節點類型
|
|
21
|
+
*/
|
|
22
|
+
export declare enum SwiftNodeKind {
|
|
23
|
+
SourceFile = "SourceFile",
|
|
24
|
+
Class = "ClassDecl",
|
|
25
|
+
Struct = "StructDecl",
|
|
26
|
+
Protocol = "ProtocolDecl",
|
|
27
|
+
Enum = "EnumDecl",
|
|
28
|
+
Function = "FuncDecl",
|
|
29
|
+
Variable = "VariableDecl",
|
|
30
|
+
Constant = "LetDecl",
|
|
31
|
+
TypeAlias = "TypeAliasDecl",
|
|
32
|
+
Extension = "ExtensionDecl",
|
|
33
|
+
Property = "PropertyDecl",
|
|
34
|
+
Method = "MethodDecl",
|
|
35
|
+
Import = "ImportDecl",
|
|
36
|
+
Parameter = "ParamDecl",
|
|
37
|
+
Unknown = "Unknown"
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Swift AST(擴展標準 AST)
|
|
41
|
+
*/
|
|
42
|
+
export interface SwiftAST extends AST {
|
|
43
|
+
root: SwiftASTNode;
|
|
44
|
+
/** Swift 版本 */
|
|
45
|
+
swiftVersion?: string;
|
|
46
|
+
/** 編譯錯誤 */
|
|
47
|
+
diagnostics?: SwiftDiagnostic[];
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Swift 診斷訊息
|
|
51
|
+
*/
|
|
52
|
+
export interface SwiftDiagnostic {
|
|
53
|
+
severity: 'error' | 'warning' | 'note';
|
|
54
|
+
message: string;
|
|
55
|
+
line: number;
|
|
56
|
+
column: number;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Swift 符號(擴展標準 Symbol)
|
|
60
|
+
*/
|
|
61
|
+
export interface SwiftSymbol extends Symbol {
|
|
62
|
+
/** Swift 節點引用 */
|
|
63
|
+
swiftNode: SwiftASTNode;
|
|
64
|
+
/** 屬性包裝器(如 @Published, @State) */
|
|
65
|
+
propertyWrappers?: string[];
|
|
66
|
+
/** 存取層級(public, private, internal 等) */
|
|
67
|
+
accessLevel?: SwiftAccessLevel;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Swift 存取層級
|
|
71
|
+
*/
|
|
72
|
+
export declare enum SwiftAccessLevel {
|
|
73
|
+
Open = "open",
|
|
74
|
+
Public = "public",
|
|
75
|
+
Internal = "internal",
|
|
76
|
+
FilePrivate = "fileprivate",
|
|
77
|
+
Private = "private"
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* CLI Bridge 通訊格式
|
|
81
|
+
*/
|
|
82
|
+
export interface SwiftCLIRequest {
|
|
83
|
+
action: 'parse' | 'analyze';
|
|
84
|
+
code?: string;
|
|
85
|
+
filePath: string;
|
|
86
|
+
}
|
|
87
|
+
export interface SwiftCLIResponse {
|
|
88
|
+
success: boolean;
|
|
89
|
+
ast?: SwiftASTNode;
|
|
90
|
+
diagnostics?: SwiftDiagnostic[];
|
|
91
|
+
error?: string;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Swift Parser 錯誤
|
|
95
|
+
*/
|
|
96
|
+
export declare class SwiftParseError extends Error {
|
|
97
|
+
readonly diagnostics?: SwiftDiagnostic[] | undefined;
|
|
98
|
+
constructor(message: string, diagnostics?: SwiftDiagnostic[] | undefined);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* 建立 Swift AST 節點
|
|
102
|
+
*/
|
|
103
|
+
export declare function createSwiftASTNode(kind: SwiftNodeKind, source: string, attributes?: string[], modifiers?: string[]): SwiftASTNode;
|
|
104
|
+
/**
|
|
105
|
+
* 建立 Swift Parse Error
|
|
106
|
+
*/
|
|
107
|
+
export declare function createParseError(message: string, diagnostics?: SwiftDiagnostic[]): SwiftParseError;
|
|
108
|
+
/**
|
|
109
|
+
* 判斷節點是否為宣告
|
|
110
|
+
*/
|
|
111
|
+
export declare function isDeclarationNode(node: SwiftASTNode): boolean;
|
|
112
|
+
/**
|
|
113
|
+
* 判斷節點是否為型別宣告
|
|
114
|
+
*/
|
|
115
|
+
export declare function isTypeDeclarationNode(node: SwiftASTNode): boolean;
|
|
116
|
+
/**
|
|
117
|
+
* 從 Swift 節點類型映射到 SymbolType
|
|
118
|
+
*/
|
|
119
|
+
export declare function swiftKindToSymbolType(kind: SwiftNodeKind): SymbolType;
|
|
120
|
+
/**
|
|
121
|
+
* 提取節點名稱
|
|
122
|
+
*/
|
|
123
|
+
export declare function getNodeName(node: SwiftASTNode): string | null;
|
|
124
|
+
/**
|
|
125
|
+
* 判斷是否為有效的 Swift 識別符
|
|
126
|
+
*/
|
|
127
|
+
export declare function isValidIdentifier(name: string): boolean;
|
|
128
|
+
/**
|
|
129
|
+
* 提取修飾符
|
|
130
|
+
*/
|
|
131
|
+
export declare function extractModifiers(source: string): string[];
|
|
132
|
+
/**
|
|
133
|
+
* 提取屬性(property wrappers)
|
|
134
|
+
* 回傳包含 @ 符號的屬性名稱
|
|
135
|
+
*/
|
|
136
|
+
export declare function extractAttributes(source: string): string[];
|
|
137
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/plugins/swift/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Swift Parser 型別定義
|
|
3
|
+
*/
|
|
4
|
+
import { SymbolType } from '../../shared/types/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* Swift 節點類型
|
|
7
|
+
*/
|
|
8
|
+
export var SwiftNodeKind;
|
|
9
|
+
(function (SwiftNodeKind) {
|
|
10
|
+
SwiftNodeKind["SourceFile"] = "SourceFile";
|
|
11
|
+
SwiftNodeKind["Class"] = "ClassDecl";
|
|
12
|
+
SwiftNodeKind["Struct"] = "StructDecl";
|
|
13
|
+
SwiftNodeKind["Protocol"] = "ProtocolDecl";
|
|
14
|
+
SwiftNodeKind["Enum"] = "EnumDecl";
|
|
15
|
+
SwiftNodeKind["Function"] = "FuncDecl";
|
|
16
|
+
SwiftNodeKind["Variable"] = "VariableDecl";
|
|
17
|
+
SwiftNodeKind["Constant"] = "LetDecl";
|
|
18
|
+
SwiftNodeKind["TypeAlias"] = "TypeAliasDecl";
|
|
19
|
+
SwiftNodeKind["Extension"] = "ExtensionDecl";
|
|
20
|
+
SwiftNodeKind["Property"] = "PropertyDecl";
|
|
21
|
+
SwiftNodeKind["Method"] = "MethodDecl";
|
|
22
|
+
SwiftNodeKind["Import"] = "ImportDecl";
|
|
23
|
+
SwiftNodeKind["Parameter"] = "ParamDecl";
|
|
24
|
+
SwiftNodeKind["Unknown"] = "Unknown";
|
|
25
|
+
})(SwiftNodeKind || (SwiftNodeKind = {}));
|
|
26
|
+
/**
|
|
27
|
+
* Swift 存取層級
|
|
28
|
+
*/
|
|
29
|
+
export var SwiftAccessLevel;
|
|
30
|
+
(function (SwiftAccessLevel) {
|
|
31
|
+
SwiftAccessLevel["Open"] = "open";
|
|
32
|
+
SwiftAccessLevel["Public"] = "public";
|
|
33
|
+
SwiftAccessLevel["Internal"] = "internal";
|
|
34
|
+
SwiftAccessLevel["FilePrivate"] = "fileprivate";
|
|
35
|
+
SwiftAccessLevel["Private"] = "private";
|
|
36
|
+
})(SwiftAccessLevel || (SwiftAccessLevel = {}));
|
|
37
|
+
/**
|
|
38
|
+
* Swift Parser 錯誤
|
|
39
|
+
*/
|
|
40
|
+
export class SwiftParseError extends Error {
|
|
41
|
+
diagnostics;
|
|
42
|
+
constructor(message, diagnostics) {
|
|
43
|
+
super(message);
|
|
44
|
+
this.diagnostics = diagnostics;
|
|
45
|
+
this.name = 'SwiftParseError';
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* 建立 Swift AST 節點
|
|
50
|
+
*/
|
|
51
|
+
export function createSwiftASTNode(kind, source, attributes, modifiers) {
|
|
52
|
+
return {
|
|
53
|
+
type: kind,
|
|
54
|
+
range: {
|
|
55
|
+
start: { line: 0, column: 0, offset: 0 },
|
|
56
|
+
end: { line: 0, column: 0, offset: 0 }
|
|
57
|
+
},
|
|
58
|
+
source,
|
|
59
|
+
swiftKind: kind,
|
|
60
|
+
attributes,
|
|
61
|
+
modifiers,
|
|
62
|
+
children: [],
|
|
63
|
+
properties: {}
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* 建立 Swift Parse Error
|
|
68
|
+
*/
|
|
69
|
+
export function createParseError(message, diagnostics) {
|
|
70
|
+
return new SwiftParseError(message, diagnostics);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* 判斷節點是否為宣告
|
|
74
|
+
*/
|
|
75
|
+
export function isDeclarationNode(node) {
|
|
76
|
+
return [
|
|
77
|
+
SwiftNodeKind.Class,
|
|
78
|
+
SwiftNodeKind.Struct,
|
|
79
|
+
SwiftNodeKind.Protocol,
|
|
80
|
+
SwiftNodeKind.Enum,
|
|
81
|
+
SwiftNodeKind.Function,
|
|
82
|
+
SwiftNodeKind.Variable,
|
|
83
|
+
SwiftNodeKind.Constant,
|
|
84
|
+
SwiftNodeKind.TypeAlias,
|
|
85
|
+
SwiftNodeKind.Property,
|
|
86
|
+
SwiftNodeKind.Method
|
|
87
|
+
].includes(node.swiftKind);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* 判斷節點是否為型別宣告
|
|
91
|
+
*/
|
|
92
|
+
export function isTypeDeclarationNode(node) {
|
|
93
|
+
return [
|
|
94
|
+
SwiftNodeKind.Class,
|
|
95
|
+
SwiftNodeKind.Struct,
|
|
96
|
+
SwiftNodeKind.Protocol,
|
|
97
|
+
SwiftNodeKind.Enum,
|
|
98
|
+
SwiftNodeKind.TypeAlias
|
|
99
|
+
].includes(node.swiftKind);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* 從 Swift 節點類型映射到 SymbolType
|
|
103
|
+
*/
|
|
104
|
+
export function swiftKindToSymbolType(kind) {
|
|
105
|
+
switch (kind) {
|
|
106
|
+
case SwiftNodeKind.Class:
|
|
107
|
+
return SymbolType.Class;
|
|
108
|
+
case SwiftNodeKind.Struct:
|
|
109
|
+
return SymbolType.Struct; // Swift struct 現在有專屬類型
|
|
110
|
+
case SwiftNodeKind.Protocol:
|
|
111
|
+
return SymbolType.Protocol; // Swift protocol 現在有專屬類型
|
|
112
|
+
case SwiftNodeKind.Enum:
|
|
113
|
+
return SymbolType.Enum;
|
|
114
|
+
case SwiftNodeKind.Function:
|
|
115
|
+
case SwiftNodeKind.Method:
|
|
116
|
+
return SymbolType.Function;
|
|
117
|
+
case SwiftNodeKind.Variable:
|
|
118
|
+
return SymbolType.Variable;
|
|
119
|
+
case SwiftNodeKind.Property:
|
|
120
|
+
return SymbolType.Property; // Swift property 現在有專屬類型
|
|
121
|
+
case SwiftNodeKind.Constant:
|
|
122
|
+
return SymbolType.Constant;
|
|
123
|
+
case SwiftNodeKind.TypeAlias:
|
|
124
|
+
return SymbolType.Type;
|
|
125
|
+
default:
|
|
126
|
+
return SymbolType.Variable;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* 提取節點名稱
|
|
131
|
+
*/
|
|
132
|
+
export function getNodeName(node) {
|
|
133
|
+
// 優先從 properties 讀取名稱
|
|
134
|
+
if (node.properties?.name) {
|
|
135
|
+
return node.properties.name;
|
|
136
|
+
}
|
|
137
|
+
// 如果沒有 source,返回 null
|
|
138
|
+
if (!node.source) {
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
// 從 source 中提取名稱(簡化實作)
|
|
142
|
+
const source = node.source.trim();
|
|
143
|
+
// 匹配各種宣告模式
|
|
144
|
+
const patterns = [
|
|
145
|
+
/class\s+(\w+)/,
|
|
146
|
+
/struct\s+(\w+)/,
|
|
147
|
+
/protocol\s+(\w+)/,
|
|
148
|
+
/enum\s+(\w+)/,
|
|
149
|
+
/func\s+(\w+)/,
|
|
150
|
+
/var\s+(\w+)/,
|
|
151
|
+
/let\s+(\w+)/,
|
|
152
|
+
/typealias\s+(\w+)/
|
|
153
|
+
];
|
|
154
|
+
for (const pattern of patterns) {
|
|
155
|
+
const match = source.match(pattern);
|
|
156
|
+
if (match) {
|
|
157
|
+
return match[1];
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* 判斷是否為有效的 Swift 識別符
|
|
164
|
+
*/
|
|
165
|
+
export function isValidIdentifier(name) {
|
|
166
|
+
// Swift 識別符規則:字母或底線開頭,後接字母、數字或底線
|
|
167
|
+
return /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(name);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* 提取修飾符
|
|
171
|
+
*/
|
|
172
|
+
export function extractModifiers(source) {
|
|
173
|
+
const modifiers = [];
|
|
174
|
+
const modifierPatterns = [
|
|
175
|
+
'public',
|
|
176
|
+
'private',
|
|
177
|
+
'internal',
|
|
178
|
+
'fileprivate',
|
|
179
|
+
'open',
|
|
180
|
+
'static',
|
|
181
|
+
'final',
|
|
182
|
+
'override',
|
|
183
|
+
'weak',
|
|
184
|
+
'unowned',
|
|
185
|
+
'lazy',
|
|
186
|
+
'mutating',
|
|
187
|
+
'nonmutating',
|
|
188
|
+
'async',
|
|
189
|
+
'throws',
|
|
190
|
+
'rethrows'
|
|
191
|
+
];
|
|
192
|
+
for (const modifier of modifierPatterns) {
|
|
193
|
+
if (new RegExp(`\\b${modifier}\\b`).test(source)) {
|
|
194
|
+
modifiers.push(modifier);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
return modifiers;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* 提取屬性(property wrappers)
|
|
201
|
+
* 回傳包含 @ 符號的屬性名稱
|
|
202
|
+
*/
|
|
203
|
+
export function extractAttributes(source) {
|
|
204
|
+
const attributes = [];
|
|
205
|
+
const attrPattern = /@(\w+)/g;
|
|
206
|
+
let match;
|
|
207
|
+
while ((match = attrPattern.exec(source)) !== null) {
|
|
208
|
+
attributes.push(`@${match[1]}`); // 保留 @ 符號
|
|
209
|
+
}
|
|
210
|
+
return attributes;
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/plugins/swift/types.ts"],"names":[],"mappings":"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"}
|