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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@pehotin/parker

v1.0.17

Published

Parker is a small JavaScript parser and tokenizer that turns JavaScript/TypeScript-like source code into an abstract syntax tree (AST). It is designed for tooling, code analysis, and experimentation rather than being a full drop-in replacement for product

Readme

Parker

Parker is a small JavaScript parser and tokenizer that turns JavaScript/TypeScript-like source code into an abstract syntax tree (AST). It is designed for tooling, code analysis, and experimentation rather than being a full drop-in replacement for production parsers. Work in progress.

Features

  • Lexer: Converts source text into a stream of tokens.
  • Parser: Produces a rich AST using node classes from src/node.js.
  • Options support: Optional location metadata on nodes (line / column).
  • Playground: Simple CLI playground under playground/ for quick experiments.
  • Go prototype: Early Go-based lexer implementation under go/src/.

Getting started

Prerequisites

  • Node.js (recommended: current LTS)
  • npm (or another Node package manager)

Installation

From the parker directory:

npm install

Parker is published as a Node module inside this repo (see package.json). You can either:

  • Use it directly from this repo (require('./src')), or
  • Publish it / link it locally and depend on it from another project.

Usage

Basic parsing

const Parker = require('parker'); // or: require('./src')

const source = `
  export class Renderer {
  }
`;

const ast = Parker.parse(source, { locations: true });
console.log(JSON.stringify(ast, null, 2));

Tokenizing

const Parker = require('parker'); // or: require('./src')

const source = `
  export class Renderer {
  }
`;

const tokens = Parker.tokenizeAll(source, { locations: true });
console.log(tokens);

Options

Parker accepts an options object in both parse and tokenizeAll:

  • locations: boolean
    When true, the parser and lexer attach location information to tokens and AST nodes.

Example:

const ast = Parker.parse(source, { locations: true });

API

Parker.parse(source, options?)

  • source: string – Source code to parse.
  • options: object (optional)
    • locations?: boolean

Returns: An AST NodeProgram instance representing the full program.

Parker.tokenizeAll(source, options?)

  • source: string – Source code to tokenize.
  • options: object (optional)
    • locations?: boolean

Returns: An array of token objects from the underlying lexer.


Playground

This repository includes a simple playground script to inspect the AST for a sample file.

From the parker directory:

npm run play

This will:

  • Read playground/test.js
  • Parse it with Parker.parse
  • Print the resulting AST using Node’s util.inspect.

You can change the sample code by editing playground/test.js.


Development

  • Main entry: src/index.js (exports the Parker class from src/parker.js).
  • Lexer: src/lexer.js
  • Parser: src/parser.js
  • Nodes: src/node.js
  • Options: src/options.js

For local hacking:

# Install dependencies
npm install

# Run playground
npm run play

License

MIT