autrace 0.0.4 → 0.0.6
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 +8 -3
- package/build/src/AccountUpdateAnalyzer.d.ts +5 -0
- package/build/src/AccountUpdateAnalyzer.js +87 -5
- package/build/src/AccountUpdateAnalyzer.js.map +1 -1
- package/build/src/BlockchainAdapter.d.ts +1 -0
- package/build/src/BlockchainAdapter.js +184 -0
- package/build/src/BlockchainAdapter.js.map +1 -0
- package/build/src/BlockchainFlowAnalyzer.d.ts +17 -0
- package/build/src/BlockchainFlowAnalyzer.js +284 -0
- package/build/src/BlockchainFlowAnalyzer.js.map +1 -0
- package/build/src/Interface.d.ts +67 -1
- package/build/src/Visualiser.d.ts +14 -0
- package/build/src/Visualiser.js +464 -0
- package/build/src/Visualiser.js.map +1 -1
- package/build/src/aucli.d.ts +2 -0
- package/build/src/aucli.js +98 -0
- package/build/src/aucli.js.map +1 -0
- package/build/src/autrace.d.ts +2 -0
- package/build/src/autrace.js +136 -34
- package/build/src/autrace.js.map +1 -1
- package/build/src/config.d.ts +2 -0
- package/build/src/config.js +5 -0
- package/build/src/config.js.map +1 -0
- package/build/src/helper.d.ts +1 -0
- package/build/src/helper.js +23 -0
- package/build/src/helper.js.map +1 -0
- package/package.json +20 -5
package/build/src/Visualiser.js
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
import { promises as fs } from 'fs';
|
2
2
|
import child_process from 'child_process';
|
3
3
|
import util from 'util';
|
4
|
+
import * as d3 from 'd3';
|
5
|
+
import { JSDOM } from 'jsdom';
|
6
|
+
import sharp from 'sharp';
|
4
7
|
const exec = util.promisify(child_process.exec);
|
5
8
|
export class AUVisualizer {
|
6
9
|
constructor(stateHistory) {
|
@@ -101,6 +104,92 @@ export class AUVisualizer {
|
|
101
104
|
});
|
102
105
|
return mermaidCode;
|
103
106
|
};
|
107
|
+
this.generateBlockchainSection = (txState) => {
|
108
|
+
if (!txState.blockchainData) {
|
109
|
+
return '';
|
110
|
+
}
|
111
|
+
const data = txState.blockchainData;
|
112
|
+
let md = '## Blockchain Transaction Details\n\n';
|
113
|
+
md += `- **Transaction Hash**: \`${data.txHash || 'Unknown'}\`\n`;
|
114
|
+
md += `- **Block Height**: ${data.blockHeight || 'Unknown'}\n`;
|
115
|
+
md += `- **Status**: ${data.status || 'Unknown'}\n`;
|
116
|
+
if (data.timestamp) {
|
117
|
+
const date = new Date(data.timestamp);
|
118
|
+
md += `- **Timestamp**: ${date.toISOString()}\n`;
|
119
|
+
}
|
120
|
+
if (data.memo) {
|
121
|
+
md += `- **Memo**: ${data.memo}\n`;
|
122
|
+
}
|
123
|
+
// Add failure information if applicable
|
124
|
+
if (data.status === 'failed' && data.failures && data.failures.length > 0) {
|
125
|
+
md += '\n### Failures\n\n';
|
126
|
+
data.failures.forEach(failure => {
|
127
|
+
md += `- **Account Update ${failure.index}**: ${failure.failureReason}\n`;
|
128
|
+
});
|
129
|
+
}
|
130
|
+
return md;
|
131
|
+
};
|
132
|
+
this.convertSvgToPngWithSharp = async (svgPath, pngPath) => {
|
133
|
+
try {
|
134
|
+
const svgBuffer = await fs.readFile(svgPath);
|
135
|
+
await sharp(svgBuffer)
|
136
|
+
.png()
|
137
|
+
.flatten({ background: { r: 255, g: 255, b: 255 } }) // Add white background
|
138
|
+
.toFile(pngPath);
|
139
|
+
console.log(`Successfully converted SVG to PNG at: ${pngPath}`);
|
140
|
+
return pngPath;
|
141
|
+
}
|
142
|
+
catch (error) {
|
143
|
+
console.error('Error converting SVG to PNG:', error);
|
144
|
+
throw error;
|
145
|
+
}
|
146
|
+
};
|
147
|
+
this.generateBlockchainFlowWithPng = async (txState, svgPath = 'blockchain_flow.svg', pngPath = 'blockchain_flow.png') => {
|
148
|
+
try {
|
149
|
+
await this.generateBlockchainFlowSVG(txState, svgPath);
|
150
|
+
await this.convertSvgToPngWithSharp(svgPath, pngPath);
|
151
|
+
return {
|
152
|
+
svgPath,
|
153
|
+
pngPath
|
154
|
+
};
|
155
|
+
}
|
156
|
+
catch (error) {
|
157
|
+
console.error('Error generating blockchain flow PNG:', error);
|
158
|
+
throw error;
|
159
|
+
}
|
160
|
+
};
|
161
|
+
this.generateTransactionVisualization = async (txState, outputFormat = 'png', outputPath) => {
|
162
|
+
const defaultPaths = {
|
163
|
+
'svg': 'transaction_visualization.svg',
|
164
|
+
'png': 'transaction_visualization.png'
|
165
|
+
};
|
166
|
+
const finalOutputPath = outputPath || defaultPaths[outputFormat];
|
167
|
+
// Detect if this is a blockchain transaction
|
168
|
+
const isBlockchainTx = !!txState.blockchainData;
|
169
|
+
if (isBlockchainTx) {
|
170
|
+
this.generateBlockchainVisualization(txState, outputFormat, finalOutputPath);
|
171
|
+
//this.generateBlockchainFlowSVG(txState, outputPath);
|
172
|
+
}
|
173
|
+
else {
|
174
|
+
// Use standard visualization
|
175
|
+
if (outputFormat === 'svg') {
|
176
|
+
return this.generateSVG(finalOutputPath);
|
177
|
+
}
|
178
|
+
else {
|
179
|
+
const tempSvgPath = 'temp_transaction_visualization.svg';
|
180
|
+
await this.generateSVG(tempSvgPath);
|
181
|
+
try {
|
182
|
+
await this.convertSvgToPngWithSharp(tempSvgPath, finalOutputPath);
|
183
|
+
await fs.unlink(tempSvgPath);
|
184
|
+
console.log(`Successfully generated transaction PNG at: ${finalOutputPath}`);
|
185
|
+
}
|
186
|
+
catch (error) {
|
187
|
+
console.error('Error converting SVG to PNG:', error);
|
188
|
+
throw error;
|
189
|
+
}
|
190
|
+
}
|
191
|
+
}
|
192
|
+
};
|
104
193
|
this.stateHistory = stateHistory;
|
105
194
|
this.entities = new Map();
|
106
195
|
this.processEntities();
|
@@ -446,5 +535,380 @@ export class AUVisualizer {
|
|
446
535
|
throw error;
|
447
536
|
}
|
448
537
|
}
|
538
|
+
generateBlockchainMarkdown(txState) {
|
539
|
+
let markdown = '# Blockchain Transaction Analysis\n\n';
|
540
|
+
// Add blockchain-specific section
|
541
|
+
markdown += this.generateBlockchainSection(txState);
|
542
|
+
// Add standard sections
|
543
|
+
markdown += this.generateEntityRegistry();
|
544
|
+
markdown += this.generateTransactionFlow();
|
545
|
+
markdown += this.generateMetadata();
|
546
|
+
return markdown;
|
547
|
+
}
|
548
|
+
buildEdgesIfMissing(txState) {
|
549
|
+
// If edges already exist, don't do anything
|
550
|
+
if (txState.edges && txState.edges.length > 0) {
|
551
|
+
console.log(`Edges already exist (${txState.edges.length}), skipping edge generation`);
|
552
|
+
return txState;
|
553
|
+
}
|
554
|
+
const edges = [];
|
555
|
+
const nodeIds = Array.from(txState.nodes.keys());
|
556
|
+
console.log(`Found ${nodeIds.length} nodes for edge generation`);
|
557
|
+
// Fee payer relationship - connect fee payer to other accounts
|
558
|
+
const feePayer = this.findFeePayer(txState);
|
559
|
+
console.log(`Fee payer detection result: ${feePayer || 'None found'}`);
|
560
|
+
if (feePayer) {
|
561
|
+
console.log(`Connecting fee payer ${feePayer} to all other nodes`);
|
562
|
+
// Connect fee payer to all other nodes (except itself)
|
563
|
+
nodeIds.forEach(nodeId => {
|
564
|
+
if (nodeId !== feePayer) {
|
565
|
+
edges.push({
|
566
|
+
fromNode: feePayer,
|
567
|
+
toNode: nodeId,
|
568
|
+
operation: 'Fee Payment/Initiation',
|
569
|
+
failed: txState.blockchainData?.status === 'failed'
|
570
|
+
});
|
571
|
+
}
|
572
|
+
});
|
573
|
+
}
|
574
|
+
// Sequential relationships - create a chain of operations in sequence
|
575
|
+
console.log(`Creating sequential edges for ${nodeIds.length} nodes`);
|
576
|
+
for (let i = 0; i < nodeIds.length - 1; i++) {
|
577
|
+
// Skip if this would create a duplicate edge
|
578
|
+
if (!edges.some(e => e.fromNode === nodeIds[i] && e.toNode === nodeIds[i + 1])) {
|
579
|
+
edges.push({
|
580
|
+
fromNode: nodeIds[i],
|
581
|
+
toNode: nodeIds[i + 1],
|
582
|
+
operation: 'Sequence',
|
583
|
+
failed: txState.blockchainData?.status === 'failed'
|
584
|
+
});
|
585
|
+
}
|
586
|
+
}
|
587
|
+
// Token relationships - connect operations on the same token
|
588
|
+
const tokenGroups = this.groupNodesByToken(txState);
|
589
|
+
console.log(`Found ${tokenGroups.size} token groups`);
|
590
|
+
tokenGroups.forEach((nodeIds, tokenId) => {
|
591
|
+
if (nodeIds.length > 1 && tokenId !== 'wSHV2S4qX9jFsLjQo8r1BsMLH2ZRKsZx6EJd1sbozGPieEC4Jf') {
|
592
|
+
console.log(`Creating edges for token ${tokenId.substring(0, 10)}...`);
|
593
|
+
for (let i = 0; i < nodeIds.length - 1; i++) {
|
594
|
+
edges.push({
|
595
|
+
fromNode: nodeIds[i],
|
596
|
+
toNode: nodeIds[i + 1],
|
597
|
+
operation: 'Token Operation',
|
598
|
+
failed: txState.blockchainData?.status === 'failed'
|
599
|
+
});
|
600
|
+
}
|
601
|
+
}
|
602
|
+
});
|
603
|
+
console.log(`Generated ${edges.length} edges total`);
|
604
|
+
// Return updated state with edges
|
605
|
+
return {
|
606
|
+
...txState,
|
607
|
+
edges: edges
|
608
|
+
};
|
609
|
+
}
|
610
|
+
findFeePayer(txState) {
|
611
|
+
// Try to find fee payer from blockchain data
|
612
|
+
if (txState.blockchainData?.feePayerAddress) {
|
613
|
+
console.log(`Found feePayerAddress in blockchain data: ${txState.blockchainData.feePayerAddress.substring(0, 10)}...`);
|
614
|
+
// Look for node with matching address
|
615
|
+
for (const [id, node] of txState.nodes.entries()) {
|
616
|
+
if (node.publicKey === txState.blockchainData.feePayerAddress) {
|
617
|
+
console.log(`Found fee payer node by address match: ${id}`);
|
618
|
+
return id;
|
619
|
+
}
|
620
|
+
}
|
621
|
+
console.log("No node with matching feePayerAddress found");
|
622
|
+
}
|
623
|
+
// Alternatively, look for node with negative balance change
|
624
|
+
for (const [id, node] of txState.nodes.entries()) {
|
625
|
+
console.log(`Node ${id} balance change: ${node.balanceChange || 'undefined'}`);
|
626
|
+
if (node.balanceChange && node.balanceChange < 0) {
|
627
|
+
console.log(`Found fee payer node by negative balance: ${id}`);
|
628
|
+
return id;
|
629
|
+
}
|
630
|
+
}
|
631
|
+
console.log("No fee payer found");
|
632
|
+
return undefined;
|
633
|
+
}
|
634
|
+
groupNodesByToken(txState) {
|
635
|
+
const tokenGroups = new Map();
|
636
|
+
txState.nodes.forEach((node, id) => {
|
637
|
+
const tokenId = node.tokenId || 'default';
|
638
|
+
if (!tokenGroups.has(tokenId)) {
|
639
|
+
tokenGroups.set(tokenId, []);
|
640
|
+
}
|
641
|
+
tokenGroups.get(tokenId).push(id);
|
642
|
+
});
|
643
|
+
return tokenGroups;
|
644
|
+
}
|
645
|
+
async generateBlockchainFlowSVG(txState, outputPath = 'blockchain_flow.svg') {
|
646
|
+
try {
|
647
|
+
txState = this.buildEdgesIfMissing(txState);
|
648
|
+
// Create a virtual DOM for server-side rendering
|
649
|
+
const dom = new JSDOM('<!DOCTYPE html><html><body></body></html>');
|
650
|
+
const document = dom.window.document;
|
651
|
+
global.document = document;
|
652
|
+
// Create SVG container
|
653
|
+
const width = 1200;
|
654
|
+
const height = 800;
|
655
|
+
const svg = d3.select(document.body)
|
656
|
+
.append('svg')
|
657
|
+
.attr('xmlns', 'http://www.w3.org/2000/svg')
|
658
|
+
.attr('width', width)
|
659
|
+
.attr('height', height)
|
660
|
+
.attr('viewBox', `0 0 ${width} ${height}`);
|
661
|
+
// Add title
|
662
|
+
svg.append('text')
|
663
|
+
.attr('x', width / 2)
|
664
|
+
.attr('y', 30)
|
665
|
+
.attr('text-anchor', 'middle')
|
666
|
+
.attr('font-family', 'Arial')
|
667
|
+
.attr('font-size', '20px')
|
668
|
+
.attr('font-weight', 'bold')
|
669
|
+
.text(`Transaction Flow: ${txState.blockchainData?.txHash?.substring(0, 16) || 'Unknown'}...`);
|
670
|
+
// Add status
|
671
|
+
svg.append('text')
|
672
|
+
.attr('x', width / 2)
|
673
|
+
.attr('y', 60)
|
674
|
+
.attr('text-anchor', 'middle')
|
675
|
+
.attr('font-family', 'Arial')
|
676
|
+
.attr('font-size', '16px')
|
677
|
+
.text(`Status: ${txState.blockchainData?.status || 'Unknown'}`);
|
678
|
+
// Create arrow markers for different relationship types
|
679
|
+
const defs = svg.append('defs');
|
680
|
+
const markers = [
|
681
|
+
{ id: 'arrow-black', color: 'black' },
|
682
|
+
{ id: 'arrow-red', color: 'red' },
|
683
|
+
{ id: 'arrow-green', color: 'green' },
|
684
|
+
{ id: 'arrow-blue', color: 'blue' },
|
685
|
+
{ id: 'arrow-purple', color: 'purple' }
|
686
|
+
];
|
687
|
+
markers.forEach(marker => {
|
688
|
+
defs.append('marker')
|
689
|
+
.attr('id', marker.id)
|
690
|
+
.attr('viewBox', '0 0 10 10')
|
691
|
+
.attr('refX', 25)
|
692
|
+
.attr('refY', 5)
|
693
|
+
.attr('markerWidth', 6)
|
694
|
+
.attr('markerHeight', 6)
|
695
|
+
.attr('orient', 'auto')
|
696
|
+
.append('path')
|
697
|
+
.attr('d', 'M 0 0 L 10 5 L 0 10 z')
|
698
|
+
.attr('fill', marker.color);
|
699
|
+
});
|
700
|
+
// Extract and convert nodes from txState
|
701
|
+
const nodesArray = [];
|
702
|
+
const nodeMap = new Map();
|
703
|
+
// Debug information
|
704
|
+
console.log(`Processing transaction state with ${txState.nodes.size} nodes and ${txState.edges.length} edges`);
|
705
|
+
// Process nodes
|
706
|
+
txState.nodes.forEach((node, id) => {
|
707
|
+
const publicKey = node.publicKey || '';
|
708
|
+
// Format address as xxxx....xxxxx (first 4 and last 4 characters)
|
709
|
+
const shortAddress = publicKey.length > 8
|
710
|
+
? `${publicKey.substring(0, 6)}....${publicKey.substring(publicKey.length - 6)}`
|
711
|
+
: publicKey;
|
712
|
+
const nodeData = {
|
713
|
+
id,
|
714
|
+
label: node.label || 'Unknown',
|
715
|
+
publicKey: node.publicKey,
|
716
|
+
//shortAddress: node.publicKey.substring(0, 10) + '...',
|
717
|
+
shortAddress: shortAddress,
|
718
|
+
type: node.type,
|
719
|
+
failed: !!node.failed,
|
720
|
+
failureReason: node.failureReason,
|
721
|
+
tokenId: node.tokenId,
|
722
|
+
// These will be filled in by the simulation
|
723
|
+
x: undefined,
|
724
|
+
y: undefined
|
725
|
+
};
|
726
|
+
nodesArray.push(nodeData);
|
727
|
+
nodeMap.set(id, nodeData);
|
728
|
+
});
|
729
|
+
// Extract edges
|
730
|
+
const linksArray = [];
|
731
|
+
txState.edges.forEach((edge, i) => {
|
732
|
+
// Validate source and target nodes exist
|
733
|
+
if (nodeMap.has(edge.fromNode) && nodeMap.has(edge.toNode)) {
|
734
|
+
linksArray.push({
|
735
|
+
id: `edge${i}`,
|
736
|
+
source: nodeMap.get(edge.fromNode),
|
737
|
+
target: nodeMap.get(edge.toNode),
|
738
|
+
operation: edge.operation,
|
739
|
+
failed: !!edge.failed
|
740
|
+
});
|
741
|
+
}
|
742
|
+
else {
|
743
|
+
console.warn(`Edge references non-existent node: ${edge.fromNode} -> ${edge.toNode}`);
|
744
|
+
}
|
745
|
+
});
|
746
|
+
console.log(`Processed ${nodesArray.length} nodes and ${linksArray.length} links for visualization`);
|
747
|
+
// Set initial positions manually (in a grid layout) instead of using force simulation
|
748
|
+
const gridCols = Math.ceil(Math.sqrt(nodesArray.length));
|
749
|
+
const cellWidth = width / (gridCols + 1);
|
750
|
+
const cellHeight = height / (Math.ceil(nodesArray.length / gridCols) + 1);
|
751
|
+
nodesArray.forEach((node, i) => {
|
752
|
+
const row = Math.floor(i / gridCols);
|
753
|
+
const col = i % gridCols;
|
754
|
+
node.x = (col + 1) * cellWidth;
|
755
|
+
node.y = (row + 1) * cellHeight;
|
756
|
+
});
|
757
|
+
// Draw links
|
758
|
+
const link = svg.append('g')
|
759
|
+
.selectAll('line')
|
760
|
+
.data(linksArray)
|
761
|
+
.enter().append('line')
|
762
|
+
.attr('x1', d => d.source.x)
|
763
|
+
.attr('y1', d => d.source.y)
|
764
|
+
.attr('x2', d => d.target.x)
|
765
|
+
.attr('y2', d => d.target.y)
|
766
|
+
.attr('stroke', d => d.failed ? 'red' : 'black')
|
767
|
+
.attr('stroke-width', 2)
|
768
|
+
.attr('stroke-dasharray', d => d.failed ? '5,5' : null)
|
769
|
+
.attr('marker-end', d => `url(#arrow-${d.failed ? 'red' : 'black'})`);
|
770
|
+
// Add link labels
|
771
|
+
const linkText = svg.append('g')
|
772
|
+
.selectAll('text')
|
773
|
+
.data(linksArray)
|
774
|
+
.enter().append('text')
|
775
|
+
.attr('x', d => (d.source.x + d.target.x) / 2)
|
776
|
+
.attr('y', d => (d.source.y + d.target.y) / 2 - 10)
|
777
|
+
.attr('text-anchor', 'middle')
|
778
|
+
.attr('font-family', 'Arial')
|
779
|
+
.attr('font-size', '12px')
|
780
|
+
.attr('fill', d => d.failed ? 'red' : 'black')
|
781
|
+
.text(d => {
|
782
|
+
if (!d.operation)
|
783
|
+
return '';
|
784
|
+
const opStr = typeof d.operation === 'string' ? d.operation : JSON.stringify(d.operation);
|
785
|
+
return opStr.length > 30 ? opStr.substring(0, 27) + '...' : opStr;
|
786
|
+
});
|
787
|
+
// Draw nodes
|
788
|
+
const node = svg.append('g')
|
789
|
+
.selectAll('g')
|
790
|
+
.data(nodesArray)
|
791
|
+
.enter().append('g')
|
792
|
+
.attr('transform', d => `translate(${d.x},${d.y})`);
|
793
|
+
// Add circles for nodes
|
794
|
+
node.append('circle')
|
795
|
+
.attr('r', 20)
|
796
|
+
.attr('fill', d => {
|
797
|
+
if (d.failed)
|
798
|
+
return '#FFCCCC';
|
799
|
+
if (d.type === 'contract')
|
800
|
+
return '#DDA0DD';
|
801
|
+
if (d.tokenId && d.tokenId !== 'wSHV2S4qX9jFsLjQo8r1BsMLH2ZRKsZx6EJd1sbozGPieEC4Jf')
|
802
|
+
return '#CCFFCC';
|
803
|
+
return '#B3E0FF';
|
804
|
+
})
|
805
|
+
.attr('stroke', d => d.failed ? 'red' : '#333')
|
806
|
+
.attr('stroke-width', 2);
|
807
|
+
/*
|
808
|
+
// Add labels to nodes
|
809
|
+
node.append('text')
|
810
|
+
.attr('dy', 5)
|
811
|
+
.attr('text-anchor', 'middle')
|
812
|
+
.attr('font-family', 'Arial')
|
813
|
+
.attr('font-size', '12px')
|
814
|
+
.text(d => d.shortAddress);
|
815
|
+
|
816
|
+
// Add subtitle text for nodes
|
817
|
+
node.append('text')
|
818
|
+
.attr('dy', 25)
|
819
|
+
.attr('text-anchor', 'middle')
|
820
|
+
.attr('font-family', 'Arial')
|
821
|
+
.attr('font-size', '10px')
|
822
|
+
.attr('fill', d => d.failed ? 'red' : 'black')
|
823
|
+
.text(d => {
|
824
|
+
if (d.failed) return d.failureReason ? d.failureReason.substring(0, 15) : 'Failed';
|
825
|
+
if (d.tokenId && d.tokenId !== 'wSHV2S4qX9jFsLjQo8r1BsMLH2ZRKsZx6EJd1sbozGPieEC4Jf') return 'Custom Token';
|
826
|
+
return d.type === 'contract' ? 'Contract' : 'Account';
|
827
|
+
});
|
828
|
+
*/
|
829
|
+
// Add address below the node
|
830
|
+
node.append('text')
|
831
|
+
.attr('dy', 40)
|
832
|
+
.attr('text-anchor', 'middle')
|
833
|
+
.attr('font-family', 'Arial')
|
834
|
+
.attr('font-size', '12px')
|
835
|
+
.text(d => d.shortAddress);
|
836
|
+
// Add additional info (failure reason) if needed
|
837
|
+
node.append('text')
|
838
|
+
.attr('dy', 55)
|
839
|
+
.attr('text-anchor', 'middle')
|
840
|
+
.attr('font-family', 'Arial')
|
841
|
+
.attr('font-size', '10px')
|
842
|
+
.attr('fill', 'red')
|
843
|
+
.text(d => {
|
844
|
+
if (d.failed && d.failureReason)
|
845
|
+
return d.failureReason.substring(0, 15);
|
846
|
+
return '';
|
847
|
+
});
|
848
|
+
// Add legend
|
849
|
+
const legend = svg.append('g')
|
850
|
+
.attr('transform', 'translate(50, 100)');
|
851
|
+
const legendItems = [
|
852
|
+
{ color: '#B3E0FF', label: 'Account' },
|
853
|
+
{ color: '#DDA0DD', label: 'Contract' },
|
854
|
+
{ color: '#CCFFCC', label: 'Token Operation' },
|
855
|
+
{ color: '#FFCCCC', label: 'Failed Operation' }
|
856
|
+
];
|
857
|
+
legendItems.forEach((item, i) => {
|
858
|
+
const g = legend.append('g')
|
859
|
+
.attr('transform', `translate(0, ${i * 25})`);
|
860
|
+
g.append('rect')
|
861
|
+
.attr('width', 20)
|
862
|
+
.attr('height', 20)
|
863
|
+
.attr('fill', item.color)
|
864
|
+
.attr('stroke', '#333')
|
865
|
+
.attr('stroke-width', 1);
|
866
|
+
g.append('text')
|
867
|
+
.attr('x', 30)
|
868
|
+
.attr('y', 15)
|
869
|
+
.attr('font-family', 'Arial')
|
870
|
+
.attr('font-size', '14px')
|
871
|
+
.text(item.label);
|
872
|
+
});
|
873
|
+
// Save SVG to file
|
874
|
+
const svgString = document.body.innerHTML;
|
875
|
+
await fs.writeFile(outputPath, svgString);
|
876
|
+
console.log(`Successfully generated blockchain flow SVG at: ${outputPath}`);
|
877
|
+
return outputPath;
|
878
|
+
}
|
879
|
+
catch (error) {
|
880
|
+
console.error('Error generating blockchain flow SVG:', error);
|
881
|
+
throw error;
|
882
|
+
}
|
883
|
+
}
|
884
|
+
async generateBlockchainVisualization(txState, outputFormat = 'png', outputPath) {
|
885
|
+
// Default output paths based on format
|
886
|
+
const defaultPaths = {
|
887
|
+
'svg': 'blockchain_flow.svg',
|
888
|
+
'png': 'blockchain_flow.png',
|
889
|
+
'md': 'blockchain_analysis.md'
|
890
|
+
};
|
891
|
+
const finalOutputPath = outputPath || defaultPaths[outputFormat];
|
892
|
+
switch (outputFormat) {
|
893
|
+
case 'svg':
|
894
|
+
return this.generateBlockchainFlowSVG(txState, finalOutputPath);
|
895
|
+
case 'png':
|
896
|
+
const tempSvgPath = 'temp_blockchain_flow.svg';
|
897
|
+
try {
|
898
|
+
const result = await this.generateBlockchainFlowWithPng(txState, tempSvgPath, finalOutputPath);
|
899
|
+
await fs.unlink(tempSvgPath);
|
900
|
+
return finalOutputPath;
|
901
|
+
}
|
902
|
+
catch (error) {
|
903
|
+
console.error('Error generating blockchain flow PNG:', error);
|
904
|
+
throw error;
|
905
|
+
}
|
906
|
+
case 'md':
|
907
|
+
const markdown = this.generateBlockchainMarkdown(txState);
|
908
|
+
await fs.writeFile(finalOutputPath, markdown);
|
909
|
+
console.log(`Successfully generated blockchain analysis markdown at: ${finalOutputPath}`);
|
910
|
+
return finalOutputPath;
|
911
|
+
}
|
912
|
+
}
|
449
913
|
}
|
450
914
|
//# sourceMappingURL=Visualiser.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Visualiser.js","sourceRoot":"","sources":["../../src/Visualiser.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"Visualiser.js","sourceRoot":"","sources":["../../src/Visualiser.ts"],"names":[],"mappings":"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"}
|