@nahisaho/musubix-security 3.0.11 → 3.0.14

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.
@@ -1,105 +1,78 @@
1
1
  /**
2
2
  * @fileoverview Go Language Extractor
3
3
  * @module @nahisaho/musubix-security/extractors/go-extractor
4
- * @trace TSK-005, TSK-006, TSK-007, TSK-008
5
- * @trace REQ-SEC-LANG-002, REQ-SEC-CFG-001, REQ-SEC-DFG-001
4
+ * @trace TSK-GO-001, TSK-GO-002, TSK-GO-003, TSK-GO-004, TSK-GO-005
5
+ * @trace REQ-SEC-GO-001, REQ-SEC-GO-002, REQ-SEC-GO-003, REQ-SEC-GO-004
6
+ * @trace REQ-SEC-GO-005, REQ-SEC-GO-006, REQ-SEC-GO-007, REQ-SEC-GO-008
6
7
  */
7
- import { BaseExtractor, type ASTNode, type DataFlowGraph, type ControlFlowGraph, type SymbolTable, type FrameworkModel, type ExtractorOptions } from './base-extractor.js';
8
+ import { BaseExtractor, type ASTNode, type ASTEdge, type DataFlowGraph, type ControlFlowGraph, type SymbolTable, type FrameworkModel, type SupportedLanguage } from './base-extractor.js';
8
9
  /**
9
- * Go language extractor implementation
10
+ * Go Language Extractor
11
+ * @trace TSK-GO-001, REQ-SEC-GO-001
10
12
  */
11
13
  export declare class GoExtractor extends BaseExtractor {
14
+ readonly language: SupportedLanguage;
15
+ readonly extensions: string[];
12
16
  private parser;
13
17
  private tree;
14
18
  private nodeIdCounter;
15
19
  private blockIdCounter;
16
20
  /**
17
- * Create a new Go extractor
21
+ * Get framework models for Go
22
+ * @trace REQ-SEC-GO-004
18
23
  */
19
- constructor(options?: ExtractorOptions);
24
+ getFrameworkModels(): FrameworkModel[];
20
25
  /**
21
26
  * Initialize tree-sitter parser
27
+ * @trace REQ-SEC-GO-002
22
28
  */
23
- protected initParser(): Promise<void>;
29
+ private initParser;
24
30
  /**
25
- * Parse Go source code into AST
31
+ * Build AST from source code
32
+ * @trace TSK-GO-002, REQ-SEC-GO-002
26
33
  */
27
- parseAST(code: string, filePath: string): Promise<ASTNode>;
34
+ protected buildAST(source: string, filePath: string): Promise<{
35
+ ast: ASTNode;
36
+ astNodes: Map<string, ASTNode>;
37
+ astEdges: ASTEdge[];
38
+ }>;
28
39
  /**
29
- * Convert tree-sitter node to our AST format
40
+ * Convert tree-sitter node to AST format
30
41
  */
31
42
  private convertTreeSitterNode;
32
43
  /**
33
- * Extract metadata from tree-sitter node
44
+ * Extract properties from node
45
+ * @trace REQ-SEC-GO-003
34
46
  */
35
- private extractNodeMetadata;
47
+ private extractNodeProperties;
36
48
  /**
37
- * Extract function parameters
49
+ * Create fallback AST when tree-sitter is unavailable
38
50
  */
39
- private extractParameters;
40
- /**
41
- * Extract import specifications
42
- */
43
- private extractImports;
44
- /**
45
- * Build control flow graph
46
- */
47
- buildCFG(ast: ASTNode): Promise<ControlFlowGraph>;
48
- /**
49
- * Build CFG for a single function
50
- */
51
- private buildFunctionCFG;
52
- /**
53
- * Process a block of statements
54
- */
55
- private processBlock;
56
- /**
57
- * Check if statement is control flow
58
- */
59
- private isControlFlowStatement;
60
- /**
61
- * Process control flow statement
62
- */
63
- private processControlFlow;
64
- /**
65
- * Build data flow graph
66
- */
67
- buildDFG(ast: ASTNode, cfg: ControlFlowGraph): Promise<DataFlowGraph>;
68
- /**
69
- * Create DFG nodes for assignment
70
- */
71
- private createDFGNodesForAssignment;
72
- /**
73
- * Create DFG nodes for function parameters
74
- */
75
- private createDFGNodesForParameters;
76
- /**
77
- * Infer taint label from parameter
78
- */
79
- private inferTaintLabel;
80
- /**
81
- * Build DFG edges
82
- */
83
- private buildDFGEdges;
51
+ private createFallbackAST;
84
52
  /**
85
- * Build symbol table
53
+ * Build Data Flow Graph
54
+ * @trace TSK-GO-003, REQ-SEC-GO-005
86
55
  */
87
- buildSymbolTable(ast: ASTNode): Promise<SymbolTable>;
56
+ protected buildDFG(astNodes: Map<string, ASTNode>, _astEdges: ASTEdge[], frameworkModels: FrameworkModel[]): Promise<DataFlowGraph>;
88
57
  /**
89
- * Check if Go identifier is exported (starts with uppercase)
58
+ * Build Control Flow Graph
59
+ * @trace TSK-GO-004, REQ-SEC-GO-006
90
60
  */
91
- private isExported;
61
+ protected buildCFG(astNodes: Map<string, ASTNode>, _astEdges: ASTEdge[]): Promise<ControlFlowGraph>;
92
62
  /**
93
- * Detect framework usage
63
+ * Extract symbols from AST
64
+ * @trace TSK-GO-005, REQ-SEC-GO-007
94
65
  */
95
- detectFrameworks(ast: ASTNode, symbols: SymbolTable): Promise<FrameworkModel[]>;
66
+ protected extractSymbols(astNodes: Map<string, ASTNode>): Promise<SymbolTable>;
96
67
  /**
97
- * Create fallback AST for when tree-sitter is unavailable
68
+ * Check if identifier is exported (public)
69
+ * Go exports identifiers starting with uppercase
98
70
  */
99
- private createFallbackAST;
100
- /**
101
- * Find nodes by type(s) in AST
102
- */
103
- private findNodesByType;
71
+ isExported(name: string): boolean;
104
72
  }
