Giter Site home page Giter Site logo

kudzu's Introduction

kudzu

Fast evaluation on ESTree-compatible ASTs

Features

  • Comprehensive tests
  • Fully asynchronous API and internals
  • Esprima and Cherow compatible
  • ECMA 3 and IE8 compatible
  • ESNext support

Install

npm install kudzu

Usage

var kudzu    = require('kudzu'),
    esprima  = require('esprima');

var ast   = esprima.parseScript(' ... '),
    scope = new kudzu.Scope(globals);

scope.on('get', function () {
  // supports custom scope data handlers
});

scope.on('ConditionalExpression', function () {
  // supports custom lexical node handlers
});

scope.walk(ast, function (returnValue) {
  // done
});

Support

Runtime

  • Strict mode
  • Error handling
  • Error skipping/resolution
  • Protected global objects/prototypes

Globals

  • Array
  • Function
  • Object
  • Date
  • Number
  • RegExp
  • String
  • Proxy
  • Symbol
  • Math

Scope

  • Scope chain
  • Function scope (var)
  • Block scope (let)

Operations

  • Binary (&, |, ^)
  • Mathematical (+, -, /, *, %)
  • Increment before (++i, --i)
  • Increment after (i++, i--)
  • Add assignment
  • Subtract assignment
  • Multiply assignment
  • Divide assignment
  • typeof

Conditionals

  • And/or
  • Strict/non-strict equality
  • <, >, <=, >=
  • instanceof
  • If statements

Loops

  • For loops
  • While loops
  • break
  • continue
  • return

Functions

  • Function declarations
  • Anonymous closures
  • Arrow functions
  • Async functions
  • Spread operator
  • Object identity

Proxies

  • Proxy constructor
  • Has/get/set/delete property
  • Get/set property descriptor
  • Get/set prototype
  • Apply

Promises

  • Promise constructor
  • Promise.then
  • Promise.catch

Symbols

Errors

  • Error constructor
  • Stack traces
  • Try/catch

Prior Art

https://www.npmjs.com/package/esper.js https://www.npmjs.com/package/sandboxr https://github.com/NeilFraser/JS-Interpreter https://github.com/mozilla/narcissus/

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.