Socket
Socket
Sign inDemoInstall

fluorite

Package Overview
Dependencies
12
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.0.2 to 1.0.3-a

.idea/typescript-compiler.xml

131

dist/model.js

@@ -19,2 +19,6 @@ 'use strict';

var _assign = require('babel-runtime/core-js/object/assign');
var _assign2 = _interopRequireDefault(_assign);
var _regenerator = require('babel-runtime/regenerator');

@@ -187,2 +191,7 @@

}
}, {
key: 'setRelatedData',
value: function setRelatedData(name, data) {
this.relatedModels[name] = data;
}

@@ -235,5 +244,6 @@ /*

}, {
key: 'remove',
key: 'refresh',
value: function () {
var _ref2 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee2() {
var attributes;
return _regenerator2.default.wrap(function _callee2$(_context2) {

@@ -243,4 +253,36 @@ while (1) {

case 0:
_context2.next = 2;
return this.createKnexQuery().from(this.constructor.table).where(this.constructor.idAttribute, this.id).first();
case 2:
attributes = _context2.sent;
this.attributes = attributes;
this.previousAttributes = (0, _assign2.default)({}, attributes);
case 5:
case 'end':
return _context2.stop();
}
}
}, _callee2, this);
}));
function refresh() {
return _ref2.apply(this, arguments);
}
return refresh;
}()
}, {
key: 'remove',
value: function () {
var _ref3 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee3() {
return _regenerator2.default.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
if (!this.isNew) {
_context2.next = 2;
_context3.next = 2;
break;

@@ -252,14 +294,15 @@ }

case 2:
return _context2.abrupt('return', this.createKnexQuery().where(this.constructor.idAttribute, this.id).delete());
_context3.next = 4;
return this.createKnexQuery().where(this.constructor.idAttribute, this.id).delete();
case 3:
case 4:
case 'end':
return _context2.stop();
return _context3.stop();
}
}
}, _callee2, this);
}, _callee3, this);
}));
function remove() {
return _ref2.apply(this, arguments);
return _ref3.apply(this, arguments);
}

@@ -272,13 +315,13 @@

value: function () {
var _ref3 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee3() {
var _ref4 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee4() {
var ids, lastId;
return _regenerator2.default.wrap(function _callee3$(_context3) {
return _regenerator2.default.wrap(function _callee4$(_context4) {
while (1) {
switch (_context3.prev = _context3.next) {
switch (_context4.prev = _context4.next) {
case 0:
_context3.next = 2;
_context4.next = 2;
return this.createKnexQuery().insert(this.attributesWithoutId, this.constructor.idAttribute);
case 2:
ids = _context3.sent;
ids = _context4.sent;
lastId = (0, _lodash.last)(ids);

@@ -288,14 +331,14 @@

this.previousAttributes = this.attributes;
return _context3.abrupt('return', lastId);
return _context4.abrupt('return', lastId);
case 7:
case 'end':
return _context3.stop();
return _context4.stop();
}
}
}, _callee3, this);
}, _callee4, this);
}));
function insert() {
return _ref3.apply(this, arguments);
return _ref4.apply(this, arguments);
}

@@ -308,7 +351,7 @@

value: function () {
var _ref4 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee4() {
var _ref5 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee5() {
var updatedAttributes;
return _regenerator2.default.wrap(function _callee4$(_context4) {
return _regenerator2.default.wrap(function _callee5$(_context5) {
while (1) {
switch (_context4.prev = _context4.next) {
switch (_context5.prev = _context5.next) {
case 0:

@@ -318,10 +361,10 @@ updatedAttributes = this.updatedAttributes;

if (!(0, _lodash.isEmpty)(updatedAttributes)) {
_context4.next = 3;
_context5.next = 3;
break;
}
return _context4.abrupt('return');
return _context5.abrupt('return');
case 3:
_context4.next = 5;
_context5.next = 5;
return this.createKnexQuery().update(updatedAttributes).where((0, _defineProperty3.default)({}, this.constructor.idAttribute, this.id));

@@ -334,10 +377,10 @@

case 'end':
return _context4.stop();
return _context5.stop();
}
}
}, _callee4, this);
}, _callee5, this);
}));
function update() {
return _ref4.apply(this, arguments);
return _ref5.apply(this, arguments);
}

@@ -348,6 +391,32 @@

}, {
key: 'setRelatedData',
value: function setRelatedData(name, data) {
this.relatedModels[name] = data;
}
key: 'load',
value: function () {
var _ref6 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee6(relation) {
var data;
return _regenerator2.default.wrap(function _callee6$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
case 0:
_context6.next = 2;
return this[relation]();
case 2:
data = _context6.sent;
this.setRelatedData(relation, data);
case 4:
case 'end':
return _context6.stop();
}
}
}, _callee6, this);
}));
function load(_x13) {
return _ref6.apply(this, arguments);
}
return load;
}()
}, {

@@ -401,4 +470,4 @@ key: 'id',

return IntegrityError;
}(_errors2.default.IntegrityError), _class.table = null, _class.idAttribute = 'id', _class.scopes = {}, _class.columns = [], _temp;
}(_errors2.default.IntegrityError), _class.table = null, _class.idAttribute = 'id', _class.scopes = {}, _temp;
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tb2RlbC5qcyJdLCJuYW1lcyI6WyJhdHRycyIsImlkIiwib2JqZWN0cyIsImZpcnN0IiwiaWRBdHRyaWJ1dGUiLCJmbHVvcml0ZSIsImtuZXgiLCJhdHRyaWJ1dGVzIiwicHJldmlvdXNBdHRyaWJ1dGVzIiwicmVsYXRlZE1vZGVscyIsImNvbnN0cnVjdG9yIiwidHJhbnNhY3Rpb24iLCJpc1RyYW5zYWN0aW5nIiwidHJhbnNhY3RpbmciLCJjdXJyZW50VHJhbnNhY3Rpb24iLCJmcm9tIiwidGFibGUiLCJuYW1lIiwidmFsdWUiLCJPYmplY3QiLCJyZWxhdGVkQ2xhc3MiLCJmb3JlaWduS2V5IiwidG9Mb3dlckNhc2UiLCJmb3JlaWduS2V5VGFyZ2V0IiwicGl2b3RUYWJsZU5hbWUiLCJqb2luIiwidGhpc0ZvcmVpZ25LZXkiLCJ0aGF0Rm9yZWlnbktleSIsInRoaXNGb3JlaWduS2V5VGFyZ2V0IiwidGhhdEZvcmVpZ25LZXlUYXJnZXQiLCJ2YWwiLCJrZXkiLCJBcnJheSIsImlzQXJyYXkiLCJtb2RlbE9yTW9kZWxzIiwibWFwIiwibSIsInRvSlNPTiIsInNldCIsInVwZGF0ZSIsImlzTmV3IiwiaW5zZXJ0IiwiTm90Rm91bmRFcnJvciIsImNyZWF0ZUtuZXhRdWVyeSIsIndoZXJlIiwiZGVsZXRlIiwiYXR0cmlidXRlc1dpdGhvdXRJZCIsImlkcyIsImxhc3RJZCIsInVwZGF0ZWRBdHRyaWJ1dGVzIiwiZGF0YSIsIkludGVncml0eUVycm9yIiwic2NvcGVzIiwiY29sdW1ucyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBc0JBOztBQUNBOztBQUNBOzs7O0FBQ0E7Ozs7QUF6QkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0JBMkJlO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUEsNkJBaUJDQSxLQWpCRCxFQWlCUTtBQUNuQixlQUFPLElBQUksSUFBSixDQUFTQSxLQUFULENBQVA7QUFD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TUcsRUFOSCxTQU9OQyxPQVBNLEdBT0ksRUFQSjtBQUFBLEMiLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE3IFJvbWFuIExha2h0YWR5clxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0IHsgcGlja0J5LCBpc05pbCwgbGFzdCwgaXNFbXB0eSwgc29ydEJ5LCBtYXBWYWx1ZXMsIHN0YXJ0c1dpdGggfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgTXVsdGlwbGVSb3dzUXVlcnkgfSBmcm9tICcuL3F1ZXJ5JztcbmltcG9ydCBlcnJvcnMgZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHsgQmVsb25nc1RvLCBCZWxvbmdzVG9NYW55LCBIYXNNYW55IH0gZnJvbSAnLi9yZWxhdGlvbnMnO1xuXG5leHBvcnQgZGVmYXVsdCBmbHVvcml0ZSA9PiBjbGFzcyBNb2RlbCB7XG4gIHN0YXRpYyBOb3RGb3VuZEVycm9yID0gY2xhc3MgTm90Rm91bmRFcnJvciBleHRlbmRzIGVycm9ycy5Ob3RGb3VuZEVycm9yIHsgfTtcbiAgc3RhdGljIEludGVncml0eUVycm9yID0gY2xhc3MgSW50ZWdyaXR5RXJyb3IgZXh0ZW5kcyBlcnJvcnMuSW50ZWdyaXR5RXJyb3IgeyB9O1xuXG4gIHN0YXRpYyB0YWJsZSA9IG51bGw7XG4gIHN0YXRpYyBpZEF0dHJpYnV0ZSA9ICdpZCc7XG4gIHN0YXRpYyBzY29wZXMgPSB7fTtcbiAgc3RhdGljIGNvbHVtbnMgPSBbXTtcblxuICBzdGF0aWMgZ2V0IGZsdW9yaXRlKCkge1xuICAgIHJldHVybiBmbHVvcml0ZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQga25leCgpIHtcbiAgICByZXR1cm4gdGhpcy5mbHVvcml0ZS5rbmV4O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZShhdHRycykge1xuICAgIHJldHVybiBuZXcgdGhpcyhhdHRycyk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IG9iamVjdHMoKSB7XG4gICAgcmV0dXJuIG5ldyBNdWx0aXBsZVJvd3NRdWVyeSh0aGlzKTtcbiAgfVxuXG4gIHN0YXRpYyBmaW5kKGlkKSB7XG4gICAgcmV0dXJuIHRoaXMub2JqZWN0cy5maXJzdCh7IFt0aGlzLmlkQXR0cmlidXRlXTogaWQgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihhdHRyaWJ1dGVzLCBwcmV2aW91c0F0dHJpYnV0ZXMgPSB7fSkge1xuICAgIHRoaXMuYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7XG4gICAgdGhpcy5wcmV2aW91c0F0dHJpYnV0ZXMgPSBwcmV2aW91c0F0dHJpYnV0ZXM7XG4gICAgdGhpcy5yZWxhdGVkTW9kZWxzID0ge307XG4gIH1cblxuICBnZXQgaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXR0cmlidXRlc1t0aGlzLmNvbnN0cnVjdG9yLmlkQXR0cmlidXRlXTtcbiAgfVxuXG4gIGdldCBhdHRyaWJ1dGVzV2l0aG91dElkKCkge1xuICAgIHJldHVybiBwaWNrQnkodGhpcy5hdHRyaWJ1dGVzLCAodmFsdWUsIGtleSkgPT4gKFxuICAgICAga2V5ICE9PSB0aGlzLmNvbnN0cnVjdG9yLmlkQXR0cmlidXRlXG4gICAgKSk7XG4gIH1cblxuICBnZXQgdXBkYXRlZEF0dHJpYnV0ZXMoKSB7XG4gICAgcmV0dXJuIHBpY2tCeSh0aGlzLmF0dHJpYnV0ZXNXaXRob3V0SWQsICh2YWx1ZSwga2V5KSA9PiAoXG4gICAgICB2YWx1ZSAhPT0gdGhpcy5wcmV2aW91c0F0dHJpYnV0ZXNba2V5XVxuICAgICkpO1xuICB9XG5cbiAgZ2V0IGlzTmV3KCkge1xuICAgIHJldHVybiBpc05pbCh0aGlzLmlkKTtcbiAgfVxuXG4gIGNyZWF0ZUtuZXhRdWVyeSgpIHtcbiAgICBjb25zdCBrbmV4ID0gdGhpcy5jb25zdHJ1Y3Rvci5rbmV4O1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdGhpcy5jb25zdHJ1Y3Rvci5mbHVvcml0ZS50cmFuc2FjdGlvbjtcblxuICAgIGlmICh0cmFuc2FjdGlvbi5pc1RyYW5zYWN0aW5nKCkpIHtcbiAgICAgIHJldHVybiBrbmV4LnRyYW5zYWN0aW5nKHRyYW5zYWN0aW9uLmN1cnJlbnRUcmFuc2FjdGlvbigpKVxuICAgICAgICAuZnJvbSh0aGlzLmNvbnN0cnVjdG9yLnRhYmxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5rbmV4LmZyb20odGhpcy5jb25zdHJ1Y3Rvci50YWJsZSk7XG4gIH1cblxuICBnZXQobmFtZSkge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbbmFtZV07XG4gIH1cblxuICByZWxhdGVkKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5yZWxhdGVkTW9kZWxzW25hbWVdO1xuICB9XG5cbiAgc2V0KG5hbWUsIHZhbHVlKSB7XG4gICAgaWYgKG5hbWUgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgIHRoaXMuYXR0cmlidXRlcyA9IHsgLi4udGhpcy5hdHRyaWJ1dGVzLCAuLi5uYW1lIH07XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYXR0cmlidXRlc1tuYW1lXSA9IHZhbHVlO1xuICB9XG5cbiAgaGFzTWFueShcbiAgICByZWxhdGVkQ2xhc3MsXG4gICAgZm9yZWlnbktleSA9IGAke3RoaXMuY29uc3RydWN0b3IubmFtZS50b0xvd2VyQ2FzZSgpfV9pZGAsXG4gICAgZm9yZWlnbktleVRhcmdldCA9IHRoaXMuY29uc3RydWN0b3IuaWRBdHRyaWJ1dGUsXG4gICkge1xuICAgIHJldHVybiBuZXcgSGFzTWFueSh0aGlzLCByZWxhdGVkQ2xhc3MsIGZvcmVpZ25LZXksIGZvcmVpZ25LZXlUYXJnZXQpO1xuICB9XG5cbiAgYmVsb25nc1RvKFxuICAgIHJlbGF0ZWRDbGFzcyxcbiAgICBmb3JlaWduS2V5ID0gYCR7cmVsYXRlZENsYXNzLm5hbWUudG9Mb3dlckNhc2UoKX1faWRgLFxuICAgIGZvcmVpZ25LZXlUYXJnZXQgPSByZWxhdGVkQ2xhc3MuaWRBdHRyaWJ1dGUsXG4gICkge1xuICAgIHJldHVybiBuZXcgQmVsb25nc1RvKHRoaXMsIHJlbGF0ZWRDbGFzcywgZm9yZWlnbktleSwgZm9yZWlnbktleVRhcmdldCk7XG4gIH1cblxuICBiZWxvbmdzVG9NYW55KFxuICAgIHJlbGF0ZWRDbGFzcyxcbiAgICBwaXZvdFRhYmxlTmFtZSA9IHNvcnRCeShbdGhpcy5jb25zdHJ1Y3Rvci50YWJsZSwgcmVsYXRlZENsYXNzLnRhYmxlXSkuam9pbignXycpLFxuICAgIHRoaXNGb3JlaWduS2V5ID0gYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lLnRvTG93ZXJDYXNlKCl9X2lkYCxcbiAgICB0aGF0Rm9yZWlnbktleSA9IGAke3JlbGF0ZWRDbGFzcy5uYW1lLnRvTG93ZXJDYXNlKCl9X2lkYCxcbiAgICB0aGlzRm9yZWlnbktleVRhcmdldCA9IHRoaXMuY29uc3RydWN0b3IuaWRBdHRyaWJ1dGUsXG4gICAgdGhhdEZvcmVpZ25LZXlUYXJnZXQgPSByZWxhdGVkQ2xhc3MuaWRBdHRyaWJ1dGUsXG4gICkge1xuICAgIHJldHVybiBuZXcgQmVsb25nc1RvTWFueShcbiAgICAgIHRoaXMsXG4gICAgICByZWxhdGVkQ2xhc3MsXG4gICAgICBwaXZvdFRhYmxlTmFtZSxcbiAgICAgIHRoaXNGb3JlaWduS2V5LFxuICAgICAgdGhhdEZvcmVpZ25LZXksXG4gICAgICB0aGlzRm9yZWlnbktleVRhcmdldCxcbiAgICAgIHRoYXRGb3JlaWduS2V5VGFyZ2V0LFxuICAgICk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnBpY2tCeShcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVzLFxuICAgICAgICAodmFsLCBrZXkpID0+ICFzdGFydHNXaXRoKGtleSwgJ19fJyksXG4gICAgICApLFxuICAgICAgLi4ubWFwVmFsdWVzKFxuICAgICAgICB0aGlzLnJlbGF0ZWRNb2RlbHMsXG4gICAgICAgIG1vZGVsT3JNb2RlbHMgPT4gKFxuICAgICAgICAgIEFycmF5LmlzQXJyYXkobW9kZWxPck1vZGVscylcbiAgICAgICAgICAgID8gbW9kZWxPck1vZGVscy5tYXAobSA9PiBtLnRvSlNPTigpKVxuICAgICAgICAgICAgOiBtb2RlbE9yTW9kZWxzLnRvSlNPTigpXG4gICAgICAgICksXG4gICAgICApLFxuICAgIH07XG4gIH1cblxuICAvKlxuICAgKiBNZXRob2RzIHRoYXQgZXhlY3V0ZXMgU1FMIHN0YXRlbWVudHNcbiAgICovXG5cbiAgYXN5bmMgc2F2ZShuYW1lLCB2YWx1ZSkge1xuICAgIGlmICghaXNFbXB0eShuYW1lKSkge1xuICAgICAgdGhpcy5zZXQobmFtZSwgdmFsdWUpO1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNOZXcpIHtcbiAgICAgIHJldHVybiB0aGlzLmluc2VydCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnVwZGF0ZSgpO1xuICB9XG5cbiAgYXN5bmMgcmVtb3ZlKCkge1xuICAgIGlmICh0aGlzLmlzTmV3KSB7XG4gICAgICB0aHJvdyBuZXcgdGhpcy5jb25zdHJ1Y3Rvci5Ob3RGb3VuZEVycm9yKCdDYW5cXCd0IHJlbW92ZSBuZXcgZW50aXR5Jyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlS25leFF1ZXJ5KClcbiAgICAgIC53aGVyZSh0aGlzLmNvbnN0cnVjdG9yLmlkQXR0cmlidXRlLCB0aGlzLmlkKVxuICAgICAgLmRlbGV0ZSgpO1xuICB9XG5cbiAgYXN5bmMgaW5zZXJ0KCkge1xuICAgIGNvbnN0IGlkcyA9IGF3YWl0IHRoaXMuY3JlYXRlS25leFF1ZXJ5KCkuaW5zZXJ0KFxuICAgICAgdGhpcy5hdHRyaWJ1dGVzV2l0aG91dElkLFxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvci5pZEF0dHJpYnV0ZSxcbiAgICApO1xuICAgIGNvbnN0IGxhc3RJZCA9IGxhc3QoaWRzKTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbdGhpcy5jb25zdHJ1Y3Rvci5pZEF0dHJpYnV0ZV0gPSBsYXN0SWQ7XG4gICAgdGhpcy5wcmV2aW91c0F0dHJpYnV0ZXMgPSB0aGlzLmF0dHJpYnV0ZXM7XG4gICAgcmV0dXJuIGxhc3RJZDtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZSgpIHtcbiAgICBjb25zdCB1cGRhdGVkQXR0cmlidXRlcyA9IHRoaXMudXBkYXRlZEF0dHJpYnV0ZXM7XG4gICAgaWYgKGlzRW1wdHkodXBkYXRlZEF0dHJpYnV0ZXMpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuY3JlYXRlS25leFF1ZXJ5KClcbiAgICAgIC51cGRhdGUodXBkYXRlZEF0dHJpYnV0ZXMpXG4gICAgICAud2hlcmUoeyBbdGhpcy5jb25zdHJ1Y3Rvci5pZEF0dHJpYnV0ZV06IHRoaXMuaWQgfSk7XG4gICAgdGhpcy5wcmV2aW91c0F0dHJpYnV0ZXMgPSB0aGlzLmF0dHJpYnV0ZXM7XG4gIH1cblxuICBzZXRSZWxhdGVkRGF0YShuYW1lLCBkYXRhKSB7XG4gICAgdGhpcy5yZWxhdGVkTW9kZWxzW25hbWVdID0gZGF0YTtcbiAgfVxufTtcbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tb2RlbC5qcyJdLCJuYW1lcyI6WyJhdHRycyIsImlkIiwib2JqZWN0cyIsImZpcnN0IiwiaWRBdHRyaWJ1dGUiLCJmbHVvcml0ZSIsImtuZXgiLCJhdHRyaWJ1dGVzIiwicHJldmlvdXNBdHRyaWJ1dGVzIiwicmVsYXRlZE1vZGVscyIsImNvbnN0cnVjdG9yIiwidHJhbnNhY3Rpb24iLCJpc1RyYW5zYWN0aW5nIiwidHJhbnNhY3RpbmciLCJjdXJyZW50VHJhbnNhY3Rpb24iLCJmcm9tIiwidGFibGUiLCJuYW1lIiwidmFsdWUiLCJPYmplY3QiLCJyZWxhdGVkQ2xhc3MiLCJmb3JlaWduS2V5IiwidG9Mb3dlckNhc2UiLCJmb3JlaWduS2V5VGFyZ2V0IiwicGl2b3RUYWJsZU5hbWUiLCJqb2luIiwidGhpc0ZvcmVpZ25LZXkiLCJ0aGF0Rm9yZWlnbktleSIsInRoaXNGb3JlaWduS2V5VGFyZ2V0IiwidGhhdEZvcmVpZ25LZXlUYXJnZXQiLCJ2YWwiLCJrZXkiLCJBcnJheSIsImlzQXJyYXkiLCJtb2RlbE9yTW9kZWxzIiwibWFwIiwibSIsInRvSlNPTiIsImRhdGEiLCJzZXQiLCJ1cGRhdGUiLCJpc05ldyIsImluc2VydCIsImNyZWF0ZUtuZXhRdWVyeSIsIndoZXJlIiwiTm90Rm91bmRFcnJvciIsImRlbGV0ZSIsImF0dHJpYnV0ZXNXaXRob3V0SWQiLCJpZHMiLCJsYXN0SWQiLCJ1cGRhdGVkQXR0cmlidXRlcyIsInJlbGF0aW9uIiwic2V0UmVsYXRlZERhdGEiLCJJbnRlZ3JpdHlFcnJvciIsInNjb3BlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCQTs7QUFDQTs7QUFDQTs7OztBQUNBOzs7O0FBekJBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCQTJCZTtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBLDZCQWdCQ0EsS0FoQkQsRUFnQlE7QUFDbkIsZUFBTyxJQUFJLElB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QUwsQ0FBZ0IsS0FBS0csV0FBTCxDQUFpQk4sV0FBakMsQ0FBUDtBQUNEO0FBcENZO0FBQUE7QUFBQSwwQkFzQ2E7QUFBQTs7QUFDeEIsZUFBTyxvQkFBTyxLQUFLRyxVQUFaLEVBQXdCLFVBQUNXLEtBQUQsRUFBUWEsR0FBUjtBQUFBLGlCQUM3QkEsUUFBUSxNQUFLckIsV0FBTCxDQUFpQk4sV0FESTtBQUFBLFNBQXhCLENBQVA7QUFHRDtBQTFDWTtBQUFBO0FBQUEsMEJBNENXO0FBQUE7O0FBQ3RCLGVBQU8sb0JBQU8sS0FBSzJDLG1CQUFaLEVBQWlDLFVBQUM3QixLQUFELEVBQVFhLEdBQVI7QUFBQSxpQkFDdENiLFVBQVUsT0FBS1Ysa0JBQUwsQ0FBd0J1QixHQUF4QixDQUQ0QjtBQUFBLFNBQWpDLENBQVA7QUFHRDtBQWhEWTtBQUFBO0FBQUEsMEJBa0REO0FBQ1YsZUFBTyxtQkFBTSxLQUFLOUIsRUFBWCxDQUFQO0FBQ0Q7QUFwRFk7QUFBQTtBQUFBLGNBQ040QyxhQURNO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQSxJQUNzQyxpQkFBT0EsYUFEN0MsVUFFTlEsY0FGTTtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUEsSUFFd0MsaUJBQU9BLGNBRi9DLFVBSU5yQyxLQUpNLEdBSUUsSUFKRixTQUtOWixXQUxNLEdBS1EsSUFMUixTQU1Oa0QsTUFOTSxHQU1HLEVBTkg7QUFBQSxDIiwiZmlsZSI6Im1vZGVsLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNyBSb21hbiBMYWtodGFkeXJcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IHBpY2tCeSwgaXNOaWwsIGxhc3QsIGlzRW1wdHksIHNvcnRCeSwgbWFwVmFsdWVzLCBzdGFydHNXaXRoIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IE11bHRpcGxlUm93c1F1ZXJ5IH0gZnJvbSAnLi9xdWVyeSc7XG5pbXBvcnQgZXJyb3JzIGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7IEJlbG9uZ3NUbywgQmVsb25nc1RvTWFueSwgSGFzTWFueSB9IGZyb20gJy4vcmVsYXRpb25zJztcblxuZXhwb3J0IGRlZmF1bHQgZmx1b3JpdGUgPT4gY2xhc3MgTW9kZWwge1xuICBzdGF0aWMgTm90Rm91bmRFcnJvciA9IGNsYXNzIE5vdEZvdW5kRXJyb3IgZXh0ZW5kcyBlcnJvcnMuTm90Rm91bmRFcnJvciB7IH07XG4gIHN0YXRpYyBJbnRlZ3JpdHlFcnJvciA9IGNsYXNzIEludGVncml0eUVycm9yIGV4dGVuZHMgZXJyb3JzLkludGVncml0eUVycm9yIHsgfTtcblxuICBzdGF0aWMgdGFibGUgPSBudWxsO1xuICBzdGF0aWMgaWRBdHRyaWJ1dGUgPSAnaWQnO1xuICBzdGF0aWMgc2NvcGVzID0ge307XG5cbiAgc3RhdGljIGdldCBmbHVvcml0ZSgpIHtcbiAgICByZXR1cm4gZmx1b3JpdGU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGtuZXgoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmx1b3JpdGUua25leDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUoYXR0cnMpIHtcbiAgICByZXR1cm4gbmV3IHRoaXMoYXR0cnMpO1xuICB9XG5cbiAgc3RhdGljIGdldCBvYmplY3RzKCkge1xuICAgIHJldHVybiBuZXcgTXVsdGlwbGVSb3dzUXVlcnkodGhpcyk7XG4gIH1cblxuICBzdGF0aWMgZmluZChpZCkge1xuICAgIHJldHVybiB0aGlzLm9iamVjdHMuZmlyc3QoeyBbdGhpcy5pZEF0dHJpYnV0ZV06IGlkIH0pO1xuICB9XG5cbiAgY29uc3RydWN0b3IoYXR0cmlidXRlcywgcHJldmlvdXNBdHRyaWJ1dGVzID0ge30pIHtcbiAgICB0aGlzLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xuICAgIHRoaXMucHJldmlvdXNBdHRyaWJ1dGVzID0gcHJldmlvdXNBdHRyaWJ1dGVzO1xuICAgIHRoaXMucmVsYXRlZE1vZGVscyA9IHt9O1xuICB9XG5cbiAgZ2V0IGlkKCkge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbdGhpcy5jb25zdHJ1Y3Rvci5pZEF0dHJpYnV0ZV07XG4gIH1cblxuICBnZXQgYXR0cmlidXRlc1dpdGhvdXRJZCgpIHtcbiAgICByZXR1cm4gcGlja0J5KHRoaXMuYXR0cmlidXRlcywgKHZhbHVlLCBrZXkpID0+IChcbiAgICAgIGtleSAhPT0gdGhpcy5jb25zdHJ1Y3Rvci5pZEF0dHJpYnV0ZVxuICAgICkpO1xuICB9XG5cbiAgZ2V0IHVwZGF0ZWRBdHRyaWJ1dGVzKCkge1xuICAgIHJldHVybiBwaWNrQnkodGhpcy5hdHRyaWJ1dGVzV2l0aG91dElkLCAodmFsdWUsIGtleSkgPT4gKFxuICAgICAgdmFsdWUgIT09IHRoaXMucHJldmlvdXNBdHRyaWJ1dGVzW2tleV1cbiAgICApKTtcbiAgfVxuXG4gIGdldCBpc05ldygpIHtcbiAgICByZXR1cm4gaXNOaWwodGhpcy5pZCk7XG4gIH1cblxuICBjcmVhdGVLbmV4UXVlcnkoKSB7XG4gICAgY29uc3Qga25leCA9IHRoaXMuY29uc3RydWN0b3Iua25leDtcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHRoaXMuY29uc3RydWN0b3IuZmx1b3JpdGUudHJhbnNhY3Rpb247XG5cbiAgICBpZiAodHJhbnNhY3Rpb24uaXNUcmFuc2FjdGluZygpKSB7XG4gICAgICByZXR1cm4ga25leC50cmFuc2FjdGluZyh0cmFuc2FjdGlvbi5jdXJyZW50VHJhbnNhY3Rpb24oKSlcbiAgICAgICAgLmZyb20odGhpcy5jb25zdHJ1Y3Rvci50YWJsZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY29uc3RydWN0b3Iua25leC5mcm9tKHRoaXMuY29uc3RydWN0b3IudGFibGUpO1xuICB9XG5cbiAgZ2V0KG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5hdHRyaWJ1dGVzW25hbWVdO1xuICB9XG5cbiAgcmVsYXRlZChuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMucmVsYXRlZE1vZGVsc1tuYW1lXTtcbiAgfVxuXG4gIHNldChuYW1lLCB2YWx1ZSkge1xuICAgIGlmIChuYW1lIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICB0aGlzLmF0dHJpYnV0ZXMgPSB7IC4uLnRoaXMuYXR0cmlidXRlcywgLi4ubmFtZSB9O1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmF0dHJpYnV0ZXNbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuXG4gIGhhc01hbnkoXG4gICAgcmVsYXRlZENsYXNzLFxuICAgIGZvcmVpZ25LZXkgPSBgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWUudG9Mb3dlckNhc2UoKX1faWRgLFxuICAgIGZvcmVpZ25LZXlUYXJnZXQgPSB0aGlzLmNvbnN0cnVjdG9yLmlkQXR0cmlidXRlLFxuICApIHtcbiAgICByZXR1cm4gbmV3IEhhc01hbnkodGhpcywgcmVsYXRlZENsYXNzLCBmb3JlaWduS2V5LCBmb3JlaWduS2V5VGFyZ2V0KTtcbiAgfVxuXG4gIGJlbG9uZ3NUbyhcbiAgICByZWxhdGVkQ2xhc3MsXG4gICAgZm9yZWlnbktleSA9IGAke3JlbGF0ZWRDbGFzcy5uYW1lLnRvTG93ZXJDYXNlKCl9X2lkYCxcbiAgICBmb3JlaWduS2V5VGFyZ2V0ID0gcmVsYXRlZENsYXNzLmlkQXR0cmlidXRlLFxuICApIHtcbiAgICByZXR1cm4gbmV3IEJlbG9uZ3NUbyh0aGlzLCByZWxhdGVkQ2xhc3MsIGZvcmVpZ25LZXksIGZvcmVpZ25LZXlUYXJnZXQpO1xuICB9XG5cbiAgYmVsb25nc1RvTWFueShcbiAgICByZWxhdGVkQ2xhc3MsXG4gICAgcGl2b3RUYWJsZU5hbWUgPSBzb3J0QnkoW3RoaXMuY29uc3RydWN0b3IudGFibGUsIHJlbGF0ZWRDbGFzcy50YWJsZV0pLmpvaW4oJ18nKSxcbiAgICB0aGlzRm9yZWlnbktleSA9IGAke3RoaXMuY29uc3RydWN0b3IubmFtZS50b0xvd2VyQ2FzZSgpfV9pZGAsXG4gICAgdGhhdEZvcmVpZ25LZXkgPSBgJHtyZWxhdGVkQ2xhc3MubmFtZS50b0xvd2VyQ2FzZSgpfV9pZGAsXG4gICAgdGhpc0ZvcmVpZ25LZXlUYXJnZXQgPSB0aGlzLmNvbnN0cnVjdG9yLmlkQXR0cmlidXRlLFxuICAgIHRoYXRGb3JlaWduS2V5VGFyZ2V0ID0gcmVsYXRlZENsYXNzLmlkQXR0cmlidXRlLFxuICApIHtcbiAgICByZXR1cm4gbmV3IEJlbG9uZ3NUb01hbnkoXG4gICAgICB0aGlzLFxuICAgICAgcmVsYXRlZENsYXNzLFxuICAgICAgcGl2b3RUYWJsZU5hbWUsXG4gICAgICB0aGlzRm9yZWlnbktleSxcbiAgICAgIHRoYXRGb3JlaWduS2V5LFxuICAgICAgdGhpc0ZvcmVpZ25LZXlUYXJnZXQsXG4gICAgICB0aGF0Rm9yZWlnbktleVRhcmdldCxcbiAgICApO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5waWNrQnkoXG4gICAgICAgIHRoaXMuYXR0cmlidXRlcyxcbiAgICAgICAgKHZhbCwga2V5KSA9PiAhc3RhcnRzV2l0aChrZXksICdfXycpLFxuICAgICAgKSxcbiAgICAgIC4uLm1hcFZhbHVlcyhcbiAgICAgICAgdGhpcy5yZWxhdGVkTW9kZWxzLFxuICAgICAgICBtb2RlbE9yTW9kZWxzID0+IChcbiAgICAgICAgICBBcnJheS5pc0FycmF5KG1vZGVsT3JNb2RlbHMpXG4gICAgICAgICAgICA/IG1vZGVsT3JNb2RlbHMubWFwKG0gPT4gbS50b0pTT04oKSlcbiAgICAgICAgICAgIDogbW9kZWxPck1vZGVscy50b0pTT04oKVxuICAgICAgICApLFxuICAgICAgKSxcbiAgICB9O1xuICB9XG5cbiAgc2V0UmVsYXRlZERhdGEobmFtZSwgZGF0YSkge1xuICAgIHRoaXMucmVsYXRlZE1vZGVsc1tuYW1lXSA9IGRhdGE7XG4gIH1cblxuICAvKlxuICAgKiBNZXRob2RzIHRoYXQgZXhlY3V0ZXMgU1FMIHN0YXRlbWVudHNcbiAgICovXG5cbiAgYXN5bmMgc2F2ZShuYW1lLCB2YWx1ZSkge1xuICAgIGlmICghaXNFbXB0eShuYW1lKSkge1xuICAgICAgdGhpcy5zZXQobmFtZSwgdmFsdWUpO1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNOZXcpIHtcbiAgICAgIHJldHVybiB0aGlzLmluc2VydCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnVwZGF0ZSgpO1xuICB9XG5cbiAgYXN5bmMgcmVmcmVzaCgpIHtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gYXdhaXQgdGhpcy5jcmVhdGVLbmV4UXVlcnkoKVxuICAgICAgLmZyb20odGhpcy5jb25zdHJ1Y3Rvci50YWJsZSlcbiAgICAgIC53aGVyZSh0aGlzLmNvbnN0cnVjdG9yLmlkQXR0cmlidXRlLCB0aGlzLmlkKVxuICAgICAgLmZpcnN0KCk7XG5cbiAgICB0aGlzLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xuICAgIHRoaXMucHJldmlvdXNBdHRyaWJ1dGVzID0gT2JqZWN0LmFzc2lnbih7fSwgYXR0cmlidXRlcyk7XG4gIH1cblxuICBhc3luYyByZW1vdmUoKSB7XG4gICAgaWYgKHRoaXMuaXNOZXcpIHtcbiAgICAgIHRocm93IG5ldyB0aGlzLmNvbnN0cnVjdG9yLk5vdEZvdW5kRXJyb3IoJ0NhblxcJ3QgcmVtb3ZlIG5ldyBlbnRpdHknKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLmNyZWF0ZUtuZXhRdWVyeSgpXG4gICAgICAud2hlcmUodGhpcy5jb25zdHJ1Y3Rvci5pZEF0dHJpYnV0ZSwgdGhpcy5pZClcbiAgICAgIC5kZWxldGUoKTtcbiAgfVxuXG4gIGFzeW5jIGluc2VydCgpIHtcbiAgICBjb25zdCBpZHMgPSBhd2FpdCB0aGlzLmNyZWF0ZUtuZXhRdWVyeSgpLmluc2VydChcbiAgICAgIHRoaXMuYXR0cmlidXRlc1dpdGhvdXRJZCxcbiAgICAgIHRoaXMuY29uc3RydWN0b3IuaWRBdHRyaWJ1dGUsXG4gICAgKTtcbiAgICBjb25zdCBsYXN0SWQgPSBsYXN0KGlkcyk7XG4gICAgdGhpcy5hdHRyaWJ1dGVzW3RoaXMuY29uc3RydWN0b3IuaWRBdHRyaWJ1dGVdID0gbGFzdElkO1xuICAgIHRoaXMucHJldmlvdXNBdHRyaWJ1dGVzID0gdGhpcy5hdHRyaWJ1dGVzO1xuICAgIHJldHVybiBsYXN0SWQ7XG4gIH1cblxuICBhc3luYyB1cGRhdGUoKSB7XG4gICAgY29uc3QgdXBkYXRlZEF0dHJpYnV0ZXMgPSB0aGlzLnVwZGF0ZWRBdHRyaWJ1dGVzO1xuICAgIGlmIChpc0VtcHR5KHVwZGF0ZWRBdHRyaWJ1dGVzKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLmNyZWF0ZUtuZXhRdWVyeSgpXG4gICAgICAudXBkYXRlKHVwZGF0ZWRBdHRyaWJ1dGVzKVxuICAgICAgLndoZXJlKHsgW3RoaXMuY29uc3RydWN0b3IuaWRBdHRyaWJ1dGVdOiB0aGlzLmlkIH0pO1xuICAgIHRoaXMucHJldmlvdXNBdHRyaWJ1dGVzID0gdGhpcy5hdHRyaWJ1dGVzO1xuICB9XG5cbiAgYXN5bmMgbG9hZChyZWxhdGlvbikge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzW3JlbGF0aW9uXSgpO1xuICAgIHRoaXMuc2V0UmVsYXRlZERhdGEocmVsYXRpb24sIGRhdGEpO1xuICB9XG59O1xuIl19

@@ -234,2 +234,9 @@ 'use strict';

}, {
key: 'orderBy',
value: function orderBy(column, direction) {
return this.query(function (q) {
return q.orderBy(column, direction);
});
}
}, {
key: 'create',

@@ -454,2 +461,26 @@ value: function () {

}()
}, {
key: 'catch',
value: function () {
var _ref8 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee8(reject) {
return _regenerator2.default.wrap(function _callee8$(_context8) {
while (1) {
switch (_context8.prev = _context8.next) {
case 0:
return _context8.abrupt('return', this.then(_lodash.identity, reject));
case 1:
case 'end':
return _context8.stop();
}
}
}, _callee8, this);
}));
function _catch(_x8) {
return _ref8.apply(this, arguments);
}
return _catch;
}()
}]);

@@ -470,21 +501,21 @@ return BaseQuery;

value: function () {
var _ref8 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee8() {
var _ref9 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee9() {
var query, rowData;
return _regenerator2.default.wrap(function _callee8$(_context8) {
return _regenerator2.default.wrap(function _callee9$(_context9) {
while (1) {
switch (_context8.prev = _context8.next) {
switch (_context9.prev = _context9.next) {
case 0:
query = this.prepareSelectQuery();
_context8.next = 3;
_context9.next = 3;
return query;
case 3:
rowData = _context8.sent;
rowData = _context9.sent;
if (!(rowData.length === 1)) {
_context8.next = 6;
_context9.next = 6;
break;
}
return _context8.abrupt('return', this.createModels(rowData).then(function (models) {
return _context9.abrupt('return', this.createModels(rowData).then(function (models) {
return (0, _lodash.first)(models);

@@ -495,3 +526,3 @@ }));

if (!(rowData.length === 0)) {
_context8.next = 8;
_context9.next = 8;
break;

@@ -507,10 +538,10 @@ }

case 'end':
return _context8.stop();
return _context9.stop();
}
}
}, _callee8, this);
}, _callee9, this);
}));
function _eval() {
return _ref8.apply(this, arguments);
return _ref9.apply(this, arguments);
}

@@ -585,26 +616,26 @@

value: function () {
var _ref9 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee9() {
var _ref10 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee10() {
var query, rowData;
return _regenerator2.default.wrap(function _callee9$(_context9) {
return _regenerator2.default.wrap(function _callee10$(_context10) {
while (1) {
switch (_context9.prev = _context9.next) {
switch (_context10.prev = _context10.next) {
case 0:
query = this.prepareSelectQuery();
_context9.next = 3;
_context10.next = 3;
return query;
case 3:
rowData = _context9.sent;
return _context9.abrupt('return', this.createModels(rowData));
rowData = _context10.sent;
return _context10.abrupt('return', this.createModels(rowData));
case 5:
case 'end':
return _context9.stop();
return _context10.stop();
}
}
}, _callee9, this);
}, _callee10, this);
}));
function _eval() {
return _ref9.apply(this, arguments);
return _ref10.apply(this, arguments);
}

@@ -620,8 +651,8 @@

return function () {
var _ref10 = _asyncGenerator3.default.wrap(_regenerator2.default.mark(function _callee10() {
var _ref11 = _asyncGenerator3.default.wrap(_regenerator2.default.mark(function _callee11() {
var _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, _value, rowData;
return _regenerator2.default.wrap(function _callee10$(_context10) {
return _regenerator2.default.wrap(function _callee11$(_context11) {
while (1) {
switch (_context10.prev = _context10.next) {
switch (_context11.prev = _context11.next) {
case 0:

@@ -631,20 +662,20 @@ _iteratorNormalCompletion2 = true;

_iteratorError2 = undefined;
_context10.prev = 3;
_context11.prev = 3;
_iterator2 = (0, _asyncIterator3.default)(new _streamToAsyncIterator2.default(query.stream()));
case 5:
_context10.next = 7;
_context11.next = 7;
return _asyncGenerator3.default.await(_iterator2.next());
case 7:
_step2 = _context10.sent;
_step2 = _context11.sent;
_iteratorNormalCompletion2 = _step2.done;
_context10.next = 11;
_context11.next = 11;
return _asyncGenerator3.default.await(_step2.value);
case 11:
_value = _context10.sent;
_value = _context11.sent;
if (_iteratorNormalCompletion2) {
_context10.next = 19;
_context11.next = 19;
break;

@@ -654,3 +685,3 @@ }

rowData = _value;
_context10.next = 16;
_context11.next = 16;
return this.makeModel(rowData);

@@ -660,32 +691,32 @@

_iteratorNormalCompletion2 = true;
_context10.next = 5;
_context11.next = 5;
break;
case 19:
_context10.next = 25;
_context11.next = 25;
break;
case 21:
_context10.prev = 21;
_context10.t0 = _context10['catch'](3);
_context11.prev = 21;
_context11.t0 = _context11['catch'](3);
_didIteratorError2 = true;
_iteratorError2 = _context10.t0;
_iteratorError2 = _context11.t0;
case 25:
_context10.prev = 25;
_context10.prev = 26;
_context11.prev = 25;
_context11.prev = 26;
if (!(!_iteratorNormalCompletion2 && _iterator2.return)) {
_context10.next = 30;
_context11.next = 30;
break;
}
_context10.next = 30;
_context11.next = 30;
return _asyncGenerator3.default.await(_iterator2.return());
case 30:
_context10.prev = 30;
_context11.prev = 30;
if (!_didIteratorError2) {
_context10.next = 33;
_context11.next = 33;
break;

@@ -697,17 +728,17 @@ }

case 33:
return _context10.finish(30);
return _context11.finish(30);
case 34:
return _context10.finish(25);
return _context11.finish(25);
case 35:
case 'end':
return _context10.stop();
return _context11.stop();
}
}
}, _callee10, this, [[3, 21, 25, 35], [26,, 30, 34]]);
}, _callee11, this, [[3, 21, 25, 35], [26,, 30, 34]]);
}));
function asyncIterator() {
return _ref10.apply(this, arguments);
return _ref11.apply(this, arguments);
}

@@ -721,2 +752,2 @@

}(BaseQuery);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9xdWVyeS5qcyJdLCJuYW1lcyI6WyJnZXRWYWx1ZSIsInFiIiwiZmlyc3QiLCJ0aGVuIiwicm93IiwiQmFzZVF1ZXJ5IiwibW9kZWxDbGFzcyIsImZpbHRlcnMiLCJyZWxhdGlvbk5hbWVzIiwiZmx1b3JpdGUiLCJ0cmFuc2FjdGlvbiIsImFwcGx5U2NvcGVzIiwibnMiLCJiaW5kIiwicHJvcGVydHkiLCJzY29wZSIsInNjb3BlcyIsImFyZ3MiLCJyb3dEYXRhIiwid3JhcE1vZGVsIiwia25leFF1ZXJ5Iiwia25leFF1ZXJ5VHJhbnNhY3RpbmciLCJmb3JFYWNoIiwiZiIsImlzVHJhbnNhY3RpbmciLCJjdXJyZW50VHJhbnNhY3Rpb24iLCJmcm9tIiwidGFibGUiLCJrbmV4IiwiYXR0cmlidXRlcyIsInF1ZXJ5IiwiY2FsbGJhY2siLCJjb25zdHJ1Y3RvciIsInByZXBhcmVRdWVyeSIsInRvU3RyaW5nIiwibnVtYmVyIiwicSIsImxpbWl0Iiwib2Zmc2V0IiwibW9kZWwiLCJjcmVhdGUiLCJzYXZlIiwidXBkYXRlIiwiZGVsZXRlIiwic2VsZWN0IiwibGVuZ3RoIiwiTW9kZWxDbGFzcyIsIm1vZGVscyIsIm1hcCIsImFsbCIsIm5hbWUiLCJzcGxpdCIsImhlYWQiLCJ0YWlsIiwicmVsYXRpb24iLCJleHRyYWN0UmVsYXRlZERhdGEiLCJFcnJvciIsInJlc29sdmUiLCJyZWplY3QiLCJldmFsIiwicmVzdWx0IiwiU2luZ2xlUm93UXVlcnkiLCJwcmVwYXJlU2VsZWN0UXVlcnkiLCJjcmVhdGVNb2RlbHMiLCJOb3RGb3VuZEVycm9yIiwiSW50ZWdyaXR5RXJyb3IiLCJNdWx0aXBsZVJvd3NRdWVyeSIsImNvbHVtbiIsImNvdW50IiwibWluIiwibWF4Iiwic3VtIiwiYXZnIiwicGx1Y2siLCJmaWx0ZXIiLCJzaW5nbGUiLCJhc3luY0l0ZXJhdG9yIiwic3RyZWFtIiwibWFrZU1vZGVsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxQkE7O0FBQ0E7Ozs7QUFDQTs7Ozs7O0FBRUEsSUFBTUEsV0FBVyxTQUFYQSxRQUFXO0FBQUEsU0FDZkMsR0FBR0MsS0FBSCxHQUFXQyxJQUFYLENBQWdCO0FBQUEsV0FBTyxtQkFBTSxzQkFBY0MsR0FBZCxDQUFOLENBQVA7QUFBQSxHQUFoQixDQURlO0FBQUEsQ0FBakIsQyxDQXpCQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTZCTUMsUztBQUNKLHFCQUFZQyxVQUFaLEVBQTBEO0FBQUEsUUFBbENDLE9BQWtDLHVFQUF4QixFQUF3QjtBQUFBLFFBQXBCQyxhQUFvQix1RUFBSixFQUFJO0FBQUE7O0FBQ3hELFNBQUtGLFVBQUwsR0FBa0JBLFVBQWxCO0FBQ0EsU0FBS0MsT0FBTCxHQUFlQSxPQUFmO0FBQ0EsU0FBS0MsYUFBTCxHQUFxQkEsYUFBckI7QUFDQSxTQUFLQyxRQUFMLEdBQWdCSCxXQUFXRyxRQUEzQjtBQUNBLFNBQUtDLFdBQUwsR0FBbUIsS0FBS0QsUUFBTCxDQUFjQyxXQUFqQzs7QUFFQSxTQUFLQyxXQUFMOztBQUVBLFNBQUtSLElBQUwsR0FBWSxLQUFLRyxVQUFMLENBQWdCRyxRQUFoQixDQUF5QkcsRUFBekIsQ0FBNEJDLElBQTVCLENBQWlDLEtBQUtWLElBQXRDLENBQVo7QUFDRDs7OztrQ0FFYTtBQUFBOztBQUFBLGlDQUNEVyxRQURDO0FBRVYsWUFBTUMsUUFBUSxNQUFLVCxVQUFMLENBQWdCVSxNQUFoQixDQUF1QkYsUUFBdkIsQ0FBZDtBQUNBLGNBQUtBLFFBQUwsSUFBaUI7QUFBQSw0Q0FBSUcsSUFBSjtBQUFJQSxnQkFBSjtBQUFBOztBQUFBLGlCQUFhRixzQ0FBZUUsSUFBZixFQUFiO0FBQUEsU0FBakI7QUFIVTs7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFDWix3REFBdUIsb0JBQVksS0FBS1gsVUFBTCxDQUFnQlUsTUFBNUIsQ0FBdkIsNEdBQTREO0FBQUEsY0FBakRGLFFBQWlEOztBQUFBLGdCQUFqREEsUUFBaUQ7QUFHM0Q7QUFKVztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBS2I7Ozs4QkFFU0ksTyxFQUFTO0FBQ2pCLGFBQU8sS0FBS1QsUUFBTCxDQUFjVSxTQUFkLENBQXdCRCxPQUF4QixFQUFpQyxLQUFLWixVQUF0QyxDQUFQO0FBQ0Q7OzttQ0FFYztBQUNiLFVBQU1jLFlBQVksS0FBS0Msb0JBQUwsRUFBbEI7QUFDQSxXQUFLZCxPQUFMLENBQWFlLE9BQWIsQ0FBcUI7QUFBQSxlQUFLQyxFQUFFSCxTQUFGLENBQUw7QUFBQSxPQUFyQjtBQUNBLGFBQU9BLFNBQVA7QUFDRDs7OzJDQUVzQjtBQUNyQixVQUFJLEtBQUtWLFdBQUwsQ0FBaUJjLGFBQWpCLEVBQUosRUFBc0M7QUFDcEMsZUFBTyxLQUFLZCxXQUFMLENBQWlCZSxrQkFBakIsR0FBc0NDLElBQXRDLENBQTJDLEtBQUtwQixVQUFMLENBQWdCcUIsS0FBM0QsQ0FBUDtBQUNEOztBQUVELGFBQU8sS0FBS3JCLFVBQUwsQ0FBZ0JzQixJQUFoQixDQUFxQixLQUFLdEIsVUFBTCxDQUFnQnFCLEtBQXJDLENBQVA7QUFDRDs7OzJCQUVNRSxVLEVBQVk7QUFDakIsYUFBTyxLQUFLQyxLQUFMLENBQVcsc0JBQVlELFVBQVosRUFBd0IsS0FBS3ZCLFVBQUwsQ0FBZ0JxQixLQUF4QyxDQUFYLENBQVA7QUFDRDs7OzBCQUVLSSxRLEVBQVU7QUFDZCxhQUFPLElBQUksS0FBS0MsV0FBVCxDQUNMLEtBQUsxQixVQURBLDZDQUNnQixLQUFLQyxPQURyQixJQUM4QndCLFFBRDlCLElBQ3lDLEtBQUt2QixhQUQ5QyxDQUFQO0FBR0Q7OztnQ0FFMkI7QUFBQSx5Q0FBZkEsYUFBZTtBQUFmQSxxQkFBZTtBQUFBOztBQUMxQixhQUFPLElBQUksS0FBS3dCLFdBQVQsQ0FDTCxLQUFLMUIsVUFEQSxFQUNZLEtBQUtDLE9BRGpCLDZDQUM4QixLQUFLQyxhQURuQyxHQUNxREEsYUFEckQsRUFBUDtBQUdEOzs7K0JBRVU7QUFDVCxhQUFPLEtBQUt5QixZQUFMLEdBQW9CQyxRQUFwQixFQUFQO0FBQ0Q7OzswQkFFS0MsTSxFQUFRO0FBQ1osYUFBTyxLQUFLTCxLQUFMLENBQVc7QUFBQSxlQUFLTSxFQUFFQyxLQUFGLENBQVFGLE1BQVIsQ0FBTDtBQUFBLE9BQVgsQ0FBUDtBQUNEOzs7MkJBRU1BLE0sRUFBUTtBQUNiLGFBQU8sS0FBS0wsS0FBTCxDQUFXO0FBQUEsZUFBS00sRUFBRUUsTUFBRixDQUFTSCxNQUFULENBQUw7QUFBQSxPQUFYLENBQVA7QUFDRDs7Ozs2RkFFWU4sVTs7Ozs7O0FBQ0xVLHFCLEdBQVEsS0FBS2pDLFVBQUwsQ0FBZ0JrQyxNQUFoQixDQUF1QlgsVUFBdkIsQzs7dUJBQ1JVLE1BQU1FLElBQU4sRTs7O2lEQUNDRixLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OytGQUdJVixVOzs7Ozs7dUJBQ0wsS0FBS0ksWUFBTCxHQUFvQlMsTUFBcEIsQ0FBMkJiLFVBQTNCLEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7dUJBSUEsS0FBS0ksWUFBTCxHQUFvQlUsTUFBcEIsRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUlBYixxQixHQUFRLEtBQUtHLFlBQUwsRTs7QUFDZEgsc0JBQU1jLE1BQU4sQ0FBZ0IsS0FBS3RDLFVBQUwsQ0FBZ0JxQixLQUFoQztrREFDT0csSzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRkFHVVosTzs7Ozs7O3NCQUNiQSxRQUFRMkIsTUFBUixLQUFtQixDOzs7OztrREFDZCxFOzs7QUFHSEMsMEIsR0FBYSxLQUFLeEMsVTtBQUNsQnlDLHNCLEdBQVM3QixRQUFROEIsR0FBUixDQUNiO0FBQUEseUJBQU8sSUFBSUYsVUFBSixDQUFlMUMsR0FBZixFQUFvQixzQkFBYyxFQUFkLEVBQWtCQSxHQUFsQixDQUFwQixDQUFQO0FBQUEsaUJBRGEsQzs7dUJBSVQsa0JBQVE2QyxHQUFSLENBQVksS0FBS3pDLGFBQUwsQ0FBbUJ3QyxHQUFuQixDQUF1QixVQUFDRSxJQUFELEVBQVU7QUFBQSxvQ0FDNUJBLEtBQUtDLEtBQUwsQ0FBVyxHQUFYLEVBQWdCLENBQWhCLENBRDRCO0FBQUE7QUFBQSxzQkFDMUNDLElBRDBDO0FBQUEsc0JBQ3BDQyxJQURvQzs7QUFFakQsc0JBQU1DLFdBQVcsbUJBQU1QLE1BQU4sRUFBY0ssSUFBZCxHQUFqQjtBQUNBLHlCQUFPRSxTQUFTQyxrQkFBVCxDQUE0QnJDLE9BQTVCLEVBQXFDa0MsSUFBckMsRUFBMkNMLE1BQTNDLEVBQW1ETSxJQUFuRCxDQUFQO0FBQ0QsaUJBSmlCLENBQVosQzs7O2tEQU1DTixNOzs7Ozs7Ozs7Ozs7Ozs7OztBQUdUOzs7Ozs7Ozs7O3NCQUVRLElBQUlTLEtBQUosQ0FBVSx3QkFBVixDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OytGQUdHQyxPLEVBQVNDLE07Ozs7Ozs7O3VCQUVLLEtBQUtDLElBQUwsRTs7O0FBQWZDLHNCO2tEQUNDSCxRQUFRRyxNQUFSLEM7Ozs7O2tEQUVBRixvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFLQUcsYyxXQUFBQSxjOzs7Ozs7Ozs7Ozs7Ozs7OztBQUVIL0IscUIsR0FBUSxLQUFLZ0Msa0JBQUwsRTs7dUJBRVFoQyxLOzs7QUFBaEJaLHVCOztzQkFFRkEsUUFBUTJCLE1BQVIsS0FBbUIsQzs7Ozs7a0RBQ2QsS0FBS2tCLFlBQUwsQ0FBa0I3QyxPQUFsQixFQUNKZixJQURJLENBQ0M7QUFBQSx5QkFBVSxtQkFBTTRDLE1BQU4sQ0FBVjtBQUFBLGlCQURELEM7OztzQkFJTDdCLFFBQVEyQixNQUFSLEtBQW1CLEM7Ozs7O3NCQUNmLElBQUksS0FBS3ZDLFVBQUwsQ0FBZ0IwRCxhQUFwQixDQUFrQyxrQkFBbEMsQzs7O3NCQUdGLElBQUksS0FBSzFELFVBQUwsQ0FBZ0IyRCxjQUFwQixDQUFtQywrQkFBbkMsQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBZjBCNUQsUzs7SUFtQnZCNkQsaUIsV0FBQUEsaUI7Ozs7Ozs7Ozs7NEJBQ1U7QUFBQSxVQUFmQyxNQUFlLHVFQUFOLElBQU07O0FBQ25CLGFBQU9uRSxTQUFTLEtBQUtpQyxZQUFMLEdBQW9CbUMsS0FBcEIsQ0FBMEJELE1BQTFCLENBQVQsQ0FBUDtBQUNEOzs7d0JBRUdBLE0sRUFBUTtBQUNWLGFBQU9uRSxTQUFTLEtBQUtpQyxZQUFMLEdBQW9Cb0MsR0FBcEIsQ0FBd0JGLE1BQXhCLENBQVQsQ0FBUDtBQUNEOzs7d0JBRUdBLE0sRUFBUTtBQUNWLGFBQU9uRSxTQUFTLEtBQUtpQyxZQUFMLEdBQW9CcUMsR0FBcEIsQ0FBd0JILE1BQXhCLENBQVQsQ0FBUDtBQUNEOzs7d0JBRUdBLE0sRUFBUTtBQUNWLGFBQU9uRSxTQUFTLEtBQUtpQyxZQUFMLEdBQW9Cc0MsR0FBcEIsQ0FBd0JKLE1BQXhCLENBQVQsQ0FBUDtBQUNEOzs7d0JBRUdBLE0sRUFBUTtBQUNWLGFBQU9uRSxTQUFTLEtBQUtpQyxZQUFMLEdBQW9CdUMsR0FBcEIsQ0FBd0JMLE1BQXhCLENBQVQsQ0FBUDtBQUNEOzs7MEJBRUtBLE0sRUFBUTtBQUNaLGFBQU8sS0FBS2xDLFlBQUwsR0FBb0J3QyxLQUFwQixDQUEwQk4sTUFBMUIsQ0FBUDtBQUNEOzs7NkJBRXVCO0FBQUEsVUFBakJ0QyxVQUFpQix1RUFBSixFQUFJOztBQUN0QixVQUFJLENBQUMscUJBQVFBLFVBQVIsQ0FBTCxFQUEwQjtBQUN4QixlQUFPLEtBQUs2QyxNQUFMLENBQVk3QyxVQUFaLEVBQXdCOEMsTUFBeEIsRUFBUDtBQUNEOztBQUVELGFBQU8sSUFBSWQsY0FBSixDQUFtQixLQUFLdkQsVUFBeEIsRUFBb0MsS0FBS0MsT0FBekMsQ0FBUDtBQUNEOzs7NEJBRXNCO0FBQUEsVUFBakJzQixVQUFpQix1RUFBSixFQUFJOztBQUNyQixhQUFPLEtBQUs4QyxNQUFMLENBQVk5QyxVQUFaLEVBQXdCUSxLQUF4QixDQUE4QixDQUE5QixDQUFQO0FBQ0Q7Ozs7Ozs7Ozs7QUFHT1AscUIsR0FBUSxLQUFLZ0Msa0JBQUwsRTs7dUJBRVFoQyxLOzs7QUFBaEJaLHVCO2tEQUVDLEtBQUs2QyxZQUFMLENBQWtCN0MsT0FBbEIsQzs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBR0QwRCxhOzRCQUFpQjtBQUN2QixVQUFNOUMsUUFBUSxLQUFLZ0Msa0JBQUwsRUFBZDs7QUFFQSxhQUFPO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsNERBQ3VCLG9DQUFrQmhDLE1BQU0rQyxNQUFOLEVBQWxCLENBRHZCOztBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ1kzRCx5QkFEWjtBQUFBO0FBQUEseUJBRUcsS0FBSzRELFNBQUwsQ0FBZTVELE9BQWYsQ0FGSDs7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQTs7QUFBQTtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBOztBQUFBO0FBQUE7O0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFBQSxpQkFBZ0IwRCxhQUFoQjtBQUFBO0FBQUE7O0FBQUEsZUFBZ0JBLGFBQWhCO0FBQUEsVUFJTC9ELElBSkssQ0FJQSxJQUpBLENBQVA7QUFLRDs7O0VBckRvQ1IsUyIsImZpbGUiOiJxdWVyeS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTcgUm9tYW4gTGFraHRhZHlyXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuaW1wb3J0IHsgZmlyc3QsIGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IFN0cmVhbVRvQXN5bmMgZnJvbSAnc3RyZWFtLXRvLWFzeW5jLWl0ZXJhdG9yJztcbmltcG9ydCBmaWx0ZXJRdWVyeSBmcm9tICcuL2ZpbHRlcic7XG5cbmNvbnN0IGdldFZhbHVlID0gcWIgPT4gKFxuICBxYi5maXJzdCgpLnRoZW4ocm93ID0+IGZpcnN0KE9iamVjdC52YWx1ZXMocm93KSkpXG4pO1xuXG5jbGFzcyBCYXNlUXVlcnkge1xuICBjb25zdHJ1Y3Rvcihtb2RlbENsYXNzLCBmaWx0ZXJzID0gW10sIHJlbGF0aW9uTmFtZXMgPSBbXSkge1xuICAgIHRoaXMubW9kZWxDbGFzcyA9IG1vZGVsQ2xhc3M7XG4gICAgdGhpcy5maWx0ZXJzID0gZmlsdGVycztcbiAgICB0aGlzLnJlbGF0aW9uTmFtZXMgPSByZWxhdGlvbk5hbWVzO1xuICAgIHRoaXMuZmx1b3JpdGUgPSBtb2RlbENsYXNzLmZsdW9yaXRlO1xuICAgIHRoaXMudHJhbnNhY3Rpb24gPSB0aGlzLmZsdW9yaXRlLnRyYW5zYWN0aW9uO1xuXG4gICAgdGhpcy5hcHBseVNjb3BlcygpO1xuXG4gICAgdGhpcy50aGVuID0gdGhpcy5tb2RlbENsYXNzLmZsdW9yaXRlLm5zLmJpbmQodGhpcy50aGVuKTtcbiAgfVxuXG4gIGFwcGx5U2NvcGVzKCkge1xuICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgT2JqZWN0LmtleXModGhpcy5tb2RlbENsYXNzLnNjb3BlcykpIHtcbiAgICAgIGNvbnN0IHNjb3BlID0gdGhpcy5tb2RlbENsYXNzLnNjb3Blc1twcm9wZXJ0eV07XG4gICAgICB0aGlzW3Byb3BlcnR5XSA9ICguLi5hcmdzKSA9PiBzY29wZSh0aGlzLCAuLi5hcmdzKTtcbiAgICB9XG4gIH1cblxuICBtYWtlTW9kZWwocm93RGF0YSkge1xuICAgIHJldHVybiB0aGlzLmZsdW9yaXRlLndyYXBNb2RlbChyb3dEYXRhLCB0aGlzLm1vZGVsQ2xhc3MpO1xuICB9XG5cbiAgcHJlcGFyZVF1ZXJ5KCkge1xuICAgIGNvbnN0IGtuZXhRdWVyeSA9IHRoaXMua25leFF1ZXJ5VHJhbnNhY3RpbmcoKTtcbiAgICB0aGlzLmZpbHRlcnMuZm9yRWFjaChmID0+IGYoa25leFF1ZXJ5KSk7XG4gICAgcmV0dXJuIGtuZXhRdWVyeTtcbiAgfVxuXG4gIGtuZXhRdWVyeVRyYW5zYWN0aW5nKCkge1xuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLmlzVHJhbnNhY3RpbmcoKSkge1xuICAgICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb24uY3VycmVudFRyYW5zYWN0aW9uKCkuZnJvbSh0aGlzLm1vZGVsQ2xhc3MudGFibGUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm1vZGVsQ2xhc3Mua25leCh0aGlzLm1vZGVsQ2xhc3MudGFibGUpO1xuICB9XG5cbiAgZmlsdGVyKGF0dHJpYnV0ZXMpIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeShmaWx0ZXJRdWVyeShhdHRyaWJ1dGVzLCB0aGlzLm1vZGVsQ2xhc3MudGFibGUpKTtcbiAgfVxuXG4gIHF1ZXJ5KGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKFxuICAgICAgdGhpcy5tb2RlbENsYXNzLCBbLi4udGhpcy5maWx0ZXJzLCBjYWxsYmFja10sIHRoaXMucmVsYXRpb25OYW1lcyxcbiAgICApO1xuICB9XG5cbiAgaW5jbHVkaW5nKC4uLnJlbGF0aW9uTmFtZXMpIHtcbiAgICByZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoXG4gICAgICB0aGlzLm1vZGVsQ2xhc3MsIHRoaXMuZmlsdGVycywgWy4uLnRoaXMucmVsYXRpb25OYW1lcywgLi4ucmVsYXRpb25OYW1lc10sXG4gICAgKTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnByZXBhcmVRdWVyeSgpLnRvU3RyaW5nKCk7XG4gIH1cblxuICBsaW1pdChudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeShxID0+IHEubGltaXQobnVtYmVyKSk7XG4gIH1cblxuICBvZmZzZXQobnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnkocSA9PiBxLm9mZnNldChudW1iZXIpKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZShhdHRyaWJ1dGVzKSB7XG4gICAgY29uc3QgbW9kZWwgPSB0aGlzLm1vZGVsQ2xhc3MuY3JlYXRlKGF0dHJpYnV0ZXMpO1xuICAgIGF3YWl0IG1vZGVsLnNhdmUoKTtcbiAgICByZXR1cm4gbW9kZWw7XG4gIH1cblxuICBhc3luYyB1cGRhdGUoYXR0cmlidXRlcykge1xuICAgIGF3YWl0IHRoaXMucHJlcGFyZVF1ZXJ5KCkudXBkYXRlKGF0dHJpYnV0ZXMpO1xuICB9XG5cbiAgYXN5bmMgcmVtb3ZlKCkge1xuICAgIGF3YWl0IHRoaXMucHJlcGFyZVF1ZXJ5KCkuZGVsZXRlKCk7XG4gIH1cblxuICBhc3luYyBwcmVwYXJlU2VsZWN0UXVlcnkoKSB7XG4gICAgY29uc3QgcXVlcnkgPSB0aGlzLnByZXBhcmVRdWVyeSgpO1xuICAgIHF1ZXJ5LnNlbGVjdChgJHt0aGlzLm1vZGVsQ2xhc3MudGFibGV9LipgKTtcbiAgICByZXR1cm4gcXVlcnk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVNb2RlbHMocm93RGF0YSkge1xuICAgIGlmIChyb3dEYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IE1vZGVsQ2xhc3MgPSB0aGlzLm1vZGVsQ2xhc3M7XG4gICAgY29uc3QgbW9kZWxzID0gcm93RGF0YS5tYXAoXG4gICAgICByb3cgPT4gbmV3IE1vZGVsQ2xhc3Mocm93LCBPYmplY3QuYXNzaWduKHt9LCByb3cpKSxcbiAgICApO1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5yZWxhdGlvbk5hbWVzLm1hcCgobmFtZSkgPT4ge1xuICAgICAgY29uc3QgW2hlYWQsIHRhaWxdID0gbmFtZS5zcGxpdCgnLicsIDIpO1xuICAgICAgY29uc3QgcmVsYXRpb24gPSBmaXJzdChtb2RlbHMpW2hlYWRdKCk7XG4gICAgICByZXR1cm4gcmVsYXRpb24uZXh0cmFjdFJlbGF0ZWREYXRhKHJvd0RhdGEsIGhlYWQsIG1vZGVscywgdGFpbCk7XG4gICAgfSkpO1xuXG4gICAgcmV0dXJuIG1vZGVscztcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzXG4gIGFzeW5jIGV2YWwoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICBhc3luYyB0aGVuKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmV2YWwoKTtcbiAgICAgIHJldHVybiByZXNvbHZlKHJlc3VsdCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHJlamVjdChlKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNpbmdsZVJvd1F1ZXJ5IGV4dGVuZHMgQmFzZVF1ZXJ5IHtcbiAgYXN5bmMgZXZhbCgpIHtcbiAgICBjb25zdCBxdWVyeSA9IHRoaXMucHJlcGFyZVNlbGVjdFF1ZXJ5KCk7XG5cbiAgICBjb25zdCByb3dEYXRhID0gYXdhaXQgcXVlcnk7XG5cbiAgICBpZiAocm93RGF0YS5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZU1vZGVscyhyb3dEYXRhKVxuICAgICAgICAudGhlbihtb2RlbHMgPT4gZmlyc3QobW9kZWxzKSk7XG4gICAgfVxuXG4gICAgaWYgKHJvd0RhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgdGhpcy5tb2RlbENsYXNzLk5vdEZvdW5kRXJyb3IoJ0VudGl0eSBub3QgZm91bmQnKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgdGhpcy5tb2RlbENsYXNzLkludGVncml0eUVycm9yKCdNb3JlIHRoYW4gb25lIGVudGl0eSByZXR1cm5lZCcpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNdWx0aXBsZVJvd3NRdWVyeSBleHRlbmRzIEJhc2VRdWVyeSB7XG4gIGNvdW50KGNvbHVtbiA9IG51bGwpIHtcbiAgICByZXR1cm4gZ2V0VmFsdWUodGhpcy5wcmVwYXJlUXVlcnkoKS5jb3VudChjb2x1bW4pKTtcbiAgfVxuXG4gIG1pbihjb2x1bW4pIHtcbiAgICByZXR1cm4gZ2V0VmFsdWUodGhpcy5wcmVwYXJlUXVlcnkoKS5taW4oY29sdW1uKSk7XG4gIH1cblxuICBtYXgoY29sdW1uKSB7XG4gICAgcmV0dXJuIGdldFZhbHVlKHRoaXMucHJlcGFyZVF1ZXJ5KCkubWF4KGNvbHVtbikpO1xuICB9XG5cbiAgc3VtKGNvbHVtbikge1xuICAgIHJldHVybiBnZXRWYWx1ZSh0aGlzLnByZXBhcmVRdWVyeSgpLnN1bShjb2x1bW4pKTtcbiAgfVxuXG4gIGF2Zyhjb2x1bW4pIHtcbiAgICByZXR1cm4gZ2V0VmFsdWUodGhpcy5wcmVwYXJlUXVlcnkoKS5hdmcoY29sdW1uKSk7XG4gIH1cblxuICBwbHVjayhjb2x1bW4pIHtcbiAgICByZXR1cm4gdGhpcy5wcmVwYXJlUXVlcnkoKS5wbHVjayhjb2x1bW4pO1xuICB9XG5cbiAgc2luZ2xlKGF0dHJpYnV0ZXMgPSB7fSkge1xuICAgIGlmICghaXNFbXB0eShhdHRyaWJ1dGVzKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKGF0dHJpYnV0ZXMpLnNpbmdsZSgpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgU2luZ2xlUm93UXVlcnkodGhpcy5tb2RlbENsYXNzLCB0aGlzLmZpbHRlcnMpO1xuICB9XG5cbiAgZmlyc3QoYXR0cmlidXRlcyA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMuc2luZ2xlKGF0dHJpYnV0ZXMpLmxpbWl0KDEpO1xuICB9XG5cbiAgYXN5bmMgZXZhbCgpIHtcbiAgICBjb25zdCBxdWVyeSA9IHRoaXMucHJlcGFyZVNlbGVjdFF1ZXJ5KCk7XG5cbiAgICBjb25zdCByb3dEYXRhID0gYXdhaXQgcXVlcnk7XG5cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVNb2RlbHMocm93RGF0YSk7XG4gIH1cblxuICBbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkge1xuICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5wcmVwYXJlU2VsZWN0UXVlcnkoKTtcblxuICAgIHJldHVybiBhc3luYyBmdW5jdGlvbiogYXN5bmNJdGVyYXRvcigpIHtcbiAgICAgIGZvciBhd2FpdCAoY29uc3Qgcm93RGF0YSBvZiBuZXcgU3RyZWFtVG9Bc3luYyhxdWVyeS5zdHJlYW0oKSkpIHtcbiAgICAgICAgeWllbGQgdGhpcy5tYWtlTW9kZWwocm93RGF0YSk7XG4gICAgICB9XG4gICAgfS5iaW5kKHRoaXMpO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9xdWVyeS5qcyJdLCJuYW1lcyI6WyJnZXRWYWx1ZSIsInFiIiwiZmlyc3QiLCJ0aGVuIiwicm93IiwiQmFzZVF1ZXJ5IiwibW9kZWxDbGFzcyIsImZpbHRlcnMiLCJyZWxhdGlvbk5hbWVzIiwiZmx1b3JpdGUiLCJ0cmFuc2FjdGlvbiIsImFwcGx5U2NvcGVzIiwibnMiLCJiaW5kIiwicHJvcGVydHkiLCJzY29wZSIsInNjb3BlcyIsImFyZ3MiLCJyb3dEYXRhIiwid3JhcE1vZGVsIiwia25leFF1ZXJ5Iiwia25leFF1ZXJ5VHJhbnNhY3RpbmciLCJmb3JFYWNoIiwiZiIsImlzVHJhbnNhY3RpbmciLCJjdXJyZW50VHJhbnNhY3Rpb24iLCJmcm9tIiwidGFibGUiLCJrbmV4IiwiYXR0cmlidXRlcyIsInF1ZXJ5IiwiY2FsbGJhY2siLCJjb25zdHJ1Y3RvciIsInByZXBhcmVRdWVyeSIsInRvU3RyaW5nIiwibnVtYmVyIiwicSIsImxpbWl0Iiwib2Zmc2V0IiwiY29sdW1uIiwiZGlyZWN0aW9uIiwib3JkZXJCeSIsIm1vZGVsIiwiY3JlYXRlIiwic2F2ZSIsInVwZGF0ZSIsImRlbGV0ZSIsInNlbGVjdCIsImxlbmd0aCIsIk1vZGVsQ2xhc3MiLCJtb2RlbHMiLCJtYXAiLCJhbGwiLCJuYW1lIiwic3BsaXQiLCJoZWFkIiwidGFpbCIsInJlbGF0aW9uIiwiZXh0cmFjdFJlbGF0ZWREYXRhIiwiRXJyb3IiLCJyZXNvbHZlIiwicmVqZWN0IiwiZXZhbCIsInJlc3VsdCIsIlNpbmdsZVJvd1F1ZXJ5IiwicHJlcGFyZVNlbGVjdFF1ZXJ5IiwiY3JlYXRlTW9kZWxzIiwiTm90Rm91bmRFcnJvciIsIkludGVncml0eUVycm9yIiwiTXVsdGlwbGVSb3dzUXVlcnkiLCJjb3VudCIsIm1pbiIsIm1heCIsInN1bSIsImF2ZyIsInBsdWNrIiwiZmlsdGVyIiwic2luZ2xlIiwiYXN5bmNJdGVyYXRvciIsInN0cmVhbSIsIm1ha2VNb2RlbCJdLCJtYXBwaW5ncyI6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MjAxNyBSb21hbiBMYWtodGFkeXJcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5pbXBvcnQgeyBmaXJzdCwgaXNFbXB0eSwgaWRlbnRpdHkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IFN0cmVhbVRvQXN5bmMgZnJvbSAnc3RyZWFtLXRvLWFzeW5jLWl0ZXJhdG9yJztcbmltcG9ydCBmaWx0ZXJRdWVyeSBmcm9tICcuL2ZpbHRlcic7XG5cbmNvbnN0IGdldFZhbHVlID0gcWIgPT4gKFxuICBxYi5maXJzdCgpLnRoZW4ocm93ID0+IGZpcnN0KE9iamVjdC52YWx1ZXMocm93KSkpXG4pO1xuXG5jbGFzcyBCYXNlUXVlcnkge1xuICBjb25zdHJ1Y3Rvcihtb2RlbENsYXNzLCBmaWx0ZXJzID0gW10sIHJlbGF0aW9uTmFtZXMgPSBbXSkge1xuICAgIHRoaXMubW9kZWxDbGFzcyA9IG1vZGVsQ2xhc3M7XG4gICAgdGhpcy5maWx0ZXJzID0gZmlsdGVycztcbiAgICB0aGlzLnJlbGF0aW9uTmFtZXMgPSByZWxhdGlvbk5hbWVzO1xuICAgIHRoaXMuZmx1b3JpdGUgPSBtb2RlbENsYXNzLmZsdW9yaXRlO1xuICAgIHRoaXMudHJhbnNhY3Rpb24gPSB0aGlzLmZsdW9yaXRlLnRyYW5zYWN0aW9uO1xuXG4gICAgdGhpcy5hcHBseVNjb3BlcygpO1xuXG4gICAgdGhpcy50aGVuID0gdGhpcy5tb2RlbENsYXNzLmZsdW9yaXRlLm5zLmJpbmQodGhpcy50aGVuKTtcbiAgfVxuXG4gIGFwcGx5U2NvcGVzKCkge1xuICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgT2JqZWN0LmtleXModGhpcy5tb2RlbENsYXNzLnNjb3BlcykpIHtcbiAgICAgIGNvbnN0IHNjb3BlID0gdGhpcy5tb2RlbENsYXNzLnNjb3Blc1twcm9wZXJ0eV07XG4gICAgICB0aGlzW3Byb3BlcnR5XSA9ICguLi5hcmdzKSA9PiBzY29wZSh0aGlzLCAuLi5hcmdzKTtcbiAgICB9XG4gIH1cblxuICBtYWtlTW9kZWwocm93RGF0YSkge1xuICAgIHJldHVybiB0aGlzLmZsdW9yaXRlLndyYXBNb2RlbChyb3dEYXRhLCB0aGlzLm1vZGVsQ2xhc3MpO1xuICB9XG5cbiAgcHJlcGFyZVF1ZXJ5KCkge1xuICAgIGNvbnN0IGtuZXhRdWVyeSA9IHRoaXMua25leFF1ZXJ5VHJhbnNhY3RpbmcoKTtcbiAgICB0aGlzLmZpbHRlcnMuZm9yRWFjaChmID0+IGYoa25leFF1ZXJ5KSk7XG4gICAgcmV0dXJuIGtuZXhRdWVyeTtcbiAgfVxuXG4gIGtuZXhRdWVyeVRyYW5zYWN0aW5nKCkge1xuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLmlzVHJhbnNhY3RpbmcoKSkge1xuICAgICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb24uY3VycmVudFRyYW5zYWN0aW9uKCkuZnJvbSh0aGlzLm1vZGVsQ2xhc3MudGFibGUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm1vZGVsQ2xhc3Mua25leCh0aGlzLm1vZGVsQ2xhc3MudGFibGUpO1xuICB9XG5cbiAgZmlsdGVyKGF0dHJpYnV0ZXMpIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeShmaWx0ZXJRdWVyeShhdHRyaWJ1dGVzLCB0aGlzLm1vZGVsQ2xhc3MudGFibGUpKTtcbiAgfVxuXG4gIHF1ZXJ5KGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKFxuICAgICAgdGhpcy5tb2RlbENsYXNzLCBbLi4udGhpcy5maWx0ZXJzLCBjYWxsYmFja10sIHRoaXMucmVsYXRpb25OYW1lcyxcbiAgICApO1xuICB9XG5cbiAgaW5jbHVkaW5nKC4uLnJlbGF0aW9uTmFtZXMpIHtcbiAgICByZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoXG4gICAgICB0aGlzLm1vZGVsQ2xhc3MsIHRoaXMuZmlsdGVycywgWy4uLnRoaXMucmVsYXRpb25OYW1lcywgLi4ucmVsYXRpb25OYW1lc10sXG4gICAgKTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnByZXBhcmVRdWVyeSgpLnRvU3RyaW5nKCk7XG4gIH1cblxuICBsaW1pdChudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeShxID0+IHEubGltaXQobnVtYmVyKSk7XG4gIH1cblxuICBvZmZzZXQobnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnkocSA9PiBxLm9mZnNldChudW1iZXIpKTtcbiAgfVxuXG4gIG9yZGVyQnkoY29sdW1uLCBkaXJlY3Rpb24pIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeShxID0+IHEub3JkZXJCeShjb2x1bW4sIGRpcmVjdGlvbikpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlKGF0dHJpYnV0ZXMpIHtcbiAgICBjb25zdCBtb2RlbCA9IHRoaXMubW9kZWxDbGFzcy5jcmVhdGUoYXR0cmlidXRlcyk7XG4gICAgYXdhaXQgbW9kZWwuc2F2ZSgpO1xuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZShhdHRyaWJ1dGVzKSB7XG4gICAgYXdhaXQgdGhpcy5wcmVwYXJlUXVlcnkoKS51cGRhdGUoYXR0cmlidXRlcyk7XG4gIH1cblxuICBhc3luYyByZW1vdmUoKSB7XG4gICAgYXdhaXQgdGhpcy5wcmVwYXJlUXVlcnkoKS5kZWxldGUoKTtcbiAgfVxuXG4gIGFzeW5jIHByZXBhcmVTZWxlY3RRdWVyeSgpIHtcbiAgICBjb25zdCBxdWVyeSA9IHRoaXMucHJlcGFyZVF1ZXJ5KCk7XG4gICAgcXVlcnkuc2VsZWN0KGAke3RoaXMubW9kZWxDbGFzcy50YWJsZX0uKmApO1xuICAgIHJldHVybiBxdWVyeTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZU1vZGVscyhyb3dEYXRhKSB7XG4gICAgaWYgKHJvd0RhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgTW9kZWxDbGFzcyA9IHRoaXMubW9kZWxDbGFzcztcbiAgICBjb25zdCBtb2RlbHMgPSByb3dEYXRhLm1hcChcbiAgICAgIHJvdyA9PiBuZXcgTW9kZWxDbGFzcyhyb3csIE9iamVjdC5hc3NpZ24oe30sIHJvdykpLFxuICAgICk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLnJlbGF0aW9uTmFtZXMubWFwKChuYW1lKSA9PiB7XG4gICAgICBjb25zdCBbaGVhZCwgdGFpbF0gPSBuYW1lLnNwbGl0KCcuJywgMik7XG4gICAgICBjb25zdCByZWxhdGlvbiA9IGZpcnN0KG1vZGVscylbaGVhZF0oKTtcbiAgICAgIHJldHVybiByZWxhdGlvbi5leHRyYWN0UmVsYXRlZERhdGEocm93RGF0YSwgaGVhZCwgbW9kZWxzLCB0YWlsKTtcbiAgICB9KSk7XG5cbiAgICByZXR1cm4gbW9kZWxzO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcbiAgYXN5bmMgZXZhbCgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIGFzeW5jIHRoZW4ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZXZhbCgpO1xuICAgICAgcmV0dXJuIHJlc29sdmUocmVzdWx0KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gcmVqZWN0KGUpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNhdGNoKHJlamVjdCkge1xuICAgIHJldHVybiB0aGlzLnRoZW4oaWRlbnRpdHksIHJlamVjdCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNpbmdsZVJvd1F1ZXJ5IGV4dGVuZHMgQmFzZVF1ZXJ5IHtcbiAgYXN5bmMgZXZhbCgpIHtcbiAgICBjb25zdCBxdWVyeSA9IHRoaXMucHJlcGFyZVNlbGVjdFF1ZXJ5KCk7XG5cbiAgICBjb25zdCByb3dEYXRhID0gYXdhaXQgcXVlcnk7XG5cbiAgICBpZiAocm93RGF0YS5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZU1vZGVscyhyb3dEYXRhKVxuICAgICAgICAudGhlbihtb2RlbHMgPT4gZmlyc3QobW9kZWxzKSk7XG4gICAgfVxuXG4gICAgaWYgKHJvd0RhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgdGhpcy5tb2RlbENsYXNzLk5vdEZvdW5kRXJyb3IoJ0VudGl0eSBub3QgZm91bmQnKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgdGhpcy5tb2RlbENsYXNzLkludGVncml0eUVycm9yKCdNb3JlIHRoYW4gb25lIGVudGl0eSByZXR1cm5lZCcpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNdWx0aXBsZVJvd3NRdWVyeSBleHRlbmRzIEJhc2VRdWVyeSB7XG4gIGNvdW50KGNvbHVtbiA9IG51bGwpIHtcbiAgICByZXR1cm4gZ2V0VmFsdWUodGhpcy5wcmVwYXJlUXVlcnkoKS5jb3VudChjb2x1bW4pKTtcbiAgfVxuXG4gIG1pbihjb2x1bW4pIHtcbiAgICByZXR1cm4gZ2V0VmFsdWUodGhpcy5wcmVwYXJlUXVlcnkoKS5taW4oY29sdW1uKSk7XG4gIH1cblxuICBtYXgoY29sdW1uKSB7XG4gICAgcmV0dXJuIGdldFZhbHVlKHRoaXMucHJlcGFyZVF1ZXJ5KCkubWF4KGNvbHVtbikpO1xuICB9XG5cbiAgc3VtKGNvbHVtbikge1xuICAgIHJldHVybiBnZXRWYWx1ZSh0aGlzLnByZXBhcmVRdWVyeSgpLnN1bShjb2x1bW4pKTtcbiAgfVxuXG4gIGF2Zyhjb2x1bW4pIHtcbiAgICByZXR1cm4gZ2V0VmFsdWUodGhpcy5wcmVwYXJlUXVlcnkoKS5hdmcoY29sdW1uKSk7XG4gIH1cblxuICBwbHVjayhjb2x1bW4pIHtcbiAgICByZXR1cm4gdGhpcy5wcmVwYXJlUXVlcnkoKS5wbHVjayhjb2x1bW4pO1xuICB9XG5cbiAgc2luZ2xlKGF0dHJpYnV0ZXMgPSB7fSkge1xuICAgIGlmICghaXNFbXB0eShhdHRyaWJ1dGVzKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKGF0dHJpYnV0ZXMpLnNpbmdsZSgpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgU2luZ2xlUm93UXVlcnkodGhpcy5tb2RlbENsYXNzLCB0aGlzLmZpbHRlcnMpO1xuICB9XG5cbiAgZmlyc3QoYXR0cmlidXRlcyA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMuc2luZ2xlKGF0dHJpYnV0ZXMpLmxpbWl0KDEpO1xuICB9XG5cbiAgYXN5bmMgZXZhbCgpIHtcbiAgICBjb25zdCBxdWVyeSA9IHRoaXMucHJlcGFyZVNlbGVjdFF1ZXJ5KCk7XG5cbiAgICBjb25zdCByb3dEYXRhID0gYXdhaXQgcXVlcnk7XG5cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVNb2RlbHMocm93RGF0YSk7XG4gIH1cblxuICBbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkge1xuICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5wcmVwYXJlU2VsZWN0UXVlcnkoKTtcblxuICAgIHJldHVybiBhc3luYyBmdW5jdGlvbiogYXN5bmNJdGVyYXRvcigpIHtcbiAgICAgIGZvciBhd2FpdCAoY29uc3Qgcm93RGF0YSBvZiBuZXcgU3RyZWFtVG9Bc3luYyhxdWVyeS5zdHJlYW0oKSkpIHtcbiAgICAgICAgeWllbGQgdGhpcy5tYWtlTW9kZWwocm93RGF0YSk7XG4gICAgICB9XG4gICAgfS5iaW5kKHRoaXMpO1xuICB9XG59XG4iXX0=
{
"name": "fluorite",
"version": "1.0.2",
"version": "1.0.3-a",
"description": "Lightweight ORM based on Knex.js query builder.",

@@ -20,7 +20,6 @@ "main": "dist/index.js",

"devDependencies": {
"@types/jest": "^20.0.6",
"@types/knex": "0.0.57",
"@types/lodash": "^4.14.72",
"babel-cli": "*",
"babel-eslint": "*",
"@types/jest": "^20.0.8",
"@types/lodash": "^4.14.76",
"babel-cli": "^6.26.0",
"babel-eslint": "^8.0.1",
"babel-jest": "^20",

@@ -31,5 +30,5 @@ "babel-plugin-transform-builtin-extend": "*",

"babel-preset-stage-0": "*",
"coveralls": "*",
"eslint": "*",
"eslint-config-airbnb-base": "*",
"coveralls": "^3.0.0",
"eslint": "^4.8.0",
"eslint-config-airbnb-base": "^12.0.1",
"eslint-plugin-babel": "^4.1.2",

@@ -39,10 +38,41 @@ "eslint-plugin-import": "*",

"jest": "^20",
"sqlite3": "*"
"knex": "*",
"sqlite3": "^3.1.13",
"ts-jest": "^21.0.1",
"typescript": "^2.5.3"
},
"dependencies": {
"continuation-local-storage": "^3.2.0",
"knex": "*",
"lodash": "*",
"stream-to-async-iterator": "^0.2.0"
}
"stream-to-async-iterator": "^0.2.0",
"@types/knex": "0.0.57",
"@types/continuation-local-storage": "^3.2.1"
},
"jest": {
"transform": {
"^.+\\.tsx?$": "<rootDir>/node_modules/ts-jest/preprocessor.js",
"^.+\\.jsx?$": "babel-jest"
},
"testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$",
"moduleFileExtensions": [
"ts",
"tsx",
"js",
"jsx",
"json"
]
},
"keywords": [
"orm",
"database",
"mysql",
"postgresql",
"sqlite",
"datamapper",
"active record",
"object relational mapper",
"es6",
"immutable",
"async"
]
}

@@ -5,4 +5,4 @@ # Fluorite.js

[![Code Climate](https://codeclimate.com/github/pldin601/Fluorite.js/badges/gpa.svg)](https://codeclimate.com/github/pldin601/Fluorite.js)
[![Dependency Status](https://www.versioneye.com/user/projects/59cffe6f0fb24f1bf41494f9/badge.svg?style=flat-square)](https://www.versioneye.com/user/projects/59cffe6f0fb24f1bf41494f9)
Fluorite is a lightweight ORM based on Knex.js query builder.

@@ -15,2 +15,7 @@ It features promise based interface, provides transactions support,

## Installation
```
npm install fluorite
```
## Configuration

@@ -65,8 +70,5 @@ First of all you'll need a copy of `knex.js` query builder to be configured.

### Creating objects
To create an model object, instantiate it with object representing attributes or
call method `create()` with attributes on a model class and then call `save()`.
To create an model object, instantiate it with object representing attributes and then call `save()`.
```javascript
const user = new User({ name: 'John Doe', age: 28 });
// or
const user = User.create({ name: 'John Doe', age: 28 });

@@ -125,3 +127,3 @@ await user.save();

```javascript
const males = await User.objects.filter({ gender: 'male' });
const men = await User.objects.filter({ gender: 'male' });
```

@@ -128,0 +130,0 @@

@@ -35,3 +35,2 @@ /*

static scopes = {};
static columns = [];

@@ -164,2 +163,6 @@ static get fluorite() {

setRelatedData(name, data) {
this.relatedModels[name] = data;
}
/*

@@ -182,2 +185,12 @@ * Methods that executes SQL statements

async refresh() {
const attributes = await this.createKnexQuery()
.from(this.constructor.table)
.where(this.constructor.idAttribute, this.id)
.first();
this.attributes = attributes;
this.previousAttributes = Object.assign({}, attributes);
}
async remove() {

@@ -188,3 +201,3 @@ if (this.isNew) {

return this.createKnexQuery()
await this.createKnexQuery()
.where(this.constructor.idAttribute, this.id)

@@ -216,5 +229,6 @@ .delete();

setRelatedData(name, data) {
this.relatedModels[name] = data;
async load(relation) {
const data = await this[relation]();
this.setRelatedData(relation, data);
}
};

@@ -22,3 +22,3 @@ /*

*/
import { first, isEmpty } from 'lodash';
import { first, isEmpty, identity } from 'lodash';
import StreamToAsync from 'stream-to-async-iterator';

@@ -97,2 +97,6 @@ import filterQuery from './filter';

orderBy(column, direction) {
return this.query(q => q.orderBy(column, direction));
}
async create(attributes) {

@@ -150,2 +154,6 @@ const model = this.modelClass.create(attributes);

}
async catch(reject) {
return this.then(identity, reject);
}
}

@@ -152,0 +160,0 @@

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc