UNPKG

db-sql-toolkit

Version:

Helps with SQL statements, database migration, and bulk execution.

166 lines (164 loc) 45.4 kB
"use strict"; function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } Object.defineProperty(exports, "__esModule", { value: true }); exports.applyMigrations = applyMigrations; var _sql = require("./sql"); var _templateObject, _templateObject2, _templateObject3; function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); } function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); } function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return r; }; var t, r = {}, e = Object.prototype, n = e.hasOwnProperty, o = "function" == typeof Symbol ? Symbol : {}, i = o.iterator || "@@iterator", a = o.asyncIterator || "@@asyncIterator", u = o.toStringTag || "@@toStringTag"; function c(t, r, e, n) { return Object.defineProperty(t, r, { value: e, enumerable: !n, configurable: !n, writable: !n }); } try { c({}, ""); } catch (t) { c = function c(t, r, e) { return t[r] = e; }; } function h(r, e, n, o) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype); return c(a, "_invoke", function (r, e, n) { var o = 1; return function (i, a) { if (3 === o) throw Error("Generator is already running"); if (4 === o) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var u = n.delegate; if (u) { var c = d(u, n); if (c) { if (c === f) continue; return c; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (1 === o) throw o = 4, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = 3; var h = s(r, e, n); if ("normal" === h.type) { if (o = n.done ? 4 : 2, h.arg === f) continue; return { value: h.arg, done: n.done }; } "throw" === h.type && (o = 4, n.method = "throw", n.arg = h.arg); } }; }(r, n, new Context(o || [])), !0), a; } function s(t, r, e) { try { return { type: "normal", arg: t.call(r, e) }; } catch (t) { return { type: "throw", arg: t }; } } r.wrap = h; var f = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var l = {}; c(l, i, function () { return this; }); var p = Object.getPrototypeOf, y = p && p(p(x([]))); y && y !== e && n.call(y, i) && (l = y); var v = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(l); function g(t) { ["next", "throw", "return"].forEach(function (r) { c(t, r, function (t) { return this._invoke(r, t); }); }); } function AsyncIterator(t, r) { function e(o, i, a, u) { var c = s(t[o], t, i); if ("throw" !== c.type) { var h = c.arg, f = h.value; return f && "object" == _typeof(f) && n.call(f, "__await") ? r.resolve(f.__await).then(function (t) { e("next", t, a, u); }, function (t) { e("throw", t, a, u); }) : r.resolve(f).then(function (t) { h.value = t, a(h); }, function (t) { return e("throw", t, a, u); }); } u(c.arg); } var o; c(this, "_invoke", function (t, n) { function i() { return new r(function (r, o) { e(t, n, r, o); }); } return o = o ? o.then(i, i) : i(); }, !0); } function d(r, e) { var n = e.method, o = r.i[n]; if (o === t) return e.delegate = null, "throw" === n && r.i["return"] && (e.method = "return", e.arg = t, d(r, e), "throw" === e.method) || "return" !== n && (e.method = "throw", e.arg = new TypeError("The iterator does not provide a '" + n + "' method")), f; var i = s(o, r.i, e.arg); if ("throw" === i.type) return e.method = "throw", e.arg = i.arg, e.delegate = null, f; var a = i.arg; return a ? a.done ? (e[r.r] = a.value, e.next = r.n, "return" !== e.method && (e.method = "next", e.arg = t), e.delegate = null, f) : a : (e.method = "throw", e.arg = new TypeError("iterator result is not an object"), e.delegate = null, f); } function w(t) { this.tryEntries.push(t); } function m(r) { var e = r[4] || {}; e.type = "normal", e.arg = t, r[4] = e; } function Context(t) { this.tryEntries = [[-1]], t.forEach(w, this), this.reset(!0); } function x(r) { if (null != r) { var e = r[i]; if (e) return e.call(r); if ("function" == typeof r.next) return r; if (!isNaN(r.length)) { var o = -1, a = function e() { for (; ++o < r.length;) if (n.call(r, o)) return e.value = r[o], e.done = !1, e; return e.value = t, e.done = !0, e; }; return a.next = a; } } throw new TypeError(_typeof(r) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, c(v, "constructor", GeneratorFunctionPrototype), c(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = c(GeneratorFunctionPrototype, u, "GeneratorFunction"), r.isGeneratorFunction = function (t) { var r = "function" == typeof t && t.constructor; return !!r && (r === GeneratorFunction || "GeneratorFunction" === (r.displayName || r.name)); }, r.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, c(t, u, "GeneratorFunction")), t.prototype = Object.create(v), t; }, r.awrap = function (t) { return { __await: t }; }, g(AsyncIterator.prototype), c(AsyncIterator.prototype, a, function () { return this; }), r.AsyncIterator = AsyncIterator, r.async = function (t, e, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(h(t, e, n, o), i); return r.isGeneratorFunction(e) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, g(v), c(v, u, "Generator"), c(v, i, function () { return this; }), c(v, "toString", function () { return "[object Generator]"; }), r.keys = function (t) { var r = Object(t), e = []; for (var n in r) e.unshift(n); return function t() { for (; e.length;) if ((n = e.pop()) in r) return t.value = n, t.done = !1, t; return t.done = !0, t; }; }, r.values = x, Context.prototype = { constructor: Context, reset: function reset(r) { if (this.prev = this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(m), !r) for (var e in this) "t" === e.charAt(0) && n.call(this, e) && !isNaN(+e.slice(1)) && (this[e] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0][4]; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(r) { if (this.done) throw r; var e = this; function n(t) { a.type = "throw", a.arg = r, e.next = t; } for (var o = e.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i[4], u = this.prev, c = i[1], h = i[2]; if (-1 === i[0]) return n("end"), !1; if (!c && !h) throw Error("try statement without catch or finally"); if (null != i[0] && i[0] <= u) { if (u < c) return this.method = "next", this.arg = t, n(c), !0; if (u < h) return n(h), !1; } } }, abrupt: function abrupt(t, r) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var n = this.tryEntries[e]; if (n[0] > -1 && n[0] <= this.prev && this.prev < n[2]) { var o = n; break; } } o && ("break" === t || "continue" === t) && o[0] <= r && r <= o[2] && (o = null); var i = o ? o[4] : {}; return i.type = t, i.arg = r, o ? (this.method = "next", this.next = o[2], f) : this.complete(i); }, complete: function complete(t, r) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && r && (this.next = r), f; }, finish: function finish(t) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var e = this.tryEntries[r]; if (e[2] === t) return this.complete(e[4], e[3]), m(e), f; } }, "catch": function _catch(t) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var e = this.tryEntries[r]; if (e[0] === t) { var n = e[4]; if ("throw" === n.type) { var o = n.arg; m(e); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(r, e, n) { return this.delegate = { i: x(r), r: e, n: n }, "next" === this.method && (this.arg = t), f; } }, r; } function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); } function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } function applyMigrations(_x) { return _applyMigrations.apply(this, arguments); } function _applyMigrations() { _applyMigrations = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref) { var database, migrations, targetId, getExecutedMigrationIds, insertMigrationId, writeLog, executedMigrationIds, lastId, _iterator, _step, _step$value, id, apply; return _regeneratorRuntime().wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: database = _ref.database, migrations = _ref.migrations, targetId = _ref.targetId, getExecutedMigrationIds = _ref.getExecutedMigrationIds, insertMigrationId = _ref.insertMigrationId, writeLog = _ref.writeLog; _context.next = 3; return (getExecutedMigrationIds !== null && getExecutedMigrationIds !== void 0 ? getExecutedMigrationIds : defaultGetExecutedMigrationIds)(database); case 3: executedMigrationIds = _context.sent; if (executedMigrationIds.length === 0) { writeLog === null || writeLog === void 0 || writeLog("No previously applied migrations."); } else { lastId = executedMigrationIds.at(-1); writeLog === null || writeLog === void 0 || writeLog("Previously applied ".concat(executedMigrationIds.length, " migrations, last id=\"").concat(lastId, "\".")); } _iterator = _createForOfIteratorHelper(migrations); _context.prev = 6; _iterator.s(); case 8: if ((_step = _iterator.n()).done) { _context.next = 23; break; } _step$value = _step.value, id = _step$value.id, apply = _step$value.apply; if (!executedMigrationIds.includes(id)) { _context.next = 14; break; } if (!(id === targetId)) { _context.next = 13; break; } return _context.abrupt("break", 23); case 13: return _context.abrupt("continue", 21); case 14: _context.next = 16; return apply(database); case 16: _context.next = 18; return (insertMigrationId !== null && insertMigrationId !== void 0 ? insertMigrationId : defaultUpdateVersion)(database, id); case 18: /* eslint-enable no-await-in-loop */ writeLog === null || writeLog === void 0 || writeLog("Applied migration \"".concat(id, "\".")); if (!(id === targetId)) { _context.next = 21; break; } return _context.abrupt("break", 23); case 21: _context.next = 8; break; case 23: _context.next = 28; break; case 25: _context.prev = 25; _context.t0 = _context["catch"](6); _iterator.e(_context.t0); case 28: _context.prev = 28; _iterator.f(); return _context.finish(28); case 31: case "end": return _context.stop(); } }, _callee, null, [[6, 25, 28, 31]]); })); return _applyMigrations.apply(this, arguments); } function defaultGetExecutedMigrationIds(_x2) { return _defaultGetExecutedMigrationIds.apply(this, arguments); } function _defaultGetExecutedMigrationIds() { _defaultGetExecutedMigrationIds = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(database) { var migrations; return _regeneratorRuntime().wrap(function _callee2$(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: _context2.prev = 0; _context2.next = 3; return database.getRows.apply(database, _toConsumableArray((0, _sql.sql)(_templateObject || (_templateObject = _taggedTemplateLiteral(["SELECT id FROM _db_migration"]))))); case 3: migrations = _context2.sent; return _context2.abrupt("return", migrations.map(function (migration) { return migration.id; })); case 7: _context2.prev = 7; _context2.t0 = _context2["catch"](0); _context2.next = 11; return createDbVersionTable(database); case 11: return _context2.abrupt("return", []); case 12: case "end": return _context2.stop(); } }, _callee2, null, [[0, 7]]); })); return _defaultGetExecutedMigrationIds.apply(this, arguments); } function defaultUpdateVersion(_x3, _x4) { return _defaultUpdateVersion.apply(this, arguments); } function _defaultUpdateVersion() { _defaultUpdateVersion = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(database, id) { return _regeneratorRuntime().wrap(function _callee3$(_context3) { while (1) switch (_context3.prev = _context3.next) { case 0: _context3.next = 2; return database.executeSqlCommand.apply(database, _toConsumableArray((0, _sql.sql)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["INSERT INTO _db_migration (id) VALUES (", ")"])), id))); case 2: case "end": return _context3.stop(); } }, _callee3); })); return _defaultUpdateVersion.apply(this, arguments); } function createDbVersionTable(_x5) { return _createDbVersionTable.apply(this, arguments); } function _createDbVersionTable() { _createDbVersionTable = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(database) { return _regeneratorRuntime().wrap(function _callee4$(_context4) { while (1) switch (_context4.prev = _context4.next) { case 0: _context4.next = 2; return database.executeSqlCommand.apply(database, _toConsumableArray((0, _sql.sql)(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n\t\t\tCREATE TABLE IF NOT EXISTS _db_migration (\n\t\t\t\tid VARCHAR NOT NULL,\n\t\t\t\tPRIMARY KEY (\n\t\t\t\t\tid\n\t\t\t\t)\n\t\t\t);\n\t\t"]))))); case 2: case "end": return _context4.stop(); } }, _callee4); })); return _createDbVersionTable.apply(this, arguments); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3FsIiwicmVxdWlyZSIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfdGVtcGxhdGVPYmplY3QzIiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbCIsImUiLCJ0Iiwic2xpY2UiLCJPYmplY3QiLCJmcmVlemUiLCJkZWZpbmVQcm9wZXJ0aWVzIiwicmF3IiwidmFsdWUiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIlR5cGVFcnJvciIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJmcm9tIiwiaXNBcnJheSIsIl9hcnJheUxpa2VUb0FycmF5IiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsInByb3RvdHlwZSIsIm4iLCJoYXNPd25Qcm9wZXJ0eSIsIm8iLCJpIiwiYSIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJjIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJoIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiYXJnIiwiZGVsZWdhdGUiLCJkIiwiZiIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwicyIsInR5cGUiLCJDb250ZXh0IiwiY2FsbCIsIndyYXAiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwibCIsInAiLCJnZXRQcm90b3R5cGVPZiIsInkiLCJ4IiwidiIsImciLCJmb3JFYWNoIiwiX2ludm9rZSIsIkFzeW5jSXRlcmF0b3IiLCJfdHlwZW9mIiwicmVzb2x2ZSIsIl9fYXdhaXQiLCJ0aGVuIiwibmV4dCIsInciLCJ0cnlFbnRyaWVzIiwicHVzaCIsIm0iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwidW5zaGlmdCIsInBvcCIsInZhbHVlcyIsInByZXYiLCJjaGFyQXQiLCJzdG9wIiwicnZhbCIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwiZGVsZWdhdGVZaWVsZCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX24iLCJGIiwidG9TdHJpbmciLCJ0ZXN0IiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJhcmd1bWVudHMiLCJhcHBseSIsIl9uZXh0IiwiX3Rocm93IiwiYXBwbHlNaWdyYXRpb25zIiwiX3giLCJfYXBwbHlNaWdyYXRpb25zIiwiX2NhbGxlZSIsIl9yZWYiLCJkYXRhYmFzZSIsIm1pZ3JhdGlvbnMiLCJ0YXJnZXRJZCIsImdldEV4ZWN1dGVkTWlncmF0aW9uSWRzIiwiaW5zZXJ0TWlncmF0aW9uSWQiLCJ3cml0ZUxvZyIsImV4ZWN1dGVkTWlncmF0aW9uSWRzIiwibGFzdElkIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJfc3RlcCR2YWx1ZSIsImlkIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsImRlZmF1bHRHZXRFeGVjdXRlZE1pZ3JhdGlvbklkcyIsImF0IiwiY29uY2F0IiwiaW5jbHVkZXMiLCJkZWZhdWx0VXBkYXRlVmVyc2lvbiIsInQwIiwiX3gyIiwiX2RlZmF1bHRHZXRFeGVjdXRlZE1pZ3JhdGlvbklkcyIsIl9jYWxsZWUyIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiZ2V0Um93cyIsInNxbCIsIm1hcCIsIm1pZ3JhdGlvbiIsImNyZWF0ZURiVmVyc2lvblRhYmxlIiwiX3gzIiwiX3g0IiwiX2RlZmF1bHRVcGRhdGVWZXJzaW9uIiwiX2NhbGxlZTMiLCJfY2FsbGVlMyQiLCJfY29udGV4dDMiLCJleGVjdXRlU3FsQ29tbWFuZCIsIl94NSIsIl9jcmVhdGVEYlZlcnNpb25UYWJsZSIsIl9jYWxsZWU0IiwiX2NhbGxlZTQkIiwiX2NvbnRleHQ0Il0sInNvdXJjZXMiOlsiLi4vc3JjL2FwcGx5TWlncmF0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERhdGFiYXNlIH0gZnJvbSBcIi4vRGF0YWJhc2VcIjtcbmltcG9ydCB7IHNxbCB9IGZyb20gXCIuL3NxbFwiO1xuXG50eXBlIERiTWlncmF0aW9uSWQgPSBzdHJpbmc7XG5cbmludGVyZmFjZSBBcHBseU1pZ3JhdGlvbnNPcHRpb25zPFREYXRhYmFzZSBleHRlbmRzIERhdGFiYXNlPiB7XG5cdGRhdGFiYXNlOiBURGF0YWJhc2U7XG5cdG1pZ3JhdGlvbnM6IE1pZ3JhdGlvbjxURGF0YWJhc2U+W107XG5cdHRhcmdldElkPzogRGJNaWdyYXRpb25JZDtcblx0Z2V0RXhlY3V0ZWRNaWdyYXRpb25JZHM/OiAoKGRhdGFiYXNlOiBURGF0YWJhc2UpID0+IFByb21pc2U8RGJNaWdyYXRpb25JZFtdPikgfCBudWxsO1xuXHRpbnNlcnRNaWdyYXRpb25JZD86ICgoZGF0YWJhc2U6IFREYXRhYmFzZSwgaWQ6IERiTWlncmF0aW9uSWQpID0+IFByb21pc2U8dm9pZD4pIHwgbnVsbDtcblx0d3JpdGVMb2c/OiAobWVzc2FnZTogc3RyaW5nKSA9PiB2b2lkO1xufVxuXG5pbnRlcmZhY2UgTWlncmF0aW9uPFREYXRhYmFzZT4ge1xuXHRpZDogRGJNaWdyYXRpb25JZDtcblx0YXBwbHk6IChkYXRhYmFzZTogVERhdGFiYXNlKSA9PiBQcm9taXNlPHZvaWQ+O1xufVxuXG5hc3luYyBmdW5jdGlvbiBhcHBseU1pZ3JhdGlvbnM8VERhdGFiYXNlIGV4dGVuZHMgRGF0YWJhc2U+KHtcblx0ZGF0YWJhc2UsXG5cdG1pZ3JhdGlvbnMsXG5cdHRhcmdldElkLFxuXHRnZXRFeGVjdXRlZE1pZ3JhdGlvbklkcyxcblx0aW5zZXJ0TWlncmF0aW9uSWQsXG5cdHdyaXRlTG9nLFxufTogQXBwbHlNaWdyYXRpb25zT3B0aW9uczxURGF0YWJhc2U+KTogUHJvbWlzZTx2b2lkPiB7XG5cdGNvbnN0IGV4ZWN1dGVkTWlncmF0aW9uSWRzID0gYXdhaXQgKGdldEV4ZWN1dGVkTWlncmF0aW9uSWRzID8/IGRlZmF1bHRHZXRFeGVjdXRlZE1pZ3JhdGlvbklkcykoZGF0YWJhc2UpO1xuXG5cdGlmIChleGVjdXRlZE1pZ3JhdGlvbklkcy5sZW5ndGggPT09IDApIHtcblx0XHR3cml0ZUxvZz8uKFwiTm8gcHJldmlvdXNseSBhcHBsaWVkIG1pZ3JhdGlvbnMuXCIpO1xuXHR9IGVsc2Uge1xuXHRcdGNvbnN0IGxhc3RJZCA9IGV4ZWN1dGVkTWlncmF0aW9uSWRzLmF0KC0xKTtcblxuXHRcdHdyaXRlTG9nPy4oYFByZXZpb3VzbHkgYXBwbGllZCAke2V4ZWN1dGVkTWlncmF0aW9uSWRzLmxlbmd0aH0gbWlncmF0aW9ucywgbGFzdCBpZD1cIiR7bGFzdElkfVwiLmApO1xuXHR9XG5cblx0Zm9yIChjb25zdCB7IGlkLCBhcHBseSB9IG9mIG1pZ3JhdGlvbnMpIHtcblx0XHRpZiAoZXhlY3V0ZWRNaWdyYXRpb25JZHMuaW5jbHVkZXMoaWQpKSB7XG5cdFx0XHRpZiAoaWQgPT09IHRhcmdldElkKSB7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0LyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCAqL1xuXHRcdGF3YWl0IGFwcGx5KGRhdGFiYXNlKTtcblx0XHRhd2FpdCAoaW5zZXJ0TWlncmF0aW9uSWQgPz8gZGVmYXVsdFVwZGF0ZVZlcnNpb24pKGRhdGFiYXNlLCBpZCk7XG5cdFx0LyogZXNsaW50LWVuYWJsZSBuby1hd2FpdC1pbi1sb29wICovXG5cblx0XHR3cml0ZUxvZz8uKGBBcHBsaWVkIG1pZ3JhdGlvbiBcIiR7aWR9XCIuYCk7XG5cblx0XHRpZiAoaWQgPT09IHRhcmdldElkKSB7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdH1cbn1cblxuaW50ZXJmYWNlIERiTWlncmF0aW9uc1RhYmxlIHtcblx0aWQ6IERiTWlncmF0aW9uSWQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGRlZmF1bHRHZXRFeGVjdXRlZE1pZ3JhdGlvbklkcyhkYXRhYmFzZTogRGF0YWJhc2UpOiBQcm9taXNlPERiTWlncmF0aW9uSWRbXT4ge1xuXHR0cnkge1xuXHRcdGNvbnN0IG1pZ3JhdGlvbnMgPSBhd2FpdCBkYXRhYmFzZS5nZXRSb3dzPERiTWlncmF0aW9uc1RhYmxlPiguLi5zcWxgU0VMRUNUIGlkIEZST00gX2RiX21pZ3JhdGlvbmApO1xuXG5cdFx0cmV0dXJuIG1pZ3JhdGlvbnMubWFwKChtaWdyYXRpb24pID0+IG1pZ3JhdGlvbi5pZCk7XG5cdH0gY2F0Y2gge1xuXHRcdGF3YWl0IGNyZWF0ZURiVmVyc2lvblRhYmxlKGRhdGFiYXNlKTtcblxuXHRcdHJldHVybiBbXTtcblx0fVxufVxuXG5hc3luYyBmdW5jdGlvbiBkZWZhdWx0VXBkYXRlVmVyc2lvbihkYXRhYmFzZTogRGF0YWJhc2UsIGlkOiBEYk1pZ3JhdGlvbklkKTogUHJvbWlzZTx2b2lkPiB7XG5cdGF3YWl0IGRhdGFiYXNlLmV4ZWN1dGVTcWxDb21tYW5kKC4uLnNxbGBJTlNFUlQgSU5UTyBfZGJfbWlncmF0aW9uIChpZCkgVkFMVUVTICgke2lkfSlgKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlRGJWZXJzaW9uVGFibGUoZGF0YWJhc2U6IERhdGFiYXNlKTogUHJvbWlzZTx2b2lkPiB7XG5cdGF3YWl0IGRhdGFiYXNlLmV4ZWN1dGVTcWxDb21tYW5kKFxuXHRcdC4uLnNxbGBcblx0XHRcdENSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIF9kYl9taWdyYXRpb24gKFxuXHRcdFx0XHRpZCBWQVJDSEFSIE5PVCBOVUxMLFxuXHRcdFx0XHRQUklNQVJZIEtFWSAoXG5cdFx0XHRcdFx0aWRcblx0XHRcdFx0KVxuXHRcdFx0KTtcblx0XHRgLFxuXHQpO1xufVxuXG5leHBvcnQgdHlwZSB7IEFwcGx5TWlncmF0aW9uc09wdGlvbnMgfTtcblxuZXhwb3J0IHsgYXBwbHlNaWdyYXRpb25zIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQSxJQUFBQSxJQUFBLEdBQUFDLE9BQUE7QUFBNEIsSUFBQUMsZUFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQTtBQUFBLFNBQUFDLHVCQUFBQyxDQUFBLEVBQUFDLENBQUEsV0FBQUEsQ0FBQSxLQUFBQSxDQUFBLEdBQUFELENBQUEsQ0FBQUUsS0FBQSxNQUFBQyxNQUFBLENBQUFDLE1BQUEsQ0FBQUQsTUFBQSxDQUFBRSxnQkFBQSxDQUFBTCxDQUFBLElBQUFNLEdBQUEsSUFBQUMsS0FBQSxFQUFBSixNQUFBLENBQUFDLE1BQUEsQ0FBQUgsQ0FBQTtBQUFBLFNBQUFPLG1CQUFBQyxDQUFBLFdBQUFDLGtCQUFBLENBQUFELENBQUEsS0FBQUUsZ0JBQUEsQ0FBQUYsQ0FBQSxLQUFBRywyQkFBQSxDQUFBSCxDQUFBLEtBQUFJLGtCQUFBO0FBQUEsU0FBQUEsbUJBQUEsY0FBQUMsU0FBQTtBQUFBLFNBQUFILGlCQUFBRixDQUFBLDhCQUFBTSxNQUFBLFlBQUFOLENBQUEsQ0FBQU0sTUFBQSxDQUFBQyxRQUFBLGFBQUFQLENBQUEsdUJBQUFRLEtBQUEsQ0FBQUMsSUFBQSxDQUFBVCxDQUFBO0FBQUEsU0FBQUMsbUJBQUFELENBQUEsUUFBQVEsS0FBQSxDQUFBRSxPQUFBLENBQUFWLENBQUEsVUFBQVcsaUJBQUEsQ0FBQVgsQ0FBQTtBQUFBLFNBQUFZLG9CQUFBLGtCQUE1QixtS0FBQUEsbUJBQUEsWUFBQUEsb0JBQUEsV0FBQVosQ0FBQSxTQUFBUixDQUFBLEVBQUFRLENBQUEsT0FBQVQsQ0FBQSxHQUFBRyxNQUFBLENBQUFtQixTQUFBLEVBQUFDLENBQUEsR0FBQXZCLENBQUEsQ0FBQXdCLGNBQUEsRUFBQUMsQ0FBQSx3QkFBQVYsTUFBQSxHQUFBQSxNQUFBLE9BQUFXLENBQUEsR0FBQUQsQ0FBQSxD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