51 lines
1.0 KiB
JavaScript
51 lines
1.0 KiB
JavaScript
module.exports = CreateClassOptimiser;
|
|
|
|
var BaseOptimiser = require("./base");
|
|
var util = require("../../../../util");
|
|
|
|
function CreateClassOptimiser() {
|
|
BaseOptimiser.apply(this, arguments);
|
|
}
|
|
|
|
util.inherits(CreateClassOptimiser, BaseOptimiser);
|
|
|
|
/**
|
|
* Get all function expressions.
|
|
*/
|
|
|
|
CreateClassOptimiser.prototype.getMethods = function () {
|
|
var props = this.node.properties;
|
|
|
|
for (var i = 0; i < props.length; i++) {
|
|
var prop = props[i];
|
|
|
|
// irrelevant
|
|
if (!t.isFunctionExpression(prop.value)) continue;
|
|
|
|
// deopt
|
|
if (prop.computed) continue;
|
|
|
|
this.methods[prop.key.name] = prop;
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Find a `propTypes` property.
|
|
*/
|
|
|
|
CreateClassOptimiser.prototype.getTypes = function () {
|
|
var props = this.node.properties;
|
|
|
|
for (var i = 0; i < props.length; i++) {
|
|
var prop = props[i];
|
|
var key = t.toComputedKey(prop, prop.key);
|
|
|
|
if (t.isLiteral(key, { value: "propTypes" }) && t.isObjectExpression(prop.value)) {
|
|
this.addPropTypes(prop.value);
|
|
return;
|
|
}
|
|
}
|
|
|
|
// not found
|
|
};
|