Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bryanjhv/js-class-info
Get information about your ES5/ES6 class.
https://github.com/bryanjhv/js-class-info
Last synced: about 2 months ago
JSON representation
Get information about your ES5/ES6 class.
- Host: GitHub
- URL: https://github.com/bryanjhv/js-class-info
- Owner: bryanjhv
- License: mit
- Created: 2016-11-26T21:12:53.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2016-11-27T05:07:24.000Z (about 8 years ago)
- Last Synced: 2024-10-05T20:06:37.805Z (4 months ago)
- Language: JavaScript
- Size: 9.77 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Class Info
Get information about your ES5/ES6 class.
## Usage
`require()` the module and pass your class constructor, like so:
```js
let classInfo = require('class-info');class Shape {
constructor(x, y) {
this.x = x;
this.y = y;
}
getPosition() {
return {x: this.x, y: this.y};
}
static place({x, y}) {
return new Shape(x, y);
}
}let shapeInfo = classInfo(Shape);
console.log(shapeInfo); // -> { staticMethods: ['place'],
// instanceMethods: ['getPosition'],
// staticProperties: [],
// instanceProperties: [],
// parentClass: null }class Circle extends Shape {
constructor(x, y, r) {
super(x, y);
this.r = r;
}
getArea() {
return Math.PI * this.r * this.r;
}
}Circle.NONE = new Circle(0, 0, 0);
let circleInfo = classInfo(Circle);
console.log(circleInfo); // -> { staticMethods: [],
// instanceMethods: ['getArea'],
// staticProperties: ['NONE'],
// instanceProperties: [],
// parentClass: Shape }console.log(circleInfo.parentClass.name); // -> 'Shape'
```### Information returned
- `staticMethods` contains all the static method names, defined via ES6 `static`
keyword inside a class, or in both ES5/ES6 with `[class].[method]` syntax.
- `instanceMethods` contains all the instance method names, defined via ES6
`[method](...) { ... }` or via ES5`[class].prototype.[method] = ...`.
- `staticProperties` lists all the properties names assigned with the syntax for
both ES5/ES6 `[class].[property]`.
- `instanceProperties` **is not implemented**, but it'll be, I promise.
- `parentClass` contains the **raw** parent class (i.e. the constructor) which
this class was derived from. If no parents were found, it's `null`.### Warnings
- I'm not sure if `parentClass` is realiable, so use it with caution, only in
extreme cases where you need it.## License
This project is released under the [MIT license](LICENSE.txt).