code-auditor-mcp 3.4.11 → 3.4.13
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/.claude-plugin/marketplace.json +2 -2
- package/CHANGELOG.md +119 -1
- package/dist/analyzers/__verify_self_probe.d.ts +2 -0
- package/dist/analyzers/__verify_self_probe.d.ts.map +1 -0
- package/dist/analyzers/__verify_self_probe.js +5 -0
- package/dist/analyzers/__verify_self_probe.js.map +1 -0
- package/dist/analyzers/analyzerUtils.d.ts +34 -1
- package/dist/analyzers/analyzerUtils.d.ts.map +1 -1
- package/dist/analyzers/analyzerUtils.js +61 -22
- package/dist/analyzers/analyzerUtils.js.map +1 -1
- package/dist/analyzers/cross-language/APIContractAnalyzer.d.ts +18 -23
- package/dist/analyzers/cross-language/APIContractAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/cross-language/APIContractAnalyzer.js +198 -186
- package/dist/analyzers/cross-language/APIContractAnalyzer.js.map +1 -1
- package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts +78 -55
- package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts.map +1 -1
- package/dist/analyzers/cross-language/DependencyGraphBuilder.js +244 -243
- package/dist/analyzers/cross-language/DependencyGraphBuilder.js.map +1 -1
- package/dist/analyzers/cross-language/SchemaValidator.d.ts +27 -37
- package/dist/analyzers/cross-language/SchemaValidator.d.ts.map +1 -1
- package/dist/analyzers/cross-language/SchemaValidator.js +314 -275
- package/dist/analyzers/cross-language/SchemaValidator.js.map +1 -1
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts +17 -46
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js +620 -523
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js.map +1 -1
- package/dist/analyzers/documentationAnalyzer.d.ts +7 -2
- package/dist/analyzers/documentationAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/documentationAnalyzer.js +259 -198
- package/dist/analyzers/documentationAnalyzer.js.map +1 -1
- package/dist/analyzers/invariantsAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/invariantsAnalyzer.js +59 -46
- package/dist/analyzers/invariantsAnalyzer.js.map +1 -1
- package/dist/analyzers/orm/adapterRegistry.d.ts +10 -0
- package/dist/analyzers/orm/adapterRegistry.d.ts.map +1 -1
- package/dist/analyzers/orm/adapterRegistry.js +10 -0
- package/dist/analyzers/orm/adapterRegistry.js.map +1 -1
- package/dist/analyzers/orm/drizzleAdapter.d.ts +22 -0
- package/dist/analyzers/orm/drizzleAdapter.d.ts.map +1 -1
- package/dist/analyzers/orm/drizzleAdapter.js +42 -44
- package/dist/analyzers/orm/drizzleAdapter.js.map +1 -1
- package/dist/analyzers/orm/prismaAdapter.d.ts +30 -0
- package/dist/analyzers/orm/prismaAdapter.d.ts.map +1 -1
- package/dist/analyzers/orm/prismaAdapter.js +30 -0
- package/dist/analyzers/orm/prismaAdapter.js.map +1 -1
- package/dist/analyzers/provenance.d.ts +72 -2
- package/dist/analyzers/provenance.d.ts.map +1 -1
- package/dist/analyzers/provenance.js +462 -338
- package/dist/analyzers/provenance.js.map +1 -1
- package/dist/analyzers/reactAnalyzer.d.ts +11 -0
- package/dist/analyzers/reactAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/reactAnalyzer.js +188 -125
- package/dist/analyzers/reactAnalyzer.js.map +1 -1
- package/dist/analyzers/ruleRegistry.d.ts +118 -1
- package/dist/analyzers/ruleRegistry.d.ts.map +1 -1
- package/dist/analyzers/ruleRegistry.js +1717 -104
- package/dist/analyzers/ruleRegistry.js.map +1 -1
- package/dist/analyzers/ruleTiming.d.ts +54 -0
- package/dist/analyzers/ruleTiming.d.ts.map +1 -0
- package/dist/analyzers/ruleTiming.js +71 -0
- package/dist/analyzers/ruleTiming.js.map +1 -0
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts +13 -0
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.js +362 -283
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts +26 -68
- package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDRYAnalyzer.js +430 -391
- package/dist/analyzers/universal/UniversalDRYAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts +24 -186
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +1081 -1061
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts +3 -49
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js +414 -340
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts +48 -5
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js +262 -134
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts +23 -212
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.js +139 -1518
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts +78 -79
- package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalStylesAnalyzer.js +613 -472
- package/dist/analyzers/universal/UniversalStylesAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/schema/codeAnalysis.d.ts +307 -0
- package/dist/analyzers/universal/schema/codeAnalysis.d.ts.map +1 -0
- package/dist/analyzers/universal/schema/codeAnalysis.js +965 -0
- package/dist/analyzers/universal/schema/codeAnalysis.js.map +1 -0
- package/dist/analyzers/universal/schema/config.d.ts +31 -0
- package/dist/analyzers/universal/schema/config.d.ts.map +1 -0
- package/dist/analyzers/universal/schema/config.js +57 -0
- package/dist/analyzers/universal/schema/config.js.map +1 -0
- package/dist/analyzers/universal/schema/discovery.d.ts +167 -0
- package/dist/analyzers/universal/schema/discovery.d.ts.map +1 -0
- package/dist/analyzers/universal/schema/discovery.js +616 -0
- package/dist/analyzers/universal/schema/discovery.js.map +1 -0
- package/dist/analyzers/universal/schema/jsonSchema.d.ts +27 -0
- package/dist/analyzers/universal/schema/jsonSchema.d.ts.map +1 -0
- package/dist/analyzers/universal/schema/jsonSchema.js +368 -0
- package/dist/analyzers/universal/schema/jsonSchema.js.map +1 -0
- package/dist/analyzers/universal/schema/migrations.d.ts +90 -0
- package/dist/analyzers/universal/schema/migrations.d.ts.map +1 -0
- package/dist/analyzers/universal/schema/migrations.js +238 -0
- package/dist/analyzers/universal/schema/migrations.js.map +1 -0
- package/dist/analyzers/universal/schema/types.d.ts +131 -0
- package/dist/analyzers/universal/schema/types.d.ts.map +1 -0
- package/dist/analyzers/universal/schema/types.js +10 -0
- package/dist/analyzers/universal/schema/types.js.map +1 -0
- package/dist/analyzers/universal/schema/violations.d.ts +44 -0
- package/dist/analyzers/universal/schema/violations.d.ts.map +1 -0
- package/dist/analyzers/universal/schema/violations.js +54 -0
- package/dist/analyzers/universal/schema/violations.js.map +1 -0
- package/dist/auditRunner.d.ts.map +1 -1
- package/dist/auditRunner.js +101 -39
- package/dist/auditRunner.js.map +1 -1
- package/dist/cli.js +348 -40
- package/dist/cli.js.map +1 -1
- package/dist/config/configLoader.d.ts.map +1 -1
- package/dist/config/configLoader.js +9 -7
- package/dist/config/configLoader.js.map +1 -1
- package/dist/config/defaults.d.ts +12 -3
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +15 -5
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/effectiveConfig.d.ts +75 -0
- package/dist/config/effectiveConfig.d.ts.map +1 -0
- package/dist/config/effectiveConfig.js +213 -0
- package/dist/config/effectiveConfig.js.map +1 -0
- package/dist/config/pathProfiles.d.ts +7 -4
- package/dist/config/pathProfiles.d.ts.map +1 -1
- package/dist/config/pathProfiles.js +8 -10
- package/dist/config/pathProfiles.js.map +1 -1
- package/dist/config/thresholdRationales.d.ts +45 -0
- package/dist/config/thresholdRationales.d.ts.map +1 -0
- package/dist/config/thresholdRationales.js +67 -0
- package/dist/config/thresholdRationales.js.map +1 -0
- package/dist/conventions/conventionMiner.d.ts.map +1 -1
- package/dist/conventions/conventionMiner.js +6 -2
- package/dist/conventions/conventionMiner.js.map +1 -1
- package/dist/enforcement/diffGate.d.ts +55 -0
- package/dist/enforcement/diffGate.d.ts.map +1 -0
- package/dist/enforcement/diffGate.js +136 -0
- package/dist/enforcement/diffGate.js.map +1 -0
- package/dist/enforcement/gate.d.ts +36 -0
- package/dist/enforcement/gate.d.ts.map +1 -0
- package/dist/enforcement/gate.js +72 -0
- package/dist/enforcement/gate.js.map +1 -0
- package/dist/enforcement/suppressions.d.ts +41 -0
- package/dist/enforcement/suppressions.d.ts.map +1 -0
- package/dist/enforcement/suppressions.js +170 -0
- package/dist/enforcement/suppressions.js.map +1 -0
- package/dist/fingerprint.d.ts.map +1 -1
- package/dist/fingerprint.js +4 -1
- package/dist/fingerprint.js.map +1 -1
- package/dist/grammars/tree-sitter-scss.wasm +0 -0
- package/dist/invariants/ruleEngine.d.ts +3 -4
- package/dist/invariants/ruleEngine.d.ts.map +1 -1
- package/dist/invariants/ruleEngine.js +2 -2
- package/dist/invariants/ruleEngine.js.map +1 -1
- package/dist/languages/LanguageOrchestrator.d.ts +14 -0
- package/dist/languages/LanguageOrchestrator.d.ts.map +1 -1
- package/dist/languages/LanguageOrchestrator.js +93 -55
- package/dist/languages/LanguageOrchestrator.js.map +1 -1
- package/dist/languages/LanguageRegistry.d.ts +8 -0
- package/dist/languages/LanguageRegistry.d.ts.map +1 -1
- package/dist/languages/LanguageRegistry.js +8 -0
- package/dist/languages/LanguageRegistry.js.map +1 -1
- package/dist/languages/RuntimeManager.d.ts +82 -60
- package/dist/languages/RuntimeManager.d.ts.map +1 -1
- package/dist/languages/RuntimeManager.js +404 -349
- package/dist/languages/RuntimeManager.js.map +1 -1
- package/dist/languages/UniversalAnalyzer.d.ts +51 -6
- package/dist/languages/UniversalAnalyzer.d.ts.map +1 -1
- package/dist/languages/UniversalAnalyzer.js +127 -88
- package/dist/languages/UniversalAnalyzer.js.map +1 -1
- package/dist/languages/adapterBridge.d.ts +36 -0
- package/dist/languages/adapterBridge.d.ts.map +1 -1
- package/dist/languages/adapterBridge.js +89 -35
- package/dist/languages/adapterBridge.js.map +1 -1
- package/dist/languages/go/GoAdapter.d.ts +66 -23
- package/dist/languages/go/GoAdapter.d.ts.map +1 -1
- package/dist/languages/go/GoAdapter.js +553 -474
- package/dist/languages/go/GoAdapter.js.map +1 -1
- package/dist/languages/tree-sitter/TreeSitterCssAdapter.d.ts +38 -9
- package/dist/languages/tree-sitter/TreeSitterCssAdapter.d.ts.map +1 -1
- package/dist/languages/tree-sitter/TreeSitterCssAdapter.js +111 -74
- package/dist/languages/tree-sitter/TreeSitterCssAdapter.js.map +1 -1
- package/dist/languages/tree-sitter/converter.d.ts +18 -0
- package/dist/languages/tree-sitter/converter.d.ts.map +1 -1
- package/dist/languages/tree-sitter/converter.js +18 -0
- package/dist/languages/tree-sitter/converter.js.map +1 -1
- package/dist/languages/tree-sitter/parser.d.ts +39 -2
- package/dist/languages/tree-sitter/parser.d.ts.map +1 -1
- package/dist/languages/tree-sitter/parser.js +95 -12
- package/dist/languages/tree-sitter/parser.js.map +1 -1
- package/dist/languages/types.d.ts +67 -2
- package/dist/languages/types.d.ts.map +1 -1
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts +253 -62
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts.map +1 -1
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js +1461 -791
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js.map +1 -1
- package/dist/mcp-tools/whitelistTools.d.ts +1 -1
- package/dist/mcp-tools-shared.d.ts.map +1 -1
- package/dist/mcp-tools-shared.js +1 -0
- package/dist/mcp-tools-shared.js.map +1 -1
- package/dist/mcpAuditJobs.d.ts.map +1 -1
- package/dist/mcpAuditJobs.js +1 -0
- package/dist/mcpAuditJobs.js.map +1 -1
- package/dist/pipeline.d.ts +30 -1
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +527 -203
- package/dist/pipeline.js.map +1 -1
- package/dist/pipelineAdapters.d.ts +5 -12
- package/dist/pipelineAdapters.d.ts.map +1 -1
- package/dist/pipelineAdapters.js +175 -100
- package/dist/pipelineAdapters.js.map +1 -1
- package/dist/presets/presets.d.ts +54 -0
- package/dist/presets/presets.d.ts.map +1 -0
- package/dist/presets/presets.js +181 -0
- package/dist/presets/presets.js.map +1 -0
- package/dist/reporting/sarifReportGenerator.d.ts.map +1 -1
- package/dist/reporting/sarifReportGenerator.js +0 -2
- package/dist/reporting/sarifReportGenerator.js.map +1 -1
- package/dist/ruleAliases.d.ts +67 -0
- package/dist/ruleAliases.d.ts.map +1 -0
- package/dist/ruleAliases.js +79 -0
- package/dist/ruleAliases.js.map +1 -0
- package/dist/styles/cssAstExtractor.d.ts +20 -5
- package/dist/styles/cssAstExtractor.d.ts.map +1 -1
- package/dist/styles/cssAstExtractor.js +247 -9
- package/dist/styles/cssAstExtractor.js.map +1 -1
- package/dist/styles/styleIndexer.js +13 -4
- package/dist/styles/styleIndexer.js.map +1 -1
- package/dist/styles/tailwindConfigLoader.d.ts +8 -6
- package/dist/styles/tailwindConfigLoader.d.ts.map +1 -1
- package/dist/styles/tailwindConfigLoader.js +61 -15
- package/dist/styles/tailwindConfigLoader.js.map +1 -1
- package/dist/styles/tailwindUtilityExpander.d.ts.map +1 -1
- package/dist/styles/tailwindUtilityExpander.js +13 -1
- package/dist/styles/tailwindUtilityExpander.js.map +1 -1
- package/dist/types.d.ts +201 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -1
- package/package.json +7 -4
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/hooks/hooks.json +1 -1
- package/plugin/scripts/hook-audit.sh +25 -7
- package/plugin/skills/code-auditor/SKILL.md +5 -5
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
* Cross-Language Dependency Graph Builder
|
|
3
3
|
* Creates dependency graphs that span multiple programming languages
|
|
4
4
|
*/
|
|
5
|
-
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
// Core: state + stateless graph helpers (leaf layer — no cross-method calls)
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
class DependencyGraphBuilderCore {
|
|
6
9
|
entities = [];
|
|
7
10
|
references = [];
|
|
8
11
|
options;
|
|
@@ -16,154 +19,6 @@ export class DependencyGraphBuilder {
|
|
|
16
19
|
...options
|
|
17
20
|
};
|
|
18
21
|
}
|
|
19
|
-
/**
|
|
20
|
-
* Build a comprehensive dependency graph
|
|
21
|
-
*/
|
|
22
|
-
async buildGraph(entities, references) {
|
|
23
|
-
this.entities = entities;
|
|
24
|
-
this.references = references;
|
|
25
|
-
// Filter entities based on options
|
|
26
|
-
const filteredEntities = this.filterEntities(entities);
|
|
27
|
-
// Create nodes
|
|
28
|
-
const nodes = this.createNodes(filteredEntities);
|
|
29
|
-
// Create edges from references
|
|
30
|
-
const edges = this.createEdges(references, nodes);
|
|
31
|
-
// Detect cycles
|
|
32
|
-
const cycles = this.detectCycles(nodes, edges);
|
|
33
|
-
// Calculate metrics
|
|
34
|
-
const metrics = this.calculateMetrics(nodes, edges, cycles);
|
|
35
|
-
// Apply clustering if enabled
|
|
36
|
-
if (this.options.clusterByPackage) {
|
|
37
|
-
this.applyPackageClustering(nodes);
|
|
38
|
-
}
|
|
39
|
-
const graph = {
|
|
40
|
-
nodes,
|
|
41
|
-
edges,
|
|
42
|
-
cycles,
|
|
43
|
-
metrics
|
|
44
|
-
};
|
|
45
|
-
return graph;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Build a focused subgraph around specific entities
|
|
49
|
-
*/
|
|
50
|
-
async buildSubgraph(targetEntityIds, entities, references, depth = 2) {
|
|
51
|
-
// Find all entities within the specified depth
|
|
52
|
-
const reachableEntities = this.findReachableEntities(targetEntityIds, entities, references, depth);
|
|
53
|
-
// Build graph with only reachable entities
|
|
54
|
-
return this.buildGraph(reachableEntities, references.filter(ref => reachableEntities.some(e => e.id === ref.sourceId) &&
|
|
55
|
-
reachableEntities.some(e => e.id === ref.targetId)));
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Analyze dependency health and suggest improvements
|
|
59
|
-
*/
|
|
60
|
-
async analyzeDependencyHealth(graph) {
|
|
61
|
-
const issues = [];
|
|
62
|
-
const suggestions = [];
|
|
63
|
-
// Check for circular dependencies
|
|
64
|
-
if (graph.cycles.length > 0) {
|
|
65
|
-
issues.push({
|
|
66
|
-
type: 'circular-dependency',
|
|
67
|
-
severity: 'warning',
|
|
68
|
-
description: `Found ${graph.cycles.length} circular dependencies`,
|
|
69
|
-
affectedNodes: graph.cycles.flatMap(cycle => cycle.nodes),
|
|
70
|
-
impact: 'high'
|
|
71
|
-
});
|
|
72
|
-
suggestions.push({
|
|
73
|
-
type: 'break-cycles',
|
|
74
|
-
priority: 'high',
|
|
75
|
-
description: 'Break circular dependencies by introducing interfaces or dependency injection',
|
|
76
|
-
implementation: 'Consider using dependency inversion principle to break cycles'
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
// Check for tightly coupled clusters
|
|
80
|
-
const tightlyCoupledClusters = this.findTightlyCoupledClusters(graph);
|
|
81
|
-
if (tightlyCoupledClusters.length > 0) {
|
|
82
|
-
issues.push({
|
|
83
|
-
type: 'tight-coupling',
|
|
84
|
-
severity: 'warning',
|
|
85
|
-
description: `Found ${tightlyCoupledClusters.length} tightly coupled clusters`,
|
|
86
|
-
affectedNodes: tightlyCoupledClusters.flatMap(cluster => cluster.nodes),
|
|
87
|
-
impact: 'medium'
|
|
88
|
-
});
|
|
89
|
-
suggestions.push({
|
|
90
|
-
type: 'reduce-coupling',
|
|
91
|
-
priority: 'medium',
|
|
92
|
-
description: 'Reduce coupling between modules using interfaces and abstractions',
|
|
93
|
-
implementation: 'Extract common interfaces and use dependency injection'
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
// Check for hub nodes (too many dependencies)
|
|
97
|
-
const hubNodes = this.findHubNodes(graph);
|
|
98
|
-
if (hubNodes.length > 0) {
|
|
99
|
-
issues.push({
|
|
100
|
-
type: 'hub-nodes',
|
|
101
|
-
severity: 'warning',
|
|
102
|
-
description: `Found ${hubNodes.length} hub nodes with excessive dependencies`,
|
|
103
|
-
affectedNodes: hubNodes.map(node => node.id),
|
|
104
|
-
impact: 'medium'
|
|
105
|
-
});
|
|
106
|
-
suggestions.push({
|
|
107
|
-
type: 'split-responsibilities',
|
|
108
|
-
priority: 'medium',
|
|
109
|
-
description: 'Split large modules to reduce their dependency burden',
|
|
110
|
-
implementation: 'Apply Single Responsibility Principle to break down large modules'
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
// Check for orphaned nodes
|
|
114
|
-
const orphanedNodes = this.findOrphanedNodes(graph);
|
|
115
|
-
if (orphanedNodes.length > 0) {
|
|
116
|
-
issues.push({
|
|
117
|
-
type: 'orphaned-nodes',
|
|
118
|
-
severity: 'suggestion',
|
|
119
|
-
description: `Found ${orphanedNodes.length} orphaned nodes with no dependencies`,
|
|
120
|
-
affectedNodes: orphanedNodes.map(node => node.id),
|
|
121
|
-
impact: 'low'
|
|
122
|
-
});
|
|
123
|
-
suggestions.push({
|
|
124
|
-
type: 'review-orphans',
|
|
125
|
-
priority: 'low',
|
|
126
|
-
description: 'Review orphaned nodes to ensure they are still needed',
|
|
127
|
-
implementation: 'Consider removing unused code or integrating orphaned modules'
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
// Calculate health score
|
|
131
|
-
const healthScore = this.calculateHealthScore(graph, issues);
|
|
132
|
-
return {
|
|
133
|
-
healthScore,
|
|
134
|
-
issues,
|
|
135
|
-
suggestions
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Filter entities based on options
|
|
140
|
-
*/
|
|
141
|
-
filterEntities(entities) {
|
|
142
|
-
let filtered = entities;
|
|
143
|
-
// Filter by language
|
|
144
|
-
if (this.options.excludeLanguages?.length) {
|
|
145
|
-
filtered = filtered.filter(entity => !this.options.excludeLanguages.includes(entity.language));
|
|
146
|
-
}
|
|
147
|
-
// Filter test files
|
|
148
|
-
if (!this.options.includeTestFiles) {
|
|
149
|
-
filtered = filtered.filter(entity => !this.isTestFile(entity.file));
|
|
150
|
-
}
|
|
151
|
-
return filtered;
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Create graph nodes from entities
|
|
155
|
-
*/
|
|
156
|
-
createNodes(entities) {
|
|
157
|
-
return entities.map(entity => ({
|
|
158
|
-
id: entity.id,
|
|
159
|
-
name: entity.name,
|
|
160
|
-
language: entity.language,
|
|
161
|
-
type: entity.type,
|
|
162
|
-
file: entity.file,
|
|
163
|
-
weight: this.calculateNodeWeight(entity),
|
|
164
|
-
cluster: this.determineCluster(entity)
|
|
165
|
-
}));
|
|
166
|
-
}
|
|
167
22
|
/**
|
|
168
23
|
* Create graph edges from references
|
|
169
24
|
*/
|
|
@@ -179,91 +34,6 @@ export class DependencyGraphBuilder {
|
|
|
179
34
|
protocol: ref.protocol
|
|
180
35
|
}));
|
|
181
36
|
}
|
|
182
|
-
/**
|
|
183
|
-
* Detect circular dependencies using DFS
|
|
184
|
-
*/
|
|
185
|
-
detectCycles(nodes, edges) {
|
|
186
|
-
const cycles = [];
|
|
187
|
-
const visited = new Set();
|
|
188
|
-
const recursionStack = new Set();
|
|
189
|
-
const adjList = this.buildAdjacencyList(edges);
|
|
190
|
-
const dfs = (nodeId, path) => {
|
|
191
|
-
visited.add(nodeId);
|
|
192
|
-
recursionStack.add(nodeId);
|
|
193
|
-
path.push(nodeId);
|
|
194
|
-
const neighbors = adjList.get(nodeId) || [];
|
|
195
|
-
for (const neighbor of neighbors) {
|
|
196
|
-
if (!visited.has(neighbor)) {
|
|
197
|
-
dfs(neighbor, [...path]);
|
|
198
|
-
}
|
|
199
|
-
else if (recursionStack.has(neighbor)) {
|
|
200
|
-
// Found a cycle
|
|
201
|
-
const cycleStart = path.indexOf(neighbor);
|
|
202
|
-
const cycleNodes = path.slice(cycleStart);
|
|
203
|
-
cycles.push({
|
|
204
|
-
nodes: cycleNodes,
|
|
205
|
-
severity: cycleNodes.length > 5 ? 'warning' : 'warning',
|
|
206
|
-
suggestion: this.generateCycleSuggestion(cycleNodes)
|
|
207
|
-
});
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
recursionStack.delete(nodeId);
|
|
211
|
-
};
|
|
212
|
-
for (const node of nodes) {
|
|
213
|
-
if (!visited.has(node.id)) {
|
|
214
|
-
dfs(node.id, []);
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
return cycles;
|
|
218
|
-
}
|
|
219
|
-
/**
|
|
220
|
-
* Calculate various graph metrics
|
|
221
|
-
*/
|
|
222
|
-
calculateMetrics(nodes, edges, cycles) {
|
|
223
|
-
const adjList = this.buildAdjacencyList(edges);
|
|
224
|
-
// Calculate depths from each node
|
|
225
|
-
const depths = nodes.map(node => this.calculateMaxDepth(node.id, adjList));
|
|
226
|
-
return {
|
|
227
|
-
totalNodes: nodes.length,
|
|
228
|
-
totalEdges: edges.length,
|
|
229
|
-
cycleCount: cycles.length,
|
|
230
|
-
averageDepth: depths.reduce((sum, depth) => sum + depth, 0) / depths.length,
|
|
231
|
-
maxDepth: Math.max(...depths),
|
|
232
|
-
stronglyConnectedComponents: this.countStronglyConnectedComponents(nodes, edges)
|
|
233
|
-
};
|
|
234
|
-
}
|
|
235
|
-
/**
|
|
236
|
-
* Find entities reachable within specified depth
|
|
237
|
-
*/
|
|
238
|
-
findReachableEntities(startIds, entities, references, maxDepth) {
|
|
239
|
-
const reachable = new Set(startIds);
|
|
240
|
-
const adjList = this.buildAdjacencyListFromReferences(references);
|
|
241
|
-
let currentLevel = new Set(startIds);
|
|
242
|
-
for (let depth = 0; depth < maxDepth && currentLevel.size > 0; depth++) {
|
|
243
|
-
const nextLevel = new Set();
|
|
244
|
-
for (const nodeId of currentLevel) {
|
|
245
|
-
const neighbors = adjList.get(nodeId) || [];
|
|
246
|
-
for (const neighbor of neighbors) {
|
|
247
|
-
if (!reachable.has(neighbor)) {
|
|
248
|
-
reachable.add(neighbor);
|
|
249
|
-
nextLevel.add(neighbor);
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
currentLevel = nextLevel;
|
|
254
|
-
}
|
|
255
|
-
return entities.filter(entity => reachable.has(entity.id));
|
|
256
|
-
}
|
|
257
|
-
/**
|
|
258
|
-
* Apply package-based clustering to nodes
|
|
259
|
-
*/
|
|
260
|
-
applyPackageClustering(nodes) {
|
|
261
|
-
for (const node of nodes) {
|
|
262
|
-
if (!node.cluster) {
|
|
263
|
-
node.cluster = this.extractPackageFromFile(node.file, node.language);
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
37
|
/**
|
|
268
38
|
* Calculate node weight based on various factors
|
|
269
39
|
*/
|
|
@@ -283,15 +53,6 @@ export class DependencyGraphBuilder {
|
|
|
283
53
|
}
|
|
284
54
|
return weight;
|
|
285
55
|
}
|
|
286
|
-
/**
|
|
287
|
-
* Determine cluster for an entity
|
|
288
|
-
*/
|
|
289
|
-
determineCluster(entity) {
|
|
290
|
-
if (this.options.clusterByPackage) {
|
|
291
|
-
return this.extractPackageFromFile(entity.file, entity.language);
|
|
292
|
-
}
|
|
293
|
-
return entity.language;
|
|
294
|
-
}
|
|
295
56
|
/**
|
|
296
57
|
* Extract package/module name from file path
|
|
297
58
|
*/
|
|
@@ -467,4 +228,244 @@ export class DependencyGraphBuilder {
|
|
|
467
228
|
filePath.endsWith('_test.go');
|
|
468
229
|
}
|
|
469
230
|
}
|
|
231
|
+
// ---------------------------------------------------------------------------
|
|
232
|
+
// Traversal: node/edge construction and graph traversal (mid layer)
|
|
233
|
+
// ---------------------------------------------------------------------------
|
|
234
|
+
class DependencyGraphBuilderTraversal extends DependencyGraphBuilderCore {
|
|
235
|
+
/**
|
|
236
|
+
* Filter entities based on options
|
|
237
|
+
*/
|
|
238
|
+
filterEntities(entities) {
|
|
239
|
+
let filtered = entities;
|
|
240
|
+
// Filter by language
|
|
241
|
+
if (this.options.excludeLanguages?.length) {
|
|
242
|
+
filtered = filtered.filter(entity => !this.options.excludeLanguages.includes(entity.language));
|
|
243
|
+
}
|
|
244
|
+
// Filter test files
|
|
245
|
+
if (!this.options.includeTestFiles) {
|
|
246
|
+
filtered = filtered.filter(entity => !this.isTestFile(entity.file));
|
|
247
|
+
}
|
|
248
|
+
return filtered;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Create graph nodes from entities
|
|
252
|
+
*/
|
|
253
|
+
createNodes(entities) {
|
|
254
|
+
return entities.map(entity => ({
|
|
255
|
+
id: entity.id,
|
|
256
|
+
name: entity.name,
|
|
257
|
+
language: entity.language,
|
|
258
|
+
type: entity.type,
|
|
259
|
+
file: entity.file,
|
|
260
|
+
weight: this.calculateNodeWeight(entity),
|
|
261
|
+
cluster: this.determineCluster(entity)
|
|
262
|
+
}));
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Determine cluster for an entity
|
|
266
|
+
*/
|
|
267
|
+
determineCluster(entity) {
|
|
268
|
+
if (this.options.clusterByPackage) {
|
|
269
|
+
return this.extractPackageFromFile(entity.file, entity.language);
|
|
270
|
+
}
|
|
271
|
+
return entity.language;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Detect circular dependencies using DFS
|
|
275
|
+
*/
|
|
276
|
+
detectCycles(nodes, edges) {
|
|
277
|
+
const cycles = [];
|
|
278
|
+
const visited = new Set();
|
|
279
|
+
const recursionStack = new Set();
|
|
280
|
+
const adjList = this.buildAdjacencyList(edges);
|
|
281
|
+
const dfs = (nodeId, path) => {
|
|
282
|
+
visited.add(nodeId);
|
|
283
|
+
recursionStack.add(nodeId);
|
|
284
|
+
path.push(nodeId);
|
|
285
|
+
const neighbors = adjList.get(nodeId) || [];
|
|
286
|
+
for (const neighbor of neighbors) {
|
|
287
|
+
if (!visited.has(neighbor)) {
|
|
288
|
+
dfs(neighbor, [...path]);
|
|
289
|
+
}
|
|
290
|
+
else if (recursionStack.has(neighbor)) {
|
|
291
|
+
// Found a cycle
|
|
292
|
+
const cycleStart = path.indexOf(neighbor);
|
|
293
|
+
const cycleNodes = path.slice(cycleStart);
|
|
294
|
+
cycles.push({
|
|
295
|
+
nodes: cycleNodes,
|
|
296
|
+
severity: cycleNodes.length > 5 ? 'warning' : 'warning',
|
|
297
|
+
suggestion: this.generateCycleSuggestion(cycleNodes)
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
recursionStack.delete(nodeId);
|
|
302
|
+
};
|
|
303
|
+
for (const node of nodes) {
|
|
304
|
+
if (!visited.has(node.id)) {
|
|
305
|
+
dfs(node.id, []);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
return cycles;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Calculate various graph metrics
|
|
312
|
+
*/
|
|
313
|
+
calculateMetrics(nodes, edges, cycles) {
|
|
314
|
+
const adjList = this.buildAdjacencyList(edges);
|
|
315
|
+
// Calculate depths from each node
|
|
316
|
+
const depths = nodes.map(node => this.calculateMaxDepth(node.id, adjList));
|
|
317
|
+
return {
|
|
318
|
+
totalNodes: nodes.length,
|
|
319
|
+
totalEdges: edges.length,
|
|
320
|
+
cycleCount: cycles.length,
|
|
321
|
+
averageDepth: depths.reduce((sum, depth) => sum + depth, 0) / depths.length,
|
|
322
|
+
maxDepth: Math.max(...depths),
|
|
323
|
+
stronglyConnectedComponents: this.countStronglyConnectedComponents(nodes, edges)
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Find entities reachable within specified depth
|
|
328
|
+
*/
|
|
329
|
+
findReachableEntities(startIds, entities, references, maxDepth) {
|
|
330
|
+
const reachable = new Set(startIds);
|
|
331
|
+
const adjList = this.buildAdjacencyListFromReferences(references);
|
|
332
|
+
let currentLevel = new Set(startIds);
|
|
333
|
+
for (let depth = 0; depth < maxDepth && currentLevel.size > 0; depth++) {
|
|
334
|
+
const nextLevel = new Set();
|
|
335
|
+
for (const nodeId of currentLevel) {
|
|
336
|
+
const neighbors = adjList.get(nodeId) || [];
|
|
337
|
+
for (const neighbor of neighbors) {
|
|
338
|
+
if (!reachable.has(neighbor)) {
|
|
339
|
+
reachable.add(neighbor);
|
|
340
|
+
nextLevel.add(neighbor);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
currentLevel = nextLevel;
|
|
345
|
+
}
|
|
346
|
+
return entities.filter(entity => reachable.has(entity.id));
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Apply package-based clustering to nodes
|
|
350
|
+
*/
|
|
351
|
+
applyPackageClustering(nodes) {
|
|
352
|
+
for (const node of nodes) {
|
|
353
|
+
if (!node.cluster) {
|
|
354
|
+
node.cluster = this.extractPackageFromFile(node.file, node.language);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
// ---------------------------------------------------------------------------
|
|
360
|
+
// Builder: public orchestration API (top layer)
|
|
361
|
+
// ---------------------------------------------------------------------------
|
|
362
|
+
/**
|
|
363
|
+
* Dependency graph builder.
|
|
364
|
+
*/
|
|
365
|
+
export class DependencyGraphBuilder extends DependencyGraphBuilderTraversal {
|
|
366
|
+
/**
|
|
367
|
+
* Build a comprehensive dependency graph
|
|
368
|
+
* @param entities
|
|
369
|
+
* @param references
|
|
370
|
+
* @returns
|
|
371
|
+
*/
|
|
372
|
+
async buildGraph(entities, references) {
|
|
373
|
+
this.entities = entities;
|
|
374
|
+
this.references = references;
|
|
375
|
+
// Filter entities based on options
|
|
376
|
+
const filteredEntities = this.filterEntities(entities);
|
|
377
|
+
// Create nodes
|
|
378
|
+
const nodes = this.createNodes(filteredEntities);
|
|
379
|
+
// Create edges from references
|
|
380
|
+
const edges = this.createEdges(references, nodes);
|
|
381
|
+
// Detect cycles
|
|
382
|
+
const cycles = this.detectCycles(nodes, edges);
|
|
383
|
+
// Calculate metrics
|
|
384
|
+
const metrics = this.calculateMetrics(nodes, edges, cycles);
|
|
385
|
+
// Apply clustering if enabled
|
|
386
|
+
if (this.options.clusterByPackage) {
|
|
387
|
+
this.applyPackageClustering(nodes);
|
|
388
|
+
}
|
|
389
|
+
const graph = {
|
|
390
|
+
nodes,
|
|
391
|
+
edges,
|
|
392
|
+
cycles,
|
|
393
|
+
metrics
|
|
394
|
+
};
|
|
395
|
+
return graph;
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* Build a focused subgraph around specific entities
|
|
399
|
+
* @param depth
|
|
400
|
+
* @param entities
|
|
401
|
+
* @param references
|
|
402
|
+
* @param targetEntityIds
|
|
403
|
+
* @returns
|
|
404
|
+
*/
|
|
405
|
+
async buildSubgraph(targetEntityIds, entities, references, depth = 2) {
|
|
406
|
+
// Find all entities within the specified depth
|
|
407
|
+
const reachableEntities = this.findReachableEntities(targetEntityIds, entities, references, depth);
|
|
408
|
+
// Build graph with only reachable entities
|
|
409
|
+
return this.buildGraph(reachableEntities, references.filter(ref => reachableEntities.some(e => e.id === ref.sourceId) &&
|
|
410
|
+
reachableEntities.some(e => e.id === ref.targetId)));
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* Analyze dependency health and suggest improvements
|
|
414
|
+
* @param graph
|
|
415
|
+
* @returns
|
|
416
|
+
*/
|
|
417
|
+
async analyzeDependencyHealth(graph) {
|
|
418
|
+
const issues = [];
|
|
419
|
+
const suggestions = [];
|
|
420
|
+
this.recordCheck({ issues, suggestions }, graph.cycles.length, graph.cycles.flatMap(c => c.nodes), {
|
|
421
|
+
issueType: 'circular-dependency', severity: 'warning', impact: 'high',
|
|
422
|
+
issueDesc: n => `Found ${n} circular dependencies`,
|
|
423
|
+
suggestionType: 'break-cycles', priority: 'high',
|
|
424
|
+
suggestionDesc: 'Break circular dependencies by introducing interfaces or dependency injection',
|
|
425
|
+
implementation: 'Consider using dependency inversion principle to break cycles',
|
|
426
|
+
});
|
|
427
|
+
const clusters = this.findTightlyCoupledClusters(graph);
|
|
428
|
+
this.recordCheck({ issues, suggestions }, clusters.length, clusters.flatMap(c => c.nodes), {
|
|
429
|
+
issueType: 'tight-coupling', severity: 'warning', impact: 'medium',
|
|
430
|
+
issueDesc: n => `Found ${n} tightly coupled clusters`,
|
|
431
|
+
suggestionType: 'reduce-coupling', priority: 'medium',
|
|
432
|
+
suggestionDesc: 'Reduce coupling between modules using interfaces and abstractions',
|
|
433
|
+
implementation: 'Extract common interfaces and use dependency injection',
|
|
434
|
+
});
|
|
435
|
+
const hubNodes = this.findHubNodes(graph);
|
|
436
|
+
this.recordCheck({ issues, suggestions }, hubNodes.length, hubNodes.map(n => n.id), {
|
|
437
|
+
issueType: 'hub-nodes', severity: 'warning', impact: 'medium',
|
|
438
|
+
issueDesc: n => `Found ${n} hub nodes with excessive dependencies`,
|
|
439
|
+
suggestionType: 'split-responsibilities', priority: 'medium',
|
|
440
|
+
suggestionDesc: 'Split large modules to reduce their dependency burden',
|
|
441
|
+
implementation: 'Apply Single Responsibility Principle to break down large modules',
|
|
442
|
+
});
|
|
443
|
+
const orphanedNodes = this.findOrphanedNodes(graph);
|
|
444
|
+
this.recordCheck({ issues, suggestions }, orphanedNodes.length, orphanedNodes.map(n => n.id), {
|
|
445
|
+
issueType: 'orphaned-nodes', severity: 'suggestion', impact: 'low',
|
|
446
|
+
issueDesc: n => `Found ${n} orphaned nodes with no dependencies`,
|
|
447
|
+
suggestionType: 'review-orphans', priority: 'low',
|
|
448
|
+
suggestionDesc: 'Review orphaned nodes to ensure they are still needed',
|
|
449
|
+
implementation: 'Consider removing unused code or integrating orphaned modules',
|
|
450
|
+
});
|
|
451
|
+
return {
|
|
452
|
+
healthScore: this.calculateHealthScore(graph, issues),
|
|
453
|
+
issues,
|
|
454
|
+
suggestions,
|
|
455
|
+
};
|
|
456
|
+
}
|
|
457
|
+
/** Push an issue+suggestion pair when `count` is non-zero. */
|
|
458
|
+
recordCheck(sink, count, affectedNodes, spec) {
|
|
459
|
+
if (count === 0)
|
|
460
|
+
return;
|
|
461
|
+
sink.issues.push({
|
|
462
|
+
type: spec.issueType, severity: spec.severity, impact: spec.impact,
|
|
463
|
+
description: spec.issueDesc(count), affectedNodes,
|
|
464
|
+
});
|
|
465
|
+
sink.suggestions.push({
|
|
466
|
+
type: spec.suggestionType, priority: spec.priority,
|
|
467
|
+
description: spec.suggestionDesc, implementation: spec.implementation,
|
|
468
|
+
});
|
|
469
|
+
}
|
|
470
|
+
}
|
|
470
471
|
//# sourceMappingURL=DependencyGraphBuilder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DependencyGraphBuilder.js","sourceRoot":"","sources":["../../../src/analyzers/cross-language/DependencyGraphBuilder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DependencyGraphBuilder.js","sourceRoot":"","sources":["../../../src/analyzers/cross-language/DependencyGraphBuilder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAqBH,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAE9E,MAAM,0BAA0B;IACpB,QAAQ,GAA0B,EAAE,CAAC;IACrC,UAAU,GAAqB,EAAE,CAAC;IAClC,OAAO,CAAsB;IAEvC,YAAY,OAAO,GAAwB,EAAE;QAC3C,IAAI,CAAC,OAAO,GAAG;YACb,2BAA2B,EAAE,IAAI;YACjC,2BAA2B,EAAE,IAAI;YACjC,QAAQ,EAAE,EAAE;YACZ,gBAAgB,EAAE,KAAK;YACvB,gBAAgB,EAAE,IAAI;YACtB,GAAG,OAAO;SACX,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,WAAW,CAAC,UAA4B,EAAE,KAAuB;QACzE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAEpD,OAAO,UAAU;aACd,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;aACrE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACX,IAAI,EAAE,GAAG,CAAC,QAAQ;YAClB,EAAE,EAAE,GAAG,CAAC,QAAQ;YAChB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,MAAM,EAAE,GAAG,CAAC,UAAU;YACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;SACvB,CAAC,CAAC,CAAC;IACR,CAAC;IAED;;OAEG;IACO,mBAAmB,CAAC,MAA2B;QACvD,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,+CAA+C;QAC/C,IAAI,MAAM,CAAC,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC;YAClE,MAAM,IAAI,CAAC,CAAC;QACd,CAAC;QAED,uCAAuC;QACvC,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAC9C,CAAC;QAED,8CAA8C;QAC9C,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7D,MAAM,IAAI,CAAC,CAAC;QACd,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACO,sBAAsB,CAAC,QAAgB,EAAE,QAAgB;QACjE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAElC,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,IAAI;gBACP,4CAA4C;gBAC5C,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC;YAC3C,KAAK,YAAY,CAAC;YAClB,KAAK,YAAY;gBACf,gDAAgD;gBAChD,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBACtC,OAAO,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC;gBACtC,CAAC;gBACD,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC;YAC3C,KAAK,QAAQ;gBACX,sCAAsC;gBACtC,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC;YAC3C;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;IAED;;OAEG;IACO,kBAAkB,CAAC,KAAuB;QAClD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;QAE5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC7B,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACO,gCAAgC,CAAC,UAA4B;QACrE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;QAE5C,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAChC,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACO,iBAAiB,CAAC,MAAc,EAAE,OAA8B;QACxE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAElC,MAAM,GAAG,GAAG,CAAC,SAAiB,EAAU,EAAE;YACxC,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;gBAAE,OAAO,CAAC,CAAC,CAAC,eAAe;YAErD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAE/C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAC;YAErC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5E,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAE1B,OAAO,CAAC,GAAG,aAAa,CAAC;QAC3B,CAAC,CAAC;QAEF,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;IAED;;OAEG;IACO,gCAAgC,CAAC,KAAuB,EAAE,KAAuB;QACzF,uEAAuE;QACvE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,iBAAiB;IACxD,CAAC;IAED;;OAEG;IACO,0BAA0B,CAAC,KAAsB;QACzD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;QAE7C,yBAAyB;QACzB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC5B,CAAC;YACD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,cAAc,GAA4C,EAAE,CAAC;QAEnE,KAAK,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,QAAQ,EAAE,CAAC;YAC9C,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAC9C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CACzD,CAAC;YAEF,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAEhF,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC,0BAA0B;gBAC9C,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAED;;OAEG;IACO,YAAY,CAAC,KAAsB;QAC3C,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;QAEnD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9E,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,4BAA4B;QAErF,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAC/B,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CACjD,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,iBAAiB,CAAC,KAAsB;QAChD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;QAEzC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACO,oBAAoB,CAAC,KAAsB,EAAE,MAAyB;QAC9E,IAAI,KAAK,GAAG,GAAG,CAAC;QAEhB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,QAAQ,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACvB,KAAK,UAAU;oBACb,KAAK,IAAI,EAAE,CAAC;oBACZ,MAAM;gBACR,KAAK,SAAS;oBACZ,KAAK,IAAI,EAAE,CAAC;oBACZ,MAAM;gBACR,KAAK,YAAY;oBACf,KAAK,IAAI,CAAC,CAAC;oBACX,MAAM;YACV,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,EAAE,EAAE,CAAC;YAChC,KAAK,IAAI,EAAE,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACO,uBAAuB,CAAC,UAAoB;QACpD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,sEAAsE,CAAC;QAChF,CAAC;aAAM,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,sEAAsE,CAAC;QAChF,CAAC;aAAM,CAAC;YACN,OAAO,4FAA4F,CAAC;QACtG,CAAC;IACH,CAAC;IAED;;OAEG;IACO,UAAU,CAAC,QAAgB;QACnC,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;YACzB,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;YACzB,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC9B,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC7B,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC7B,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC7B,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC7B,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;CACF;AAED,8EAA8E;AAC9E,oEAAoE;AACpE,8EAA8E;AAE9E,MAAM,+BAAgC,SAAQ,0BAA0B;IACtE;;OAEG;IACO,cAAc,CAAC,QAA+B;QACtD,IAAI,QAAQ,GAAG,QAAQ,CAAC;QAExB,qBAAqB;QACrB,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;YAC1C,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAClC,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAC1D,CAAC;QACJ,CAAC;QAED,oBAAoB;QACpB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;YACnC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAClC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAC9B,CAAC;QACJ,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACO,WAAW,CAAC,QAA+B;QACnD,OAAO,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC7B,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;YACxC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;SACvC,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACO,gBAAgB,CAAC,MAA2B;QACpD,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,MAAM,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;OAEG;IACO,YAAY,CAAC,KAAuB,EAAE,KAAuB;QACrE,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAE/C,MAAM,GAAG,GAAG,CAAC,MAAc,EAAE,IAAc,EAAQ,EAAE;YACnD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpB,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAElB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC3B,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;gBAC3B,CAAC;qBAAM,IAAI,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACxC,gBAAgB;oBAChB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;oBAE1C,MAAM,CAAC,IAAI,CAAC;wBACV,KAAK,EAAE,UAAU;wBACjB,QAAQ,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;wBACvD,UAAU,EAAE,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC;qBACrD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC1B,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACO,gBAAgB,CACxB,KAAuB,EACvB,KAAuB,EACvB,MAAyB;QAEzB,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAE/C,kCAAkC;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;QAE3E,OAAO;YACL,UAAU,EAAE,KAAK,CAAC,MAAM;YACxB,UAAU,EAAE,KAAK,CAAC,MAAM;YACxB,UAAU,EAAE,MAAM,CAAC,MAAM;YACzB,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM;YAC3E,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;YAC7B,2BAA2B,EAAE,IAAI,CAAC,gCAAgC,CAAC,KAAK,EAAE,KAAK,CAAC;SACjF,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,qBAAqB,CAC7B,QAAkB,EAClB,QAA+B,EAC/B,UAA4B,EAC5B,QAAgB;QAEhB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,gCAAgC,CAAC,UAAU,CAAC,CAAC;QAElE,IAAI,YAAY,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QAErC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YACvE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;YAEpC,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;gBAClC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC5C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;oBACjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAC7B,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBACxB,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC1B,CAAC;gBACH,CAAC;YACH,CAAC;YAED,YAAY,GAAG,SAAS,CAAC;QAC3B,CAAC;QAED,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACO,sBAAsB,CAAC,KAAuB;QACtD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,8EAA8E;AAC9E,gDAAgD;AAChD,8EAA8E;AAE9E;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,+BAA+B;IACzE;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CACd,QAA+B,EAC/B,UAA4B;QAE5B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,mCAAmC;QACnC,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAEvD,eAAe;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QAEjD,+BAA+B;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAElD,gBAAgB;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAE/C,oBAAoB;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAE5D,8BAA8B;QAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAClC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,KAAK,GAAoB;YAC7B,KAAK;YACL,KAAK;YACL,MAAM;YACN,OAAO;SACR,CAAC;QAEF,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,aAAa,CACjB,eAAyB,EACzB,QAA+B,EAC/B,UAA4B,EAC5B,KAAK,GAAW,CAAC;QAEjB,+CAA+C;QAC/C,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAAC,eAAe,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAEnG,2CAA2C;QAC3C,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAChE,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,QAAQ,CAAC;YAClD,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,QAAQ,CAAC,CACnD,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,uBAAuB,CAAC,KAAsB;QAKlD,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,MAAM,WAAW,GAA2B,EAAE,CAAC;QAE/C,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;YACjG,SAAS,EAAE,qBAAqB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM;YACrE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,wBAAwB;YAClD,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM;YAChD,cAAc,EAAE,+EAA+E;YAC/F,cAAc,EAAE,+DAA+D;SAChF,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;YACzF,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ;YAClE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,2BAA2B;YACrD,cAAc,EAAE,iBAAiB,EAAE,QAAQ,EAAE,QAAQ;YACrD,cAAc,EAAE,mEAAmE;YACnF,cAAc,EAAE,wDAAwD;SACzE,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;YAClF,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ;YAC7D,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,wCAAwC;YAClE,cAAc,EAAE,wBAAwB,EAAE,QAAQ,EAAE,QAAQ;YAC5D,cAAc,EAAE,uDAAuD;YACvE,cAAc,EAAE,mEAAmE;SACpF,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;YAC5F,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK;YAClE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,sCAAsC;YAChE,cAAc,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK;YACjD,cAAc,EAAE,uDAAuD;YACvE,cAAc,EAAE,+DAA+D;SAChF,CAAC,CAAC;QAEH,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC;YACrD,MAAM;YACN,WAAW;SACZ,CAAC;IACJ,CAAC;IAED,8DAA8D;IACtD,WAAW,CACjB,IAAe,EACf,KAAa,EACb,aAAuB,EACvB,IAAe;QAEf,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO;QACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM;YAClE,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,aAAa;SAClD,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YACpB,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ;YAClD,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc;SACtE,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -47,17 +47,22 @@ export interface SchemaValidationOptions {
|
|
|
47
47
|
versionTolerance?: 'strict' | 'minor' | 'major';
|
|
48
48
|
ignoreOptionalFields?: boolean;
|
|
49
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Schema validator.
|
|
52
|
+
*/
|
|
50
53
|
export declare class SchemaValidator {
|
|
51
54
|
private options;
|
|
55
|
+
/**
|
|
56
|
+
* Constructor.
|
|
57
|
+
* @param options
|
|
58
|
+
*/
|
|
52
59
|
constructor(options?: SchemaValidationOptions);
|
|
53
60
|
/**
|
|
54
61
|
* Validate schema consistency across multiple languages
|
|
62
|
+
* @param schemas
|
|
63
|
+
* @returns
|
|
55
64
|
*/
|
|
56
65
|
validateSchemas(schemas: SchemaDefinition[]): Promise<SchemaViolation[]>;
|
|
57
|
-
/**
|
|
58
|
-
* Extract schema definitions from entities
|
|
59
|
-
*/
|
|
60
|
-
static extractSchemas(entities: CrossLanguageEntity[]): SchemaDefinition[];
|
|
61
66
|
/**
|
|
62
67
|
* Validate a group of schemas that should be equivalent
|
|
63
68
|
*/
|
|
@@ -66,6 +71,18 @@ export declare class SchemaValidator {
|
|
|
66
71
|
* Compare two schemas for compatibility
|
|
67
72
|
*/
|
|
68
73
|
private compareSchemas;
|
|
74
|
+
/**
|
|
75
|
+
* Check for required fields missing from the current schema.
|
|
76
|
+
*/
|
|
77
|
+
private checkMissingFields;
|
|
78
|
+
/**
|
|
79
|
+
* Check for fields present in the current schema but missing from the reference.
|
|
80
|
+
*/
|
|
81
|
+
private checkExtraFields;
|
|
82
|
+
/**
|
|
83
|
+
* Check type/constraint compatibility for fields present in both schemas.
|
|
84
|
+
*/
|
|
85
|
+
private checkFieldTypes;
|
|
69
86
|
/**
|
|
70
87
|
* Validate individual schema for internal consistency
|
|
71
88
|
*/
|
|
@@ -86,42 +103,15 @@ export declare class SchemaValidator {
|
|
|
86
103
|
* Check field naming consistency
|
|
87
104
|
*/
|
|
88
105
|
private checkFieldNaming;
|
|
89
|
-
/**
|
|
90
|
-
* Group schemas by name
|
|
91
|
-
*/
|
|
92
|
-
private groupSchemasByName;
|
|
93
|
-
/**
|
|
94
|
-
* Normalize schema name for comparison
|
|
95
|
-
*/
|
|
96
|
-
private normalizeSchemaName;
|
|
97
|
-
/**
|
|
98
|
-
* Normalize type names across languages
|
|
99
|
-
*/
|
|
100
|
-
private normalizeType;
|
|
101
|
-
/**
|
|
102
|
-
* Check if types are compatible across languages
|
|
103
|
-
*/
|
|
104
|
-
private areTypesCompatible;
|
|
105
|
-
/**
|
|
106
|
-
* Parse version string
|
|
107
|
-
*/
|
|
108
|
-
private parseVersion;
|
|
109
106
|
/**
|
|
110
107
|
* Check if versions are compatible
|
|
111
108
|
*/
|
|
112
109
|
private areVersionsCompatible;
|
|
113
|
-
/**
|
|
114
|
-
* Check if field name follows language conventions
|
|
115
|
-
*/
|
|
116
|
-
private isConsistentNaming;
|
|
117
|
-
/**
|
|
118
|
-
* Get recommended naming convention
|
|
119
|
-
*/
|
|
120
|
-
private getRecommendedNaming;
|
|
121
|
-
private static extractTypeScriptInterface;
|
|
122
|
-
private static extractGoStruct;
|
|
123
|
-
private static extractProtobufMessage;
|
|
124
|
-
private static extractGraphQLType;
|
|
125
|
-
private static extractJSONSchema;
|
|
126
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* Extract schema definitions from entities
|
|
113
|
+
* @param entities
|
|
114
|
+
* @returns
|
|
115
|
+
*/
|
|
116
|
+
export declare function extractSchemas(entities: CrossLanguageEntity[]): SchemaDefinition[];
|
|
127
117
|
//# sourceMappingURL=SchemaValidator.d.ts.map
|