UNPKG

treem

Version:

High performance conversion of flat data (like SQL result rows) into nested objects.

71 lines (61 loc) 4.93 kB
"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==