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

uc-app

v1.2.0

Published

Simple yet powerful application class for a browser

Readme

Unchained UI

App

NPM Version NPM Downloads

Simple yet powerful application class for a browser.

Usage

import app from 'uc-app';

app.init({ container: 'body' }, () => {
  // here is your app is ready
  // this will start the router
  app.start();
});

API

You can use any API adapter.

app.setAPI(adapter);

The adapter should complain interface:

  • call() - makes the api call.
  • app() - gives your adapter access to the app instance.
  • host — string, is the full api host name.

The app will add following methods to your adapter:

  • log(level, ...args) — to log.
  • emit(event, ...args) — to emit events.

Router

app.router

For more info go to uc-router

routes(routes)

Adds all the routes to the router.

go(url[, state])

Navigates to the url. Alias to router.go.

DOM

For more info on following methods go to uc-dom

  • addClass
  • removeClass
  • toggleClass
  • replaceClass
  • appendTo
  • prependTo
  • insertBefore
  • insertAfter
  • find
  • attr

Events

on(event, handler[, context])

Adds the event handler to the event. You can use context to set this context for the handler. Returns the class instance so you can chain the calls.

once(event, handler[, context])

Same as the above but fires only once.

off(event, handler[, context])

Removes the event handler to the event. You should pass the context if you subscribed to the event with context. Returns the class instance so you can chain the calls.

emit(event, ...args)

Emits the event

Log

log(level, ...args)

Logs all args into console if level is smaller than logLevel property of the class.

Properties

  • logLevel - number, defines the maximum log level to be printed out
  • logName - string, if defined will be prepended to every log line

Log levels

const LOG_LEVEL = {
  NONE: 0,
  ALERT: 1,
  CRITICAL: 2,
  ERROR: 3,
  WARNING: 4,
  NOTICE: 5,
  INFO: 6,
  DEBUG: 7,
  ALL: 255
}

Storage

app.storage — JSON local storage uc-storage

Cookie

app.cookie — access to the cookies uc-cookies

License MIT

© velocityzen