rxjs-tslint-rules
Version:
TSLint rules for RxJS
52 lines (51 loc) • 2.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var tsutils = require("tsutils");
var added_walker_1 = require("./added-walker");
var knowns_1 = require("./knowns");
var util_1 = require("./util");
var UsedWalker = (function (_super) {
tslib_1.__extends(UsedWalker, _super);
function UsedWalker() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.usedObservables = {};
_this.usedOperators = {};
_this.usedPrototypeMethods = {};
_this.usedStaticMethods = {};
return _this;
}
UsedWalker.prototype.visitCallExpression = function (node) {
var expression = node.expression;
if (tsutils.isPropertyAccessExpression(expression)) {
var name_1 = expression.name.getText();
var typeChecker = this.getTypeChecker();
var type = typeChecker.getTypeAtLocation(expression.expression);
if (util_1.isReferenceType(type)) {
if (knowns_1.knownOperators.hasOwnProperty(name_1) &&
util_1.couldBeType(type.target, "Observable")) {
var actual = knowns_1.knownOperators[name_1];
UsedWalker.add(this.usedOperators, actual, expression.name);
}
else if (knowns_1.knownPrototypeMethods.hasOwnProperty(name_1) &&
util_1.couldBeType(type.target, "Observable")) {
UsedWalker.add(this.usedPrototypeMethods, name_1, expression.name);
}
}
else {
if (knowns_1.knownObservables.hasOwnProperty(name_1) &&
util_1.couldBeType(type, "Observable")) {
var actual = knowns_1.knownObservables[name_1];
UsedWalker.add(this.usedObservables, actual, expression.name);
}
else if (knowns_1.knownStaticMethods.hasOwnProperty(name_1) &&
util_1.couldBeType(type, "Observable")) {
UsedWalker.add(this.usedStaticMethods, name_1, expression.name);
}
}
}
_super.prototype.visitCallExpression.call(this, node);
};
return UsedWalker;
}(added_walker_1.AddedWalker));
exports.UsedWalker = UsedWalker;