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

ws-console

v1.0.7

Published

Things may change or break along the way. Feed back is very welcome!

Readme

🚨THIS PROJECT IS A WORK IN PROGRESS🚨

Things may change or break along the way. Feed back is very welcome!

TO DO:

	ensure Console cant have its permissions changed
	add multiple database types, or callback like style
	account names character restrictions
	account names character limits
	account password character limits

Structure:

	WSConsole
		Server
			.start()
			.stop()
			.accounts // Most of the logic for users and tasks is contained within accounts, we may want to move that to their respective classes.
				.users
					.get(username) User
					.getAll() [User]
					.create() User
					.exists(username) Boolean
					.delete(username) Boolean
				.tasks
					.create(taskname) Task
					.delete(taskname) Boolean
					.get(taskname) Task
					.getAll() [Task]
					.exists(taskname) Boolean
					.list() Boolean

			User
				.name String
				.type String
				.permissions
					.add(permission)
					.getAll() [String]
					.has(permission) Boolean
					.remove(permission)
				.connections
					.add(connection)
					.disconnect()
					.getAll() [Connection]
					.send()
				.roles
					.add(role)
					.getAll()
					.has(role)
					.remove(role)

				.delete()
				.on(event, callback)
				.removeEventListener(event, callback)
				.send(data)
				.setPassword(password)


			Task
				.name
				.type
				.connections
					.add(connection)
					.disconnect()
					.getAll()
					.send(data)
				.delete()
				.on(event, callback)
				.removeEventListener(event, callback)
				.setPassword(password)

			Connection
				.authenticate(credentials)
				.diconnect()
				.on()
				.send(message)
				.trigger(event, data)

			Permissions
				help (globalize)
				logout (globalize)
				password (globalize)
				server.create
				server.delete
				server.list
				server.logout
				server.password
				user.create
				user.delete
				user.list
				user.logout
				user.password
				user.permission.add
				user.permission
				user.permission.list
				user.permission.remove

				console.[name]
				console.[name].command

		Task
			.connect()
			.disconnect()
			.log(data)

		Client
			.on(event, callback)
				connect
				disconnect
				taskConnect {
					Task
				}
				taskDisconnect {
					Task
				}

				taskData {
					Task,
					data
				}

			.connect()
			.disconnect()
			.Tasks
				.get(name) Task
				.getAll() [Task]

			Task
				.send(data)
				.on(event, callback)
					data {
						data
					}
					disconnect {}

Server Commands:

	help
	logout
	password <password>
	task connections <name>
	task connections logout <name>
	task create <name>
	task delete <name>
	task list
	task logout <name>
	task password <name> <password>
	user connections <name>
	user connections logout <name>
	user create <name>
	user delete <name>
	user list
	user logout <name>
	user password <name> <password>
	user permission add <name> <permission>
	user permission list <name>
	user permission remove <name> <permission>
	connections list [name]
	connections logout <connection>