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

match3

v0.0.3

Published

Basic logic for implementing a match three game.

Readme

match3

An engine for driving a "match three" game, written in Javascript. Allows for plenty of customization, but defaults to mimic the match three system found in Gems of War. This app is meant to be used as a core engine for a match three game, meaning that it contains no business logic concerning turns, or stats. This module only handles the moving, matching, removing, replenishing, and shuffling of "orbs". Orbs are the units that populate the board, and must be matched in groups of three or more to be removed from the board.

Features

This list highlights a typical turn in a game of a match three style game. It also conveniently highlights the features of this module.

  1. Populates an initial board of orbs in a state that has no matches currently, but has at least one potential match.
  2. Orb values are customizable. They default to integers 0 through 7.
  3. Board sizes are customizable. They default to 8x8 in size.
  4. Boards support "swapping", which move one orb to another adjacent square (not diagonal) to attempt a match.
  5. Boards scan for matches after swap calls. Any locations on the board that have a consecutive 3+ run of the same orb in a row are "matched".
  6. Matched orbs are tallied, and removed. You are given an object informing you of what orbs were removed, and where, for animation purposes.
  7. Matched orbs are replaced from above with new orbs (gravity defaults to "down"). What type of orbs drop in is random by default, but can be configured.
  8. After new orbs drop in, more matches are searched for. Any matches found are returned to you for animation purposes.
  9. This cycle continues until there are no more matches available.
  10. If there are zero potential matches, the board is shuffled until there are no current board matches, but at least one potential match.
  11. Control of the board is returned to the consumer.

License

This application under the MIT License.