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

method-missing

v1.2.4

Published

Method Missing class for es6+

Downloads

71,455

Readme

Method Missing Class

The method missing handler class is simple to use, simply extend it from your es6 class (or base class) and you are able to handle the missing methods.

It defaults to using a method on your class __call(name, args) however you can chage this behaviour.

Method missing also works with singletons and other objects, please see the examples below.

MethodMissing is used in the extends-classes project allowing for the extension of multiple classes.

Usage

Include the MethodMissing class:

const MethodMissing = require('method-missing');

Standard inheritance example:

class Simple extends MethodMissing {

  __call(name, args) {
    console.log(`The method '${name}' was called with:`, args);
  }

}

const simple = new Simple();
simple.nonExistent('Hello!');
// The method 'nonExistent' was called with: [ 'Hello!' ]

Static only example:

class Simple {

  static __call(name, args) {
    console.log(`The method '${name}' was called with:`, args);
  }

}

Simple = MethodMissing.static(Simple);

// Call the static method.
Simple.nonExistentStatic(1, 2, 3);
// The method 'nonExistentStatic' was called with: [ 1, 2, 3 ]

Complete example:

class Simple extends MethodMissing {

  iExist(str) {
    console.log(`I do exist ${str}.`);
  }

  __call(name, args) {
    console.log(`The method '${name}' was called with:`, args);
  }

  static __call(name, args) {
    console.log(`The method '${name}' was called with:`, args);
  }

}

Simple = MethodMissing.static(Simple);

const simple = new Simple();

simple.nonExistent('hello');
simple.iExist('world');
Simple.nonExistentStatic('hey');
// The method 'nonExistent' was called with: [ 'hello' ]
// I do exist world.
// The method 'nonExistentStatic' was called with: [ 'hey' ]

Used on an object:

const object = MethodMissing.static({
  one: function() {
    console.log('hey there');
  }
}, (name, args) => {
  console.log(`Sorry, method '${name}' doesn't exist.`, args);
});

object.one();
object.two();

// hey there
// Sorry, method 'two' doesn't exist. []

Check out the test folder for more!

Installation

$ npm install method-missing

Features

  • Capture missing methods in your class.
  • Simple, fast, light-weight with no external dependencies.
  • Easy to use in existing projects (particularly if you already extend es6 classes from a base class).
  • Written in ES6+ for node.js 6+.
  • Clean solution to method missing.

Options

Changing the __call method (if you must, just be careful with this).

class Test extends MethodMissing {

  constructor() {
    super('missing');
  }

  missing(name, args) {
    console.log(`The method '${name}' was called with:`, args);
  }

  static missing(name, args) {
    console.log(`The method '${name}' was called with:`, args);
  }

}

Test = MethodMissing.static(Test, 'missing');

const test = new Test();

test.nonExistent('hello');
test.nonExistentStatic('world');
// The method 'nonExistent' was called with: [ 'hello' ]
// The method 'nonExistentStatic' was called with: [ 'world' ]

Tests

From the package

$ npm test

License

MIT