- Notifications
You must be signed in to change notification settings - Fork1
A TypeScript library for tracing and visualizing code execution workflows.
License
tabkram/execution-engine
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Execution Engine is a TypeScript library that enables tracing and visualization of code execution workflows in yourproject. Gain insights into the dynamic sequence of code execution bycapturing detailed traces in JSON format, easily parseable into graphs.
- Tracing: Trace the execution flow of code within your project.
- Timing: Capture the timing of each executed function.
- Visualization: Generate traces in JSON format for clear and insightful visualization.
- Easily parseable into graphs using tools likejson-to-graph online demo.
Usenpm package manager:
npm install execution-engine
Or use theyarn package manager:
yarn add execution-engine
import{ExecutionEngine}from"execution-engine";constengine=newExecutionEngine();// for sync functions:constres1=engine.run((param)=>`result1 for${param}`,['param1']);// for async functions:constres2=awaitengine.run(async(param)=>`result2 for${param}`,[res1.outputs]);// Retrieve the traceconsttrace=engine.getTrace();console.log('Trace:',trace);
You can:
- view thecomplete code inexamples/usage.ts
- inspect thetrace output inexamples/usage.json.
- visualize thetrace graph using the json-to-graph online tool.→ See the result ←
import{engine,run}from"execution-engine";@engine({id:"uniqueEngineId"})classMyClassextendsEngineTask{ @run()myMethod1(param:string){return`result1 for${param}`;} @run()asyncmyMethod2(param:string){return`result2 for${param}`;}}constmyInstance=newMyClass();myInstance.myMethod2("param1");awaitmyInstance.myMethod2("param2");// Retrieve the traceconsttrace=myInstance.engine.getTrace();console.log("Trace:",trace);
You can:
- view thecomplete code inexamples/usage2.ts
- inspect thetrace output inexamples/usage2.json
- visualize thetrace graph using the json-to-graph online tool.→ See the result ←
Thetrace
object is an array containingnodes andedges. It has the following structure:
trace=[{data:{id:function_uuid1,label:"function"//... other properties of the result of the executed function as mentioned above},group:nodes},{data:{id:function_uuid2,label:"function"//... other properties of the result of the executed function as mentioned above},group:nodes},{data:{id:function_uuid1->function_uuid2,source:function_uuid1,target:function_uuid2,parallel:false},group:edges}];
For additional usage examples, please explore the/examples directory in this repository.
You'll find a variety of scenarios showcasing the capabilities of Execution Engine.
Explore the comprehensivedocumentation for this project.
For a detailed list of changes, enhancements, and bug fixes, please refer to ourChangelog.
If you find any issues or have suggestions for improvement, feel free to open an issue or submit a pull request.Contributions are welcome!
Before getting started, please read ourContribution Guidelines.
Loveexecution-engine
? Give our repo a star ⭐ ⬆️.
This project is licensed under the MIT License - see theLICENSE file for details.
About
A TypeScript library for tracing and visualizing code execution workflows.