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

@andromeda/lya

v0.0.21

Published

Library-oriented Dynamic Analysis

Downloads

60

Readme

Library-oriented Dynamic Program Analysis for JavaScript

Mailing lists: Commits | Discussion

What's Lya?

Lya is a coarse-grained dynamic analysis framework that bolts onto a conventional production runtime as a library. Coarse-grained means that analyses with less detail than conventional frameworks but operates at a much lower overhead—enabling always-on operation on production environments. Despite operating at a coarser-than-typical granularity, it still allows for useful analyses. Examples include identifying security vulnerabilities, highlighting performance bottlenecks, and applying corrective actions.

Who should be interested?

Programmers interested in Lya fall under two categories. The first is programmers who want to use one of the available analyses to gain insight into their application. These can install and configure Lya with an existing analysis—for more information see how to use lya below.

The second is programmers who want to write their own analyses, achievable by providing a few methods and parameters; in our experience, powerful analyses can be expressed in only a few lines of code—for more info, see how to write an analysis below.

Installation

Lya runs best with Node v8.9.4. You can use nvm (macOS/Linux) to switch Node versions between different projects.

Option 1: Npm

npm i @andromeda/lya --save-dev

If you want to install globally, so as to analyzing any program or library in the system, replace --save-dev with -g.

Option 2: From source

git clone https://github.com/andromeda/lya/
cd lya
npm install

Option 3: From docker image

docker run -it gntousakis/lya:1.0.0

# Inside the container
cd home/lya/ 

Quick Start

How to Use Lya?

Then, add lya as a first import at the top-level file in your project—that is, almost always Lya has to be the first package to be loaded. One can configure several parameters, including use any of the predefined list of analyses. For example:

let lya = require("@andromeda/lya");
let conf = {
  analysis: lya.preset.ON_OFF,
  saveResults: require("path").join(__dirname, "dynamic.json"),
};
lya.configRequire(require, conf);
require("./main.js");

The configuration above first configures running the ON_OFF analysis, and saves the results in ./dynamic.json. For more configuration options and details, see the configuration docs.

How to Create a New Analysis?

Lya expects the developer of a new analysis to provide a few methods that Lya will hook across all modules. It supports several methods, but a useful analysis can be written with any subset of them. Example methods include sourceTransform, onImport, and onRead. Their details are provided in doc.

Docs