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

@n1kben/elm-ast

v0.1.0

Published

Parse Elm modules and generate Elm source from typed ASTs

Readme

Elm AST for TypeScript

This is a 0.1.0 preview. It parses Elm module headers, imports, type aliases, unions, and type annotations into TypeScript values. It resolves types across project modules and installed package docs, including recursive types. It can also print generated declarations from a typed expression tree, adding imports for qualified references.

The parser keeps existing function bodies as source text. Generated function bodies are built from the expression AST and printed as Elm. typeModuleFromParsed copies parsed type declarations; it does not copy functions or comments. The writer covers the expressions needed by the current codec generator, not every Elm expression. Keep using the Elm compiler to check generated code. The API is still changing; check generated Elm with the Elm compiler.

Install it with npm install @n1kben/elm-ast effect.

import { parseModule } from "@n1kben/elm-ast";
import { openProject } from "@n1kben/elm-ast/project";
import { Effect } from "effect";

const project = Effect.runSync(openProject("."));
const component = Effect.runSync(project.module("Ui.DatePicker"));
const input = component.declarations.find((item) => item.kind === "alias" && item.name === "Input");

openProject is an Effect that reads elm.json, indexes project source directories, and loads docs for installed dependencies from ELM_HOME. File and parse failures are returned as ProjectError values. module and resolveType return ProjectLookupError for missing or ambiguous declarations. collectTypeGraph returns an Effect that finds declarations reachable from boundary types and reports unsupported types as TypeGraphError. Generated modules use createModule, ref, and printModule from @n1kben/elm-ast/emit; the printer adds imports referenced by expressions and types.

This repository provides the parser, type graph, and Elm source writer. The Elm web components project is testing these APIs as the basis for a future TypeScript generator. The component CLI still uses its Elm generator.