GithubHelp home page GithubHelp logo

tabkram / execution-engine Goto Github PK

View Code? Open in Web Editor NEW
14.0 5.0 1.0 455 KB

A TypeScript library for tracing and visualizing code execution workflows.

Home Page: https://tabkram.github.io/execution-engine/

License: MIT License

JavaScript 2.78% TypeScript 97.07% Shell 0.15%
execution execution-engine graph json node trace workflow workflow-engine execution-workflow execution-context

execution-engine's Introduction

Execution Engine

execution-engine on npm npm install size Github repo GitHub license Documentation jsDocs.io

Execution Engine is a TypeScript library that enables tracing and visualization of code execution workflows in your project. Gain insights into the dynamic sequence of code execution by capturing detailed traces in JSON format, easily parseable into graphs.

Features โœจ

  • 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.

Installation ๐Ÿ“ฆ

Use npm package manager:

npm install execution-engine

Or use the yarn package manager:

yarn add execution-engine

Usage ๐Ÿ“š

Example 1: Basic Usage

import { ExecutionEngine } from "execution-engine";

const engine = new ExecutionEngine();

// for sync functions:
const res1 = engine.run((param) => `result1 for ${param}`, ['param1']);

// for async functions:
const res2 = await engine.run(async (param) => `result2 for ${param}`, [res1.outputs]);

// Retrieve the trace
const trace = engine.getTrace();
console.log('Trace:', trace);

You can:

Example 2: Usage with Decorators

import { engine, run } from "execution-engine";

@engine({ id: "uniqueEngineId" })
class MyClass extends EngineTask {
  @run()
  myMethod1(param: string) {
    return `result1 for ${param}`;
  }

  @run()
  async myMethod2(param: string) {
    return `result2 for ${param}`;
  }
}

const myInstance = new MyClass();
myInstance.myMethod2("param1");
await myInstance.myMethod2("param2");

// Retrieve the trace
const trace = myInstance.engine.getTrace();
console.log("Trace:", trace);

You can:

Understanding the Trace ๐Ÿงญ

The trace object is an array containing nodes and edges. 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
  }
];

Examples ๐Ÿ“˜

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.

Documentation ๐Ÿ“”

Explore the comprehensive documentation for this project.

Changelog ๐Ÿ“

For a detailed list of changes, enhancements, and bug fixes, please refer to our Changelog.

Contributing ๐Ÿค

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 our Contribution Guidelines.

Community ๐Ÿ‘ฅ

Love execution-engine ? Give our repo a star โญ โฌ†๏ธ.

License ๐Ÿ“„

This project is licensed under the MIT License - see the LICENSE file for details.

execution-engine's People

Contributors

tabkram avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

linecode

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.