73
+ /**
74
+ * Create Go extractor instance
75
+ * @trace REQ-SEC-GO-001
76
+ */
77
+ export declare function createGoExtractor(): GoExtractor;
105
78
  //# sourceMappingURL=go-extractor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"go-extractor.d.ts","sourceRoot":"","sources":["../../src/extractors/go-extractor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,aAAa,EACb,KAAK,OAAO,EAGZ,KAAK,aAAa,EAGlB,KAAK,gBAAgB,EAErB,KAAK,WAAW,EAChB,KAAK,cAAc,EAEnB,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAkL7B;;GAEG;AACH,qBAAa,WAAY,SAAQ,aAAa;IAC5C,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,IAAI,CAA+B;IAC3C,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAAK;IAE3B;;OAEG;gBACS,OAAO,CAAC,EAAE,gBAAgB;IAKtC;;OAEG;cACa,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB3C;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYhE;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA6B7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgE3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAuBzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAqBtB;;OAEG;IACG,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAwCvD;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiBxB;;OAEG;IACH,OAAO,CAAC,YAAY;IAsDpB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAY9B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA4H1B;;OAEG;IACG,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;IAsC3E;;OAEG;IACH,OAAO,CAAC,2BAA2B;IA8BnC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IA2BnC;;OAEG;IACH,OAAO,CAAC,eAAe;IASvB;;OAEG;IACH,OAAO,CAAC,aAAa;IA0BrB;;OAEG;IACG,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IA8G1D;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACG,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAyCrF;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;OAEG;IACH,OAAO,CAAC,eAAe;CAexB"}
1
+ {"version":3,"file":"go-extractor.d.ts","sourceRoot":"","sources":["../../src/extractors/go-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,aAAa,EACb,KAAK,OAAO,EACZ,KAAK,OAAO,EAGZ,KAAK,aAAa,EAGlB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAKhB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AA8N7B;;;GAGG;AACH,qBAAa,WAAY,SAAQ,aAAa;IAC5C,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAQ;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAW;IAExC,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,IAAI,CAA+B;IAC3C,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAAK;IAE3B;;;OAGG;IACH,kBAAkB,IAAI,cAAc,EAAE;IAItC;;;OAGG;YACW,UAAU;IAexB;;;OAGG;cACa,QAAQ,CACtB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,GAAG,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,QAAQ,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC;IAmBjF;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAuC7B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAoJ7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA4BzB;;;OAGG;cACa,QAAQ,CACtB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,SAAS,EAAE,OAAO,EAAE,EACpB,eAAe,EAAE,cAAc,EAAE,GAChC,OAAO,CAAC,aAAa,CAAC;IAyFzB;;;OAGG;cACa,QAAQ,CACtB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,SAAS,EAAE,OAAO,EAAE,GACnB,OAAO,CAAC,gBAAgB,CAAC;IA8D5B;;;OAGG;cACa,cAAc,CAC5B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,WAAW,CAAC;IAyKvB;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAGlC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,CAE/C"}