npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

esfuzz

v0.3.1

Published

JS fuzzer for generative testing of parsers that implement the SpiderMonkey Reflect.parse API

Downloads

135

Readme

esfuzz

Fuzzer for generative testing of ECMAScript parsers, especially those that implement the SpiderMonkey Reflect.parse API.

Install

npm install -g esfuzz

Usage

CLI

$ esfuzz --help


  Usage: esfuzz OPT*

  -n, --iterations NUM  use at most NUM programs; default: unlimited
  -d, --max-depth NUM   create ASTs with a height no greater than NUM; default: 8
  --acorn               enable marijnh/acorn parser; default: on
  --es6                 allow ECMAScript 6 features in generated programs
  --esprima             enable ariya/esprima parser; default: on
  --help                display this help message and exit
  --reflect             enable Reflect.parse parser; default: on if it exists
  --reflectjs           enable zaach/reflect.js parser
  --uglifyjs            enable limited support for mishoo/UglifyJS2
  --version             display the version number and exit
  --zeparser            enable limited support for qfox/ZeParser

Module Interface

generate(options) -> SpiderMonkey_AST

Generate a random SpiderMonkey AST that represents a valid ECMAScript program. Available options:

  • maxDepth: create ASTs with a height no greater than this value

render(programAST, format) -> String (JS program)

Render a SpiderMonkey AST as an ECMAScript program. If the format argument is omitted, a random format will be used. Otherwise, the given object must be in the format of escodegen's format option.

fuzz(programAST, parsers) -> void

Takes a SpiderMonkey AST and a list of objects that have a parse method that obeys the SpiderMonkey Reflect.parse API. This function will generate concrete syntax and run it through each parser. If any of the parsers fail to parse the program, an error will be thrown.

fuzzAndRoundtrip(programAST, parsers) -> void

Identical to fuzz, except additionally compares the outputs of each parser to the generated program. If any of the parsers fail to parse the program or fail to generate an AST equivalent to the given one, an error will be thrown.