treem
Version:
High performance conversion of flat data (like SQL result rows) into nested objects.
71 lines (61 loc) • 4.93 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck");
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require("babel-runtime/helpers/createClass");
var _createClass3 = _interopRequireDefault(_createClass2);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Header = function () {
function Header(name, alias, separator, detect) {
(0, _classCallCheck3.default)(this, Header);
this._name = name;
this._elements = alias.split(separator);
this._depth = this._elements.length - 1;
this._property = this._elements[this._depth];
var isKey = detect.key(this._property);
if (isKey.check) {
this._isKey = true;
this._property = isKey.name;
} else {
this._isKey = false;
}
this._nodes = [];
for (var i = 0; i < this._elements.length - 1; i++) {
var collection = detect.collection(this._elements[i]);
var _name = collection.check ? collection.name : this._elements[i];
var isCollection = collection.check;
this._nodes.push({ name: _name, isCollection: isCollection });
}
}
(0, _createClass3.default)(Header, [{
key: "isKey",
value: function isKey() {
return this._isKey;
}
}, {
key: "name",
get: function get() {
return this._name;
}
}, {
key: "depth",
get: function get() {
return this._depth;
}
}, {
key: "property",
get: function get() {
return this._property;
}
}, {
key: "nodes",
get: function get() {
return this._nodes;
}
}]);
return Header;
}();
exports.default = Header;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9oZWFkZXIuanMiXSwibmFtZXMiOlsiSGVhZGVyIiwibmFtZSIsImFsaWFzIiwic2VwYXJhdG9yIiwiZGV0ZWN0IiwiX25hbWUiLCJfZWxlbWVudHMiLCJzcGxpdCIsIl9kZXB0aCIsImxlbmd0aCIsIl9wcm9wZXJ0eSIsImlzS2V5Iiwia2V5IiwiY2hlY2siLCJfaXNLZXkiLCJfbm9kZXMiLCJpIiwiY29sbGVjdGlvbiIsImlzQ29sbGVjdGlvbiIsInB1c2giXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBcUJBLE07QUFFbkIsa0JBQVlDLElBQVosRUFBa0JDLEtBQWxCLEVBQXlCQyxTQUF6QixFQUFvQ0MsTUFBcEMsRUFBNEM7QUFBQTs7QUFDMUMsU0FBS0MsS0FBTCxHQUFhSixJQUFiO0FBQ0EsU0FBS0ssU0FBTCxHQUFpQkosTUFBTUssS0FBTixDQUFZSixTQUFaLENBQWpCO0FBQ0EsU0FBS0ssTUFBTCxHQUFjLEtBQUtGLFNBQUwsQ0FBZUcsTUFBZixHQUF3QixDQUF0QztBQUNBLFNBQUtDLFNBQUwsR0FBaUIsS0FBS0osU0FBTCxDQUFlLEtBQUtFLE1BQXBCLENBQWpCO0FBQ0EsUUFBTUcsUUFBUVAsT0FBT1EsR0FBUCxDQUFXLEtBQUtGLFNBQWhCLENBQWQ7QUFDQSxRQUFJQyxNQUFNRSxLQUFWLEVBQWlCO0FBQ2YsV0FBS0MsTUFBTCxHQUFjLElBQWQ7QUFDQSxXQUFLSixTQUFMLEdBQWlCQyxNQUFNVixJQUF2QjtBQUNELEtBSEQsTUFHTztBQUNMLFdBQUthLE1BQUwsR0FBYyxLQUFkO0FBQ0Q7QUFDRCxTQUFLQyxNQUFMLEdBQWMsRUFBZDtBQUNBLFNBQUssSUFBSUMsSUFBSSxDQUFiLEVBQWdCQSxJQUFJLEtBQUtWLFNBQUwsQ0FBZUcsTUFBZixHQUF3QixDQUE1QyxFQUErQ08sR0FBL0MsRUFBb0Q7QUFDbEQsVUFBTUMsYUFBYWIsT0FBT2EsVUFBUCxDQUFrQixLQUFLWCxTQUFMLENBQWVVLENBQWYsQ0FBbEIsQ0FBbkI7QUFDQSxVQUFNZixRQUFPZ0IsV0FBV0osS0FBWCxHQUFtQkksV0FBV2hCLElBQTlCLEdBQXFDLEtBQUtLLFNBQUwsQ0FBZVUsQ0FBZixDQUFsRDtBQUNBLFVBQU1FLGVBQWVELFdBQVdKLEtBQWhDO0FBQ0EsV0FBS0UsTUFBTCxDQUFZSSxJQUFaLENBQWlCLEVBQUNsQixXQUFELEVBQU9pQiwwQkFBUCxFQUFqQjtBQUNEO0FBQ0Y7Ozs7NEJBa0JPO0FBQ04sYUFBTyxLQUFLSixNQUFaO0FBQ0Q7Ozt3QkFsQlU7QUFDVCxhQUFPLEtBQUtULEtBQVo7QUFDRDs7O3dCQUVXO0FBQ1YsYUFBTyxLQUFLRyxNQUFaO0FBQ0Q7Ozt3QkFFYztBQUNiLGFBQU8sS0FBS0UsU0FBWjtBQUNEOzs7d0JBRVc7QUFDVixhQUFPLEtBQUtLLE1BQVo7QUFDRDs7Ozs7a0JBckNrQmYsTSIsImZpbGUiOiJoZWFkZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBjbGFzcyBIZWFkZXIge1xuXG4gIGNvbnN0cnVjdG9yKG5hbWUsIGFsaWFzLCBzZXBhcmF0b3IsIGRldGVjdCkge1xuICAgIHRoaXMuX25hbWUgPSBuYW1lO1xuICAgIHRoaXMuX2VsZW1lbnRzID0gYWxpYXMuc3BsaXQoc2VwYXJhdG9yKTtcbiAgICB0aGlzLl9kZXB0aCA9IHRoaXMuX2VsZW1lbnRzLmxlbmd0aCAtIDE7XG4gICAgdGhpcy5fcHJvcGVydHkgPSB0aGlzLl9lbGVtZW50c1t0aGlzLl9kZXB0aF07XG4gICAgY29uc3QgaXNLZXkgPSBkZXRlY3Qua2V5KHRoaXMuX3Byb3BlcnR5KTtcbiAgICBpZiAoaXNLZXkuY2hlY2spIHtcbiAgICAgIHRoaXMuX2lzS2V5ID0gdHJ1ZTtcbiAgICAgIHRoaXMuX3Byb3BlcnR5ID0gaXNLZXkubmFtZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5faXNLZXkgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5fbm9kZXMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2VsZW1lbnRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgY29uc3QgY29sbGVjdGlvbiA9IGRldGVjdC5jb2xsZWN0aW9uKHRoaXMuX2VsZW1lbnRzW2ldKTtcbiAgICAgIGNvbnN0IG5hbWUgPSBjb2xsZWN0aW9uLmNoZWNrID8gY29sbGVjdGlvbi5uYW1lIDogdGhpcy5fZWxlbWVudHNbaV07XG4gICAgICBjb25zdCBpc0NvbGxlY3Rpb24gPSBjb2xsZWN0aW9uLmNoZWNrO1xuICAgICAgdGhpcy5fbm9kZXMucHVzaCh7bmFtZSwgaXNDb2xsZWN0aW9ufSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XG4gIH1cblxuICBnZXQgZGVwdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlcHRoO1xuICB9XG5cbiAgZ2V0IHByb3BlcnR5KCkge1xuICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0eTtcbiAgfVxuXG4gIGdldCBub2RlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fbm9kZXM7XG4gIH1cblxuICBpc0tleSgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNLZXk7XG4gIH1cbn1cbiJdfQ==