murmuration 2.0.25 → 2.0.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/migrate.js ADDED
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return migrate;
9
+ }
10
+ });
11
+ var _initialise = /*#__PURE__*/ _interop_require_default(require("./migrate/operation/initialise"));
12
+ var _applyMigrations = /*#__PURE__*/ _interop_require_default(require("./migrate/operation/applyMigrations"));
13
+ var _necessary = require("necessary");
14
+ function _interop_require_default(obj) {
15
+ return obj && obj.__esModule ? obj : {
16
+ default: obj
17
+ };
18
+ }
19
+ var sequence = _necessary.asynchronousUtilities.sequence;
20
+ function migrate(configuration, migrationsDirectoryPath, CustomMigrationMap, callback) {
21
+ if (callback === undefined) {
22
+ callback = CustomMigrationMap; ///
23
+ CustomMigrationMap = {};
24
+ }
25
+ var callbacks = [
26
+ _initialise.default,
27
+ _applyMigrations.default
28
+ ], error = false, context = {
29
+ error: error,
30
+ configuration: configuration,
31
+ CustomMigrationMap: CustomMigrationMap,
32
+ migrationsDirectoryPath: migrationsDirectoryPath
33
+ };
34
+ sequence(callbacks, function() {
35
+ var error = context.error;
36
+ callback(error);
37
+ }, context);
38
+ }
39
+
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9taWdyYXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgaW5pdGlhbGlzZU9wZXJhdGlvbiBmcm9tIFwiLi9taWdyYXRlL29wZXJhdGlvbi9pbml0aWFsaXNlXCI7XG5pbXBvcnQgYXBwbHlNaWdyYXRpb25zT3BlcmF0aW9uIGZyb20gXCIuL21pZ3JhdGUvb3BlcmF0aW9uL2FwcGx5TWlncmF0aW9uc1wiO1xuXG5pbXBvcnQgeyBhc3luY2hyb25vdXNVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmNvbnN0IHsgc2VxdWVuY2UgfSA9IGFzeW5jaHJvbm91c1V0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWlncmF0ZShjb25maWd1cmF0aW9uLCBtaWdyYXRpb25zRGlyZWN0b3J5UGF0aCwgQ3VzdG9tTWlncmF0aW9uTWFwLCBjYWxsYmFjaykge1xuICBpZiAoY2FsbGJhY2sgPT09IHVuZGVmaW5lZCkge1xuICAgIGNhbGxiYWNrID0gQ3VzdG9tTWlncmF0aW9uTWFwOyAvLy9cblxuICAgIEN1c3RvbU1pZ3JhdGlvbk1hcCA9IHt9O1xuICB9XG5cbiAgY29uc3QgY2FsbGJhY2tzID0gW1xuICAgICAgICAgIGluaXRpYWxpc2VPcGVyYXRpb24sXG4gICAgICAgICAgYXBwbHlNaWdyYXRpb25zT3BlcmF0aW9uXG4gICAgICAgIF0sXG4gICAgICAgIGVycm9yID0gZmFsc2UsICAvLy9cbiAgICAgICAgY29udGV4dCA9IHtcbiAgICAgICAgICBlcnJvcixcbiAgICAgICAgICBjb25maWd1cmF0aW9uLFxuICAgICAgICAgIEN1c3RvbU1pZ3JhdGlvbk1hcCxcbiAgICAgICAgICBtaWdyYXRpb25zRGlyZWN0b3J5UGF0aFxuICAgICAgICB9O1xuXG4gIHNlcXVlbmNlKGNhbGxiYWNrcywgKCkgPT4ge1xuICAgIGNvbnN0IHsgZXJyb3IgfSA9IGNvbnRleHQ7XG5cbiAgICBjYWxsYmFjayhlcnJvcik7XG4gIH0sIGNvbnRleHQpO1xufVxuIl0sIm5hbWVzIjpbIm1pZ3JhdGUiLCJzZXF1ZW5jZSIsImFzeW5jaHJvbm91c1V0aWxpdGllcyIsImNvbmZpZ3VyYXRpb24iLCJtaWdyYXRpb25zRGlyZWN0b3J5UGF0aCIsIkN1c3RvbU1pZ3JhdGlvbk1hcCIsImNhbGxiYWNrIiwidW5kZWZpbmVkIiwiY2FsbGJhY2tzIiwiaW5pdGlhbGlzZU9wZXJhdGlvbiIsImFwcGx5TWlncmF0aW9uc09wZXJhdGlvbiIsImVycm9yIiwiY29udGV4dCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBU0E7OztlQUF3QkE7OztpRUFQUTtzRUFDSzt5QkFFQzs7Ozs7O0FBRXRDLElBQU0sQUFBRUMsV0FBYUMsZ0NBQXFCLENBQWxDRDtBQUVPLFNBQVNELFFBQVFHLGFBQWEsRUFBRUMsdUJBQXVCLEVBQUVDLGtCQUFrQixFQUFFQyxRQUFRO0lBQ2xHLElBQUlBLGFBQWFDLFdBQVc7UUFDMUJELFdBQVdELG9CQUFvQixHQUFHO1FBRWxDQSxxQkFBcUIsQ0FBQztJQUN4QjtJQUVBLElBQU1HLFlBQVk7UUFDVkMsbUJBQW1CO1FBQ25CQyx3QkFBd0I7S0FDekIsRUFDREMsUUFBUSxPQUNSQyxVQUFVO1FBQ1JELE9BQUFBO1FBQ0FSLGVBQUFBO1FBQ0FFLG9CQUFBQTtRQUNBRCx5QkFBQUE7SUFDRjtJQUVOSCxTQUFTTyxXQUFXO1FBQ2xCLElBQU0sQUFBRUcsUUFBVUMsUUFBVkQ7UUFFUkwsU0FBU0s7SUFDWCxHQUFHQztBQUNMIn0=
@@ -0,0 +1,461 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return Statement;
9
+ }
10
+ });
11
+ var _necessary = require("necessary");
12
+ var _database = /*#__PURE__*/ _interop_require_default(require("./database"));
13
+ var _constants = require("./constants");
14
+ function _array_like_to_array(arr, len) {
15
+ if (len == null || len > arr.length) len = arr.length;
16
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
17
+ return arr2;
18
+ }
19
+ function _array_without_holes(arr) {
20
+ if (Array.isArray(arr)) return _array_like_to_array(arr);
21
+ }
22
+ function _class_call_check(instance, Constructor) {
23
+ if (!(instance instanceof Constructor)) {
24
+ throw new TypeError("Cannot call a class as a function");
25
+ }
26
+ }
27
+ function _defineProperties(target, props) {
28
+ for(var i = 0; i < props.length; i++){
29
+ var descriptor = props[i];
30
+ descriptor.enumerable = descriptor.enumerable || false;
31
+ descriptor.configurable = true;
32
+ if ("value" in descriptor) descriptor.writable = true;
33
+ Object.defineProperty(target, descriptor.key, descriptor);
34
+ }
35
+ }
36
+ function _create_class(Constructor, protoProps, staticProps) {
37
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
38
+ if (staticProps) _defineProperties(Constructor, staticProps);
39
+ return Constructor;
40
+ }
41
+ function _define_property(obj, key, value) {
42
+ if (key in obj) {
43
+ Object.defineProperty(obj, key, {
44
+ value: value,
45
+ enumerable: true,
46
+ configurable: true,
47
+ writable: true
48
+ });
49
+ } else {
50
+ obj[key] = value;
51
+ }
52
+ return obj;
53
+ }
54
+ function _interop_require_default(obj) {
55
+ return obj && obj.__esModule ? obj : {
56
+ default: obj
57
+ };
58
+ }
59
+ function _iterable_to_array(iter) {
60
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
61
+ }
62
+ function _non_iterable_spread() {
63
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
64
+ }
65
+ function _to_consumable_array(arr) {
66
+ return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
67
+ }
68
+ function _unsupported_iterable_to_array(o, minLen) {
69
+ if (!o) return;
70
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
71
+ var n = Object.prototype.toString.call(o).slice(8, -1);
72
+ if (n === "Object" && o.constructor) n = o.constructor.name;
73
+ if (n === "Map" || n === "Set") return Array.from(n);
74
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
75
+ }
76
+ var first = _necessary.arrayUtilities.first, query = _database.default.query, command = _database.default.execute;
77
+ var Statement = /*#__PURE__*/ function() {
78
+ function Statement(connection, sql, query, parameters, oneHandler, noneHandler, manyHandler, elseHandler, firstHandler, errorHandler, successHandler) {
79
+ var _this = this;
80
+ _class_call_check(this, Statement);
81
+ _define_property(this, "queryHandler", function(error, rows) {
82
+ if (error) {
83
+ _this.errorHandler(error);
84
+ return;
85
+ }
86
+ var rowsLength = rows.length;
87
+ if (false) {
88
+ ///
89
+ } else if (_this.noneHandler !== null) {
90
+ if (rowsLength === 0) {
91
+ _this.noneHandler();
92
+ return;
93
+ }
94
+ } else if (_this.firstHandler !== null) {
95
+ if (rowsLength > 0) {
96
+ var firstRow = first(rows), row = firstRow, object = _this.objectFromRow(row);
97
+ _this.firstHandler(object);
98
+ return;
99
+ }
100
+ } else if (_this.oneHandler !== null) {
101
+ if (rowsLength === 1) {
102
+ var firstRow1 = first(rows), row1 = firstRow1, object1 = _this.objectFromRow(row1);
103
+ _this.oneHandler(object1);
104
+ return;
105
+ }
106
+ } else if (_this.manyHandler !== null) {
107
+ var objects = rows.map(function(row) {
108
+ return _this.objectFromRow(row);
109
+ });
110
+ _this.manyHandler(objects);
111
+ return;
112
+ }
113
+ _this.elseHandler(rows);
114
+ });
115
+ _define_property(this, "commandHandler", function(error) {
116
+ if (error) {
117
+ _this.errorHandler(error);
118
+ return;
119
+ }
120
+ _this.successHandler();
121
+ });
122
+ this.connection = connection;
123
+ this.sql = sql;
124
+ this.query = query;
125
+ this.parameters = parameters;
126
+ this.oneHandler = oneHandler;
127
+ this.noneHandler = noneHandler;
128
+ this.manyHandler = manyHandler;
129
+ this.elseHandler = elseHandler;
130
+ this.firstHandler = firstHandler;
131
+ this.errorHandler = errorHandler;
132
+ this.successHandler = successHandler;
133
+ }
134
+ _create_class(Statement, [
135
+ {
136
+ key: "getConnection",
137
+ value: function getConnection() {
138
+ return this.connection;
139
+ }
140
+ },
141
+ {
142
+ key: "getSQL",
143
+ value: function getSQL() {
144
+ return this.sql;
145
+ }
146
+ },
147
+ {
148
+ key: "isQuery",
149
+ value: function isQuery() {
150
+ return this.query;
151
+ }
152
+ },
153
+ {
154
+ key: "getParameters",
155
+ value: function getParameters() {
156
+ return this.parameters;
157
+ }
158
+ },
159
+ {
160
+ key: "getOneHandler",
161
+ value: function getOneHandler() {
162
+ return this.oneHandler;
163
+ }
164
+ },
165
+ {
166
+ key: "getNoneHandler",
167
+ value: function getNoneHandler() {
168
+ return this.noneHandler;
169
+ }
170
+ },
171
+ {
172
+ key: "getManyHandler",
173
+ value: function getManyHandler() {
174
+ return this.manyHandler;
175
+ }
176
+ },
177
+ {
178
+ key: "getElseHandler",
179
+ value: function getElseHandler() {
180
+ return this.elseHandler;
181
+ }
182
+ },
183
+ {
184
+ key: "getFirstHandler",
185
+ value: function getFirstHandler() {
186
+ return this.firstHandler;
187
+ }
188
+ },
189
+ {
190
+ key: "getErrorHandler",
191
+ value: function getErrorHandler() {
192
+ return this.errorHandler;
193
+ }
194
+ },
195
+ {
196
+ key: "getSuccessHandler",
197
+ value: function getSuccessHandler() {
198
+ return this.successHandler;
199
+ }
200
+ },
201
+ {
202
+ key: "setSQL",
203
+ value: function setSQL(sql) {
204
+ this.sql = sql;
205
+ }
206
+ },
207
+ {
208
+ key: "setQuery",
209
+ value: function setQuery(query) {
210
+ this.query = query;
211
+ }
212
+ },
213
+ {
214
+ key: "setParameters",
215
+ value: function setParameters(parameters) {
216
+ this.parameters = parameters;
217
+ }
218
+ },
219
+ {
220
+ key: "one",
221
+ value: function one(oneHandler) {
222
+ this.oneHandler = oneHandler;
223
+ return this;
224
+ }
225
+ },
226
+ {
227
+ key: "none",
228
+ value: function none(noneHandler) {
229
+ this.noneHandler = noneHandler;
230
+ return this;
231
+ }
232
+ },
233
+ {
234
+ key: "many",
235
+ value: function many(manyHandler) {
236
+ this.manyHandler = manyHandler;
237
+ return this;
238
+ }
239
+ },
240
+ {
241
+ key: "else",
242
+ value: function _else(elseHandler) {
243
+ this.elseHandler = elseHandler;
244
+ return this;
245
+ }
246
+ },
247
+ {
248
+ key: "first",
249
+ value: function first(firstHandler) {
250
+ this.firstHandler = firstHandler;
251
+ return this;
252
+ }
253
+ },
254
+ {
255
+ key: "catch",
256
+ value: function _catch(errorHandler) {
257
+ this.errorHandler = errorHandler;
258
+ return this;
259
+ }
260
+ },
261
+ {
262
+ key: "success",
263
+ value: function success(successHandler) {
264
+ this.successHandler = successHandler;
265
+ return this;
266
+ }
267
+ },
268
+ {
269
+ key: "set",
270
+ value: function set(objectOrArray) {
271
+ for(var _len = arguments.length, parameters = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
272
+ parameters[_key - 1] = arguments[_key];
273
+ }
274
+ var assignments;
275
+ var objectOrArrayIsArray = Array.isArray(objectOrArray);
276
+ if (objectOrArrayIsArray) {
277
+ var array = objectOrArray, strings = array; ///
278
+ assignments = this.assignmentsFromStringsAndParameters(strings, parameters);
279
+ } else {
280
+ var object = objectOrArray; ///
281
+ assignments = this.assignmentsFromObject(object); ///
282
+ }
283
+ this.sql = " ".concat(this.sql, " SET ").concat(assignments);
284
+ return this;
285
+ }
286
+ },
287
+ {
288
+ key: "where",
289
+ value: function where(objectOrArray) {
290
+ for(var _len = arguments.length, parameters = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
291
+ parameters[_key - 1] = arguments[_key];
292
+ }
293
+ var clause;
294
+ var objectOrArrayIsArray = Array.isArray(objectOrArray);
295
+ if (objectOrArrayIsArray) {
296
+ var array = objectOrArray, strings = array; ///
297
+ clause = this.clauseFromStringsAndParameters(strings, parameters);
298
+ } else {
299
+ var object = objectOrArray; ///
300
+ clause = this.clauseFromObject(object); ///
301
+ }
302
+ this.sql = " ".concat(this.sql, " WHERE ").concat(clause);
303
+ return this;
304
+ }
305
+ },
306
+ {
307
+ key: "values",
308
+ value: function values(objectOrArray) {
309
+ for(var _len = arguments.length, parameters = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
310
+ parameters[_key - 1] = arguments[_key];
311
+ }
312
+ var objectOrArrayIsArray = Array.isArray(objectOrArray);
313
+ var columnsAndValues;
314
+ if (objectOrArrayIsArray) {
315
+ var array = objectOrArray, strings = array; ///
316
+ columnsAndValues = this.columnsAndValuesFromStringsAndParameters(strings, parameters);
317
+ } else {
318
+ var object = objectOrArray; ///
319
+ columnsAndValues = this.columnsAndValuesFromObject(object);
320
+ }
321
+ this.sql = "".concat(this.sql, " ").concat(columnsAndValues);
322
+ return this;
323
+ }
324
+ },
325
+ {
326
+ key: "objectFromRow",
327
+ value: function objectFromRow(row) {
328
+ var _this = this;
329
+ var values = Object.values(row), columns = Object.keys(row), object = columns.reduce(function(object, column, index) {
330
+ var key = _this.keyFromColumn(column), value = values[index];
331
+ object[key] = value;
332
+ return object;
333
+ }, {});
334
+ return object;
335
+ }
336
+ },
337
+ {
338
+ key: "clauseFromObject",
339
+ value: function clauseFromObject(object) {
340
+ var _this = this;
341
+ var keys = Object.keys(object), columns = keys.map(function(key) {
342
+ return _this.columnFromKey(key);
343
+ }), parameters = Object.values(object), firstIndex = 0, clause = columns.reduce(function(clause, column, index) {
344
+ var placeholder = _this.placeholder();
345
+ clause = index === firstIndex ? "".concat(column, "=").concat(placeholder) : " ".concat(clause, " AND ").concat(column, "=").concat(placeholder);
346
+ return clause;
347
+ }, _constants.EMPTY_STRING);
348
+ this.parameters = _to_consumable_array(this.parameters).concat(_to_consumable_array(parameters));
349
+ return clause;
350
+ }
351
+ },
352
+ {
353
+ key: "assignmentsFromObject",
354
+ value: function assignmentsFromObject(object) {
355
+ var _this = this;
356
+ var keys = Object.keys(object), columns = keys.map(function(key) {
357
+ return _this.columnFromKey(key);
358
+ }), parameters = Object.values(object), firstIndex = 0, assignments = columns.reduce(function(assignments, column, index) {
359
+ var placeholder = _this.placeholder();
360
+ assignments = index === firstIndex ? "".concat(column, "=").concat(placeholder) : " ".concat(assignments, ", ").concat(column, "=").concat(placeholder);
361
+ return assignments;
362
+ }, _constants.EMPTY_STRING);
363
+ this.parameters = _to_consumable_array(this.parameters).concat(_to_consumable_array(parameters));
364
+ return assignments;
365
+ }
366
+ },
367
+ {
368
+ key: "columnsAndValuesFromObject",
369
+ value: function columnsAndValuesFromObject(object) {
370
+ var _this = this;
371
+ var keys = Object.keys(object), columns = keys.map(function(key) {
372
+ return _this.columnFromKey(key);
373
+ }), parameters = Object.values(object), firstIndex = 0, values = columns.reduce(function(values, column, index) {
374
+ var placeholder = _this.placeholder();
375
+ values = index === firstIndex ? "".concat(placeholder) : " ".concat(values, ", ").concat(placeholder);
376
+ return values;
377
+ }, _constants.EMPTY_STRING), columnsAndValues = "(".concat(columns, ") VALUES (").concat(values, ")");
378
+ this.parameters = _to_consumable_array(this.parameters).concat(_to_consumable_array(parameters));
379
+ return columnsAndValues;
380
+ }
381
+ },
382
+ {
383
+ key: "clauseFromStringsAndParameters",
384
+ value: function clauseFromStringsAndParameters(strings, parameters) {
385
+ var _this = this;
386
+ var stringsLength = strings.length, lastIndex = stringsLength - 1, clause = strings.reduce(function(clause, string, index) {
387
+ if (index < lastIndex) {
388
+ var placeholder = _this.placeholder();
389
+ clause = "".concat(clause).concat(string).concat(placeholder);
390
+ } else {
391
+ clause = "".concat(clause).concat(string);
392
+ }
393
+ return clause;
394
+ }, _constants.EMPTY_STRING);
395
+ this.parameters = _to_consumable_array(this.parameters).concat(_to_consumable_array(parameters));
396
+ return clause;
397
+ }
398
+ },
399
+ {
400
+ key: "assignmentsFromStringsAndParameters",
401
+ value: function assignmentsFromStringsAndParameters(strings, parameters) {
402
+ var _this = this;
403
+ var stringsLength = strings.length, lastIndex = stringsLength - 1, assignments = strings.reduce(function(assignments, string, index) {
404
+ if (index < lastIndex) {
405
+ var placeholder = _this.placeholder();
406
+ assignments = "".concat(assignments).concat(string).concat(placeholder);
407
+ } else {
408
+ assignments = "".concat(assignments).concat(string);
409
+ }
410
+ return assignments;
411
+ }, _constants.EMPTY_STRING);
412
+ this.parameters = _to_consumable_array(this.parameters).concat(_to_consumable_array(parameters));
413
+ return assignments;
414
+ }
415
+ },
416
+ {
417
+ key: "columnsAndValuesFromStringsAndParameters",
418
+ value: function columnsAndValuesFromStringsAndParameters(strings, parameters) {
419
+ var _this = this;
420
+ var stringsLength = strings.length, lastIndex = stringsLength - 1, columnsAndValues = strings.reduce(function(columnsAndValues, string, index) {
421
+ if (index < lastIndex) {
422
+ var placeholder = _this.placeholder();
423
+ columnsAndValues = "".concat(columnsAndValues).concat(string).concat(placeholder);
424
+ } else {
425
+ columnsAndValues = "".concat(columnsAndValues).concat(string);
426
+ }
427
+ return columnsAndValues;
428
+ }, _constants.EMPTY_STRING);
429
+ this.parameters = _to_consumable_array(this.parameters).concat(_to_consumable_array(parameters));
430
+ return columnsAndValues;
431
+ }
432
+ },
433
+ {
434
+ key: "execute",
435
+ value: function execute() {
436
+ this.query ? query.apply(void 0, [
437
+ this.connection,
438
+ this.sql
439
+ ].concat(_to_consumable_array(this.parameters), [
440
+ this.queryHandler
441
+ ])) : command.apply(void 0, [
442
+ this.connection,
443
+ this.sql
444
+ ].concat(_to_consumable_array(this.parameters), [
445
+ this.commandHandler
446
+ ]));
447
+ }
448
+ }
449
+ ], [
450
+ {
451
+ key: "fromConnection",
452
+ value: function fromConnection(Class, connection) {
453
+ var sql = null, query = false, parameters = [], oneHandler = null, noneHandler = null, manyHandler = null, elseHandler = null, firstHandler = null, errorHandler = null, successHandler = null, statement = new Class(connection, sql, query, parameters, oneHandler, noneHandler, manyHandler, elseHandler, firstHandler, errorHandler, successHandler);
454
+ return statement;
455
+ }
456
+ }
457
+ ]);
458
+ return Statement;
459
+ }();
460
+
461
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zdGF0ZW1lbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgZGF0YWJhc2UgZnJvbSBcIi4vZGF0YWJhc2VcIjtcblxuaW1wb3J0IHsgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IHsgZmlyc3QgfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyBxdWVyeSwgZXhlY3V0ZTogY29tbWFuZCB9ID0gZGF0YWJhc2U7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0YXRlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbm5lY3Rpb24sIHNxbCwgcXVlcnksIHBhcmFtZXRlcnMsIG9uZUhhbmRsZXIsIG5vbmVIYW5kbGVyLCBtYW55SGFuZGxlciwgZWxzZUhhbmRsZXIsIGZpcnN0SGFuZGxlciwgZXJyb3JIYW5kbGVyLCBzdWNjZXNzSGFuZGxlcikge1xuICAgIHRoaXMuY29ubmVjdGlvbiA9IGNvbm5lY3Rpb247XG4gICAgdGhpcy5zcWwgPSBzcWw7XG4gICAgdGhpcy5xdWVyeSA9IHF1ZXJ5O1xuICAgIHRoaXMucGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7XG4gICAgdGhpcy5vbmVIYW5kbGVyID0gb25lSGFuZGxlcjtcbiAgICB0aGlzLm5vbmVIYW5kbGVyID0gbm9uZUhhbmRsZXI7XG4gICAgdGhpcy5tYW55SGFuZGxlciA9IG1hbnlIYW5kbGVyO1xuICAgIHRoaXMuZWxzZUhhbmRsZXIgPSBlbHNlSGFuZGxlcjtcbiAgICB0aGlzLmZpcnN0SGFuZGxlciA9IGZpcnN0SGFuZGxlcjtcbiAgICB0aGlzLmVycm9ySGFuZGxlciA9IGVycm9ySGFuZGxlcjtcbiAgICB0aGlzLnN1Y2Nlc3NIYW5kbGVyID0gc3VjY2Vzc0hhbmRsZXI7XG4gIH1cblxuICBnZXRDb25uZWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb247XG4gIH1cblxuICBnZXRTUUwoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3FsO1xuICB9XG5cbiAgaXNRdWVyeSgpIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1ldGVycztcbiAgfVxuXG4gIGdldE9uZUhhbmRsZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMub25lSGFuZGxlcjtcbiAgfVxuXG4gIGdldE5vbmVIYW5kbGVyKCkge1xuICAgIHJldHVybiB0aGlzLm5vbmVIYW5kbGVyO1xuICB9XG5cbiAgZ2V0TWFueUhhbmRsZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMubWFueUhhbmRsZXI7XG4gIH1cblxuICBnZXRFbHNlSGFuZGxlcigpIHtcbiAgICByZXR1cm4gdGhpcy5lbHNlSGFuZGxlcjtcbiAgfVxuXG4gIGdldEZpcnN0SGFuZGxlcigpIHtcbiAgICByZXR1cm4gdGhpcy5maXJzdEhhbmRsZXI7XG4gIH1cblxuICBnZXRFcnJvckhhbmRsZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyO1xuICB9XG5cbiAgZ2V0U3VjY2Vzc0hhbmRsZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3VjY2Vzc0hhbmRsZXI7XG4gIH1cblxuICBzZXRTUUwoc3FsKSB7XG4gICAgdGhpcy5zcWwgPSBzcWw7XG4gIH1cblxuICBzZXRRdWVyeShxdWVyeSkge1xuICAgIHRoaXMucXVlcnkgPSBxdWVyeTtcbiAgfVxuXG4gIHNldFBhcmFtZXRlcnMocGFyYW1ldGVycykge1xuICAgIHRoaXMucGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7XG4gIH1cblxuICBvbmUob25lSGFuZGxlcikge1xuICAgIHRoaXMub25lSGFuZGxlciA9IG9uZUhhbmRsZXI7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG5vbmUobm9uZUhhbmRsZXIpIHtcbiAgICB0aGlzLm5vbmVIYW5kbGVyID0gbm9uZUhhbmRsZXI7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG1hbnkobWFueUhhbmRsZXIpIHtcbiAgICB0aGlzLm1hbnlIYW5kbGVyID0gbWFueUhhbmRsZXI7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGVsc2UoZWxzZUhhbmRsZXIpIHtcbiAgICB0aGlzLmVsc2VIYW5kbGVyID0gZWxzZUhhbmRsZXI7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGZpcnN0KGZpcnN0SGFuZGxlcikge1xuICAgIHRoaXMuZmlyc3RIYW5kbGVyID0gZmlyc3RIYW5kbGVyO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBjYXRjaChlcnJvckhhbmRsZXIpIHtcbiAgICB0aGlzLmVycm9ySGFuZGxlciA9IGVycm9ySGFuZGxlcjtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3VjY2VzcyhzdWNjZXNzSGFuZGxlcikge1xuICAgIHRoaXMuc3VjY2Vzc0hhbmRsZXIgPSBzdWNjZXNzSGFuZGxlcjtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0KG9iamVjdE9yQXJyYXksIC4uLnBhcmFtZXRlcnMpIHtcbiAgICBsZXQgYXNzaWdubWVudHM7XG5cbiAgICBjb25zdCBvYmplY3RPckFycmF5SXNBcnJheSA9IEFycmF5LmlzQXJyYXkob2JqZWN0T3JBcnJheSk7XG5cbiAgICBpZiAob2JqZWN0T3JBcnJheUlzQXJyYXkpIHtcbiAgICAgIGNvbnN0IGFycmF5ID0gb2JqZWN0T3JBcnJheSwgIC8vL1xuICAgICAgICAgICAgc3RyaW5ncyA9IGFycmF5OyAgLy8vXG5cbiAgICAgIGFzc2lnbm1lbnRzID0gdGhpcy5hc3NpZ25tZW50c0Zyb21TdHJpbmdzQW5kUGFyYW1ldGVycyhzdHJpbmdzLCBwYXJhbWV0ZXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgb2JqZWN0ID0gb2JqZWN0T3JBcnJheTsgIC8vL1xuXG4gICAgICBhc3NpZ25tZW50cyA9IHRoaXMuYXNzaWdubWVudHNGcm9tT2JqZWN0KG9iamVjdCk7IC8vL1xuICAgIH1cblxuICAgIHRoaXMuc3FsID0gYCAke3RoaXMuc3FsfSBTRVQgJHthc3NpZ25tZW50c31gO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB3aGVyZShvYmplY3RPckFycmF5LCAuLi5wYXJhbWV0ZXJzKSB7XG4gICAgbGV0IGNsYXVzZTtcblxuICAgIGNvbnN0IG9iamVjdE9yQXJyYXlJc0FycmF5ID0gQXJyYXkuaXNBcnJheShvYmplY3RPckFycmF5KTtcblxuICAgIGlmIChvYmplY3RPckFycmF5SXNBcnJheSkge1xuICAgICAgY29uc3QgYXJyYXkgPSBvYmplY3RPckFycmF5LCAgLy8vXG4gICAgICAgICAgICBzdHJpbmdzID0gYXJyYXk7ICAvLy9cblxuICAgICAgY2xhdXNlID0gdGhpcy5jbGF1c2VGcm9tU3RyaW5nc0FuZFBhcmFtZXRlcnMoc3RyaW5ncywgcGFyYW1ldGVycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG9iamVjdCA9IG9iamVjdE9yQXJyYXk7ICAvLy9cblxuICAgICAgY2xhdXNlID0gdGhpcy5jbGF1c2VGcm9tT2JqZWN0KG9iamVjdCk7IC8vL1xuICAgIH1cblxuICAgIHRoaXMuc3FsID0gYCAke3RoaXMuc3FsfSBXSEVSRSAke2NsYXVzZX1gO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB2YWx1ZXMob2JqZWN0T3JBcnJheSwgLi4ucGFyYW1ldGVycykge1xuICAgIGNvbnN0IG9iamVjdE9yQXJyYXlJc0FycmF5ID0gQXJyYXkuaXNBcnJheShvYmplY3RPckFycmF5KTtcblxuICAgIGxldCBjb2x1bW5zQW5kVmFsdWVzO1xuXG4gICAgaWYgKG9iamVjdE9yQXJyYXlJc0FycmF5KSB7XG4gICAgICBjb25zdCBhcnJheSA9IG9iamVjdE9yQXJyYXksICAvLy9cbiAgICAgICAgICAgIHN0cmluZ3MgPSBhcnJheTsgIC8vL1xuXG4gICAgICBjb2x1bW5zQW5kVmFsdWVzID0gdGhpcy5jb2x1bW5zQW5kVmFsdWVzRnJvbVN0cmluZ3NBbmRQYXJhbWV0ZXJzKHN0cmluZ3MsIHBhcmFtZXRlcnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBvYmplY3QgPSBvYmplY3RPckFycmF5OyAgLy8vXG5cbiAgICAgIGNvbHVtbnNBbmRWYWx1ZXMgPSB0aGlzLmNvbHVtbnNBbmRWYWx1ZXNGcm9tT2JqZWN0KG9iamVjdCk7XG4gICAgfVxuXG4gICAgdGhpcy5zcWwgPSBgJHt0aGlzLnNxbH0gJHtjb2x1bW5zQW5kVmFsdWVzfWA7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG9iamVjdEZyb21Sb3cocm93KSB7XG4gICAgY29uc3QgdmFsdWVzID0gT2JqZWN0LnZhbHVlcyhyb3cpLFxuICAgICAgICAgIGNvbHVtbnMgPSBPYmplY3Qua2V5cyhyb3cpLCAvLy9cbiAgICAgICAgICBvYmplY3QgPSBjb2x1bW5zLnJlZHVjZSgob2JqZWN0LCBjb2x1bW4sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSB0aGlzLmtleUZyb21Db2x1bW4oY29sdW1uKSxcbiAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWVzW2luZGV4XTtcblxuICAgICAgICAgICAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcblxuICAgICAgICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICAgICAgICB9LCB7fSk7XG5cbiAgICByZXR1cm4gb2JqZWN0O1xuICB9XG5cbiAgY2xhdXNlRnJvbU9iamVjdChvYmplY3QpIHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KSxcbiAgICAgICAgICBjb2x1bW5zID0ga2V5cy5tYXAoKGtleSkgPT4gdGhpcy5jb2x1bW5Gcm9tS2V5KGtleSkpLFxuICAgICAgICAgIHBhcmFtZXRlcnMgPSBPYmplY3QudmFsdWVzKG9iamVjdCksIC8vL1xuICAgICAgICAgIGZpcnN0SW5kZXggPSAwLFxuICAgICAgICAgIGNsYXVzZSA9IGNvbHVtbnMucmVkdWNlKChjbGF1c2UsIGNvbHVtbiwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gdGhpcy5wbGFjZWhvbGRlcigpO1xuXG4gICAgICAgICAgICBjbGF1c2UgPSAoaW5kZXggPT09IGZpcnN0SW5kZXgpID9cbiAgICAgICAgICAgICAgICBgJHtjb2x1bW59PSR7cGxhY2Vob2xkZXJ9YCA6XG4gICAgICAgICAgICAgICAgYCAke2NsYXVzZX0gQU5EICR7Y29sdW1ufT0ke3BsYWNlaG9sZGVyfWA7XG5cbiAgICAgICAgICAgIHJldHVybiBjbGF1c2U7XG4gICAgICAgICAgfSwgRU1QVFlfU1RSSU5HKTtcblxuICAgIHRoaXMucGFyYW1ldGVycyA9IFtcbiAgICAgIC4uLnRoaXMucGFyYW1ldGVycyxcbiAgICAgIC4uLnBhcmFtZXRlcnNcbiAgICBdO1xuXG4gICAgcmV0dXJuIGNsYXVzZTtcbiAgfVxuXG4gIGFzc2lnbm1lbnRzRnJvbU9iamVjdChvYmplY3QpIHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KSxcbiAgICAgICAgICBjb2x1bW5zID0ga2V5cy5tYXAoKGtleSkgPT4gdGhpcy5jb2x1bW5Gcm9tS2V5KGtleSkpLFxuICAgICAgICAgIHBhcmFtZXRlcnMgPSBPYmplY3QudmFsdWVzKG9iamVjdCksIC8vL1xuICAgICAgICAgIGZpcnN0SW5kZXggPSAwLFxuICAgICAgICAgIGFzc2lnbm1lbnRzID0gY29sdW1ucy5yZWR1Y2UoKGFzc2lnbm1lbnRzLCBjb2x1bW4sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwbGFjZWhvbGRlciA9IHRoaXMucGxhY2Vob2xkZXIoKTtcblxuICAgICAgICAgICAgYXNzaWdubWVudHMgPSAoaW5kZXggPT09IGZpcnN0SW5kZXgpID9cbiAgICAgICAgICAgICAgICBgJHtjb2x1bW59PSR7cGxhY2Vob2xkZXJ9YCA6XG4gICAgICAgICAgICAgICAgYCAke2Fzc2lnbm1lbnRzfSwgJHtjb2x1bW59PSR7cGxhY2Vob2xkZXJ9YDtcblxuICAgICAgICAgICAgcmV0dXJuIGFzc2lnbm1lbnRzO1xuICAgICAgICAgIH0sIEVNUFRZX1NUUklORyk7XG5cbiAgICB0aGlzLnBhcmFtZXRlcnMgPSBbXG4gICAgICAuLi50aGlzLnBhcmFtZXRlcnMsXG4gICAgICAuLi5wYXJhbWV0ZXJzXG4gICAgXTtcblxuICAgIHJldHVybiBhc3NpZ25tZW50cztcbiAgfVxuXG4gIGNvbHVtbnNBbmRWYWx1ZXNGcm9tT2JqZWN0KG9iamVjdCkge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpLFxuICAgICAgICAgIGNvbHVtbnMgPSBrZXlzLm1hcCgoa2V5KSA9PiB0aGlzLmNvbHVtbkZyb21LZXkoa2V5KSksXG4gICAgICAgICAgcGFyYW1ldGVycyA9IE9iamVjdC52YWx1ZXMob2JqZWN0KSwgLy8vXG4gICAgICAgICAgZmlyc3RJbmRleCA9IDAsXG4gICAgICAgICAgdmFsdWVzID0gY29sdW1ucy5yZWR1Y2UoKHZhbHVlcywgY29sdW1uLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGxhY2Vob2xkZXIgPSB0aGlzLnBsYWNlaG9sZGVyKCk7XG5cbiAgICAgICAgICAgIHZhbHVlcyA9IChpbmRleCA9PT0gZmlyc3RJbmRleCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgYCR7cGxhY2Vob2xkZXJ9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICBgICR7dmFsdWVzfSwgJHtwbGFjZWhvbGRlcn1gO1xuXG4gICAgICAgICAgICByZXR1cm4gdmFsdWVzO1xuICAgICAgICAgIH0sIEVNUFRZX1NUUklORyksXG4gICAgICAgICAgY29sdW1uc0FuZFZhbHVlcyA9IGAoJHtjb2x1bW5zfSkgVkFMVUVTICgke3ZhbHVlc30pYDtcblxuICAgIHRoaXMucGFyYW1ldGVycyA9IFtcbiAgICAgIC4uLnRoaXMucGFyYW1ldGVycyxcbiAgICAgIC4uLnBhcmFtZXRlcnNcbiAgICBdO1xuXG4gICAgcmV0dXJuIGNvbHVtbnNBbmRWYWx1ZXM7XG4gIH1cblxuICBjbGF1c2VGcm9tU3RyaW5nc0FuZFBhcmFtZXRlcnMoc3RyaW5ncywgcGFyYW1ldGVycykge1xuICAgIGNvbnN0IHN0cmluZ3NMZW5ndGggPSBzdHJpbmdzLmxlbmd0aCxcbiAgICAgICAgICBsYXN0SW5kZXggPSBzdHJpbmdzTGVuZ3RoIC0gMSxcbiAgICAgICAgICBjbGF1c2UgPSBzdHJpbmdzLnJlZHVjZSgoY2xhdXNlLCBzdHJpbmcsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPCBsYXN0SW5kZXgpIHtcbiAgICAgICAgICAgICAgY29uc3QgcGxhY2Vob2xkZXIgPSB0aGlzLnBsYWNlaG9sZGVyKCk7XG5cbiAgICAgICAgICAgICAgY2xhdXNlID0gYCR7Y2xhdXNlfSR7c3RyaW5nfSR7cGxhY2Vob2xkZXJ9YFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY2xhdXNlID0gYCR7Y2xhdXNlfSR7c3RyaW5nfWA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjbGF1c2U7XG4gICAgICAgICAgfSwgRU1QVFlfU1RSSU5HKTtcblxuICAgIHRoaXMucGFyYW1ldGVycyA9IFtcbiAgICAgIC4uLnRoaXMucGFyYW1ldGVycyxcbiAgICAgIC4uLnBhcmFtZXRlcnNcbiAgICBdO1xuXG4gICAgcmV0dXJuIGNsYXVzZTtcbiAgfVxuXG4gIGFzc2lnbm1lbnRzRnJvbVN0cmluZ3NBbmRQYXJhbWV0ZXJzKHN0cmluZ3MsIHBhcmFtZXRlcnMpIHtcbiAgICBjb25zdCBzdHJpbmdzTGVuZ3RoID0gc3RyaW5ncy5sZW5ndGgsXG4gICAgICAgICAgbGFzdEluZGV4ID0gc3RyaW5nc0xlbmd0aCAtIDEsXG4gICAgICAgICAgYXNzaWdubWVudHMgPSBzdHJpbmdzLnJlZHVjZSgoYXNzaWdubWVudHMsIHN0cmluZywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChpbmRleCA8IGxhc3RJbmRleCkge1xuICAgICAgICAgICAgICBjb25zdCBwbGFjZWhvbGRlciA9IHRoaXMucGxhY2Vob2xkZXIoKTtcblxuICAgICAgICAgICAgICBhc3NpZ25tZW50cyA9IGAke2Fzc2lnbm1lbnRzfSR7c3RyaW5nfSR7cGxhY2Vob2xkZXJ9YFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYXNzaWdubWVudHMgPSBgJHthc3NpZ25tZW50c30ke3N0cmluZ31gO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gYXNzaWdubWVudHM7XG4gICAgICAgICAgfSwgRU1QVFlfU1RSSU5HKTtcblxuICAgIHRoaXMucGFyYW1ldGVycyA9IFtcbiAgICAgIC4uLnRoaXMucGFyYW1ldGVycyxcbiAgICAgIC4uLnBhcmFtZXRlcnNcbiAgICBdO1xuXG4gICAgcmV0dXJuIGFzc2lnbm1lbnRzO1xuICB9XG5cbiAgY29sdW1uc0FuZFZhbHVlc0Zyb21TdHJpbmdzQW5kUGFyYW1ldGVycyhzdHJpbmdzLCBwYXJhbWV0ZXJzKSB7XG4gICAgY29uc3Qgc3RyaW5nc0xlbmd0aCA9IHN0cmluZ3MubGVuZ3RoLFxuICAgICAgICAgIGxhc3RJbmRleCA9IHN0cmluZ3NMZW5ndGggLSAxLFxuICAgICAgICAgIGNvbHVtbnNBbmRWYWx1ZXMgPSBzdHJpbmdzLnJlZHVjZSgoY29sdW1uc0FuZFZhbHVlcywgc3RyaW5nLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKGluZGV4IDwgbGFzdEluZGV4KSB7XG4gICAgICAgICAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gdGhpcy5wbGFjZWhvbGRlcigpO1xuXG4gICAgICAgICAgICAgIGNvbHVtbnNBbmRWYWx1ZXMgPSBgJHtjb2x1bW5zQW5kVmFsdWVzfSR7c3RyaW5nfSR7cGxhY2Vob2xkZXJ9YFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29sdW1uc0FuZFZhbHVlcyA9IGAke2NvbHVtbnNBbmRWYWx1ZXN9JHtzdHJpbmd9YDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNvbHVtbnNBbmRWYWx1ZXM7XG4gICAgICAgICAgfSwgRU1QVFlfU1RSSU5HKTtcblxuICAgIHRoaXMucGFyYW1ldGVycyA9IFtcbiAgICAgIC4uLnRoaXMucGFyYW1ldGVycyxcbiAgICAgIC4uLnBhcmFtZXRlcnNcbiAgICBdO1xuXG4gICAgcmV0dXJuIGNvbHVtbnNBbmRWYWx1ZXM7XG4gIH1cblxuICBleGVjdXRlKCkge1xuICAgIHRoaXMucXVlcnkgP1xuICAgICAgcXVlcnkodGhpcy5jb25uZWN0aW9uLCB0aGlzLnNxbCwgLi4udGhpcy5wYXJhbWV0ZXJzLCB0aGlzLnF1ZXJ5SGFuZGxlcikgOlxuICAgICAgICBjb21tYW5kKHRoaXMuY29ubmVjdGlvbiwgdGhpcy5zcWwsIC4uLnRoaXMucGFyYW1ldGVycywgdGhpcy5jb21tYW5kSGFuZGxlcik7XG4gIH1cblxuICBxdWVyeUhhbmRsZXIgPSAoZXJyb3IsIHJvd3MpID0+IHtcbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3JIYW5kbGVyKGVycm9yKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJvd3NMZW5ndGggPSByb3dzLmxlbmd0aDtcblxuICAgIGlmIChmYWxzZSkge1xuICAgICAgLy8vXG4gICAgfSBlbHNlIGlmICh0aGlzLm5vbmVIYW5kbGVyICE9PSBudWxsKSB7XG4gICAgICBpZiAocm93c0xlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLm5vbmVIYW5kbGVyKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5maXJzdEhhbmRsZXIgIT09IG51bGwpIHtcbiAgICAgIGlmIChyb3dzTGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBmaXJzdFJvdyA9IGZpcnN0KHJvd3MpLFxuICAgICAgICAgICAgICByb3cgPSBmaXJzdFJvdywgLy8vXG4gICAgICAgICAgICAgIG9iamVjdCA9IHRoaXMub2JqZWN0RnJvbVJvdyhyb3cpO1xuXG4gICAgICAgIHRoaXMuZmlyc3RIYW5kbGVyKG9iamVjdCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5vbmVIYW5kbGVyICE9PSBudWxsKSB7XG4gICAgICBpZiAocm93c0xlbmd0aCA9PT0gMSkge1xuICAgICAgICBjb25zdCBmaXJzdFJvdyA9IGZpcnN0KHJvd3MpLFxuICAgICAgICAgICAgICByb3cgPSBmaXJzdFJvdywgLy8vXG4gICAgICAgICAgICAgIG9iamVjdCA9IHRoaXMub2JqZWN0RnJvbVJvdyhyb3cpO1xuXG4gICAgICAgIHRoaXMub25lSGFuZGxlcihvYmplY3QpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMubWFueUhhbmRsZXIgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG9iamVjdHMgPSByb3dzLm1hcCgocm93KSA9PiB0aGlzLm9iamVjdEZyb21Sb3cocm93KSk7XG5cbiAgICAgIHRoaXMubWFueUhhbmRsZXIob2JqZWN0cyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmVsc2VIYW5kbGVyKHJvd3MpO1xuICB9XG5cbiAgY29tbWFuZEhhbmRsZXIgPSAoZXJyb3IpID0+IHtcbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3JIYW5kbGVyKGVycm9yKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3VjY2Vzc0hhbmRsZXIoKTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tQ29ubmVjdGlvbihDbGFzcywgY29ubmVjdGlvbikge1xuICAgIGNvbnN0IHNxbCA9IG51bGwsXG4gICAgICAgICAgcXVlcnkgPSBmYWxzZSxcbiAgICAgICAgICBwYXJhbWV0ZXJzID0gW10sXG4gICAgICAgICAgb25lSGFuZGxlciA9IG51bGwsXG4gICAgICAgICAgbm9uZUhhbmRsZXIgPSBudWxsLFxuICAgICAgICAgIG1hbnlIYW5kbGVyID0gbnVsbCxcbiAgICAgICAgICBlbHNlSGFuZGxlciA9IG51bGwsXG4gICAgICAgICAgZmlyc3RIYW5kbGVyID0gbnVsbCxcbiAgICAgICAgICBlcnJvckhhbmRsZXIgPSBudWxsLFxuICAgICAgICAgIHN1Y2Nlc3NIYW5kbGVyID0gbnVsbCxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBuZXcgQ2xhc3MoY29ubmVjdGlvbiwgc3FsLCBxdWVyeSwgcGFyYW1ldGVycywgb25lSGFuZGxlciwgbm9uZUhhbmRsZXIsIG1hbnlIYW5kbGVyLCBlbHNlSGFuZGxlciwgZmlyc3RIYW5kbGVyLCBlcnJvckhhbmRsZXIsIHN1Y2Nlc3NIYW5kbGVyKTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJTdGF0ZW1lbnQiLCJmaXJzdCIsImFycmF5VXRpbGl0aWVzIiwicXVlcnkiLCJkYXRhYmFzZSIsImV4ZWN1dGUiLCJjb21tYW5kIiwiY29ubmVjdGlvbiIsInNxbCIsInBhcmFtZXRlcnMiLCJvbmVIYW5kbGVyIiwibm9uZUhhbmRsZXIiLCJtYW55SGFuZGxlciIsImVsc2VIYW5kbGVyIiwiZmlyc3RIYW5kbGVyIiwiZXJyb3JIYW5kbGVyIiwic3VjY2Vzc0hhbmRsZXIiLCJxdWVyeUhhbmRsZXIiLCJlcnJvciIsInJvd3MiLCJyb3dzTGVuZ3RoIiwibGVuZ3RoIiwiZmlyc3RSb3ciLCJyb3ciLCJvYmplY3QiLCJvYmplY3RGcm9tUm93Iiwib2JqZWN0cyIsIm1hcCIsImNvbW1hbmRIYW5kbGVyIiwiZ2V0Q29ubmVjdGlvbiIsImdldFNRTCIsImlzUXVlcnkiLCJnZXRQYXJhbWV0ZXJzIiwiZ2V0T25lSGFuZGxlciIsImdldE5vbmVIYW5kbGVyIiwiZ2V0TWFueUhhbmRsZXIiLCJnZXRFbHNlSGFuZGxlciIsImdldEZpcnN0SGFuZGxlciIsImdldEVycm9ySGFuZGxlciIsImdldFN1Y2Nlc3NIYW5kbGVyIiwic2V0U1FMIiwic2V0UXVlcnkiLCJzZXRQYXJhbWV0ZXJzIiwib25lIiwibm9uZSIsIm1hbnkiLCJlbHNlIiwiY2F0Y2giLCJzdWNjZXNzIiwic2V0Iiwib2JqZWN0T3JBcnJheSIsImFzc2lnbm1lbnRzIiwib2JqZWN0T3JBcnJheUlzQXJyYXkiLCJBcnJheSIsImlzQXJyYXkiLCJhcnJheSIsInN0cmluZ3MiLCJhc3NpZ25tZW50c0Zyb21TdHJpbmdzQW5kUGFyYW1ldGVycyIsImFzc2lnbm1lbnRzRnJvbU9iamVjdCIsIndoZXJlIiwiY2xhdXNlIiwiY2xhdXNlRnJvbVN0cmluZ3NBbmRQYXJhbWV0ZXJzIiwiY2xhdXNlRnJvbU9iamVjdCIsInZhbHVlcyIsImNvbHVtbnNBbmRWYWx1ZXMiLCJjb2x1bW5zQW5kVmFsdWVzRnJvbVN0cmluZ3NBbmRQYXJhbWV0ZXJzIiwiY29sdW1uc0FuZFZhbHVlc0Zyb21PYmplY3QiLCJPYmplY3QiLCJjb2x1bW5zIiwia2V5cyIsInJlZHVjZSIsImNvbHVtbiIsImluZGV4Iiwia2V5Iiwia2V5RnJvbUNvbHVtbiIsInZhbHVlIiwiY29sdW1uRnJvbUtleSIsImZpcnN0SW5kZXgiLCJwbGFjZWhvbGRlciIsIkVNUFRZX1NUUklORyIsInN0cmluZ3NMZW5ndGgiLCJsYXN0SW5kZXgiLCJzdHJpbmciLCJmcm9tQ29ubmVjdGlvbiIsIkNsYXNzIiwic3RhdGVtZW50Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQVdxQkE7Ozt5QkFUVTsrREFFVjt5QkFFUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTdCLElBQU0sQUFBRUMsUUFBVUMseUJBQWMsQ0FBeEJELE9BQ0FFLFFBQTRCQyxpQkFBUSxDQUFwQ0QsT0FBT0UsQUFBU0MsVUFBWUYsaUJBQVEsQ0FBN0JDO0FBRUEsSUFBQSxBQUFNTCwwQkFBTjthQUFNQSxVQUNQTyxVQUFVLEVBQUVDLEdBQUcsRUFBRUwsS0FBSyxFQUFFTSxVQUFVLEVBQUVDLFVBQVUsRUFB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
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get createTable () {
13
+ return createTable;
14
+ },
15
+ get insertVersion () {
16
+ return insertVersion;
17
+ },
18
+ get selectMaximumVersion () {
19
+ return selectMaximumVersion;
20
+ },
21
+ get showLikeTables () {
22
+ return showLikeTables;
23
+ }
24
+ });
25
+ var _database = require("../database");
26
+ function createTable(connection, sql, callback) {
27
+ (0, _database.execute)(connection, sql, function(error) {
28
+ if (error) {
29
+ var log = connection.getLog();
30
+ log.error("createTable() failed.");
31
+ }
32
+ callback(error);
33
+ });
34
+ }
35
+ function insertVersion(connection, version, sql, callback) {
36
+ (0, _database.execute)(connection, sql, version, function(error) {
37
+ if (error) {
38
+ var log = connection.getLog();
39
+ log.error("insertVersion() failed.");
40
+ }
41
+ callback(error);
42
+ });
43
+ }
44
+ function showLikeTables(connection, sql, callback) {
45
+ (0, _database.query)(connection, sql, function(error, rows) {
46
+ if (error) {
47
+ var log = connection.getLog();
48
+ log.error("showLikeTables() failed.");
49
+ }
50
+ callback(error, rows);
51
+ });
52
+ }
53
+ function selectMaximumVersion(connection, sql, callback) {
54
+ (0, _database.query)(connection, sql, function(error, rows) {
55
+ if (error) {
56
+ var log = connection.getLog();
57
+ log.error("selectMaximumVersion() failed.");
58
+ }
59
+ callback(error, rows);
60
+ });
61
+ }
62
+
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90YWJsZS9taWdyYXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IHF1ZXJ5LCBleGVjdXRlIH0gZnJvbSBcIi4uL2RhdGFiYXNlXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUYWJsZShjb25uZWN0aW9uLCBzcWwsIGNhbGxiYWNrKSB7XG4gIGV4ZWN1dGUoY29ubmVjdGlvbiwgc3FsLCAoZXJyb3IpID0+IHtcbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIGNvbnN0IGxvZyA9IGNvbm5lY3Rpb24uZ2V0TG9nKCk7XG5cbiAgICAgIGxvZy5lcnJvcihcImNyZWF0ZVRhYmxlKCkgZmFpbGVkLlwiKTtcbiAgICB9XG4gICAgXG4gICAgY2FsbGJhY2soZXJyb3IpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydFZlcnNpb24oY29ubmVjdGlvbiwgdmVyc2lvbiwgc3FsLCBjYWxsYmFjaykge1xuICBleGVjdXRlKGNvbm5lY3Rpb24sIHNxbCwgdmVyc2lvbiwgKGVycm9yKSA9PiB7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICBjb25zdCBsb2cgPSBjb25uZWN0aW9uLmdldExvZygpO1xuXG4gICAgICBsb2cuZXJyb3IoXCJpbnNlcnRWZXJzaW9uKCkgZmFpbGVkLlwiKTtcbiAgICB9XG5cbiAgICBjYWxsYmFjayhlcnJvcik7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hvd0xpa2VUYWJsZXMoY29ubmVjdGlvbiwgc3FsLCBjYWxsYmFjaykge1xuICBxdWVyeShjb25uZWN0aW9uLCBzcWwsIChlcnJvciwgcm93cykgPT4ge1xuICAgIGlmIChlcnJvcikge1xuICAgICAgY29uc3QgbG9nID0gY29ubmVjdGlvbi5nZXRMb2coKTtcblxuICAgICAgbG9nLmVycm9yKFwic2hvd0xpa2VUYWJsZXMoKSBmYWlsZWQuXCIpO1xuICAgIH1cbiAgICBcbiAgICBjYWxsYmFjayhlcnJvciwgcm93cyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VsZWN0TWF4aW11bVZlcnNpb24oY29ubmVjdGlvbiwgc3FsLCBjYWxsYmFjaykge1xuICBxdWVyeShjb25uZWN0aW9uLCBzcWwsIChlcnJvciwgcm93cykgPT4ge1xuICAgIGlmIChlcnJvcikge1xuICAgICAgY29uc3QgbG9nID0gY29ubmVjdGlvbi5nZXRMb2coKTtcblxuICAgICAgbG9nLmVycm9yKFwic2VsZWN0TWF4aW11bVZlcnNpb24oKSBmYWlsZWQuXCIpO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKGVycm9yLCByb3dzKTtcbiAgfSk7XG59XG4iXSwibmFtZXMiOlsiY3JlYXRlVGFibGUiLCJpbnNlcnRWZXJzaW9uIiwic2VsZWN0TWF4aW11bVZlcnNpb24iLCJzaG93TGlrZVRhYmxlcyIsImNvbm5lY3Rpb24iLCJzcWwiLCJjYWxsYmFjayIsImV4ZWN1dGUiLCJlcnJvciIsImxvZyIsImdldExvZyIsInZlcnNpb24iLCJxdWVyeSIsInJvd3MiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQUlnQkE7ZUFBQUE7O1FBWUFDO2VBQUFBOztRQXdCQUM7ZUFBQUE7O1FBWkFDO2VBQUFBOzs7d0JBMUJlO0FBRXhCLFNBQVNILFlBQVlJLFVBQVUsRUFBRUMsR0FBRyxFQUFFQyxRQUFRO0lBQ25EQyxJQUFBQSxpQkFBTyxFQUFDSCxZQUFZQyxLQUFLLFNBQUNHO1FBQ3hCLElBQUlBLE9BQU87WUFDVCxJQUFNQyxNQUFNTCxXQUFXTSxNQUFNO1lBRTdCRCxJQUFJRCxLQUFLLENBQUM7UUFDWjtRQUVBRixTQUFTRTtJQUNYO0FBQ0Y7QUFFTyxTQUFTUCxjQUFjRyxVQUFVLEVBQUVPLE9BQU8sRUFBRU4sR0FBRyxFQUFFQyxRQUFRO0lBQzlEQyxJQUFBQSxpQkFBTyxFQUFDSCxZQUFZQyxLQUFLTSxTQUFTLFNBQUNIO1FBQ2pDLElBQUlBLE9BQU87WUFDVCxJQUFNQyxNQUFNTCxXQUFXTSxNQUFNO1lBRTdCRCxJQUFJRCxLQUFLLENBQUM7UUFDWjtRQUVBRixTQUFTRTtJQUNYO0FBQ0Y7QUFFTyxTQUFTTCxlQUFlQyxVQUFVLEVBQUVDLEdBQUcsRUFBRUMsUUFBUTtJQUN0RE0sSUFBQUEsZUFBSyxFQUFDUixZQUFZQyxLQUFLLFNBQUNHLE9BQU9LO1FBQzdCLElBQUlMLE9BQU87WUFDVCxJQUFNQyxNQUFNTCxXQUFXTSxNQUFNO1lBRTdCRCxJQUFJRCxLQUFLLENBQUM7UUFDWjtRQUVBRixTQUFTRSxPQUFPSztJQUNsQjtBQUNGO0FBRU8sU0FBU1gscUJBQXFCRSxVQUFVLEVBQUVDLEdBQUcsRUFBRUMsUUFBUTtJQUM1RE0sSUFBQUEsZUFBSyxFQUFDUixZQUFZQyxLQUFLLFNBQUNHLE9BQU9LO1FBQzdCLElBQUlMLE9BQU87WUFDVCxJQUFNQyxNQUFNTCxXQUFXTSxNQUFNO1lBRTdCRCxJQUFJRCxLQUFLLENBQUM7UUFDWjtRQUVBRixTQUFTRSxPQUFPSztJQUNsQjtBQUNGIn0=