@yantrix/codegen
v0.0.2
Published
Yantrix framework code generator API
Downloads
203
Readme
@yantrix/codegen
Yantrix is a (mostly) TypeScript framework and a DSL, that make up a full instrumental chain to implement robust and self-documented functional applications by code generation in multiple programming languages.
Code generation engine for Yantrix framework that transforms extendend Mermaid state diagrams into type-safe finite state machine implementations. Supports multiple target languages including TypeScript, JavaScript, Java and Python, with extensible architecture for adding new language targets.
Install the primary package using your prefered package manager. All the secondary dependencies will be installed automatically.
# Via NPM
$ npm install @yantrix/codegen
# Via Yarn
$ yarn add @yantrix/codegen
# Via PNPM
$ pnpm install @yantrix/codegen
# ✨ Auto-detection
$ npx nypm install @yantrix/codegen
We suggest using
pnpm
After installation, you can use @yantrix/codegen
in your TypeScript/JavaScript project to generate automata from Mermaid state diagrams for your needs.
import {
createStateDiagram,
generateAutomataFromStateDiagram,
parseStateDiagram
} from '@yantrix/codegen';
// Your Mermaid state diagram
const mermaidDiagram = `
stateDiagram-v2
[*] --> Idle
Idle --> Moving
Moving --> Idle
Moving --> Crashed
Crashed --> Idle
`;
// Parse the diagram into a structured object
const parsedDiagram = await parseStateDiagram(mermaidDiagram);
// Create a state diagram matrix of states and transitions
const matrix = await createStateDiagram(parsedDiagram);
// Generate TypeScript code
const generatedCode = await generateAutomataFromStateDiagram(matrix, {
language: 'TypeScript',
className: 'MovementAutomata'
});
// Write the code to a file
writeFileSync('MovementAutomata.ts', generatedCode);
And finally, you can use the generated code in your project:
import { MovementAutomata } from './MovementAutomata';
For more info, please refer to the documentation.
🌱 Contributing
📜 License
Made with 💜. Published under MIT License.