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 🙏

© 2024 – Pkg Stats / Ryan Hefner

@pmoo/oow

v1.11.0

Published

Extension methods that should exist in JS core by default

Downloads

13

Readme

OOW

An "Object-Oriented way" for JS (methods that should exist by default). The idea is to add more OO experience, especially suited for teaching OOP. Not intended for production usage.

Installation

npm install @pmoo/oow

(required Node version: 8.x or higher)

Extensions

To see all the available extensions, please have a look at the tests inside the test folder.

Collections

Array, String and Set are classes that have very few methods in common, even though they are all collections. For instance, Set has size and Array has length. So this library defines some common behavior to make sure we can have more polymorphism.

Most of the added message names are inspired by Smalltalk (isEmpty, includesAllOf, at) and Ruby (take, drop, compact).

Polymorphism achieved so far

Among many of the messages added to the collection protocols, these are the messages that some collections have by default but others don't:

  • add(obj) works for Array and Set (we added the Array version)
  • includes(obj) works for Array and Set (we added the Set version)
  • filter(condition) works for every collection (we added the String and Set versions)
  • reverse() works for Array and String (we added the String version)

Date

Working with Date is not so easy so there're also helper methods like monthNumber that returns a number from 1 to 12.

New Objects

Point

Point class represents an (x, y) pair. You can access its parts by sending x() and y() messages.

DayOfMonth

DayOfMonth represents a day in a month, not specific to a year, like "November 9th". The day() and monthNumber() messages can be used to access the information.