An open API service indexing awesome lists of open source software.

https://github.com/supercharge/method-missing

Handle missing methods on your classes, like PHP’s __call method
https://github.com/supercharge/method-missing

Last synced: over 1 year ago
JSON representation

Handle missing methods on your classes, like PHP’s __call method

Awesome Lists containing this project

README

          











Method Missing




Handle missing methods on your classes, like PHP’s __call.





Installation ·
Docs ·
Usage







Latest Version
Monthly downloads



Follow @marcuspoehls and @superchargejs for updates!


---

## Introduction
The `@supercharge/method-missing` package allows you to handle missing methods in your JavaScript classes. It calls the `__call(methodName, args)` method in your class when trying to invoke a missing method.

## Installation

```
npm i @supercharge/method-missing
```

## Docs
Find all the [details for `@supercharge/method-missing` in the extensive Supercharge docs](https://superchargejs.com/docs/pipeline).

## Usage
Using `@supercharge/method-missing` is pretty straightforward. The package exports a class that you must extend in your implemented class. Then, add a `__call(methodName, args)` method to your class. The `__call` method allows you to handle all calls for methods that are not existent in your class.

I guess an example clears things up:

```js
const MethodMissing = require('@supercharge/method-missing')

class QueryInterface extends MethodMissing {
/**
* Creates an instance wrapping the Sequelize `queryInterface` instance.
*
* @param {QueryInterface} queryInterface
*/
constructor (queryInterface) {
super()

this.queryInterface = queryInterface
}

/**
* Determine whether the given `column` already exists in the given `table`.
*
* @param {String} table
* @param {String} column
*
* @returns {Boolean}
*/
async hasColumn(tableName, columnName) {
const description = await this.queryInterface.describeTable(tableName)

return !!description[columnName]
}

/**
* Pass through all calls to the original query interface.
*
* @param {String} methodName
* @param {Array} args
*
* @returns {*}
*/
__call(methodName, args) {
return this.queryInterface[methodName](...args)
}
}
```

## Contributing
Do you miss a function? We very much appreciate your contribution! Please send in a pull request 😊

1. Create a fork
2. Create your feature branch: `git checkout -b my-feature`
3. Commit your changes: `git commit -am 'Add some feature'`
4. Push to the branch: `git push origin my-new-feature`
5. Submit a pull request 🚀

## License
MIT © [Supercharge](https://superchargejs.com)

---

> [superchargejs.com](https://superchargejs.com)  · 
> GitHub [@supercharge](https://github.com/supercharge)  · 
> Twitter [@superchargejs](https://twitter.com/superchargejs)