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

hyperworld

v2.32.0

Published

Virtual World of Things.

Readme

HyperWorld OOP Language

Virtual World of Objects.

screenshot

I write this program in hopes of creating a general purpose orchestration language for my friends, and you. Programming is hard, but you don't need to learn programming to be a programmer. You just need to learn writing things in such a way that a programmer can come in and fill in the code you need.

Before we begin please visit MUD on Wikipedia to get a better idea where we are headed and how we are going to get there. Here, are some of the more notable YouTube videos on the subject.

Program Architecture

Program Interfaces / Clients

Web Client

Class Structure

  • Root - central access point
    • .login(username, password)
    • .session(?) - user session
    • Universe
      • .location(name) - finds a location by name (interface to map)
      • .show() - displays a map of the universe (interface to map)
      • Map - loads and holds the universe map (xml)
    • Commands
      • .input(text)
      • .completions()
    • Session
      • User
        • Avatar
        • .location - set get avatar location
        • command() - parse user input text
        • completions() - return a list of potential commands
        • Screen
          • .data(data) - You can send data
          • .info(text) - Info
          • .warning(text) - Warning
          • .danger(text) - Danger
          • .error(text) - Error
          • .input(data) - Ask for text input
          • .select(data) - Ask to select something
          • .prompt(data) - print a prompt, especially in a terminal
          • JSON (Web) - Interface via Web
          • Enquirer (Terminal) - Interface via Terminal

GUI Screenshots - The Universal Interface

The user interface is abstracted via Screen Object no extra steps are required to craft terminal or web interface.

web-and-terminal-ui-side-by-side.png

Development Screenshots

screenshot screenshot-borders screenshot-robots screenshot-command screenshot-login screenshot-browser screenshot-conversation

World Structure

  • Universe is made up of Locations
  • Location contain interactive Agents/Robots

Processing Humans - a simple approach to AI

When a robot asks a question, the question is paired with pre-set anwsers: For example: "How are you?: [Great!]/[Awful]", or "Do you want to schedule an appointment?: [Yes]/[No]" processing-humans.png

Interactive Components and the USE command

A world needs to engage the user, a robot may ask "How are you?: [Great!]/[Awful]", or "Do you want to schedule an appointment?: [Yes]/[No]" (note that questions are coupled with pre-set answers to sidestep parsing)

A music player may print "Which song do you want to play? [Hey There]/[The Hork Song]" these are the fundamental OBJECTS in HyperWorld small stateful finite XML node driven state machines. Beyond that it is just Locations and Locations within Locations ad Infinitum.

Primary mode of interacting with State Machines is the use command. For example to log into the system the user will state:

use login machine

To tweet from within the system the user can:

use twitter send 'I hate this.'

Press

Developer Notes

(developer note: use Atom's markdown preview plus plugin to navigate links below)

Todo

  • Authentication
  • do not use shorthand <tag/> use the full markup.
  • research z-circle-ui
  • robotiq state machine components
  • Web Components feel fickle, need a debug tool.

State Machine Components (was known as Robot)

  • Here is the state machine front-end: Commands/Machine
  • State machine UI is driven by JSON Screen Printer
  • Decide what to do when a component Promise expires in JSON Screen Printer's Input and Select. Note: the try/catch is located in the Commands/Machine
  • FINISH: Select Component
  • Initialize Robots - Robots are the Primary way of Interacting with System
    • while the system is operational it should really be run by a subsystem that employs XML to create the State Machine Tree Structure.
  • upgrade the USE command
  • REVIEW: Input Component