New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details → →
Socket
Book a DemoSign in
Socket

unmiss

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

unmiss

🔍 Ruby's method_missing implementation in modern javascript

latest
Source
npmnpm
Version
1.0.10
Version published
Weekly downloads
3.4K
-0.58%
Maintainers
1
Weekly downloads
 
Created
Source

Unmiss 🔍

687474703a2f2f692e6375626575706c6f61642e636f6d2f53495344714b2e706e67

Unmiss is a Ruby's method_missing implementation you can use in your javascript classes. Basically, it is a method that is called when no matching method is found. It gives you a way to intercept unanswerable messages and handle them gracefully. Learn more about method_missing here.

Build Status npm bundle size npm

Requirements

Unmiss uses ES6 Proxies to simulate method_missing, so it will run on node versions >= v6.4.0. It also supports most modern browsers.

Installation

npm install --save unmiss

Usage and Examples

There are multiple ways to use Unmiss: Using class inheritance, by calling a high order function, using decorators, or wrapping an existing instance. Whichever way you prefer, add to your class a methodMissing method to generate an awesome safety net method.

Using a high order function:

import { withMethodMissing } from 'unmiss'

class Example {
    methodMissing(name, ...args) {
        console.log(`Method ${name} was called with arguments: ${args.join(' ')}`);
    }
}

const instance = new withMethodMissing(Example);
instance.what('is', 'this');
> Method what was called with arguments: is this

Using a modern javascript decorator:

import { withMethodMissing } from 'unmiss'

@withMethodMissing
class Example {
    methodMissing(name, ...args) {
        console.log(`Method ${name} was called with arguments: ${args.join(' ')}`);
    }
}

const instance = new Example();
instance.what('is', 'this');
> Method what was called with arguments: is this

Using ES6 classical inheritance:

import { MethodMissingClass } from 'unmiss'

class Example extends MethodMissingClass {
    methodMissing(name, ...args) {
        console.log(`Method ${name} was called with arguments: ${args.join(' ')}`);
    }
}

const instance = new Example();
instance.what('is', 'this');
> Method what was called with arguments: is this

ALERT: If you choose to use the inheritance way, take into account that if you want to use a constructor in your class, you will have to call super() first.

Wrapping an existing instance of a class:

import { addMethodMissing } from 'unmiss'

class Example {
    methodMissing(name, ...args) {
        console.log(`Method ${name} was called with arguments: ${args.join(' ')}`);
    }
}

const instance = addMethodMissing(new Example());
instance.what('is', 'this');
> Method what was called with arguments: is this

Contributing

Feel free to submit any issues and PRs you want. To run the project first install its dependencies:

npm install

Then build it and test it:

npm run build && npm run test

FAQs

Package last updated on 11 Nov 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts