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
- Host: GitHub
- URL: https://github.com/supercharge/method-missing
- Owner: supercharge
- License: mit
- Created: 2020-07-31T08:58:53.000Z (almost 6 years ago)
- Default Branch: main
- Last Pushed: 2021-07-09T07:59:56.000Z (almost 5 years ago)
- Last Synced: 2025-02-10T23:30:16.529Z (over 1 year ago)
- Language: TypeScript
- Size: 14.6 KB
- Stars: 1
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
Method Missing
Handle missing methods on your classes, like PHP’s __call.
Installation ·
Docs ·
Usage
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)