@lskjs/server
Version:
LSK server.
85 lines (68 loc) • 7.01 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.hasMethod = hasMethod;
exports.getInfoResult = getInfoResult;
exports.getInfo = getInfo;
exports["default"] = getClassInfo;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var _uniq = _interopRequireDefault(require("lodash/uniq"));
var _map = _interopRequireDefault(require("lodash/map"));
function hasMethod(obj, name, type) {
var desc = Object.getOwnPropertyDescriptor(obj, name);
return !!desc && (0, _typeof2["default"])(desc.value) === type;
}
function getInfoResult(obj) {
var methods = [];
var fields = [];
Object.getOwnPropertyNames(obj).forEach(function (name) {
if (hasMethod(obj, name, 'function')) {
methods.push(name);
} else {
fields.push(name);
}
});
return {
methods: methods,
fields: fields
};
}
function getInfo(obj) {
// function getInfo(obj, stop = obj => typeof obj === 'function') {
var results = []; // && !stop(obj)
while (obj) {
var _getInfoResult = getInfoResult(obj),
staticMethods = _getInfoResult.methods,
staticFields = _getInfoResult.fields;
var result = {
obj: obj,
staticMethods: staticMethods,
staticFields: staticFields
};
if (obj.prototype) {
var _getInfoResult2 = getInfoResult(obj.prototype),
methods = _getInfoResult2.methods,
fields = _getInfoResult2.fields;
result.methods = methods;
result.fields = fields;
}
results.push(result);
obj = Object.getPrototypeOf(obj);
}
return results;
}
function getClassInfo(cls) {
var info = getInfo(cls);
var result = {};
info = info.reverse().slice(2);
['methods', 'fields', 'staticMethods', 'staticFields'].forEach(function (name) {
var _ref;
result[name] = (0, _uniq["default"])((_ref = []).concat.apply(_ref, (0, _toConsumableArray2["default"])((0, _map["default"])(info, name))));
});
return result;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oZWxwZXJzL2dldENsYXNzSW5mby5qcyJdLCJuYW1lcyI6WyJoYXNNZXRob2QiLCJvYmoiLCJuYW1lIiwidHlwZSIsImRlc2MiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ2YWx1ZSIsImdldEluZm9SZXN1bHQiLCJtZXRob2RzIiwiZmllbGRzIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImZvckVhY2giLCJwdXNoIiwiZ2V0SW5mbyIsInJlc3VsdHMiLCJzdGF0aWNNZXRob2RzIiwic3RhdGljRmllbGRzIiwicmVzdWx0IiwicHJvdG90eXBlIiwiZ2V0UHJvdG90eXBlT2YiLCJnZXRDbGFzc0luZm8iLCJjbHMiLCJpbmZvIiwicmV2ZXJzZSIsInNsaWNlIiwiY29uY2F0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRU8sU0FBU0EsU0FBVCxDQUFtQkMsR0FBbkIsRUFBd0JDLElBQXhCLEVBQThCQyxJQUE5QixFQUFvQztBQUN6QyxNQUFNQyxJQUFJLEdBQUdDLE1BQU0sQ0FBQ0Msd0JBQVAsQ0FBZ0NMLEdBQWhDLEVBQXFDQyxJQUFyQyxDQUFiO0FBQ0EsU0FBTyxDQUFDLENBQUNFLElBQUYsSUFBVSx5QkFBT0EsSUFBSSxDQUFDRyxLQUFaLE1BQXNCSixJQUF2QztBQUNEOztBQUVNLFNBQVNLLGFBQVQsQ0FBdUJQLEdBQXZCLEVBQTRCO0FBQ2pDLE1BQU1RLE9BQU8sR0FBRyxFQUFoQjtBQUNBLE1BQU1DLE1BQU0sR0FBRyxFQUFmO0FBQ0FMLEVBQUFBLE1BQU0sQ0FDSE0sbUJBREgsQ0FDdUJWLEdBRHZCLEVBRUdXLE9BRkgsQ0FFVyxVQUFDVixJQUFELEVBQVU7QUFDakIsUUFBSUYsU0FBUyxDQUFDQyxHQUFELEVBQU1DLElBQU4sRUFBWSxVQUFaLENBQWIsRUFBc0M7QUFDcENPLE1BQUFBLE9BQU8sQ0FBQ0ksSUFBUixDQUFhWCxJQUFiO0FBQ0QsS0FGRCxNQUVPO0FBQ0xRLE1BQUFBLE1BQU0sQ0FBQ0csSUFBUCxDQUFZWCxJQUFaO0FBQ0Q7QUFDRixHQVJIO0FBU0EsU0FBTztBQUFFTyxJQUFBQSxPQUFPLEVBQVBBLE9BQUY7QUFBV0MsSUFBQUEsTUFBTSxFQUFOQTtBQUFYLEdBQVA7QUFDRDs7QUFFTSxTQUFTSSxPQUFULENBQWlCYixHQUFqQixFQUFzQjtBQUM3QjtBQUNFLE1BQU1jLE9BQU8sR0FBRyxFQUFoQixDQUYyQixDQUczQjs7QUFDQSxTQUFPZCxHQUFQLEVBQVk7QUFBQSx5QkFDK0NPLGFBQWEsQ0FBQ1AsR0FBRCxDQUQ1RDtBQUFBLFFBQ09lLGFBRFAsa0JBQ0ZQLE9BREU7QUFBQSxRQUM4QlEsWUFEOUIsa0JBQ3NCUCxNQUR0Qjs7QUFFVixRQUFNUSxNQUFNLEdBQUc7QUFDYmpCLE1BQUFBLEdBQUcsRUFBSEEsR0FEYTtBQUViZSxNQUFBQSxhQUFhLEVBQWJBLGFBRmE7QUFHYkMsTUFBQUEsWUFBWSxFQUFaQTtBQUhhLEtBQWY7O0FBS0EsUUFBSWhCLEdBQUcsQ0FBQ2tCLFNBQVIsRUFBbUI7QUFBQSw0QkFDV1gsYUFBYSxDQUFDUCxHQUFHLENBQUNrQixTQUFMLENBRHhCO0FBQUEsVUFDVFYsT0FEUyxtQkFDVEEsT0FEUztBQUFBLFVBQ0FDLE1BREEsbUJBQ0FBLE1BREE7O0FBRWpCUSxNQUFBQSxNQUFNLENBQUNULE9BQVAsR0FBaUJBLE9BQWpCO0FBQ0FTLE1BQUFBLE1BQU0sQ0FBQ1IsTUFBUCxHQUFnQkEsTUFBaEI7QUFDRDs7QUFDREssSUFBQUEsT0FBTyxDQUFDRixJQUFSLENBQWFLLE1BQWI7QUFDQWpCLElBQUFBLEdBQUcsR0FBR0ksTUFBTSxDQUFDZSxjQUFQLENBQXNCbkIsR0FBdEIsQ0FBTjtBQUNEOztBQUNELFNBQU9jLE9BQVA7QUFDRDs7QUFFYyxTQUFTTSxZQUFULENBQXNCQyxHQUF0QixFQUEyQjtBQUN4QyxNQUFJQyxJQUFJLEdBQUdULE9BQU8sQ0FBQ1EsR0FBRCxDQUFsQjtBQUNBLE1BQU1KLE1BQU0sR0FBRyxFQUFmO0FBQ0FLLEVBQUFBLElBQUksR0FBR0EsSUFBSSxDQUFDQyxPQUFMLEdBQWVDLEtBQWYsQ0FBcUIsQ0FBckIsQ0FBUDtBQUNBLEdBQUMsU0FBRCxFQUFZLFFBQVosRUFBc0IsZUFBdEIsRUFBdUMsY0FBdkMsRUFBdURiLE9BQXZELENBQStELFVBQUNWLElBQUQsRUFBVTtBQUFBOztBQUN2RWdCLElBQUFBLE1BQU0sQ0FBQ2hCLElBQUQsQ0FBTixHQUFlLHNCQUFLLFlBQUd3QixNQUFILGlEQUFhLHFCQUFJSCxJQUFKLEVBQVVyQixJQUFWLENBQWIsRUFBTCxDQUFmO0FBQ0QsR0FGRDtBQUdBLFNBQU9nQixNQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdW5pcSBmcm9tICdsb2Rhc2gvdW5pcSc7XG5pbXBvcnQgbWFwIGZyb20gJ2xvZGFzaC9tYXAnO1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzTWV0aG9kKG9iaiwgbmFtZSwgdHlwZSkge1xuICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIG5hbWUpO1xuICByZXR1cm4gISFkZXNjICYmIHR5cGVvZiBkZXNjLnZhbHVlID09PSB0eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5mb1Jlc3VsdChvYmopIHtcbiAgY29uc3QgbWV0aG9kcyA9IFtdO1xuICBjb25zdCBmaWVsZHMgPSBbXTtcbiAgT2JqZWN0XG4gICAgLmdldE93blByb3BlcnR5TmFtZXMob2JqKVxuICAgIC5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICBpZiAoaGFzTWV0aG9kKG9iaiwgbmFtZSwgJ2Z1bmN0aW9uJykpIHtcbiAgICAgICAgbWV0aG9kcy5wdXNoKG5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmllbGRzLnB1c2gobmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIHJldHVybiB7IG1ldGhvZHMsIGZpZWxkcyB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5mbyhvYmopIHtcbi8vIGZ1bmN0aW9uIGdldEluZm8ob2JqLCBzdG9wID0gb2JqID0+IHR5cGVvZiBvYmogPT09ICdmdW5jdGlvbicpIHtcbiAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICAvLyAmJiAhc3RvcChvYmopXG4gIHdoaWxlIChvYmopIHtcbiAgICBjb25zdCB7IG1ldGhvZHM6IHN0YXRpY01ldGhvZHMsIGZpZWxkczogc3RhdGljRmllbGRzIH0gPSBnZXRJbmZvUmVzdWx0KG9iaik7XG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgb2JqLFxuICAgICAgc3RhdGljTWV0aG9kcyxcbiAgICAgIHN0YXRpY0ZpZWxkcyxcbiAgICB9O1xuICAgIGlmIChvYmoucHJvdG90eXBlKSB7XG4gICAgICBjb25zdCB7IG1ldGhvZHMsIGZpZWxkcyB9ID0gZ2V0SW5mb1Jlc3VsdChvYmoucHJvdG90eXBlKTtcbiAgICAgIHJlc3VsdC5tZXRob2RzID0gbWV0aG9kcztcbiAgICAgIHJlc3VsdC5maWVsZHMgPSBmaWVsZHM7XG4gICAgfVxuICAgIHJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgIG9iaiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopO1xuICB9XG4gIHJldHVybiByZXN1bHRzO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRDbGFzc0luZm8oY2xzKSB7XG4gIGxldCBpbmZvID0gZ2V0SW5mbyhjbHMpO1xuICBjb25zdCByZXN1bHQgPSB7fTtcbiAgaW5mbyA9IGluZm8ucmV2ZXJzZSgpLnNsaWNlKDIpO1xuICBbJ21ldGhvZHMnLCAnZmllbGRzJywgJ3N0YXRpY01ldGhvZHMnLCAnc3RhdGljRmllbGRzJ10uZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgIHJlc3VsdFtuYW1lXSA9IHVuaXEoW10uY29uY2F0KC4uLm1hcChpbmZvLCBuYW1lKSkpO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==
//# sourceMappingURL=getClassInfo.js.map