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

@danielx/system

v0.5.3

Published

System library for whimsy.space and danielx.net apps

Readme

Coverage Status

System

System is the framework and API layer for creating Whimsy.Space apps.

  • app
    • Base
  • aws
  • fs
    • Dexie IndexedDB
    • Package Explore a package as a filesystem
    • Mount A meta-file system where that mounts other systems as paths.
    • S3 AWS S3
  • pkg Utilities for loading, building, running packages.
  • ui
    • applyStyle(styleSource, name) TODO: this should be automatic in most cases
    • Bindable TODO: Not quite the right place?
    • ContextMenu
    • Jadelet
    • MenuBar
    • Modal
    • Observable
    • Progress
    • Window
  • util
    • Postmaster

Architecture

fs

The filesystem has common operations for listing, reading, writing, and deleting files. Both local and cloud backends are implemented. Different systems can be mounted at paths and have events translated cleanly. That's some of the magic that powers My Briefcase.

pkg

Build and run applications with packaging.

Deprecated parseDependencyPath(string, registry) parses a path to resolve a package shorthand to an https url. These paths are used in declaring dependencies in package configs like:

dependencies:
  postmaster: "distri/postmaster:master"

We should just switch to using https urls. If a specific build tool wants to handle short names or a registry then that is up to the tool.

htmlBlob(pkg, opts) Create a blob object containing html of the package with a self executing wrapper. This blob can then be published as a standalone webpage or launched inside an iframe.

ui

Artisanal User Interface

Menus

  • Context Menu
  • Menu Bar
  • Nested submenus

Simple DSL for creating menus and binding to handlers.

{ContextMenu} = require "ui"

contextMenu = ContextMenu()
document.body.appendChild contextMenu.element

Modals

  • Alert
  • Confirm
  • Prompt

Promise returning prompts, confirms, etc.

Actions

Hotkeys, help text, icons, enabled/disabled states.

Z-Indexes

Is there a sane way to do z-indexes? Right now I'm just listing them.

Modal: 1000 Context Menu: 2000

Naming Conventions

system provides many namespaces such as system.fs, system.ui, etc. Namespaces are lower case.

Those namespaces provide constructors and methods. Methods are lower initial camel-case:

system.util.style(...)

Constructors are upper initial camel-case and should not be called with new.

system.ui.Window(...)

Runtime

Experimenting with delegating more App plumbing to system through app.Base.

Currently implemented as something like this in ZineOS:

self.executePackageInIFrame
  distribution:
    main:
      content: """
        global.app = system.app.Base({
          pkg: PACKAGE
        });
        require("./app");
        app.trigger("boot");
      """
    app:
      content: source
  dependencies:
    "!system": PACKAGE.dependencies["!system"]

It makes a shim package, passing ZineOS's !system dependency through, then initializing a global app using the runtime's system.app.Base to wire up all the biz, then requires the single app file. Finally it triggers the boot event for the app.

This kind of pattern may make its way into a util in system one day. Still experimenting with the details.

Deprecations

system.client is a deprecated namespace from when system was synonymous with system.host and all the other namespaces lived under system.client.