const { readFileSync } = require('fs');
const path = require('path');
const modalityLang = require('./modality_lang.js');
async function main() {
try {
console.log('✅ WASM module is ready to use!\n');
const modalityCode = `model TestModel:
graph g1:
n1 --> n2 : +blue -red
n2 --> n3 : +green
n3 --> n1 : -blue +yellow
graph g2:
a --> b : +init
b --> c : +complete
c --> a : +reset
state:
g1: n1 n2
g2: a`;
console.log('📝 Example Modality Code:');
console.log(modalityCode);
console.log('\n' + '='.repeat(50) + '\n');
console.log('🔍 Parsing single model...');
try {
const modelResult = modalityLang.parse_model(modalityCode);
const model = JSON.parse(modelResult);
console.log('✅ Single model parsed successfully!');
console.log('Model structure:', JSON.stringify(model, null, 2));
} catch (error) {
console.error('❌ Error parsing single model:', error.message);
}
console.log('\n' + '='.repeat(50) + '\n');
console.log('🔍 Parsing all models...');
try {
const modelsResult = modalityLang.parse_all_models(modalityCode);
const models = JSON.parse(modelsResult);
console.log('✅ All models parsed successfully!');
console.log('Models structure:', JSON.stringify(models, null, 2));
} catch (error) {
console.error('❌ Error parsing all models:', error.message);
}
console.log('\n' + '='.repeat(50) + '\n');
console.log('📊 Generating Mermaid diagram for single model...');
try {
const modelResult = modalityLang.parse_model(modalityCode);
const mermaidResult = modalityLang.generate_mermaid(modelResult);
console.log('✅ Mermaid diagram generated successfully!');
console.log('Mermaid diagram:');
console.log('```mermaid');
console.log(mermaidResult);
console.log('```');
} catch (error) {
console.error('❌ Error generating Mermaid diagram:', error.message);
}
console.log('\n' + '='.repeat(50) + '\n');
console.log('🎨 Generating styled Mermaid diagram...');
try {
const modelResult = modalityLang.parse_model(modalityCode);
const styledMermaidResult = modalityLang.generate_mermaid_styled(modelResult);
console.log('✅ Styled Mermaid diagram generated successfully!');
console.log('Styled Mermaid diagram:');
console.log('```mermaid');
console.log(styledMermaidResult);
console.log('```');
} catch (error) {
console.error('❌ Error generating styled Mermaid diagram:', error.message);
}
console.log('\n' + '='.repeat(50) + '\n');
console.log('🎯 Generating state-aware Mermaid diagram...');
try {
const modelResult = modalityLang.parse_model(modalityCode);
const stateMermaidResult = modalityLang.generate_mermaid_with_state(modelResult);
console.log('✅ State-aware Mermaid diagram generated successfully!');
console.log('State-aware Mermaid diagram:');
console.log('```mermaid');
console.log(stateMermaidResult);
console.log('```');
} catch (error) {
console.error('❌ Error generating state-aware Mermaid diagram:', error.message);
}
console.log('\n' + '='.repeat(50) + '\n');
console.log('🏗️ Testing ModalityParser class...');
try {
const parser = new modalityLang.ModalityParser();
const modelResult = parser.parse_model(modalityCode);
const model = JSON.parse(modelResult);
console.log('✅ ModalityParser class works!');
console.log('Model name:', model.name);
console.log('Number of graphs:', model.graphs.length);
} catch (error) {
console.error('❌ Error with ModalityParser class:', error.message);
}
} catch (error) {
console.error('💥 Fatal error:', error);
process.exit(1);
}
}
main();