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

lazy-extendable

v0.0.2

Published

Lazy and unobturisve JavaScript inheritance

Readme

LazyExtendable Build Status

Lazy and unobturisve JavaScript inheritance helper

Installation

Node

npm install lazy-extendable

Browser

Download and reference via script

<script src="lazy-extendable.js"></script>

Why another inheritance framework?

Proper naming

It's not a Klass, and not even Class. It's just JavaScript inheritance helper and it's called LazyExtendable. If you want to create new extendable type you call new LazyExtendable() or LazyExtendable.create(), not .extend. Want to extend your type? Use YourType.extend().

Unobtrusiveness

It doesn't add any own properties to prototype. Want add base or super property to you type? Now you can.

Lazyness

Have a huge type hierarchy and it's all built every time, even when unneeded? Forget it, now certain types will be built only if you use them.

Advanced overriding

It's not necessary to change base types, just override method you need and call any base method you want.

var Woman = new LazyExtendable(function () {
    return {
        say: function () {
            var buffer = [];

            buffer.push(this._find());
            buffer.push(this._greet());
            buffer.push(this._throwPlate());

            return buffer.join(' ');
        },
        _find: function () {
            return 'Here you are, jerk!';
        },
        _greet: function () {
            return 'Hello my darling.';
        },
        _throwPlate: function () {
            return 'Take this!';
        }
    };
});

var PoliteWoman = Woman.extend(function (base) {
    return {
        say: function () {
            return base._greet();
        }
    };
});

Naming again

Now you can name base instance as you want. Like Java? Call base methods via super. Like C#? Call via base. Like LOTR? Call it via gandalfTheGrey.

Advanced IDE autocompletion

You can specify exact type of base type with annotations your IDE understand and get better autocompletion behavior.