@ditojs/server 0.271.0 → 0.274.0
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/app/Application.js +68 -25
- package/lib/app/SessionStore.js +3 -1
- package/lib/app/Validator.js +16 -2
- package/lib/app/index.js +7 -1
- package/lib/cli/console.js +14 -4
- package/lib/cli/db/createMigration.js +16 -4
- package/lib/cli/db/index.js +7 -1
- package/lib/cli/db/listAssetConfig.js +4 -2
- package/lib/cli/db/migrate.js +3 -3
- package/lib/cli/db/reset.js +3 -3
- package/lib/cli/db/rollback.js +3 -3
- package/lib/cli/db/seed.js +14 -6
- package/lib/cli/db/unlock.js +3 -3
- package/lib/cli/index.js +9 -5
- package/lib/controllers/AdminController.js +18 -6
- package/lib/controllers/CollectionController.js +15 -1
- package/lib/controllers/Controller.js +28 -4
- package/lib/controllers/ControllerAction.js +18 -6
- package/lib/controllers/RelationController.js +9 -3
- package/lib/controllers/UserController.js +15 -1
- package/lib/controllers/index.js +7 -1
- package/lib/decorators/index.js +7 -1
- package/lib/decorators/parameters.js +4 -2
- package/lib/decorators/returns.js +4 -2
- package/lib/errors/DatabaseError.js +5 -19
- package/lib/errors/ResponseError.js +4 -14
- package/lib/errors/index.js +7 -1
- package/lib/graph/DitoGraphProcessor.js +5 -1
- package/lib/graph/expression.js +5 -1
- package/lib/graph/graph.js +18 -2
- package/lib/graph/index.js +7 -1
- package/lib/index.js +7 -1
- package/lib/lib/index.js +7 -1
- package/lib/middleware/findRoute.js +7 -1
- package/lib/middleware/index.js +7 -1
- package/lib/middleware/logRequests.js +4 -4
- package/lib/mixins/AssetMixin.js +4 -4
- package/lib/mixins/SessionMixin.js +4 -4
- package/lib/mixins/TimeStampedMixin.js +4 -4
- package/lib/mixins/UserMixin.js +10 -4
- package/lib/mixins/index.js +7 -1
- package/lib/models/Model.js +41 -22
- package/lib/models/definitions/filters.js +9 -1
- package/lib/models/definitions/properties.js +7 -1
- package/lib/models/definitions/scopes.js +9 -1
- package/lib/models/index.js +7 -1
- package/lib/query/QueryBuilder.js +11 -1
- package/lib/query/QueryFilters.js +11 -1
- package/lib/query/index.js +7 -1
- package/lib/schema/formats/index.js +7 -1
- package/lib/schema/index.js +10 -2
- package/lib/schema/keywords/index.js +7 -1
- package/lib/schema/properties.js +11 -1
- package/lib/schema/relations.js +18 -4
- package/lib/services/index.js +7 -1
- package/lib/storage/DiskStorage.js +7 -1
- package/lib/storage/Storage.js +5 -1
- package/lib/storage/index.js +7 -1
- package/lib/utils/emitter.js +5 -1
- package/lib/utils/index.js +15 -1
- package/lib/utils/json.js +9 -0
- package/lib/utils/object.js +9 -3
- package/package.json +31 -31
- package/src/app/Application.js +40 -11
- package/src/app/Validator.js +2 -1
- package/src/cli/console.js +3 -3
- package/src/cli/db/createMigration.js +3 -3
- package/src/cli/db/listAssetConfig.js +3 -1
- package/src/cli/db/migrate.js +4 -4
- package/src/cli/db/reset.js +4 -4
- package/src/cli/db/rollback.js +4 -4
- package/src/cli/db/seed.js +6 -6
- package/src/cli/db/unlock.js +2 -2
- package/src/cli/index.js +3 -3
- package/src/controllers/AdminController.js +3 -2
- package/src/controllers/Controller.js +8 -8
- package/src/controllers/ControllerAction.js +7 -5
- package/src/controllers/RelationController.js +2 -2
- package/src/decorators/parameters.js +2 -2
- package/src/decorators/returns.js +2 -2
- package/src/errors/DatabaseError.js +2 -23
- package/src/errors/ResponseError.js +1 -8
- package/src/middleware/logRequests.js +9 -9
- package/src/models/Model.js +13 -8
- package/src/utils/index.js +1 -0
- package/src/utils/json.js +3 -0
package/lib/app/SessionStore.js
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
exports.default = void 0;
|
|
5
5
|
|
|
6
|
+
require("core-js/modules/es.error.cause.js");
|
|
7
|
+
|
|
6
8
|
var _default = modelName => class SessionStore {
|
|
7
9
|
constructor(ctx) {
|
|
8
10
|
this.ctx = ctx;
|
|
@@ -35,4 +37,4 @@ var _default = modelName => class SessionStore {
|
|
|
35
37
|
};
|
|
36
38
|
|
|
37
39
|
exports.default = _default;
|
|
38
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcHAvU2Vzc2lvblN0b3JlLmpzIl0sIm5hbWVzIjpbIm1vZGVsTmFtZSIsIlNlc3Npb25TdG9yZSIsImNvbnN0cnVjdG9yIiwiY3R4IiwibW9kZWxDbGFzcyIsImFwcCIsIm1vZGVscyIsIkVycm9yIiwicXVlcnkiLCJ0cmFuc2FjdGlvbiIsImdldCIsImlkIiwic2Vzc2lvbiIsImZpbmRCeUlkIiwidmFsdWUiLCJzZXQiLCJ1cHNlcnQiLCJnZXRSZWZlcmVuY2UiLCJkZXN0cm95Iiwia2V5IiwiZGVsZXRlQnlJZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztlQUFlQSxTQUFTLElBQUksTUFBTUMsWUFBTixDQUFtQjtBQUM3Q0MsRUFBQUEsV0FBVyxDQUFDQyxHQUFELEVBQU07QUFDZixTQUFLQSxHQUFMLEdBQVdBLEdBQVg7QUFDQSxTQUFLQyxVQUFMLEdBQWtCRCxHQUFHLENBQUNFLEdBQUosQ0FBUUMsTUFBUixDQUFlTixTQUFmLENBQWxCOztBQUNBLFFBQUksQ0FBQyxLQUFLSSxVQUFWLEVBQXNCO0FBQ3BCLFlBQU0sSUFBSUcsS0FBSixDQUFXLGdDQUErQlAsU0FBVSxHQUFwRCxDQUFOO0FBQ0Q7QUFDRjs7QUFFRFEsRUFBQUEsS0FBSyxHQUFHO0FBQ04sV0FBTyxLQUFLSixVQUFMLENBQWdCSSxLQUFoQixDQUFzQixLQUFLTCxHQUFMLENBQVNNLFdBQS9CLENBQVA7QUFDRDs7QUFFUSxRQUFIQyxHQUFHLENBQUNDLEVBQUQsRUFBSztBQUNaLFVBQU1DLE9BQU8sR0FBRyxNQUFNLEtBQUtKLEtBQUwsR0FBYUssUUFBYixDQUFzQkYsRUFBdEIsQ0FBdEI7QUFDQSxXQUFPLENBQUFDLE9BQU8sUUFBUCxZQUFBQSxPQUFPLENBQUVFLEtBQVQsS0FBa0IsRUFBekI7QUFDRDs7QUFFUSxRQUFIQyxHQUFHLENBQUNKLEVBQUQsRUFBS0csS0FBTCxFQUFZO0FBQ25CLFVBQU0sS0FBS04sS0FBTCxHQUNISyxRQURHLENBQ01GLEVBRE4sRUFFSEssTUFGRyxDQUVJLEVBQ04sR0FBRyxLQUFLWixVQUFMLENBQWdCYSxZQUFoQixDQUE2Qk4sRUFBN0IsQ0FERztBQUVORyxNQUFBQTtBQUZNLEtBRkosQ0FBTjtBQU1EOztBQUVZLFFBQVBJLE9BQU8sQ0FBQ0MsR0FBRCxFQUFNO0FBQ2pCLFdBQU8sS0FBS1gsS0FBTCxHQUFhWSxVQUFiLENBQXdCRCxHQUF4QixDQUFQO0FBQ0Q7O0FBN0I0QyxDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgbW9kZWxOYW1lID0+IGNsYXNzIFNlc3Npb25TdG9yZSB7XG4gIGNvbnN0cnVjdG9yKGN0eCkge1xuICAgIHRoaXMuY3R4ID0gY3R4XG4gICAgdGhpcy5tb2RlbENsYXNzID0gY3R4LmFwcC5tb2RlbHNbbW9kZWxOYW1lXVxuICAgIGlmICghdGhpcy5tb2RlbENsYXNzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBmaW5kIG1vZGVsIGNsYXNzOiAnJHttb2RlbE5hbWV9J2ApXG4gICAgfVxuICB9XG5cbiAgcXVlcnkoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZWxDbGFzcy5xdWVyeSh0aGlzLmN0eC50cmFuc2FjdGlvbilcbiAgfVxuXG4gIGFzeW5jIGdldChpZCkge1xuICAgIGNvbnN0IHNlc3Npb24gPSBhd2FpdCB0aGlzLnF1ZXJ5KCkuZmluZEJ5SWQoaWQpXG4gICAgcmV0dXJuIHNlc3Npb24/LnZhbHVlIHx8IHt9XG4gIH1cblxuICBhc3luYyBzZXQoaWQsIHZhbHVlKSB7XG4gICAgYXdhaXQgdGhpcy5xdWVyeSgpXG4gICAgICAuZmluZEJ5SWQoaWQpXG4gICAgICAudXBzZXJ0KHtcbiAgICAgICAgLi4udGhpcy5tb2RlbENsYXNzLmdldFJlZmVyZW5jZShpZCksXG4gICAgICAgIHZhbHVlXG4gICAgICB9KVxuICB9XG5cbiAgYXN5bmMgZGVzdHJveShrZXkpIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeSgpLmRlbGV0ZUJ5SWQoa2V5KVxuICB9XG59XG4iXX0=
|
package/lib/app/Validator.js
CHANGED
|
@@ -2,9 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
require("core-js/modules/esnext.weak-map.delete-all.js");
|
|
4
4
|
|
|
5
|
+
require("core-js/modules/esnext.weak-map.emplace.js");
|
|
6
|
+
|
|
5
7
|
exports.__esModule = true;
|
|
6
8
|
exports.Validator = void 0;
|
|
7
9
|
|
|
10
|
+
require("core-js/modules/esnext.async-iterator.reduce.js");
|
|
11
|
+
|
|
12
|
+
require("core-js/modules/esnext.iterator.constructor.js");
|
|
13
|
+
|
|
14
|
+
require("core-js/modules/esnext.iterator.reduce.js");
|
|
15
|
+
|
|
16
|
+
require("core-js/modules/esnext.async-iterator.map.js");
|
|
17
|
+
|
|
18
|
+
require("core-js/modules/esnext.iterator.map.js");
|
|
19
|
+
|
|
8
20
|
var _objection = _interopRequireDefault(require("objection"));
|
|
9
21
|
|
|
10
22
|
var _ajv = _interopRequireDefault(require("ajv"));
|
|
@@ -13,6 +25,8 @@ var _ajvFormats = _interopRequireDefault(require("ajv-formats"));
|
|
|
13
25
|
|
|
14
26
|
var _utils = require("@ditojs/utils");
|
|
15
27
|
|
|
28
|
+
var _utils2 = require("../utils");
|
|
29
|
+
|
|
16
30
|
var schema = _interopRequireWildcard(require("../schema"));
|
|
17
31
|
|
|
18
32
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -87,7 +101,7 @@ class Validator extends _objection.default.Validator {
|
|
|
87
101
|
|
|
88
102
|
return opts;
|
|
89
103
|
}, {});
|
|
90
|
-
const cacheKey =
|
|
104
|
+
const cacheKey = (0, _utils2.formatJson)(opts, false);
|
|
91
105
|
const {
|
|
92
106
|
ajv
|
|
93
107
|
} = this.ajvCache[cacheKey] || (this.ajvCache[cacheKey] = {
|
|
@@ -338,4 +352,4 @@ const validatorOptions = {
|
|
|
338
352
|
useDefaults: true,
|
|
339
353
|
verbose: false
|
|
340
354
|
};
|
|
341
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcHAvVmFsaWRhdG9yLmpzIl0sIm5hbWVzIjpbIlZhbGlkYXRvciIsIm9iamVjdGlvbiIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsImtleXdvcmRzIiwiZm9ybWF0cyIsImRlZmF1bHRPcHRpb25zIiwic2NoZW1hIiwic2NoZW1hcyIsImFqdkNhY2hlIiwiT2JqZWN0IiwiY3JlYXRlIiwiY3JlYXRlQWp2IiwiYXN5bmMiLCJwYXRjaCIsIm9wdHMiLCJhanYiLCJBanYiLCJ1c2VEZWZhdWx0cyIsIm1vZGUiLCJhZGRTY2hlbWFzIiwiY2FsbGJhY2siLCJuYW1lIiwiZW50cmllcyIsInJlcGxhY2UiLCJrZXl3b3JkIiwiYWRkS2V5d29yZCIsImZvcm1hdCIsImFkZEZvcm1hdCIsImFkZFNjaGVtYSIsInByb2Nlc3NTY2hlbWEiLCJnZXRBanYiLCJyZWR1Y2UiLCJrZXkiLCJ2YWx1ZSIsInZhbGlkYXRvck9wdGlvbnMiLCJjYWNoZUtleSIsIkpTT04iLCJzdHJpbmdpZnkiLCJjb21waWxlIiwianNvblNjaGVtYSIsInZhbGlkYXRvciIsImRvbnRUaHJvdyIsInRocm93IiwidmFsaWRhdGUiLCJkYXRhIiwicmVzdWx0IiwiY2FsbCIsImVycm9yIiwiZXJyb3JzIiwiVmFsaWRhdGlvbkVycm9yIiwiZ2V0S2V5d29yZCIsImdldEZvcm1hdCIsInB1c2giLCJ2YWx1ZXMiLCJyZXF1aXJlZCIsInZhbGlkYXRlQXN5bmMiLCIkYXN5bmMiLCJwYXJzZUVycm9ycyIsImVycm9ySGFzaCIsImR1cGxpY2F0ZXMiLCJkYXRhUGF0aCIsInNsaWNlIiwibWVzc2FnZSIsInBhcmFtcyIsImRlZmluaXRpb24iLCJpZGVudGlmaWVyIiwidGVzdCIsIm1hY3JvIiwic2lsZW50IiwiYXJyYXkiLCJsZW5ndGgiLCJlcnJvcjEiLCJlcnJvcjIiLCJ0eXBlIiwicHJlZml4RGF0YVBhdGhzIiwiZGF0YVBhdGhQcmVmaXgiLCJtYXAiLCJiZWZvcmVWYWxpZGF0ZSIsImpzb24iLCJtb2RlbCIsImN0eCIsImFwcCIsImdldEpzb25TY2hlbWEiLCIkYmVmb3JlVmFsaWRhdGUiLCJNb2RlbCIsInByb3RvdHlwZSIsInJldCIsInVuZGVmaW5lZCIsIm11dGFibGUiLCJoYXNEZWZhdWx0cyIsInByb3BlcnRpZXMiLCJnZXRTY2hlbWEiLCIkaWQiLCJyZXMiLCJoYW5kbGVFcnJvcnMiLCJjcmVhdGVWYWxpZGF0aW9uRXJyb3IiLCJjYXRjaCIsInRoZW4iLCJvYmoiLCJ2YWwiLCJzdHJpY3QiLCJhbGxFcnJvcnMiLCJvd25Qcm9wZXJ0aWVzIiwicGFzc0NvbnRleHQiLCJ2YWxpZGF0ZVNjaGVtYSIsIiRkYXRhIiwiJGNvbW1lbnQiLCJjb2VyY2VUeXBlcyIsIm11bHRpcGxlT2ZQcmVjaXNpb24iLCJyZW1vdmVBZGRpdGlvbmFsIiwidW5pcXVlSXRlbXMiLCJ2ZXJib3NlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7O0FBVU8sTUFBTUEsU0FBTixTQUF3QkMsbUJBQVVELFNBQWxDLENBQTRDO0FBQ2pERSxFQUFBQSxXQUFXLENBQUM7QUFBRUMsSUFBQUEsT0FBRjtBQUFXQyxJQUFBQSxRQUFYO0FBQXFCQyxJQUFBQTtBQUFyQixNQUFpQyxFQUFsQyxFQUFzQztBQUMvQztBQUVBLFNBQUtGLE9BQUwsR0FBZSxFQUNiLEdBQUdHLGNBRFU7QUFFYixTQUFHSDtBQUZVLEtBQWY7QUFLQSxTQUFLQyxRQUFMLEdBQWdCLEVBQ2QsR0FBR0csTUFBTSxDQUFDSCxRQURJO0FBRWQsU0FBR0E7QUFGVyxLQUFoQjtBQUtBLFNBQUtDLE9BQUwsR0FBZSxFQUNiLEdBQUdFLE1BQU0sQ0FBQ0YsT0FERztBQUViLFNBQUdBO0FBRlUsS0FBZjtBQUtBLFNBQUtHLE9BQUwsR0FBZSxFQUFmO0FBSUEsU0FBS0MsUUFBTCxHQUFnQkMsTUFBTSxDQUFDQyxNQUFQLENBQWMsSUFBZCxDQUFoQjtBQUNEOztBQUVEQyxFQUFBQSxTQUFTLENBQUNULE9BQUQs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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQgb2JqZWN0aW9uIGZyb20gJ29iamVjdGlvbidcbmltcG9ydCBBanYgZnJvbSAnYWp2J1xuaW1wb3J0IGFkZEZvcm1hdHMgZnJvbSAnYWp2LWZvcm1hdHMnXG5pbXBvcnQgeyBpc0FycmF5LCBpc09iamVjdCwgY2xvbmUsIGlzQXN5bmMsIGlzUHJvbWlzZSB9IGZyb20gJ0BkaXRvanMvdXRpbHMnXG5pbXBvcnQgKiBhcyBzY2hlbWEgZnJvbSAnQC9zY2hlbWEnXG5cbi8vIERpdG8gZG9lcyBub3QgcmVseSBvbiBvYmplY3Rpb24uQWp2VmFsaWRhdG9yIGJ1dCBpbnN0ZWFkIGltcGxlbWVudHMgaXRzIG93blxuLy8gdmFsaWRhdG9yIGluc3RhbmNlIHRoYXQgaXMgc2hhcmVkIGFjcm9zcyB0aGUgd2hvbGUgYXBwIGFuZCBoYW5kbGVzIHNjaGVtYVxuLy8gY29tcGlsYXRpb24gYW5kIGNhY2hpbmcgZGlmZmVyZW50bHk6XG4vLyBJdCByZWxpZXMgb24gQWp2J3MgYWRkU2NoZW1hKCkgLyBnZXRTY2hlbWEoKSBwYXR0ZXJuIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlXG4vLyBgc2NoZW1hSWQ6ICckaWQnYCBvcHRpb24sIGFuZCBlYWNoIHNjaGVtYSBpcyBhc3NpZ25lZCBhbiAkaWQgYmFzZWQgb24gdGhlXG4vLyBtb2RlbCBjbGFzcyBuYW1lLiBUaGF0IHdheSwgc2NoZW1hcyBjYW4gcmVmZXJlbmNlIGVhY2ggb3RoZXIsIGFuZCB0aGV5IGNhblxuLy8gZWFzaWx5IHZhbGlkYXRlIG5lc3RlZCBzdHJ1Y3R1cmVzLlxuXG5leHBvcnQgY2xhc3MgVmFsaWRhdG9yIGV4dGVuZHMgb2JqZWN0aW9uLlZhbGlkYXRvciB7XG4gIGNvbnN0cnVjdG9yKHsgb3B0aW9ucywga2V5d29yZHMsIGZvcm1hdHMgfSA9IHt9KSB7XG4gICAgc3VwZXIoKVxuXG4gICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgICAuLi5vcHRpb25zXG4gICAgfVxuXG4gICAgdGhpcy5rZXl3b3JkcyA9IHtcbiAgICAgIC4uLnNjaGVtYS5rZXl3b3JkcyxcbiAgICAgIC4uLmtleXdvcmRzXG4gICAgfVxuXG4gICAgdGhpcy5mb3JtYXRzID0ge1xuICAgICAgLi4uc2NoZW1hLmZvcm1hdHMsXG4gICAgICAuLi5mb3JtYXRzXG4gICAgfVxuXG4gICAgdGhpcy5zY2hlbWFzID0gW11cblxuICAgIC8vIERpY3Rpb25hcnkgdG8gaG9sZCBhbGwgY3JlYXRlZCBBanYgaW5zdGFuY2VzLCB1c2luZyB0aGUgc3RyaW5naWZpZWRcbiAgICAvLyBvcHRpb25zIHdpdGggd2hpY2ggdGhleSB3ZXJlIGNyZWF0ZWQgYXMgdGhlaXIga2V5cy5cbiAgICB0aGlzLmFqdkNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKVxuICB9XG5cbiAgY3JlYXRlQWp2KG9wdGlvbnMpIHtcbiAgICAvLyBTcGxpdCBvcHRpb25zIGludG8gbmF0aXZlIEFqdiBvcHRpb25zIGFuZCBvdXIgYWRkaXRpb25zIChhc3luYywgcGF0Y2gpOlxuICAgIGNvbnN0IHsgYXN5bmMsIHBhdGNoLCAuLi5vcHRzIH0gPSBvcHRpb25zXG4gICAgY29uc3QgYWp2ID0gbmV3IEFqdih7XG4gICAgICAuLi50aGlzLm9wdGlvbnMsXG4gICAgICAuLi5vcHRzLFxuICAgICAgLy8gUGF0Y2gtdmFsaWRhdG9ycyBkb24ndCB1c2UgZGVmYXVsdCB2YWx1ZXM6XG4gICAgICAuLi4ocGF0Y2ggJiYgeyB1c2VEZWZhdWx0czogZmFsc2UgfSlcbiAgICB9KVxuICAgIGFkZEZvcm1hdHMoYWp2LCB7IG1vZGU6ICdmdWxsJyB9KVxuXG4gICAgY29uc3QgYWRkU2NoZW1hcyA9IChzY2hlbWFzLCBjYWxsYmFjaykgPT4ge1xuICAgICAgZm9yIChjb25zdCBbbmFtZSwgc2NoZW1hXSBvZiBPYmplY3QuZW50cmllcyhzY2hlbWFzKSkge1xuICAgICAgICBpZiAoc2NoZW1hKSB7XG4gICAgICAgICAgLy8gUmVtb3ZlIGxlYWRpbmcgJ18nIHRvIHNpbXBsaWZ5IHNwZWNpYWwga2V5d29yZHMgKGUuZy4gaW5zdGFuY2VvZilcbiAgICAgICAgICBjYWxsYmFjayhuYW1lLnJlcGxhY2UoL15fLywgJycpLCBzY2hlbWEpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBhZGRTY2hlbWFzKHRoaXMua2V5d29yZHMsIChrZXl3b3JkLCBzY2hlbWEpID0+IGFqdi5hZGRLZXl3b3JkKHtcbiAgICAgIGtleXdvcmQsXG4gICAgICAuLi5zY2hlbWFcbiAgICB9KSlcbiAgICBhZGRTY2hlbWFzKHRoaXMuZm9ybWF0cywgKGZvcm1hdCwgc2NoZW1hKSA9PiBhanYuYWRkRm9ybWF0KGZvcm1hdCwge1xuICAgICAgLi4uc2NoZW1hXG4gICAgfSkpXG5cbiAgICAvLyBBbHNvIGFkZCBhbGwgbW9kZWwgc2NoZW1hcyB0aGF0IHdlcmUgYWxyZWFkeSBjb21waWxlZCBzbyBmYXIuXG4gICAgZm9yIChjb25zdCBzY2hlbWEgb2YgdGhpcy5zY2hlbWFzKSB7XG4gICAgICBhanYuYWRkU2NoZW1hKHRoaXMucHJvY2Vzc1NjaGVtYShzY2hlbWEsIG9wdGlvbnMpKVxuICAgIH1cblxuICAgIHJldHVybiBhanZcbiAgfVxuXG4gIGdldEFqdihvcHRpb25zID0ge30pIHtcbiAgICAvLyBDYWNoZSBBanYgaW5zdGFuY2VzIGJ5IGtleXMgdGhhdCByZXByZXNlbnQgdGhlaXIgb3B0aW9ucy4gRm9yIGltcHJvdmVkXG4gICAgLy8gbWF0Y2hpbmcsIGNvbnZlcnQgb3B0aW9ucyB0byBhIHZlcnNpb24gd2l0aCBhbGwgZGVmYXVsdCB2YWx1ZXMgbWlzc2luZzpcbiAgICBjb25zdCBvcHRzID0gT2JqZWN0LmVudHJpZXMob3B0aW9ucykucmVkdWNlKChvcHRzLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGlmIChrZXkgaW4gdmFsaWRhdG9yT3B0aW9ucyAmJiB2YWx1ZSAhPT0gdmFsaWRhdG9yT3B0aW9uc1trZXldKSB7XG4gICAgICAgIG9wdHNba2V5XSA9IHZhbHVlXG4gICAgICB9XG4gICAgICByZXR1cm4gb3B0c1xuICAgIH0sIHt9KVxuICAgIGNvbnN0IGNhY2hlS2V5ID0gSlNPTi5zdHJpbmdpZnkob3B0cylcbiAgICBjb25zdCB7IGFqdiB9ID0gdGhpcy5hanZDYWNoZVtjYWNoZUtleV0gfHwgKHRoaXMuYWp2Q2FjaGVbY2FjaGVLZXldID0ge1xuICAgICAgYWp2OiB0aGlzLmNyZWF0ZUFqdihvcHRzKSxcbiAgICAgIG9wdGlvbnNcbiAgICB9KVxuICAgIHJldHVybiBhanZcbiAgfVxuXG4gIGNvbXBpbGUoanNvblNjaGVtYSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3QgYWp2ID0gdGhpcy5nZXRBanYob3B0aW9ucylcbiAgICBjb25zdCB2YWxpZGF0b3IgPSBhanYuY29tcGlsZSh0aGlzLnByb2Nlc3NTY2hlbWEoanNvblNjaGVtYSwgb3B0aW9ucykpXG4gICAgLy8gQXNzdW1lIGBvcHRpb25zLnRocm93ID0gdHJ1ZWAgYXMgdGhlIGRlZmF1bHQuXG4gICAgY29uc3QgZG9udFRocm93ID0gb3B0aW9ucy50aHJvdyA9PT0gZmFsc2VcbiAgICByZXR1cm4gb3B0aW9ucy5hc3luY1xuICAgICAgLy8gRm9yIGFzeW5jOlxuICAgICAgPyBkb250VGhyb3dcbiAgICAgICAgPyBhc3luYyBmdW5jdGlvbiB2YWxpZGF0ZShkYXRhKSB7XG4gICAgICAgICAgLy8gRW11bGF0ZSBgb3B0aW9ucy50aHJvdyA9PSBmYWxzZWAgYmVoYXZpb3IgZm9yIGFzeW5jIHZhbGlkYXRpb246XG4gICAgICAgICAgLy8gUmV0dXJuIGB0cnVlYCBvciBgZmFsc2VgLCBhbmQgc3RvcmUgZXJyb3JzIG9uIGB2YWxpZGF0ZS5lcnJvcnNgXG4gICAgICAgICAgLy8gaWYgdmFsaWRhdGlvbiBmYWlsZWQuXG4gICAgICAgICAgbGV0IHJlc3VsdFxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBVc2UgYGNhbGwoKWAgdG8gcGFzcyBgdGhpc2AgYXMgY29udGV4dCB0byBBanYsIHNlZSBwYXNzQ29udGV4dDpcbiAgICAgICAgICAgIHJlc3VsdCA9IGF3YWl0IHZhbGlkYXRvci5jYWxsKHRoaXMsIGRhdGEpXG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGlmIChlcnJvci5lcnJvcnMpIHtcbiAgICAgICAgICAgICAgdmFsaWRhdGUuZXJyb3JzID0gZXJyb3IuZXJyb3JzXG4gICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICAgIH1cbiAgICAgICAgOiB2YWxpZGF0b3IgLy8gVGhlIGRlZmF1bHQgZm9yIGFzeW5jIGlzIHRvIHRocm93LlxuICAgICAgLy8gRm9yIHN5bmM6XG4gICAgICA6IGRvbnRUaHJvd1xuICAgICAgICA/IHZhbGlkYXRvciAvLyBUaGUgZGVmYXVsdCBmb3Igc3luYyBpcyB0byBub3QgdGhyb3cuXG4gICAgICAgIDogZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgIC8vIEVtdWxhdGUgYG9wdGlvbnMudGhyb3cgPT0gdHJ1ZWAgYmVoYXZpb3IgZm9yIHN5bmMgdmFsaWRhdGlvbjpcbiAgICAgICAgICAvLyBSZXR1cm4gYHRydWVgIGlmIHN1Y2Nlc3NmdWwsIHRocm93IGBBanYuVmFsaWRhdGlvbkVycm9yYCBvdGhlcndpc2UuXG4gICAgICAgICAgLy8gVXNlIGBjYWxsKClgIHRvIHBhc3MgYHRoaXNgIGFzIGNvbnRleHQgdG8gQWp2LCBzZWUgcGFzc0NvbnRleHQ6XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdG9yLmNhbGwodGhpcywgZGF0YSlcbiAgICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFqdi5WYWxpZGF0aW9uRXJyb3IodmFsaWRhdG9yLmVycm9ycylcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICB9XG4gIH1cblxuICBnZXRLZXl3b3JkKGtleXdvcmQpIHtcbiAgICByZXR1cm4gdGhpcy5rZXl3b3Jkc1trZXl3b3JkXVxuICB9XG5cbiAgZ2V0Rm9ybWF0KGZvcm1hdCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1hdHNbZm9ybWF0XVxuICB9XG5cbiAgYWRkU2NoZW1hKGpzb25TY2hlbWEpIHtcbiAgICB0aGlzLnNjaGVtYXMucHVzaChqc29uU2NoZW1hKVxuICAgIC8vIEFkZCBzY2hlbWEgdG8gYWxsIHByZXZpb3VzbHkgY3JlYXRlZCBBanYgaW5zdGFuY2VzLCBzbyB0aGV5IGNhbiByZWZlcmVuY2VcbiAgICAvLyB0aGUgbW9kZWxzLlxuICAgIGZvciAoY29uc3QgeyBhanYsIG9wdGlvbnMgfSBvZiBPYmplY3QudmFsdWVzKHRoaXMuYWp2Q2FjaGUpKSB7XG4gICAgICBhanYuYWRkU2NoZW1hKHRoaXMucHJvY2Vzc1NjaGVtYShqc29uU2NoZW1hLCBvcHRpb25zKSlcbiAgICB9XG4gIH1cblxuICBwcm9jZXNzU2NoZW1hKGpzb25TY2hlbWEsIG9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHsgcGF0Y2gsIGFzeW5jIH0gPSBvcHRpb25zXG4gICAgY29uc3Qgc2NoZW1hID0gY2xvbmUoanNvblNjaGVtYSwgdmFsdWUgPT4ge1xuICAgICAgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICBpZiAocGF0Y2gpIHtcbiAgICAgICAgICAvLyBSZW1vdmUgYWxsIHJlcXVpcmVkIGtleXdvcmRzIGFuZCBmb3JtYXRzIGZyb20gc2NoZW1hIGZvciBwYXRjaFxuICAgICAgICAgIC8vIHZhbGlkYXRpb24uXG4gICAgICAgICAgZGVsZXRlIHZhbHVlLnJlcXVpcmVkXG4gICAgICAgICAgaWYgKHZhbHVlLmZvcm1hdCA9PT0gJ3JlcXVpcmVkJykge1xuICAgICAgICAgICAgZGVsZXRlIHZhbHVlLmZvcm1hdFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBDb252ZXJ0IGFzeW5jIGB2YWxpZGF0ZSgpYCBrZXl3b3JkcyB0byBgdmFsaWRhdGVBc3luYygpYDpcbiAgICAgICAgaWYgKGlzQXN5bmModmFsdWUudmFsaWRhdGUpKSB7XG4gICAgICAgICAgdmFsdWUudmFsaWRhdGVBc3luYyA9IHZhbHVlLnZhbGlkYXRlXG4gICAgICAgICAgZGVsZXRlIHZhbHVlLnZhbGlkYXRlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFhc3luYykge1xuICAgICAgICAgIC8vIFJlbW92ZSBhbGwgYXN5bmMga2V5d29yZHMgZm9yIHN5bmNocm9ub3VzIHZhbGlkYXRpb24uXG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGtleXdvcmQgPSB0aGlzLmdldEtleXdvcmQoa2V5KVxuICAgICAgICAgICAgaWYgKGtleXdvcmQ/LmFzeW5jKSB7XG4gICAgICAgICAgICAgIGRlbGV0ZSB2YWx1ZVtrZXldXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgICBpZiAoYXN5bmMpIHtcbiAgICAgIHNjaGVtYS4kYXN5bmMgPSB0cnVlXG4gICAgfVxuICAgIHJldHVybiBzY2hlbWFcbiAgfVxuXG4gIHBhcnNlRXJyb3JzKGVycm9ycywgb3B0aW9ucyA9IHt9KSB7XG4gICAgLy8gQ29udmVydCBmcm9tIEFqdiBlcnJvcnMgYXJyYXkgdG8gT2JqZWN0aW9uLXN0eWxlIGVycm9ySGFzaCxcbiAgICAvLyB3aXRoIGFkZGl0aW9uYWwgcGFyc2luZyBhbmQgcHJvY2Vzc2luZy5cbiAgICBjb25zdCBlcnJvckhhc2ggPSB7fVxuICAgIGNvbnN0IGR1cGxpY2F0ZXMgPSB7fVxuICAgIGZvciAoY29uc3QgZXJyb3Igb2YgZXJyb3JzKSB7XG4gICAgICAvLyBBZGp1c3QgZGF0YVBhdGhzIHRvIHJlZmxlY3QgbmVzdGVkIHZhbGlkYXRpb24gaW4gT2JqZWN0aW9uLlxuICAgICAgY29uc3QgZGF0YVBhdGggPSBgJHtvcHRpb25zPy5kYXRhUGF0aCB8fCAnJ30ke2Vycm9yLmRhdGFQYXRofWBcbiAgICAgIC8vIFVua25vd24gcHJvcGVydGllcyBhcmUgcmVwb3J0ZWQgaW4gYFsncHJvcGVydHlOYW1lJ11gIG5vdGF0aW9uLFxuICAgICAgLy8gc28gcmVwbGFjZSB0aG9zZSB3aXRoIGRvdC1ub3RhdGlvbiwgc2VlOlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Vwb2JlcmV6a2luL2Fqdi9pc3N1ZXMvNjcxXG4gICAgICBjb25zdCBrZXkgPSBkYXRhUGF0aC5yZXBsYWNlKC9cXFsnKFteJ10qKSdcXF0vZywgJy4kMScpLnNsaWNlKDEpXG4gICAgICBjb25zdCB7IG1lc3NhZ2UsIGtleXdvcmQsIHBhcmFtcyB9ID0gZXJyb3JcbiAgICAgIGNvbnN0IGRlZmluaXRpb24gPSBrZXl3b3JkID09PSAnZm9ybWF0J1xuICAgICAgICA/IHRoaXMuZ2V0Rm9ybWF0KHBhcmFtcy5mb3JtYXQpXG4gICAgICAgIDogdGhpcy5nZXRLZXl3b3JkKGtleXdvcmQpXG4gICAgICBjb25zdCBpZGVudGlmaWVyID0gYCR7a2V5fV8ke2tleXdvcmR9YFxuICAgICAgaWYgKFxuICAgICAgICAvLyBBanYgcHJvZHVjZXMgZHVwbGljYXRlIHZhbGlkYXRpb24gZXJyb3JzIHNvbWV0aW1lcywgZmlsdGVyIHRoZW0gb3V0LlxuICAgICAgICAhZHVwbGljYXRlc1tpZGVudGlmaWVyXSAmJlxuICAgICAgICAvLyBTa2lwIGtleXdvcmRzIHRoYXQgc3RhcnQgd2l0aCAkIHN1Y2ggYXMgJG1lcmdlIGFuZCAkcGF0Y2guXG4gICAgICAgICEvXlxcJC8udGVzdChrZXl3b3JkKSAmJlxuICAgICAgICAvLyBTa2lwIG1hY3JvIGtleXdvcmRzIHRoYXQgYXJlIG9ubHkgZGVsZWdhdGluZyB0byBvdGhlciBrZXl3b3Jkcy5cbiAgICAgICAgIWRlZmluaXRpb24/Lm1hY3JvICYmXG4gICAgICAgIC8vIEZpbHRlciBvdXQgYWxsIGN1c3RvbSBrZXl3b3JkcyBhbmQgZm9ybWF0cyB0aGF0IHdhbnQgdG8gYmUgc2lsZW50LlxuICAgICAgICAhZGVmaW5pdGlvbj8uc2lsZW50XG4gICAgICApIHtcbiAgICAgICAgY29uc3QgYXJyYXkgPSBlcnJvckhhc2hba2V5XSB8fCAoZXJyb3JIYXNoW2tleV0gPSBbXSlcbiAgICAgICAgYXJyYXkucHVzaCh7XG4gICAgICAgICAgLy8gQWxsb3cgY3VzdG9tIGZvcm1hdHMgYW5kIGtleXdvcmRzIHRvIG92ZXJyaWRlIGVycm9yIG1lc3NhZ2VzLlxuICAgICAgICAgIG1lc3NhZ2U6IGRlZmluaXRpb24/Lm1lc3NhZ2UgfHwgbWVzc2FnZSxcbiAgICAgICAgICBrZXl3b3JkLFxuICAgICAgICAgIHBhcmFtc1xuICAgICAgICB9KVxuICAgICAgICBkdXBsaWNhdGVzW2lkZW50aWZpZXJdID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBOb3cgZmlsdGVyIHRocm91Z2ggdGhlIHJlc3VsdGluZyBlcnJvcnMgYW5kIHBlcmZvcm0gc29tZSBwb3N0LXByb2Nlc3Npbmc6XG4gICAgZm9yIChjb25zdCBbZGF0YVBhdGgsIGVycm9yc10gb2YgT2JqZWN0LmVudHJpZXMoZXJyb3JIYXNoKSkge1xuICAgICAgLy8gV2hlbiB3ZSBnZXQgdGhlc2UgZXJyb3JzIChjYXVzZWQgYnkgYG51bGxhYmxlOiB0cnVlYCksIGl0IG1lYW5zIHRoYXQgd2VcbiAgICAgIC8vIGhhdmUgZGF0YSB0aGF0IGlzbid0IG51bGwgYW5kIGlzIGNhdXNpbmcgb3RoZXIgZXJyb3JzLCBhbmQgd2Ugc2hvdWxkbid0XG4gICAgICAvLyBkaXNwbGF5IHRoZSAnbnVsbCcgcGF0aDpcbiAgICAgIC8vIFtkYXRhUGF0aF06IFtcbiAgICAgIC8vICAge1xuICAgICAgLy8gICAgIG1lc3NhZ2U6ICdzaG91bGQgYmUgbnVsbCcsXG4gICAgICAvLyAgICAga2V5d29yZDogJ3R5cGUnLFxuICAgICAgLy8gICAgIHBhcmFtczogeyB0eXBlOiAnbnVsbCcgfVxuICAgICAgLy8gICB9LFxuICAgICAgLy8gICB7XG4gICAgICAvLyAgICAgbWVzc2FnZTogJ3Nob3VsZCBtYXRjaCBleGFjdGx5IG9uZSBzY2hlbWEgaW4gb25lT2YnLFxuICAgICAgLy8gICAgIGtleXdvcmQ6ICdvbmVPZidcbiAgICAgIC8vICAgfVxuICAgICAgLy8gXVxuICAgICAgaWYgKGVycm9ycy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgY29uc3QgW2Vycm9yMSwgZXJyb3IyXSA9IGVycm9yc1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZXJyb3IxLmtleXdvcmQgPT09ICd0eXBlJyAmJiBlcnJvcjEucGFyYW1zLnR5cGUgPT09ICdudWxsJyAmJlxuICAgICAgICAgIGVycm9yMi5rZXl3b3JkID09PSAnb25lT2YnXG4gICAgICAgICkge1xuICAgICAgICAgIGRlbGV0ZSBlcnJvckhhc2hbZGF0YVBhdGhdXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVycm9ySGFzaFxuICB9XG5cbiAgcHJlZml4RGF0YVBhdGhzKGVycm9ycywgZGF0YVBhdGhQcmVmaXgpIHtcbiAgICByZXR1cm4gZXJyb3JzLm1hcChlcnJvciA9PiAoe1xuICAgICAgLi4uZXJyb3IsXG4gICAgICBkYXRhUGF0aDogZXJyb3IuZGF0YVBhdGhcbiAgICAgICAgPyBgJHtkYXRhUGF0aFByZWZpeH0ke2Vycm9yLmRhdGFQYXRofWBcbiAgICAgICAgOiBkYXRhUGF0aFByZWZpeFxuICAgIH0pKVxuICB9XG5cbiAgLy8gQG92ZXJyaWRlXG4gIGJlZm9yZVZhbGlkYXRlKHsganNvbiwgbW9kZWwsIGN0eCwgb3B0aW9ucyB9KSB7XG4gICAgLy8gQWRkIHZhbGlkYXRvciBpbnN0YW5jZSwgYXBwIGFuZCBvcHRpb25zIHRvIGNvbnRleHRcbiAgICBjdHgudmFsaWRhdG9yID0gdGhpc1xuICAgIGN0eC5hcHAgPSB0aGlzLmFwcFxuICAgIGN0eC5vcHRpb25zID0gb3B0aW9uc1xuICAgIGN0eC5qc29uU2NoZW1hID0gbW9kZWwuY29uc3RydWN0b3IuZ2V0SnNvblNjaGVtYSgpXG4gICAgY29uc3QgeyAkYmVmb3JlVmFsaWRhdGUgfSA9IG1vZGVsXG4gICAgaWYgKCRiZWZvcmVWYWxpZGF0ZSAhPT0gb2JqZWN0aW9uLk1vZGVsLnByb3RvdHlwZS4kYmVmb3JlVmFsaWRhdGUpIHtcbiAgICAgIC8vIFRPRE86IENvbnNpZGVyIGFkZGluZyBob29rcyBmb3IgJ2JlZm9yZTp2YWxpZGF0ZScgYW5kICdhZnRlcjp2YWxpZGF0ZScsXG4gICAgICAvLyBhbmQgaWYgc28sIGRlY2lkZSB3aGF0IHRvIGRvIGFib3V0IG1vZGlmeWluZyAvIHJldHVybmluZyBqc29uLXNjaGVtYS5cbiAgICAgIC8vIFByb2JhYmx5IHdlIHNob3VsZG4ndCBhbGxvdyBpdCB0aGVyZS5cblxuICAgICAgLy8gT25seSBjbG9uZSBqc29uU2NoZW1hIGlmIHRoZSBoYW5kbGVyIGFjdHVhbGx5IHJlY2VpdmVzIGl0LlxuICAgICAgaWYgKCRiZWZvcmVWYWxpZGF0ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGN0eC5qc29uU2NoZW1hID0gY2xvbmUoY3R4Lmpzb25TY2hlbWEpXG4gICAgICB9XG4gICAgICBjb25zdCByZXQgPSBtb2RlbC4kYmVmb3JlVmFsaWRhdGUoY3R4Lmpzb25TY2hlbWEsIGpzb24sIG9wdGlvbnMpXG4gICAgICBpZiAocmV0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY3R4Lmpzb25TY2hlbWEgPSByZXRcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBAb3ZlcnJpZGVcbiAgdmFsaWRhdGUoeyBqc29uLCBtb2RlbCwgY3R4LCBvcHRpb25zIH0pIHtcbiAgICBjb25zdCB7IGpzb25TY2hlbWEgfSA9IGN0eFxuICAgIGlmIChqc29uU2NoZW1hKSB7XG4gICAgICAvLyBXZSBuZWVkIHRvIGNsb25lIHRoZSBpbnB1dCBqc29uIGlmIHdlIGFyZSBhYm91dCB0byBzZXQgZGVmYXVsdCB2YWx1ZXMuXG4gICAgICBpZiAoXG4gICAgICAgICFvcHRpb25zLm11dGFibGUgJiZcbiAgICAgICAgIW9wdGlvbnMucGF0Y2ggJiZcbiAgICAgICAgaGFzRGVmYXVsdHMoanNvblNjaGVtYS5wcm9wZXJ0aWVzKVxuICAgICAgKSB7XG4gICAgICAgIGpzb24gPSBjbG9uZShqc29uKVxuICAgICAgfVxuICAgICAgLy8gR2V0IHRoZSByaWdodCBBanYgaW5zdGFuY2UgZm9yIHRoZSBnaXZlbiBwYXRjaCBhbmQgYXN5bmMgb3B0aW9uc1xuICAgICAgY29uc3QgdmFsaWRhdGUgPSB0aGlzLmdldEFqdihvcHRpb25zKS5nZXRTY2hlbWEoanNvblNjaGVtYS4kaWQpXG4gICAgICAvLyBVc2UgYGNhbGwoKWAgdG8gcGFzcyBjdHggYXMgY29udGV4dCB0byBBanYsIHNlZSBwYXNzQ29udGV4dDpcbiAgICAgIGNvbnN0IHJlcyA9IHZhbGlkYXRlLmNhbGwoY3R4LCBqc29uKVxuICAgICAgY29uc3QgaGFuZGxlRXJyb3JzID0gZXJyb3JzID0+IHtcbiAgICAgICAgaWYgKGVycm9ycykge1xuICAgICAgICAgIC8vIE5PVEU6IFRoZSBjb252ZXJzaW9uIGZyb20gQWp2IGVycm9ycyB0byBPYmplY3Rpb24gZXJyb3JzIGhhcHBlbiBpblxuICAgICAgICAgIC8vIE1vZGVsLmNyZWF0ZVZhbGlkYXRpb25FcnJvcigpLCB3aGljaCBjYWxscyBWYWxpZGF0b3IucGFyc2VFcnJvcigpXG4gICAgICAgICAgdGhyb3cgbW9kZWwuY29uc3RydWN0b3IuY3JlYXRlVmFsaWRhdGlvbkVycm9yKHtcbiAgICAgICAgICAgIHR5cGU6ICdNb2RlbFZhbGlkYXRpb24nLFxuICAgICAgICAgICAgZXJyb3JzLFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIGpzb25cbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBIYW5kbGUgYm90aCBhc3luYyBhbmQgc3luYyB2YWxpZGF0aW9uIGhlcmU6XG4gICAgICBpZiAoaXNQcm9taXNlKHJlcykpIHtcbiAgICAgICAgcmV0dXJuIHJlc1xuICAgICAgICAgIC5jYXRjaChlcnJvciA9PiBoYW5kbGVFcnJvcnMoZXJyb3IuZXJyb3JzKSlcbiAgICAgICAgICAudGhlbigoKSA9PiBqc29uKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaGFuZGxlRXJyb3JzKHZhbGlkYXRlLmVycm9ycylcbiAgICAgICAgcmV0dXJuIGpzb25cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaGFzRGVmYXVsdHMob2JqKSB7XG4gIGlmIChpc0FycmF5KG9iaikpIHtcbiAgICBmb3IgKGNvbnN0IHZhbCBvZiBvYmopIHtcbiAgICAgIGlmICh2YWwgJiYgaGFzRGVmYXVsdHModmFsKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChpc09iamVjdChvYmopKSB7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWxdIG9mIE9iamVjdC5lbnRyaWVzKG9iaikpIHtcbiAgICAgIGlmIChrZXkgPT09ICdkZWZhdWx0JyB8fCB2YWwgJiYgaGFzRGVmYXVsdHModmFsKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gIHN0cmljdDogZmFsc2UsXG4gIGFsbEVycm9yczogdHJ1ZSxcbiAgb3duUHJvcGVydGllczogdHJ1ZSxcbiAgcGFzc0NvbnRleHQ6IHRydWUsXG4gIHVzZURlZmF1bHRzOiB0cnVlLFxuICB2YWxpZGF0ZVNjaGVtYTogdHJ1ZVxufVxuXG4vLyBPcHRpb25zIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgcGFzc2VkIG9uIHRvIHRoZSBjcmVhdGVkIEFqdiBpbnN0YW5jZXMsIHdpdGhcbi8vIHRoZWlyIGRlZmF1bHQgc2V0dGluZ3MgKHNvbWUgZGVmYXVsdHMgYXJlIGZyb20gQWp2LCBzb21lIGZyb20gZGVmYXVsdE9wdGlvbnMpXG5jb25zdCB2YWxpZGF0b3JPcHRpb25zID0ge1xuICAvLyBPdXIgZXh0ZW5zaW9uczpcbiAgYXN5bmM6IGZhbHNlLFxuICBwYXRjaDogZmFsc2UsXG4gIC8vIEFqdiBPcHRpb25zOlxuICAkZGF0YTogZmFsc2UsXG4gICRjb21tZW50OiBmYWxzZSxcbiAgY29lcmNlVHlwZXM6IGZhbHNlLFxuICBtdWx0aXBsZU9mUHJlY2lzaW9uOiBmYWxzZSxcbiAgb3duUHJvcGVydGllczogdHJ1ZSxcbiAgcmVtb3ZlQWRkaXRpb25hbDogZmFsc2UsXG4gIHVuaXF1ZUl0ZW1zOiB0cnVlLFxuICB1c2VEZWZhdWx0czogdHJ1ZSxcbiAgdmVyYm9zZTogZmFsc2Vcbn1cbiJdfQ==
|
|
355
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcHAvVmFsaWRhdG9yLmpzIl0sIm5hbWVzIjpbIlZhbGlkYXRvciIsIm9iamVjdGlvbiIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsImtleXdvcmRzIiwiZm9ybWF0cyIsImRlZmF1bHRPcHRpb25zIiwic2NoZW1hIiwic2NoZW1hcyIsImFqdkNhY2hlIiwiT2JqZWN0IiwiY3JlYXRlIiwiY3JlYXRlQWp2IiwiYXN5bmMiLCJwYXRjaCIsIm9wdHMiLCJhanYiLCJBanYiLCJ1c2VEZWZhdWx0cyIsIm1vZGUiLCJhZGRTY2hlbWFzIiwiY2FsbGJhY2siLCJuYW1lIiwiZW50cmllcyIsInJlcGxhY2UiLCJrZXl3b3JkIiwiYWRkS2V5d29yZCIsImZvcm1hdCIsImFkZEZvcm1hdCIsImFkZFNjaGVtYSIsInByb2Nlc3NTY2hlbWEiLCJnZXRBanYiLCJyZWR1Y2UiLCJrZXkiLCJ2YWx1ZSIsInZhbGlkYXRvck9wdGlvbnMiLCJjYWNoZUtleSIsImNvbXBpbGUiLCJqc29uU2NoZW1hIiwidmFsaWRhdG9yIiwiZG9udFRocm93IiwidGhyb3ciLCJ2YWxpZGF0ZSIsImRhdGEiLCJyZXN1bHQiLCJjYWxsIiwiZXJyb3IiLCJlcnJvcnMiLCJWYWxpZGF0aW9uRXJyb3IiLCJnZXRLZXl3b3JkIiwiZ2V0Rm9ybWF0IiwicHVzaCIsInZhbHVlcyIsInJlcXVpcmVkIiwidmFsaWRhdGVBc3luYyIsIiRhc3luYyIsInBhcnNlRXJyb3JzIiwiZXJyb3JIYXNoIiwiZHVwbGljYXRlcyIsImRhdGFQYXRoIiwic2xpY2UiLCJtZXNzYWdlIiwicGFyYW1zIiwiZGVmaW5pdGlvbiIsImlkZW50aWZpZXIiLCJ0ZXN0IiwibWFjcm8iLCJzaWxlbnQiLCJhcnJheSIsImxlbmd0aCIsImVycm9yMSIsImVycm9yMiIsInR5cGUiLCJwcmVmaXhEYXRhUGF0aHMiLCJkYXRhUGF0aFByZWZpeCIsIm1hcCIsImJlZm9yZVZhbGlkYXRlIiwianNvbiIsIm1vZGVsIiwiY3R4IiwiYXBwIiwiZ2V0SnNvblNjaGVtYSIsIiRiZWZvcmVWYWxpZGF0ZSIsIk1vZGVsIiwicHJvdG90eXBlIiwicmV0IiwidW5kZWZpbmVkIiwibXV0YWJsZSIsImhhc0RlZmF1bHRzIiwicHJvcGVydGllcyIsImdldFNjaGVtYSIsIiRpZCIsInJlcyIsImhhbmRsZUVycm9ycyIsImNyZWF0ZVZhbGlkYXRpb25FcnJvciIsImNhdGNoIiwidGhlbiIsIm9iaiIsInZhbCIsInN0cmljdCIsImFsbEVycm9ycyIsIm93blByb3BlcnRpZXMiLCJwYXNzQ29udGV4dCIsInZhbGlkYXRlU2NoZW1hIiwiJGRhdGEiLCIkY29tbWVudCIsImNvZXJjZVR5cGVzIiwibXVsdGlwbGVPZlByZWNpc2lvbiIsInJlbW92ZUFkZGl0aW9uYWwiLCJ1bmlxdWVJdGVtcyIsInZlcmJvc2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7QUFVTyxNQUFNQSxTQUFOLFNBQXdCQyxtQkFBVUQsU0FBbEMsQ0FBNEM7QUFDakRFLEVBQUFBLFdBQVcsQ0FBQztBQUFFQyxJQUFBQSxPQUFGO0FBQVdDLElBQUFBLFFBQVg7QUFBcUJDLElBQUFBO0FBQXJCLE1BQWlDLEVBQWxDLEVBQXNDO0FBQy9DO0FBRUEsU0FBS0YsT0FBTCxHQUFlLEVBQ2IsR0FBR0csY0FEVTtBQUViLFNBQUdIO0FBRlUsS0FBZjtBQUtBLFNBQUtDLFFBQUwsR0FBZ0IsRUFDZCxHQUFHRyxNQUFNLENBQUNILFFBREk7QUFFZCxTQUFHQTtBQUZXLEtBQWhCO0FBS0EsU0FBS0MsT0FBTCxHQUFlLEVBQ2IsR0FBR0UsTUFBTSxDQUFDRixPQURHO0FBRWIsU0FBR0E7QUFGVSxLQUFmO0FBS0EsU0FBS0csT0FBTCxHQUFlLEVBQWY7QUFJQSxTQUFLQyxRQUFMLEdBQWdCQyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxJQUFkLENBQWhCO0FBQ0Q7O0FBRURDLEVBQUFBLFNBQVMsQ0FBQ1QsT0FBRCxF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c0NvbnRlbnQiOlsiaW1wb3J0IG9iamVjdGlvbiBmcm9tICdvYmplY3Rpb24nXG5pbXBvcnQgQWp2IGZyb20gJ2FqdidcbmltcG9ydCBhZGRGb3JtYXRzIGZyb20gJ2Fqdi1mb3JtYXRzJ1xuaW1wb3J0IHsgaXNBcnJheSwgaXNPYmplY3QsIGNsb25lLCBpc0FzeW5jLCBpc1Byb21pc2UgfSBmcm9tICdAZGl0b2pzL3V0aWxzJ1xuaW1wb3J0IHsgZm9ybWF0SnNvbiB9IGZyb20gJ0AvdXRpbHMnXG5pbXBvcnQgKiBhcyBzY2hlbWEgZnJvbSAnQC9zY2hlbWEnXG5cbi8vIERpdG8gZG9lcyBub3QgcmVseSBvbiBvYmplY3Rpb24uQWp2VmFsaWRhdG9yIGJ1dCBpbnN0ZWFkIGltcGxlbWVudHMgaXRzIG93blxuLy8gdmFsaWRhdG9yIGluc3RhbmNlIHRoYXQgaXMgc2hhcmVkIGFjcm9zcyB0aGUgd2hvbGUgYXBwIGFuZCBoYW5kbGVzIHNjaGVtYVxuLy8gY29tcGlsYXRpb24gYW5kIGNhY2hpbmcgZGlmZmVyZW50bHk6XG4vLyBJdCByZWxpZXMgb24gQWp2J3MgYWRkU2NoZW1hKCkgLyBnZXRTY2hlbWEoKSBwYXR0ZXJuIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlXG4vLyBgc2NoZW1hSWQ6ICckaWQnYCBvcHRpb24sIGFuZCBlYWNoIHNjaGVtYSBpcyBhc3NpZ25lZCBhbiAkaWQgYmFzZWQgb24gdGhlXG4vLyBtb2RlbCBjbGFzcyBuYW1lLiBUaGF0IHdheSwgc2NoZW1hcyBjYW4gcmVmZXJlbmNlIGVhY2ggb3RoZXIsIGFuZCB0aGV5IGNhblxuLy8gZWFzaWx5IHZhbGlkYXRlIG5lc3RlZCBzdHJ1Y3R1cmVzLlxuXG5leHBvcnQgY2xhc3MgVmFsaWRhdG9yIGV4dGVuZHMgb2JqZWN0aW9uLlZhbGlkYXRvciB7XG4gIGNvbnN0cnVjdG9yKHsgb3B0aW9ucywga2V5d29yZHMsIGZvcm1hdHMgfSA9IHt9KSB7XG4gICAgc3VwZXIoKVxuXG4gICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgICAuLi5vcHRpb25zXG4gICAgfVxuXG4gICAgdGhpcy5rZXl3b3JkcyA9IHtcbiAgICAgIC4uLnNjaGVtYS5rZXl3b3JkcyxcbiAgICAgIC4uLmtleXdvcmRzXG4gICAgfVxuXG4gICAgdGhpcy5mb3JtYXRzID0ge1xuICAgICAgLi4uc2NoZW1hLmZvcm1hdHMsXG4gICAgICAuLi5mb3JtYXRzXG4gICAgfVxuXG4gICAgdGhpcy5zY2hlbWFzID0gW11cblxuICAgIC8vIERpY3Rpb25hcnkgdG8gaG9sZCBhbGwgY3JlYXRlZCBBanYgaW5zdGFuY2VzLCB1c2luZyB0aGUgc3RyaW5naWZpZWRcbiAgICAvLyBvcHRpb25zIHdpdGggd2hpY2ggdGhleSB3ZXJlIGNyZWF0ZWQgYXMgdGhlaXIga2V5cy5cbiAgICB0aGlzLmFqdkNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKVxuICB9XG5cbiAgY3JlYXRlQWp2KG9wdGlvbnMpIHtcbiAgICAvLyBTcGxpdCBvcHRpb25zIGludG8gbmF0aXZlIEFqdiBvcHRpb25zIGFuZCBvdXIgYWRkaXRpb25zIChhc3luYywgcGF0Y2gpOlxuICAgIGNvbnN0IHsgYXN5bmMsIHBhdGNoLCAuLi5vcHRzIH0gPSBvcHRpb25zXG4gICAgY29uc3QgYWp2ID0gbmV3IEFqdih7XG4gICAgICAuLi50aGlzLm9wdGlvbnMsXG4gICAgICAuLi5vcHRzLFxuICAgICAgLy8gUGF0Y2gtdmFsaWRhdG9ycyBkb24ndCB1c2UgZGVmYXVsdCB2YWx1ZXM6XG4gICAgICAuLi4ocGF0Y2ggJiYgeyB1c2VEZWZhdWx0czogZmFsc2UgfSlcbiAgICB9KVxuICAgIGFkZEZvcm1hdHMoYWp2LCB7IG1vZGU6ICdmdWxsJyB9KVxuXG4gICAgY29uc3QgYWRkU2NoZW1hcyA9IChzY2hlbWFzLCBjYWxsYmFjaykgPT4ge1xuICAgICAgZm9yIChjb25zdCBbbmFtZSwgc2NoZW1hXSBvZiBPYmplY3QuZW50cmllcyhzY2hlbWFzKSkge1xuICAgICAgICBpZiAoc2NoZW1hKSB7XG4gICAgICAgICAgLy8gUmVtb3ZlIGxlYWRpbmcgJ18nIHRvIHNpbXBsaWZ5IHNwZWNpYWwga2V5d29yZHMgKGUuZy4gaW5zdGFuY2VvZilcbiAgICAgICAgICBjYWxsYmFjayhuYW1lLnJlcGxhY2UoL15fLywgJycpLCBzY2hlbWEpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBhZGRTY2hlbWFzKHRoaXMua2V5d29yZHMsIChrZXl3b3JkLCBzY2hlbWEpID0+IGFqdi5hZGRLZXl3b3JkKHtcbiAgICAgIGtleXdvcmQsXG4gICAgICAuLi5zY2hlbWFcbiAgICB9KSlcbiAgICBhZGRTY2hlbWFzKHRoaXMuZm9ybWF0cywgKGZvcm1hdCwgc2NoZW1hKSA9PiBhanYuYWRkRm9ybWF0KGZvcm1hdCwge1xuICAgICAgLi4uc2NoZW1hXG4gICAgfSkpXG5cbiAgICAvLyBBbHNvIGFkZCBhbGwgbW9kZWwgc2NoZW1hcyB0aGF0IHdlcmUgYWxyZWFkeSBjb21waWxlZCBzbyBmYXIuXG4gICAgZm9yIChjb25zdCBzY2hlbWEgb2YgdGhpcy5zY2hlbWFzKSB7XG4gICAgICBhanYuYWRkU2NoZW1hKHRoaXMucHJvY2Vzc1NjaGVtYShzY2hlbWEsIG9wdGlvbnMpKVxuICAgIH1cblxuICAgIHJldHVybiBhanZcbiAgfVxuXG4gIGdldEFqdihvcHRpb25zID0ge30pIHtcbiAgICAvLyBDYWNoZSBBanYgaW5zdGFuY2VzIGJ5IGtleXMgdGhhdCByZXByZXNlbnQgdGhlaXIgb3B0aW9ucy4gRm9yIGltcHJvdmVkXG4gICAgLy8gbWF0Y2hpbmcsIGNvbnZlcnQgb3B0aW9ucyB0byBhIHZlcnNpb24gd2l0aCBhbGwgZGVmYXVsdCB2YWx1ZXMgbWlzc2luZzpcbiAgICBjb25zdCBvcHRzID0gT2JqZWN0LmVudHJpZXMob3B0aW9ucykucmVkdWNlKChvcHRzLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGlmIChrZXkgaW4gdmFsaWRhdG9yT3B0aW9ucyAmJiB2YWx1ZSAhPT0gdmFsaWRhdG9yT3B0aW9uc1trZXldKSB7XG4gICAgICAgIG9wdHNba2V5XSA9IHZhbHVlXG4gICAgICB9XG4gICAgICByZXR1cm4gb3B0c1xuICAgIH0sIHt9KVxuICAgIGNvbnN0IGNhY2hlS2V5ID0gZm9ybWF0SnNvbihvcHRzLCBmYWxzZSlcbiAgICBjb25zdCB7IGFqdiB9ID0gdGhpcy5hanZDYWNoZVtjYWNoZUtleV0gfHwgKHRoaXMuYWp2Q2FjaGVbY2FjaGVLZXldID0ge1xuICAgICAgYWp2OiB0aGlzLmNyZWF0ZUFqdihvcHRzKSxcbiAgICAgIG9wdGlvbnNcbiAgICB9KVxuICAgIHJldHVybiBhanZcbiAgfVxuXG4gIGNvbXBpbGUoanNvblNjaGVtYSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3QgYWp2ID0gdGhpcy5nZXRBanYob3B0aW9ucylcbiAgICBjb25zdCB2YWxpZGF0b3IgPSBhanYuY29tcGlsZSh0aGlzLnByb2Nlc3NTY2hlbWEoanNvblNjaGVtYSwgb3B0aW9ucykpXG4gICAgLy8gQXNzdW1lIGBvcHRpb25zLnRocm93ID0gdHJ1ZWAgYXMgdGhlIGRlZmF1bHQuXG4gICAgY29uc3QgZG9udFRocm93ID0gb3B0aW9ucy50aHJvdyA9PT0gZmFsc2VcbiAgICByZXR1cm4gb3B0aW9ucy5hc3luY1xuICAgICAgLy8gRm9yIGFzeW5jOlxuICAgICAgPyBkb250VGhyb3dcbiAgICAgICAgPyBhc3luYyBmdW5jdGlvbiB2YWxpZGF0ZShkYXRhKSB7XG4gICAgICAgICAgLy8gRW11bGF0ZSBgb3B0aW9ucy50aHJvdyA9PSBmYWxzZWAgYmVoYXZpb3IgZm9yIGFzeW5jIHZhbGlkYXRpb246XG4gICAgICAgICAgLy8gUmV0dXJuIGB0cnVlYCBvciBgZmFsc2VgLCBhbmQgc3RvcmUgZXJyb3JzIG9uIGB2YWxpZGF0ZS5lcnJvcnNgXG4gICAgICAgICAgLy8gaWYgdmFsaWRhdGlvbiBmYWlsZWQuXG4gICAgICAgICAgbGV0IHJlc3VsdFxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBVc2UgYGNhbGwoKWAgdG8gcGFzcyBgdGhpc2AgYXMgY29udGV4dCB0byBBanYsIHNlZSBwYXNzQ29udGV4dDpcbiAgICAgICAgICAgIHJlc3VsdCA9IGF3YWl0IHZhbGlkYXRvci5jYWxsKHRoaXMsIGRhdGEpXG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGlmIChlcnJvci5lcnJvcnMpIHtcbiAgICAgICAgICAgICAgdmFsaWRhdGUuZXJyb3JzID0gZXJyb3IuZXJyb3JzXG4gICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICAgIH1cbiAgICAgICAgOiB2YWxpZGF0b3IgLy8gVGhlIGRlZmF1bHQgZm9yIGFzeW5jIGlzIHRvIHRocm93LlxuICAgICAgLy8gRm9yIHN5bmM6XG4gICAgICA6IGRvbnRUaHJvd1xuICAgICAgICA/IHZhbGlkYXRvciAvLyBUaGUgZGVmYXVsdCBmb3Igc3luYyBpcyB0byBub3QgdGhyb3cuXG4gICAgICAgIDogZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgIC8vIEVtdWxhdGUgYG9wdGlvbnMudGhyb3cgPT0gdHJ1ZWAgYmVoYXZpb3IgZm9yIHN5bmMgdmFsaWRhdGlvbjpcbiAgICAgICAgICAvLyBSZXR1cm4gYHRydWVgIGlmIHN1Y2Nlc3NmdWwsIHRocm93IGBBanYuVmFsaWRhdGlvbkVycm9yYCBvdGhlcndpc2UuXG4gICAgICAgICAgLy8gVXNlIGBjYWxsKClgIHRvIHBhc3MgYHRoaXNgIGFzIGNvbnRleHQgdG8gQWp2LCBzZWUgcGFzc0NvbnRleHQ6XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdG9yLmNhbGwodGhpcywgZGF0YSlcbiAgICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFqdi5WYWxpZGF0aW9uRXJyb3IodmFsaWRhdG9yLmVycm9ycylcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICB9XG4gIH1cblxuICBnZXRLZXl3b3JkKGtleXdvcmQpIHtcbiAgICByZXR1cm4gdGhpcy5rZXl3b3Jkc1trZXl3b3JkXVxuICB9XG5cbiAgZ2V0Rm9ybWF0KGZvcm1hdCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1hdHNbZm9ybWF0XVxuICB9XG5cbiAgYWRkU2NoZW1hKGpzb25TY2hlbWEpIHtcbiAgICB0aGlzLnNjaGVtYXMucHVzaChqc29uU2NoZW1hKVxuICAgIC8vIEFkZCBzY2hlbWEgdG8gYWxsIHByZXZpb3VzbHkgY3JlYXRlZCBBanYgaW5zdGFuY2VzLCBzbyB0aGV5IGNhbiByZWZlcmVuY2VcbiAgICAvLyB0aGUgbW9kZWxzLlxuICAgIGZvciAoY29uc3QgeyBhanYsIG9wdGlvbnMgfSBvZiBPYmplY3QudmFsdWVzKHRoaXMuYWp2Q2FjaGUpKSB7XG4gICAgICBhanYuYWRkU2NoZW1hKHRoaXMucHJvY2Vzc1NjaGVtYShqc29uU2NoZW1hLCBvcHRpb25zKSlcbiAgICB9XG4gIH1cblxuICBwcm9jZXNzU2NoZW1hKGpzb25TY2hlbWEsIG9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHsgcGF0Y2gsIGFzeW5jIH0gPSBvcHRpb25zXG4gICAgY29uc3Qgc2NoZW1hID0gY2xvbmUoanNvblNjaGVtYSwgdmFsdWUgPT4ge1xuICAgICAgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICBpZiAocGF0Y2gpIHtcbiAgICAgICAgICAvLyBSZW1vdmUgYWxsIHJlcXVpcmVkIGtleXdvcmRzIGFuZCBmb3JtYXRzIGZyb20gc2NoZW1hIGZvciBwYXRjaFxuICAgICAgICAgIC8vIHZhbGlkYXRpb24uXG4gICAgICAgICAgZGVsZXRlIHZhbHVlLnJlcXVpcmVkXG4gICAgICAgICAgaWYgKHZhbHVlLmZvcm1hdCA9PT0gJ3JlcXVpcmVkJykge1xuICAgICAgICAgICAgZGVsZXRlIHZhbHVlLmZvcm1hdFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBDb252ZXJ0IGFzeW5jIGB2YWxpZGF0ZSgpYCBrZXl3b3JkcyB0byBgdmFsaWRhdGVBc3luYygpYDpcbiAgICAgICAgaWYgKGlzQXN5bmModmFsdWUudmFsaWRhdGUpKSB7XG4gICAgICAgICAgdmFsdWUudmFsaWRhdGVBc3luYyA9IHZhbHVlLnZhbGlkYXRlXG4gICAgICAgICAgZGVsZXRlIHZhbHVlLnZhbGlkYXRlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFhc3luYykge1xuICAgICAgICAgIC8vIFJlbW92ZSBhbGwgYXN5bmMga2V5d29yZHMgZm9yIHN5bmNocm9ub3VzIHZhbGlkYXRpb24uXG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGtleXdvcmQgPSB0aGlzLmdldEtleXdvcmQoa2V5KVxuICAgICAgICAgICAgaWYgKGtleXdvcmQ/LmFzeW5jKSB7XG4gICAgICAgICAgICAgIGRlbGV0ZSB2YWx1ZVtrZXldXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgICBpZiAoYXN5bmMpIHtcbiAgICAgIHNjaGVtYS4kYXN5bmMgPSB0cnVlXG4gICAgfVxuICAgIHJldHVybiBzY2hlbWFcbiAgfVxuXG4gIHBhcnNlRXJyb3JzKGVycm9ycywgb3B0aW9ucyA9IHt9KSB7XG4gICAgLy8gQ29udmVydCBmcm9tIEFqdiBlcnJvcnMgYXJyYXkgdG8gT2JqZWN0aW9uLXN0eWxlIGVycm9ySGFzaCxcbiAgICAvLyB3aXRoIGFkZGl0aW9uYWwgcGFyc2luZyBhbmQgcHJvY2Vzc2luZy5cbiAgICBjb25zdCBlcnJvckhhc2ggPSB7fVxuICAgIGNvbnN0IGR1cGxpY2F0ZXMgPSB7fVxuICAgIGZvciAoY29uc3QgZXJyb3Igb2YgZXJyb3JzKSB7XG4gICAgICAvLyBBZGp1c3QgZGF0YVBhdGhzIHRvIHJlZmxlY3QgbmVzdGVkIHZhbGlkYXRpb24gaW4gT2JqZWN0aW9uLlxuICAgICAgY29uc3QgZGF0YVBhdGggPSBgJHtvcHRpb25zPy5kYXRhUGF0aCB8fCAnJ30ke2Vycm9yLmRhdGFQYXRofWBcbiAgICAgIC8vIFVua25vd24gcHJvcGVydGllcyBhcmUgcmVwb3J0ZWQgaW4gYFsncHJvcGVydHlOYW1lJ11gIG5vdGF0aW9uLFxuICAgICAgLy8gc28gcmVwbGFjZSB0aG9zZSB3aXRoIGRvdC1ub3RhdGlvbiwgc2VlOlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Vwb2JlcmV6a2luL2Fqdi9pc3N1ZXMvNjcxXG4gICAgICBjb25zdCBrZXkgPSBkYXRhUGF0aC5yZXBsYWNlKC9cXFsnKFteJ10qKSdcXF0vZywgJy4kMScpLnNsaWNlKDEpXG4gICAgICBjb25zdCB7IG1lc3NhZ2UsIGtleXdvcmQsIHBhcmFtcyB9ID0gZXJyb3JcbiAgICAgIGNvbnN0IGRlZmluaXRpb24gPSBrZXl3b3JkID09PSAnZm9ybWF0J1xuICAgICAgICA/IHRoaXMuZ2V0Rm9ybWF0KHBhcmFtcy5mb3JtYXQpXG4gICAgICAgIDogdGhpcy5nZXRLZXl3b3JkKGtleXdvcmQpXG4gICAgICBjb25zdCBpZGVudGlmaWVyID0gYCR7a2V5fV8ke2tleXdvcmR9YFxuICAgICAgaWYgKFxuICAgICAgICAvLyBBanYgcHJvZHVjZXMgZHVwbGljYXRlIHZhbGlkYXRpb24gZXJyb3JzIHNvbWV0aW1lcywgZmlsdGVyIHRoZW0gb3V0LlxuICAgICAgICAhZHVwbGljYXRlc1tpZGVudGlmaWVyXSAmJlxuICAgICAgICAvLyBTa2lwIGtleXdvcmRzIHRoYXQgc3RhcnQgd2l0aCAkIHN1Y2ggYXMgJG1lcmdlIGFuZCAkcGF0Y2guXG4gICAgICAgICEvXlxcJC8udGVzdChrZXl3b3JkKSAmJlxuICAgICAgICAvLyBTa2lwIG1hY3JvIGtleXdvcmRzIHRoYXQgYXJlIG9ubHkgZGVsZWdhdGluZyB0byBvdGhlciBrZXl3b3Jkcy5cbiAgICAgICAgIWRlZmluaXRpb24/Lm1hY3JvICYmXG4gICAgICAgIC8vIEZpbHRlciBvdXQgYWxsIGN1c3RvbSBrZXl3b3JkcyBhbmQgZm9ybWF0cyB0aGF0IHdhbnQgdG8gYmUgc2lsZW50LlxuICAgICAgICAhZGVmaW5pdGlvbj8uc2lsZW50XG4gICAgICApIHtcbiAgICAgICAgY29uc3QgYXJyYXkgPSBlcnJvckhhc2hba2V5XSB8fCAoZXJyb3JIYXNoW2tleV0gPSBbXSlcbiAgICAgICAgYXJyYXkucHVzaCh7XG4gICAgICAgICAgLy8gQWxsb3cgY3VzdG9tIGZvcm1hdHMgYW5kIGtleXdvcmRzIHRvIG92ZXJyaWRlIGVycm9yIG1lc3NhZ2VzLlxuICAgICAgICAgIG1lc3NhZ2U6IGRlZmluaXRpb24/Lm1lc3NhZ2UgfHwgbWVzc2FnZSxcbiAgICAgICAgICBrZXl3b3JkLFxuICAgICAgICAgIHBhcmFtc1xuICAgICAgICB9KVxuICAgICAgICBkdXBsaWNhdGVzW2lkZW50aWZpZXJdID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBOb3cgZmlsdGVyIHRocm91Z2ggdGhlIHJlc3VsdGluZyBlcnJvcnMgYW5kIHBlcmZvcm0gc29tZSBwb3N0LXByb2Nlc3Npbmc6XG4gICAgZm9yIChjb25zdCBbZGF0YVBhdGgsIGVycm9yc10gb2YgT2JqZWN0LmVudHJpZXMoZXJyb3JIYXNoKSkge1xuICAgICAgLy8gV2hlbiB3ZSBnZXQgdGhlc2UgZXJyb3JzIChjYXVzZWQgYnkgYG51bGxhYmxlOiB0cnVlYCksIGl0IG1lYW5zIHRoYXQgd2VcbiAgICAgIC8vIGhhdmUgZGF0YSB0aGF0IGlzbid0IG51bGwgYW5kIGlzIGNhdXNpbmcgb3RoZXIgZXJyb3JzLCBhbmQgd2Ugc2hvdWxkbid0XG4gICAgICAvLyBkaXNwbGF5IHRoZSAnbnVsbCcgcGF0aDpcbiAgICAgIC8vIFtkYXRhUGF0aF06IFtcbiAgICAgIC8vICAge1xuICAgICAgLy8gICAgIG1lc3NhZ2U6ICdzaG91bGQgYmUgbnVsbCcsXG4gICAgICAvLyAgICAga2V5d29yZDogJ3R5cGUnLFxuICAgICAgLy8gICAgIHBhcmFtczogeyB0eXBlOiAnbnVsbCcgfVxuICAgICAgLy8gICB9LFxuICAgICAgLy8gICB7XG4gICAgICAvLyAgICAgbWVzc2FnZTogJ3Nob3VsZCBtYXRjaCBleGFjdGx5IG9uZSBzY2hlbWEgaW4gb25lT2YnLFxuICAgICAgLy8gICAgIGtleXdvcmQ6ICdvbmVPZidcbiAgICAgIC8vICAgfVxuICAgICAgLy8gXVxuICAgICAgaWYgKGVycm9ycy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgY29uc3QgW2Vycm9yMSwgZXJyb3IyXSA9IGVycm9yc1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZXJyb3IxLmtleXdvcmQgPT09ICd0eXBlJyAmJiBlcnJvcjEucGFyYW1zLnR5cGUgPT09ICdudWxsJyAmJlxuICAgICAgICAgIGVycm9yMi5rZXl3b3JkID09PSAnb25lT2YnXG4gICAgICAgICkge1xuICAgICAgICAgIGRlbGV0ZSBlcnJvckhhc2hbZGF0YVBhdGhdXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVycm9ySGFzaFxuICB9XG5cbiAgcHJlZml4RGF0YVBhdGhzKGVycm9ycywgZGF0YVBhdGhQcmVmaXgpIHtcbiAgICByZXR1cm4gZXJyb3JzLm1hcChlcnJvciA9PiAoe1xuICAgICAgLi4uZXJyb3IsXG4gICAgICBkYXRhUGF0aDogZXJyb3IuZGF0YVBhdGhcbiAgICAgICAgPyBgJHtkYXRhUGF0aFByZWZpeH0ke2Vycm9yLmRhdGFQYXRofWBcbiAgICAgICAgOiBkYXRhUGF0aFByZWZpeFxuICAgIH0pKVxuICB9XG5cbiAgLy8gQG92ZXJyaWRlXG4gIGJlZm9yZVZhbGlkYXRlKHsganNvbiwgbW9kZWwsIGN0eCwgb3B0aW9ucyB9KSB7XG4gICAgLy8gQWRkIHZhbGlkYXRvciBpbnN0YW5jZSwgYXBwIGFuZCBvcHRpb25zIHRvIGNvbnRleHRcbiAgICBjdHgudmFsaWRhdG9yID0gdGhpc1xuICAgIGN0eC5hcHAgPSB0aGlzLmFwcFxuICAgIGN0eC5vcHRpb25zID0gb3B0aW9uc1xuICAgIGN0eC5qc29uU2NoZW1hID0gbW9kZWwuY29uc3RydWN0b3IuZ2V0SnNvblNjaGVtYSgpXG4gICAgY29uc3QgeyAkYmVmb3JlVmFsaWRhdGUgfSA9IG1vZGVsXG4gICAgaWYgKCRiZWZvcmVWYWxpZGF0ZSAhPT0gb2JqZWN0aW9uLk1vZGVsLnByb3RvdHlwZS4kYmVmb3JlVmFsaWRhdGUpIHtcbiAgICAgIC8vIFRPRE86IENvbnNpZGVyIGFkZGluZyBob29rcyBmb3IgJ2JlZm9yZTp2YWxpZGF0ZScgYW5kICdhZnRlcjp2YWxpZGF0ZScsXG4gICAgICAvLyBhbmQgaWYgc28sIGRlY2lkZSB3aGF0IHRvIGRvIGFib3V0IG1vZGlmeWluZyAvIHJldHVybmluZyBqc29uLXNjaGVtYS5cbiAgICAgIC8vIFByb2JhYmx5IHdlIHNob3VsZG4ndCBhbGxvdyBpdCB0aGVyZS5cblxuICAgICAgLy8gT25seSBjbG9uZSBqc29uU2NoZW1hIGlmIHRoZSBoYW5kbGVyIGFjdHVhbGx5IHJlY2VpdmVzIGl0LlxuICAgICAgaWYgKCRiZWZvcmVWYWxpZGF0ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGN0eC5qc29uU2NoZW1hID0gY2xvbmUoY3R4Lmpzb25TY2hlbWEpXG4gICAgICB9XG4gICAgICBjb25zdCByZXQgPSBtb2RlbC4kYmVmb3JlVmFsaWRhdGUoY3R4Lmpzb25TY2hlbWEsIGpzb24sIG9wdGlvbnMpXG4gICAgICBpZiAocmV0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY3R4Lmpzb25TY2hlbWEgPSByZXRcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBAb3ZlcnJpZGVcbiAgdmFsaWRhdGUoeyBqc29uLCBtb2RlbCwgY3R4LCBvcHRpb25zIH0pIHtcbiAgICBjb25zdCB7IGpzb25TY2hlbWEgfSA9IGN0eFxuICAgIGlmIChqc29uU2NoZW1hKSB7XG4gICAgICAvLyBXZSBuZWVkIHRvIGNsb25lIHRoZSBpbnB1dCBqc29uIGlmIHdlIGFyZSBhYm91dCB0byBzZXQgZGVmYXVsdCB2YWx1ZXMuXG4gICAgICBpZiAoXG4gICAgICAgICFvcHRpb25zLm11dGFibGUgJiZcbiAgICAgICAgIW9wdGlvbnMucGF0Y2ggJiZcbiAgICAgICAgaGFzRGVmYXVsdHMoanNvblNjaGVtYS5wcm9wZXJ0aWVzKVxuICAgICAgKSB7XG4gICAgICAgIGpzb24gPSBjbG9uZShqc29uKVxuICAgICAgfVxuICAgICAgLy8gR2V0IHRoZSByaWdodCBBanYgaW5zdGFuY2UgZm9yIHRoZSBnaXZlbiBwYXRjaCBhbmQgYXN5bmMgb3B0aW9uc1xuICAgICAgY29uc3QgdmFsaWRhdGUgPSB0aGlzLmdldEFqdihvcHRpb25zKS5nZXRTY2hlbWEoanNvblNjaGVtYS4kaWQpXG4gICAgICAvLyBVc2UgYGNhbGwoKWAgdG8gcGFzcyBjdHggYXMgY29udGV4dCB0byBBanYsIHNlZSBwYXNzQ29udGV4dDpcbiAgICAgIGNvbnN0IHJlcyA9IHZhbGlkYXRlLmNhbGwoY3R4LCBqc29uKVxuICAgICAgY29uc3QgaGFuZGxlRXJyb3JzID0gZXJyb3JzID0+IHtcbiAgICAgICAgaWYgKGVycm9ycykge1xuICAgICAgICAgIC8vIE5PVEU6IFRoZSBjb252ZXJzaW9uIGZyb20gQWp2IGVycm9ycyB0byBPYmplY3Rpb24gZXJyb3JzIGhhcHBlbiBpblxuICAgICAgICAgIC8vIE1vZGVsLmNyZWF0ZVZhbGlkYXRpb25FcnJvcigpLCB3aGljaCBjYWxscyBWYWxpZGF0b3IucGFyc2VFcnJvcigpXG4gICAgICAgICAgdGhyb3cgbW9kZWwuY29uc3RydWN0b3IuY3JlYXRlVmFsaWRhdGlvbkVycm9yKHtcbiAgICAgICAgICAgIHR5cGU6ICdNb2RlbFZhbGlkYXRpb24nLFxuICAgICAgICAgICAgZXJyb3JzLFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIGpzb25cbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBIYW5kbGUgYm90aCBhc3luYyBhbmQgc3luYyB2YWxpZGF0aW9uIGhlcmU6XG4gICAgICBpZiAoaXNQcm9taXNlKHJlcykpIHtcbiAgICAgICAgcmV0dXJuIHJlc1xuICAgICAgICAgIC5jYXRjaChlcnJvciA9PiBoYW5kbGVFcnJvcnMoZXJyb3IuZXJyb3JzKSlcbiAgICAgICAgICAudGhlbigoKSA9PiBqc29uKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaGFuZGxlRXJyb3JzKHZhbGlkYXRlLmVycm9ycylcbiAgICAgICAgcmV0dXJuIGpzb25cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaGFzRGVmYXVsdHMob2JqKSB7XG4gIGlmIChpc0FycmF5KG9iaikpIHtcbiAgICBmb3IgKGNvbnN0IHZhbCBvZiBvYmopIHtcbiAgICAgIGlmICh2YWwgJiYgaGFzRGVmYXVsdHModmFsKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChpc09iamVjdChvYmopKSB7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWxdIG9mIE9iamVjdC5lbnRyaWVzKG9iaikpIHtcbiAgICAgIGlmIChrZXkgPT09ICdkZWZhdWx0JyB8fCB2YWwgJiYgaGFzRGVmYXVsdHModmFsKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gIHN0cmljdDogZmFsc2UsXG4gIGFsbEVycm9yczogdHJ1ZSxcbiAgb3duUHJvcGVydGllczogdHJ1ZSxcbiAgcGFzc0NvbnRleHQ6IHRydWUsXG4gIHVzZURlZmF1bHRzOiB0cnVlLFxuICB2YWxpZGF0ZVNjaGVtYTogdHJ1ZVxufVxuXG4vLyBPcHRpb25zIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgcGFzc2VkIG9uIHRvIHRoZSBjcmVhdGVkIEFqdiBpbnN0YW5jZXMsIHdpdGhcbi8vIHRoZWlyIGRlZmF1bHQgc2V0dGluZ3MgKHNvbWUgZGVmYXVsdHMgYXJlIGZyb20gQWp2LCBzb21lIGZyb20gZGVmYXVsdE9wdGlvbnMpXG5jb25zdCB2YWxpZGF0b3JPcHRpb25zID0ge1xuICAvLyBPdXIgZXh0ZW5zaW9uczpcbiAgYXN5bmM6IGZhbHNlLFxuICBwYXRjaDogZmFsc2UsXG4gIC8vIEFqdiBPcHRpb25zOlxuICAkZGF0YTogZmFsc2UsXG4gICRjb21tZW50OiBmYWxzZSxcbiAgY29lcmNlVHlwZXM6IGZhbHNlLFxuICBtdWx0aXBsZU9mUHJlY2lzaW9uOiBmYWxzZSxcbiAgb3duUHJvcGVydGllczogdHJ1ZSxcbiAgcmVtb3ZlQWRkaXRpb25hbDogZmFsc2UsXG4gIHVuaXF1ZUl0ZW1zOiB0cnVlLFxuICB1c2VEZWZhdWx0czogdHJ1ZSxcbiAgdmVyYm9zZTogZmFsc2Vcbn1cbiJdfQ==
|
package/lib/app/index.js
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
require("core-js/modules/esnext.async-iterator.for-each.js");
|
|
4
|
+
|
|
5
|
+
require("core-js/modules/esnext.iterator.constructor.js");
|
|
6
|
+
|
|
7
|
+
require("core-js/modules/esnext.iterator.for-each.js");
|
|
8
|
+
|
|
3
9
|
exports.__esModule = true;
|
|
4
10
|
|
|
5
11
|
var _Application = require("./Application");
|
|
@@ -17,4 +23,4 @@ Object.keys(_Validator).forEach(function (key) {
|
|
|
17
23
|
if (key in exports && exports[key] === _Validator[key]) return;
|
|
18
24
|
exports[key] = _Validator[key];
|
|
19
25
|
});
|
|
20
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcHAvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vQXBwbGljYXRpb24nXG5leHBvcnQgKiBmcm9tICcuL1ZhbGlkYXRvcidcbiJdfQ==
|
package/lib/cli/console.js
CHANGED
|
@@ -3,13 +3,23 @@
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
exports.default = startConsole;
|
|
5
5
|
|
|
6
|
+
require("core-js/modules/esnext.async-iterator.map.js");
|
|
7
|
+
|
|
8
|
+
require("core-js/modules/esnext.iterator.map.js");
|
|
9
|
+
|
|
10
|
+
require("core-js/modules/esnext.async-iterator.filter.js");
|
|
11
|
+
|
|
12
|
+
require("core-js/modules/esnext.iterator.constructor.js");
|
|
13
|
+
|
|
14
|
+
require("core-js/modules/esnext.iterator.filter.js");
|
|
15
|
+
|
|
6
16
|
var _repl = _interopRequireDefault(require("repl"));
|
|
7
17
|
|
|
8
18
|
var _path = _interopRequireDefault(require("path"));
|
|
9
19
|
|
|
10
20
|
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
11
21
|
|
|
12
|
-
var
|
|
22
|
+
var _picocolors = _interopRequireDefault(require("picocolors"));
|
|
13
23
|
|
|
14
24
|
var _objection = _interopRequireDefault(require("objection"));
|
|
15
25
|
|
|
@@ -115,8 +125,8 @@ function displayUsage(app, config, details) {
|
|
|
115
125
|
Dito Console
|
|
116
126
|
|
|
117
127
|
Available references:
|
|
118
|
-
- Dito app: ${
|
|
119
|
-
${modelHandleNames.length > 0 ? ` - Dito models: ${modelHandleNames.map(m =>
|
|
128
|
+
- Dito app: ${_picocolors.default.cyan('app')}
|
|
129
|
+
${modelHandleNames.length > 0 ? ` - Dito models: ${modelHandleNames.map(m => _picocolors.default.cyan(m)).join(', ')}` : ''}
|
|
120
130
|
`);
|
|
121
131
|
|
|
122
132
|
if (details) {
|
|
@@ -162,4 +172,4 @@ function wrapEval({
|
|
|
162
172
|
function logError(error) {
|
|
163
173
|
console.info(`\x1b[31m${error}\x1b[0m`);
|
|
164
174
|
}
|
|
165
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGkvY29uc29sZS5qcyJdLCJuYW1lcyI6WyJzdGFydGVkIiwic2VydmVyIiwic3RhcnRDb25zb2xlIiwiYXBwIiwiY29uZmlnIiwicXVpZXQiLCJwcm9tcHQiLCJ1c2VDb2xvcnMiLCJpZ25vcmVVbmRlZmluZWQiLCJyZXBsIiwic3RhcnQiLCJwYXVzZSIsIk9iamVjdCIsImFzc2lnbiIsImNvbnRleHQiLCJvYmplY3Rpb24iLCJtb2RlbHMiLCJldmFsIiwid3JhcEV2YWwiLCJkZWZpbmVDb21tYW5kIiwiaGVscCIsImFjdGlvbiIsImRpc3BsYXlVc2FnZSIsImRpc3BsYXlQcm9tcHQiLCJjb25zb2xlIiwiaW5mbyIsImtleXMiLCJqb2luIiwiaGlzdG9yeUZpbGUiLCJwYXRoIiwicHJvY2VzcyIsImN3ZCIsImZzIiwic3RhdCIsImxpbmVzIiwicmVhZEZpbGUiLCJ0b1N0cmluZyIsInNwbGl0IiwicmV2ZXJzZSIsInNsaWNlIiwiaGlzdG9yeVNpemUiLCJmaWx0ZXIiLCJsaW5lIiwidHJpbSIsIm1hcCIsImhpc3RvcnkiLCJwdXNoIiwiZSIsInNldFByb21wdCIsInJlc3VtZSIsIndyaXRlIiwibmFtZSIsIlByb21pc2UiLCJyZXNvbHZlIiwib25jZSIsInN0b3AiLCJlcnIiLCJsb2dFcnJvciIsIndyaXRlRmlsZSIsImRldGFpbHMiLCJtb2RlbEhhbmRsZU5hbWVzIiwiY2hhbGsiLCJjeWFuIiwibGVuZ3RoIiwibSIsImRlZmF1bHRFdmFsIiwiY29kZSIsImZpbGUiLCJjYiIsImNhbGwiLCJyZXN1bHQiLCJ0aGVuIiwicmVzb2x2ZWQiLCJrZXkiLCJlcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUVBLElBQUlBLE9BQU8sR0FBRyxLQUFkO0FBQ0EsSUFBSUMsTUFBTSxHQUFHLElBQWI7O0FBRWUsZUFBZUMsWUFBZixDQUE0QkMsR0FBNUIsRUFBaUNDLE1BQWpDLEVB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LENBQUY7QUFDRCxPQVRELENBU0UsT0FBT0UsS0FBUCxFQUFjO0FBQ2RqQixRQUFBQSxRQUFRLENBQUNpQixLQUFELENBQVI7QUFDQU4sUUFBQUEsRUFBRTtBQUNIO0FBQ0YsS0FqQk0sQ0FBUDtBQWtCRCxHQW5CRDtBQW9CRDs7QUFFRCxTQUFTWCxRQUFULENBQWtCaUIsS0FBbEIsRUFBeUI7QUFDdkJsRCxFQUFBQSxPQUFPLENBQUNDLElBQVIsQ0FBYyxXQUFVaUQsS0FBTSxTQUE5QjtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlcGwgZnJvbSAncmVwbCdcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXG5pbXBvcnQgZnMgZnJvbSAnZnMtZXh0cmEnXG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnXG5pbXBvcnQgb2JqZWN0aW9uIGZyb20gJ29iamVjdGlvbidcbmltcG9ydCB7IGlzRnVuY3Rpb24sIGRlaW5kZW50IH0gZnJvbSAnQGRpdG9qcy91dGlscydcblxubGV0IHN0YXJ0ZWQgPSBmYWxzZVxubGV0IHNlcnZlciA9IG51bGxcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gc3RhcnRDb25zb2xlKGFwcCwgY29uZmlnKSB7XG4gIGNvbmZpZyA9IHtcbiAgICBxdWlldDogZmFsc2UsXG4gICAgcHJvbXB0OiAnZGl0byA+ICcsXG4gICAgdXNlQ29sb3JzOiB0cnVlLFxuICAgIGlnbm9yZVVuZGVmaW5lZDogdHJ1ZSxcbiAgICAuLi5jb25maWdcbiAgfVxuXG4gIGlmIChzdGFydGVkKSB7XG4gICAgcmV0dXJuIHNlcnZlclxuICB9XG4gIHN0YXJ0ZWQgPSB0cnVlXG5cbiAgc2VydmVyID0gcmVwbC5zdGFydCh7IC4uLmNvbmZpZywgcHJvbXB0OiAnJyB9KVxuICBzZXJ2ZXIucGF1c2UoKVxuICBPYmplY3QuYXNzaWduKHNlcnZlci5jb250ZXh0LCB7XG4gICAgYXBwLFxuICAgIG9iamVjdGlvbixcbiAgICAuLi5hcHAubW9kZWxzXG4gIH0pXG4gIHNlcnZlci5ldmFsID0gd3JhcEV2YWwoc2VydmVyKVxuXG4gIHNlcnZlci5kZWZpbmVDb21tYW5kKCd1c2FnZScsIHtcbiAgICBoZWxwOiAnRGV0YWlsZWQgRGl0byBDb25zb2xlIHVzYWdlIGluZm9ybWF0aW9uJyxcbiAgICBhY3Rpb24oKSB7XG4gICAgICBkaXNwbGF5VXNhZ2UoYXBwLCBjb25maWcsIHRydWUpXG4gICAgICB0aGlzLmRpc3BsYXlQcm9tcHQoKVxuICAgIH1cbiAgfSlcblxuICBzZXJ2ZXIuZGVmaW5lQ29tbWFuZCgnbW9kZWxzJywge1xuICAgIGhlbHA6ICdEaXNwbGF5IGF2YWlsYWJsZSBEaXRvIG1vZGVscycsXG4gICAgYWN0aW9uKCkge1xuICAgICAgY29uc29sZS5pbmZvKE9iamVjdC5rZXlzKGFwcC5tb2RlbHMpLmpvaW4oJywgJykpXG4gICAgICB0aGlzLmRpc3BsYXlQcm9tcHQoKVxuICAgIH1cbiAgfSlcblxuICAvLyBTZXQgdXAgaGlzdG9yeSBmaWxlXG4gIGNvbnN0IGhpc3RvcnlGaWxlID0gcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICcuY29uc29sZV9oaXN0b3J5JylcbiAgdHJ5IHtcbiAgICBhd2FpdCBmcy5zdGF0KGhpc3RvcnlGaWxlKVxuICAgIGNvbnN0IGxpbmVzID0gYXdhaXQgZnMucmVhZEZpbGUoaGlzdG9yeUZpbGUpXG4gICAgbGluZXMudG9TdHJpbmcoKS5zcGxpdCgnXFxuJylcbiAgICAgIC5yZXZlcnNlKClcbiAgICAgIC5zbGljZSgwLCBjb25maWcuaGlzdG9yeVNpemUpXG4gICAgICAuZmlsdGVyKGxpbmUgPT4gbGluZS50cmltKCkpXG4gICAgICAubWFwKGxpbmUgPT4gc2VydmVyLmhpc3RvcnkucHVzaChsaW5lKSlcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuaW5mbyhkZWluZGVudGBcbiAgICAgIFVuYWJsZSB0byBSRVBMIGhpc3RvcnkgZmlsZSBhdCAke2hpc3RvcnlGaWxlfS5cbiAgICAgIEEgaGlzdG9yeSBmaWxlIHdpbGwgYmUgY3JlYXRlZCBvbiBzaHV0ZG93blxuICAgIGApXG4gIH1cblxuICBhd2FpdCBhcHAuc3RhcnQoKVxuICBpZiAoIWNvbmZpZy5xdWlldCkge1xuICAgIGRpc3BsYXlVc2FnZShhcHAsIGNvbmZpZylcbiAgfVxuICBzZXJ2ZXIuc2V0UHJvbXB0KGNvbmZpZy5wcm9tcHQpXG4gIHNlcnZlci5yZXN1bWUoKVxuICBzZXJ2ZXIud3JpdGUoJycsIHsgbmFtZTogJ3JldHVybicgfSlcbiAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgIHNlcnZlci5vbmNlKCdleGl0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYXBwLnN0b3AoKVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGxvZ0Vycm9yKGVycilcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGxpbmVzID0gKHNlcnZlci5oaXN0b3J5IHx8IFtdKVxuICAgICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgICAuZmlsdGVyKGxpbmUgPT4gbGluZS50cmltKCkpXG4gICAgICAgICAgLmpvaW4oJ1xcbicpXG4gICAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShoaXN0b3J5RmlsZSwgbGluZXMpXG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgbG9nRXJyb3IoZXJyKVxuICAgICAgfVxuICAgICAgcmVzb2x2ZSh0cnVlKVxuICAgIH0pXG4gIH0pXG59XG5cbmZ1bmN0aW9uIGRpc3BsYXlVc2FnZShhcHAsIGNvbmZpZywgZGV0YWlscykge1xuICBjb25zdCBtb2RlbEhhbmRsZU5hbWVzID0gT2JqZWN0LmtleXMoYXBwLm1vZGVscylcbiAgY29uc29sZS5pbmZvKGRlaW5kZW50YFxuXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgRGl0byBDb25zb2xlXG5cbiAgICBBdmFpbGFibGUgcmVmZXJlbmNlczpcbiAgICAgLSBEaXRvIGFwcDogJHtjaGFsay5jeWFuKCdhcHAnKX1cbiAgICAke1xuICAgICAgbW9kZWxIYW5kbGVOYW1lcy5sZW5ndGggPiAwXG4gICAgICAgID8gYCAtIERpdG8gbW9kZWxzOiAke1xuICAgICAgICAgIG1vZGVsSGFuZGxlTmFtZXMubWFwKG0gPT4gY2hhbGsuY3lhbihtKSkuam9pbignLCAnKVxuICAgICAgICB9YFxuICAgICAgICA6ICcnXG4gICAgfVxuICBgKVxuICBpZiAoZGV0YWlscykge1xuICAgIGNvbnNvbGUuaW5mbyhkZWluZGVudGBcbiAgICAgIEV4YW1wbGVzOlxuXG4gICAgICAke2NvbmZpZy5wcm9tcHR9IHVzZXIgPSBVc2VyLndoZXJlKHsgbGFzdE5hbWU6ICdEb2UnIH0pLmZpcnN0KClcbiAgICAgICR7Y29uZmlnLnByb21wdH0gdXNlci4kcGF0Y2goeyBmaXJzdE5hbWU6ICdKb2UnIH0pXG4gICAgICAke2NvbmZpZy5wcm9tcHR9IHVzZXIuJGNvbW1lbnRzLmluc2VydCh7IC4uLiB9KVxuICAgIGApXG4gIH1cbiAgY29uc29sZS5pbmZvKCctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nKVxufVxuXG4vLyBXcmFwcyB0aGUgZGVmYXVsdCBldmFsIHdpdGggYSBoYW5kbGVyIHRoYXQgcmVzb2x2ZXMgcHJvbWlzZXNcbmZ1bmN0aW9uIHdyYXBFdmFsKHsgZXZhbDogZGVmYXVsdEV2YWwgfSkge1xuICByZXR1cm4gYXN5bmMgZnVuY3Rpb24oY29kZSwgY29udGV4dCwgZmlsZSwgY2IpIHtcbiAgICByZXR1cm4gZGVmYXVsdEV2YWwuY2FsbCh0aGlzLCBjb2RlLCBjb250ZXh0LCBmaWxlLCBhc3luYyAoZXJyLCByZXN1bHQpID0+IHtcbiAgICAgIGlmIChlcnIgfHwgIShyZXN1bHQgJiYgaXNGdW5jdGlvbihyZXN1bHQudGhlbikpKSB7XG4gICAgICAgIHJldHVybiBjYihlcnIsIHJlc3VsdClcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkID0gYXdhaXQgcmVzdWx0XG4gICAgICAgIC8vIFJlcGxhY2UgYW55IHByb21pc2VzIGluIHRoZSBSRVBMIGNvbnRleHQgd2l0aCB0aGUgcmVzb2x2ZWQgcHJvbWlzZS5cbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gY29udGV4dCkge1xuICAgICAgICAgIGlmIChjb250ZXh0W2tleV0gPT09IHJlc3VsdCkge1xuICAgICAgICAgICAgY29udGV4dFtrZXldID0gcmVzb2x2ZWRcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2IobnVsbCwgcmVzb2x2ZWQpXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dFcnJvcihlcnJvcilcbiAgICAgICAgY2IoKSAvLyBBcHBsaWNhdGlvbiBlcnJvcnMgYXJlIG5vdCBSRVBMIGVycm9yc1xuICAgICAgfVxuICAgIH0pXG4gIH1cbn1cblxuZnVuY3Rpb24gbG9nRXJyb3IoZXJyb3IpIHtcbiAgY29uc29sZS5pbmZvKGBcXHgxYlszMW0ke2Vycm9yfVxceDFiWzBtYClcbn1cbiJdfQ==
|
|
175
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGkvY29uc29sZS5qcyJdLCJuYW1lcyI6WyJzdGFydGVkIiwic2VydmVyIiwic3RhcnRDb25zb2xlIiwiYXBwIiwiY29uZmlnIiwicXVpZXQiLCJwcm9tcHQiLCJ1c2VDb2xvcnMiLCJpZ25vcmVVbmRlZmluZWQiLCJyZXBsIiwic3RhcnQiLCJwYXVzZSIsIk9iamVjdCIsImFzc2lnbiIsImNvbnRleHQiLCJvYmplY3Rpb24iLCJtb2RlbHMiLCJldmFsIiwid3JhcEV2YWwiLCJkZWZpbmVDb21tYW5kIiwiaGVscCIsImFjdGlvbiIsImRpc3BsYXlVc2FnZSIsImRpc3BsYXlQcm9tcHQiLCJjb25zb2xlIiwiaW5mbyIsImtleXMiLCJqb2luIiwiaGlzdG9yeUZpbGUiLCJwYXRoIiwicHJvY2VzcyIsImN3ZCIsImZzIiwic3RhdCIsImxpbmVzIiwicmVhZEZpbGUiLCJ0b1N0cmluZyIsInNwbGl0IiwicmV2ZXJzZSIsInNsaWNlIiwiaGlzdG9yeVNpemUiLCJmaWx0ZXIiLCJsaW5lIiwidHJpbSIsIm1hcCIsImhpc3RvcnkiLCJwdXNoIiwiZSIsInNldFByb21wdCIsInJlc3VtZSIsIndyaXRlIiwibmFtZSIsIlByb21pc2UiLCJyZXNvbHZlIiwib25jZSIsInN0b3AiLCJlcnIiLCJsb2dFcnJvciIsIndyaXRlRmlsZSIsImRldGFpbHMiLCJtb2RlbEhhbmRsZU5hbWVzIiwicGljbyIsImN5YW4iLCJsZW5ndGgiLCJtIiwiZGVmYXVsdEV2YWwiLCJjb2RlIiwiZmlsZSIsImNiIiwiY2FsbCIsInJlc3VsdCIsInRoZW4iLCJyZXNvbHZlZCIsImtleSIsImVycm9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUVBLElBQUlBLE9BQU8sR0FBRyxLQUFkO0FBQ0EsSUFBSUMsTUFBTSxHQUFHLElBQWI7O0FBRWUsZUFBZUMsWUFBZixDQUE0QkMsR0FBNUIsRUFBaUND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LEVBQU9JLFFBQVAsQ0FBRjtBQUNELE9BVEQsQ0FTRSxPQUFPRSxLQUFQLEVBQWM7QUFDZGpCLFFBQUFBLFFBQVEsQ0FBQ2lCLEtBQUQsQ0FBUjtBQUNBTixRQUFBQSxFQUFFO0FBQ0g7QUFDRixLQWpCTSxDQUFQO0FBa0JELEdBbkJEO0FBb0JEOztBQUVELFNBQVNYLFFBQVQsQ0FBa0JpQixLQUFsQixFQUF5QjtBQUN2QmxELEVBQUFBLE9BQU8sQ0FBQ0MsSUFBUixDQUFjLFdBQVVpRCxLQUFNLFNBQTlCO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcmVwbCBmcm9tICdyZXBsJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBmcyBmcm9tICdmcy1leHRyYSdcbmltcG9ydCBwaWNvIGZyb20gJ3BpY29jb2xvcnMnXG5pbXBvcnQgb2JqZWN0aW9uIGZyb20gJ29iamVjdGlvbidcbmltcG9ydCB7IGlzRnVuY3Rpb24sIGRlaW5kZW50IH0gZnJvbSAnQGRpdG9qcy91dGlscydcblxubGV0IHN0YXJ0ZWQgPSBmYWxzZVxubGV0IHNlcnZlciA9IG51bGxcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gc3RhcnRDb25zb2xlKGFwcCwgY29uZmlnKSB7XG4gIGNvbmZpZyA9IHtcbiAgICBxdWlldDogZmFsc2UsXG4gICAgcHJvbXB0OiAnZGl0byA+ICcsXG4gICAgdXNlQ29sb3JzOiB0cnVlLFxuICAgIGlnbm9yZVVuZGVmaW5lZDogdHJ1ZSxcbiAgICAuLi5jb25maWdcbiAgfVxuXG4gIGlmIChzdGFydGVkKSB7XG4gICAgcmV0dXJuIHNlcnZlclxuICB9XG4gIHN0YXJ0ZWQgPSB0cnVlXG5cbiAgc2VydmVyID0gcmVwbC5zdGFydCh7IC4uLmNvbmZpZywgcHJvbXB0OiAnJyB9KVxuICBzZXJ2ZXIucGF1c2UoKVxuICBPYmplY3QuYXNzaWduKHNlcnZlci5jb250ZXh0LCB7XG4gICAgYXBwLFxuICAgIG9iamVjdGlvbixcbiAgICAuLi5hcHAubW9kZWxzXG4gIH0pXG4gIHNlcnZlci5ldmFsID0gd3JhcEV2YWwoc2VydmVyKVxuXG4gIHNlcnZlci5kZWZpbmVDb21tYW5kKCd1c2FnZScsIHtcbiAgICBoZWxwOiAnRGV0YWlsZWQgRGl0byBDb25zb2xlIHVzYWdlIGluZm9ybWF0aW9uJyxcbiAgICBhY3Rpb24oKSB7XG4gICAgICBkaXNwbGF5VXNhZ2UoYXBwLCBjb25maWcsIHRydWUpXG4gICAgICB0aGlzLmRpc3BsYXlQcm9tcHQoKVxuICAgIH1cbiAgfSlcblxuICBzZXJ2ZXIuZGVmaW5lQ29tbWFuZCgnbW9kZWxzJywge1xuICAgIGhlbHA6ICdEaXNwbGF5IGF2YWlsYWJsZSBEaXRvIG1vZGVscycsXG4gICAgYWN0aW9uKCkge1xuICAgICAgY29uc29sZS5pbmZvKE9iamVjdC5rZXlzKGFwcC5tb2RlbHMpLmpvaW4oJywgJykpXG4gICAgICB0aGlzLmRpc3BsYXlQcm9tcHQoKVxuICAgIH1cbiAgfSlcblxuICAvLyBTZXQgdXAgaGlzdG9yeSBmaWxlXG4gIGNvbnN0IGhpc3RvcnlGaWxlID0gcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICcuY29uc29sZV9oaXN0b3J5JylcbiAgdHJ5IHtcbiAgICBhd2FpdCBmcy5zdGF0KGhpc3RvcnlGaWxlKVxuICAgIGNvbnN0IGxpbmVzID0gYXdhaXQgZnMucmVhZEZpbGUoaGlzdG9yeUZpbGUpXG4gICAgbGluZXMudG9TdHJpbmcoKS5zcGxpdCgnXFxuJylcbiAgICAgIC5yZXZlcnNlKClcbiAgICAgIC5zbGljZSgwLCBjb25maWcuaGlzdG9yeVNpemUpXG4gICAgICAuZmlsdGVyKGxpbmUgPT4gbGluZS50cmltKCkpXG4gICAgICAubWFwKGxpbmUgPT4gc2VydmVyLmhpc3RvcnkucHVzaChsaW5lKSlcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuaW5mbyhkZWluZGVudGBcbiAgICAgIFVuYWJsZSB0byBSRVBMIGhpc3RvcnkgZmlsZSBhdCAke2hpc3RvcnlGaWxlfS5cbiAgICAgIEEgaGlzdG9yeSBmaWxlIHdpbGwgYmUgY3JlYXRlZCBvbiBzaHV0ZG93blxuICAgIGApXG4gIH1cblxuICBhd2FpdCBhcHAuc3RhcnQoKVxuICBpZiAoIWNvbmZpZy5xdWlldCkge1xuICAgIGRpc3BsYXlVc2FnZShhcHAsIGNvbmZpZylcbiAgfVxuICBzZXJ2ZXIuc2V0UHJvbXB0KGNvbmZpZy5wcm9tcHQpXG4gIHNlcnZlci5yZXN1bWUoKVxuICBzZXJ2ZXIud3JpdGUoJycsIHsgbmFtZTogJ3JldHVybicgfSlcbiAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgIHNlcnZlci5vbmNlKCdleGl0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYXBwLnN0b3AoKVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGxvZ0Vycm9yKGVycilcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGxpbmVzID0gKHNlcnZlci5oaXN0b3J5IHx8IFtdKVxuICAgICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgICAuZmlsdGVyKGxpbmUgPT4gbGluZS50cmltKCkpXG4gICAgICAgICAgLmpvaW4oJ1xcbicpXG4gICAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShoaXN0b3J5RmlsZSwgbGluZXMpXG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgbG9nRXJyb3IoZXJyKVxuICAgICAgfVxuICAgICAgcmVzb2x2ZSh0cnVlKVxuICAgIH0pXG4gIH0pXG59XG5cbmZ1bmN0aW9uIGRpc3BsYXlVc2FnZShhcHAsIGNvbmZpZywgZGV0YWlscykge1xuICBjb25zdCBtb2RlbEhhbmRsZU5hbWVzID0gT2JqZWN0LmtleXMoYXBwLm1vZGVscylcbiAgY29uc29sZS5pbmZvKGRlaW5kZW50YFxuXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgRGl0byBDb25zb2xlXG5cbiAgICBBdmFpbGFibGUgcmVmZXJlbmNlczpcbiAgICAgLSBEaXRvIGFwcDogJHtwaWNvLmN5YW4oJ2FwcCcpfVxuICAgICR7XG4gICAgICBtb2RlbEhhbmRsZU5hbWVzLmxlbmd0aCA+IDBcbiAgICAgICAgPyBgIC0gRGl0byBtb2RlbHM6ICR7XG4gICAgICAgICAgbW9kZWxIYW5kbGVOYW1lcy5tYXAobSA9PiBwaWNvLmN5YW4obSkpLmpvaW4oJywgJylcbiAgICAgICAgfWBcbiAgICAgICAgOiAnJ1xuICAgIH1cbiAgYClcbiAgaWYgKGRldGFpbHMpIHtcbiAgICBjb25zb2xlLmluZm8oZGVpbmRlbnRgXG4gICAgICBFeGFtcGxlczpcblxuICAgICAgJHtjb25maWcucHJvbXB0fSB1c2VyID0gVXNlci53aGVyZSh7IGxhc3ROYW1lOiAnRG9lJyB9KS5maXJzdCgpXG4gICAgICAke2NvbmZpZy5wcm9tcHR9IHVzZXIuJHBhdGNoKHsgZmlyc3ROYW1lOiAnSm9lJyB9KVxuICAgICAgJHtjb25maWcucHJvbXB0fSB1c2VyLiRjb21tZW50cy5pbnNlcnQoeyAuLi4gfSlcbiAgICBgKVxuICB9XG4gIGNvbnNvbGUuaW5mbygnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJylcbn1cblxuLy8gV3JhcHMgdGhlIGRlZmF1bHQgZXZhbCB3aXRoIGEgaGFuZGxlciB0aGF0IHJlc29sdmVzIHByb21pc2VzXG5mdW5jdGlvbiB3cmFwRXZhbCh7IGV2YWw6IGRlZmF1bHRFdmFsIH0pIHtcbiAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uKGNvZGUsIGNvbnRleHQsIGZpbGUsIGNiKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRFdmFsLmNhbGwodGhpcywgY29kZSwgY29udGV4dCwgZmlsZSwgYXN5bmMgKGVyciwgcmVzdWx0KSA9PiB7XG4gICAgICBpZiAoZXJyIHx8ICEocmVzdWx0ICYmIGlzRnVuY3Rpb24ocmVzdWx0LnRoZW4pKSkge1xuICAgICAgICByZXR1cm4gY2IoZXJyLCByZXN1bHQpXG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNvbHZlZCA9IGF3YWl0IHJlc3VsdFxuICAgICAgICAvLyBSZXBsYWNlIGFueSBwcm9taXNlcyBpbiB0aGUgUkVQTCBjb250ZXh0IHdpdGggdGhlIHJlc29sdmVkIHByb21pc2UuXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGNvbnRleHQpIHtcbiAgICAgICAgICBpZiAoY29udGV4dFtrZXldID09PSByZXN1bHQpIHtcbiAgICAgICAgICAgIGNvbnRleHRba2V5XSA9IHJlc29sdmVkXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNiKG51bGwsIHJlc29sdmVkKVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nRXJyb3IoZXJyb3IpXG4gICAgICAgIGNiKCkgLy8gQXBwbGljYXRpb24gZXJyb3JzIGFyZSBub3QgUkVQTCBlcnJvcnNcbiAgICAgIH1cbiAgICB9KVxuICB9XG59XG5cbmZ1bmN0aW9uIGxvZ0Vycm9yKGVycm9yKSB7XG4gIGNvbnNvbGUuaW5mbyhgXFx4MWJbMzFtJHtlcnJvcn1cXHgxYlswbWApXG59XG4iXX0=
|
|
@@ -3,11 +3,23 @@
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
exports.createMigration = createMigration;
|
|
5
5
|
|
|
6
|
+
require("core-js/modules/esnext.async-iterator.map.js");
|
|
7
|
+
|
|
8
|
+
require("core-js/modules/esnext.iterator.map.js");
|
|
9
|
+
|
|
10
|
+
require("core-js/modules/es.error.cause.js");
|
|
11
|
+
|
|
12
|
+
require("core-js/modules/esnext.async-iterator.filter.js");
|
|
13
|
+
|
|
14
|
+
require("core-js/modules/esnext.iterator.constructor.js");
|
|
15
|
+
|
|
16
|
+
require("core-js/modules/esnext.iterator.filter.js");
|
|
17
|
+
|
|
6
18
|
var _path = _interopRequireDefault(require("path"));
|
|
7
19
|
|
|
8
20
|
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
9
21
|
|
|
10
|
-
var
|
|
22
|
+
var _picocolors = _interopRequireDefault(require("picocolors"));
|
|
11
23
|
|
|
12
24
|
var _schema = require("../../schema");
|
|
13
25
|
|
|
@@ -70,7 +82,7 @@ async function createMigration(app, name, ...modelNames) {
|
|
|
70
82
|
const file = _path.default.join(migrationDir, filename);
|
|
71
83
|
|
|
72
84
|
if (await _fsExtra.default.exists(file)) {
|
|
73
|
-
console.info(
|
|
85
|
+
console.info(_picocolors.default.red(`Migration '${filename}' already exists.`));
|
|
74
86
|
return false;
|
|
75
87
|
} else {
|
|
76
88
|
await _fsExtra.default.writeFile(file, (0, _utils.deindent)`
|
|
@@ -82,7 +94,7 @@ async function createMigration(app, name, ...modelNames) {
|
|
|
82
94
|
${getCode(dropTables)}
|
|
83
95
|
}
|
|
84
96
|
`);
|
|
85
|
-
console.info(
|
|
97
|
+
console.info(_picocolors.default.cyan(`Migration '${filename}' successfully created.`));
|
|
86
98
|
return true;
|
|
87
99
|
}
|
|
88
100
|
}
|
|
@@ -222,4 +234,4 @@ function getTimestamp() {
|
|
|
222
234
|
const d = new Date();
|
|
223
235
|
return d.getFullYear().toString() + padDate(d.getMonth() + 1) + padDate(d.getDate()) + padDate(d.getHours()) + padDate(d.getMinutes()) + padDate(d.getSeconds());
|
|
224
236
|
}
|
|
225
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGkvZGIvY3JlYXRlTWlncmF0aW9uLmpzIl0sIm5hbWVzIjpbInR5cGVUb0tuZXgiLCJudW1iZXIiLCJvYmplY3QiLCJhcnJheSIsImRlZmF1bHRWYWx1ZXMiLCJtaWdyYXRpb25EaXIiLCJwYXRoIiwiam9pbiIsInByb2Nlc3MiLCJjd2QiLCJjcmVhdGVNaWdyYXRpb24iLCJhcHAiLCJuYW1lIiwibW9kZWxOYW1lcyIsIm1vZGVscyIsIm1hcCIsIm1vZGVsTmFtZSIsIm1vZGVsQ2xhc3MiLCJFcnJvciIsInRhYmxlcyIsImNvbGxlY3RNb2RlbFRhYmxlcyIsImNvbGxlY3RUaHJvdWdoVGFibGVzIiwiY3JlYXRlVGFibGVzIiwiZHJvcFRhYmxlcyIsInRhYmxlTmFtZSIsInN0YXRlbWVudHMiLCJwdXNoIiwidW5zaGlmdCIsImdldENvZGUiLCJsZW5ndGgiLCJmaWxlbmFtZSIsImdldFRpbWVzdGFtcCIsImZpbGUiLCJmcyIsImV4aXN0cyIsImNvbnNvbGUiLCJpbmZvIiwiY2hhbGsiLCJyZWQiLCJ3cml0ZUZpbGUiLCJjeWFuIiwibm9ybWFsaXplSWRlbnRpZmllciIsInByb3BlcnRpZXMiLCJyZWxhdGlvbnMiLCJkZWZpbml0aW9uIiwidW5pcXVlQ29tcG9zaXRlcyIsInByb3BlcnR5IiwiT2JqZWN0IiwiZW50cmllcyIsImNvbHVtbiIsImRlc2NyaXB0aW9uIiwidHlwZSIsInNwZWNpZmljVHlwZSIsInVuc2lnbmVkIiwiY29tcHV0ZWQiLCJudWxsYWJsZSIsInJlcXVpcmVkIiwicHJpbWFyeSIsImZvcmVpZ24iLCJ1bmlxdWUiLCJpbmRleCIsImRlZmF1bHQiLCJfZGVmYXVsdCIsImtuZXhUeXBlIiwicmVwbGFjZSIsInRyaW0iLCJjb21wb3NpdGVzIiwic3RhdGVtZW50IiwidW5kZWZpbmVkIiwidmFsdWUiLCJKU09OIiwic3RyaW5naWZ5IiwicmVsYXRpb24iLCJ2YWx1ZXMiLCJmcm9tIiwidG8iLCJvd25lciIsImZyb21DbGFzcyIsImZyb21Qcm9wZXJ0eSIsInNwbGl0IiwidG9DbGFzcyIsInRvUHJvcGVydHkiLCJmaWx0ZXIiLCJzdHIiLCJpbnZlcnNlIiwicmVsYXRpb25DbGFzcyIsImZyb21JZCIsInRvSWQiLCJwYWREYXRlIiwic2VnbWVudCIsInRvU3RyaW5nIiwicGFkU3RhcnQiLCJkIiwiRGF0ZSIsImdldEZ1bGxZZWFyIiwiZ2V0TW9udGgiLCJnZXREYXRlIiwiZ2V0SG91cnMiLCJnZXRNaW51dGVzIiwiZ2V0U2Vjb25kcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUlBLE1BQU1BLFVBQVUsR0FBRztBQUNqQkMsRUFBQUEsTUFBTSxFQUFFLFFBRFM7QUFFakJDLEVBQUFBLE1BQU0sRUFBRSxNQUZTO0FBR2pCQyxFQUFBQSxLQUFLLEVBQUU7QUFIVSxDQUFuQjtBQU1BLE1BQU1DLGFBQWEsR0FBRztBQUNwQixXQUFVO0FBRFUsQ0FBdEI7O0FBSUEsTUFBTUMsWUFBWSxHQUFHQyxjQUFLQyxJQUFMLENBQVVDLE9BQU8sQ0FBQ0MsR0FBUixFQUFWLEVBQXlCLFlBQXpCLENBQXJCOztBQUVPLGVBQWVDLGVBQWYsQ0FBK0JDLEdBQS9CLEVBQW9DQyxJQUFwQyxFQUEwQyxHQUFHQyxVQUE3QyxFQUF5RDtBQUM5RCxRQUFNQyxNQUFNLEdBQUdELFVBQVUsQ0FBQ0UsR0FBWCxDQUFlQyxTQUFTLElBQUk7QUFDekMsVUFBTUMsVUFBVSxHQUFHTixHQUFHLENBQUNHLE1BQUosQ0FBV0UsU0FBWCxDQUFuQjs7QUFDQSxRQUFJLENBQUNDLFVBQUwsRUFBaUI7QUFDZixZQUFNLElBQUlDLEtBQUosQ0FBVywwQkFBeUJGLFNBQVUsa0JBQTlDLENBQU47QUFDRDs7QUFDRCxXQUFPQyxVQUFQO0FBQ0QsR0FOYyxDQUFmO0FBT0EsUUFBTUUsTUFBTSxHQUFHLEVBQWY7O0FBQ0EsT0FBSyxNQUFNRixVQUFYLElBQXlCSCxNQUF6QixFQUFpQztBQUMvQk0sSUFBQUEsa0JBQWtCLENBQUNILFVBQUQsRUFBYU4sR0FBYixFQUFrQlEsTUFBbEIsQ0FBbEI7QUFDRDs7QUFDRCxPQUFLLE1BQU1GLFVBQVgsSUFBeUJILE1BQXpCLEVBQWlDO0FBQy9CTyxJQUFBQSxvQkFBb0IsQ0FBQ0osVUFBRCxFQUFhTixHQUFiLEVBQWtCUSxNQUFsQixDQUFwQjtBQUNEOztBQUNELFFBQU1HLFlBQVksR0FBRyxFQUFyQjtBQUNBLFFBQU1DLFVBQVUsR0FBRyxFQUFuQjs7QUFDQSxPQUFLLE1BQU07QUFBRUMsSUFBQUEsU0FBRjtBQUFhQyxJQUFBQTtBQUFiLEdBQVgsSUFBd0NOLE1BQXhDLEVBQWdEO0FBQzlDRyxJQUFBQSxZQUFZLENBQUNJLElBQWIsQ0FBa0Isb0JBQVM7QUFDL0Isc0JBQXNCRixTQUFVO0FBQ2hDLFVBQVVDLFVBQVUsQ0FBQ2xCLElBQVgsQ0FBZ0IsSUFBaEIsQ0FBc0I7QUFDaEMsU0FISTtBQUlBZ0IsSUFBQUEsVUFBVSxDQUFDSSxPQUFYLENBQW1CLG9CQUFTO0FBQ2hDLDRCQUE0QkgsU0FBVSxJQURsQztBQUVEOztBQUNELFFBQU1JLE9BQU8sR0FBR1QsTUFBTSxJQUFJQSxNQUFNLENBQUNVLE1BQVAsR0FBZ0IsQ0FBaEIsR0FDdEIsb0JBQVM7QUFDZjtBQUNBLFVBQVVWLE1BQU0sQ0FBQ1osSUFBUCxDQUFZLElBQVosQ0FBa0IsRUFIQSxHQUl0QixFQUpKOztBQUtBLFFBQU11QixRQUFRLEdBQUksR0FBRUMsWUFBWSxFQUFHLElBQUduQixJQUFLLEtBQTNDOztBQUNBLFFBQU1vQixJQUFJLEdBQUcxQixjQUFLQyxJQUFMLENBQVVGLFlBQVYsRUFBd0J5QixRQUF4QixDQUFiOztBQUNBLE1BQUksTUFBTUcsaUJBQUdDLE1BQUgsQ0FBVUYsSUFBVixDQUFWLEVBQTJCO0FBRXpCRyxJQUFBQSxPQUFPLENBQUNDLElBQVIsQ0FBYUMsZUFBTUMsR0FBTixDQUFXLGNBQWFSLFFBQVMsbUJBQWpDLENBQWI7QUFDQSxXQUFPLEtBQVA7QUFDRCxHQUpELE1BSU87QUFDTCxVQUFNRyxpQkFBR00sU0FBSCxDQUFhUCxJQUFiLEVBQW1CLG9CQUFTO0FBQ3RDO0FBQ0EsVUFBVUosT0FBTyxDQUFDTixZQUFELENBQWU7QUFDaEM7QUFDQTtBQUNBO0FBQ0EsVUFBVU0sT0FBTyxDQUFDTCxVQUFELENBQWE7QUFDOUI7QUFDQSxLQVJVLENBQU47QUFTQVksSUFBQUEsT0FBTyxDQUFDQyxJQUFSLENBQWFDLGVBQU1HLElBQU4sQ0FBWSxjQUFhVixRQUFTLHlCQUFsQyxDQUFiO0FBQ0EsV0FBTyxJQUFQO0FBQ0Q7QUFDRjs7QUFFRCxlQUFlVixrQkFBZixDQUFrQ0gsVUFBbEMsRUFBOENOLEdBQTlDLEVBQW1EUSxNQUFuRCxFQUEyRDtBQUN6RCxRQUFNSyxTQUFTLEdBQUdiLEdBQUcsQ0FBQzhCLG1CQUFKLENBQXdCeEIsVUFBVSxDQUFDTyxTQUFuQyxDQUFsQjtBQUNBLFFBQU07QUFBRWtCLElBQUFBLFVBQUY7QUFBY0MsSUFBQUE7QUFBZCxNQUE0QjFCLFVBQVUsQ0FBQzJCLFVBQTdDO0FBQ0EsUUFBTW5CLFVBQVUsR0FBRyxFQUFuQjtBQUNBTixFQUFBQSxNQUFNLENBQUNPLElBQVAsQ0FBWTtBQUFFRixJQUFBQSxTQUFGO0FBQWFDLElBQUFBO0FBQWIsR0FBWjtBQUNBLFFBQU1vQixnQkFBZ0IsR0FBRyxFQUF6Qjs7QUFDQSxPQUFLLE1BQU0sQ0FBQ2pDLElBQUQsRUFBT2tDLFFBQVAsQ0FBWCxJQUErQkMsTUFBTSxDQUFDQyxPQUFQLENBQWVOLFVBQWYsQ0FBL0IsRUFBMkQ7QUFDekQsVUFBTU8sTUFBTSxHQUFHdEMsR0FBRyxDQUFDOEIsbUJBQUosQ0FBd0I3QixJQUF4QixDQUFmO0FBQ0EsUUFBSTtBQUNGc0MsTUFBQUEsV0FERTtBQUNXQyxNQUFBQSxJQURYO0FBQ2lCQyxNQUFBQSxZQURqQjtBQUMrQkMsTUFBQUEsUUFEL0I7QUFDeUNDLE1BQUFBLFFBRHpDO0FBQ21EQyxNQUFBQSxRQURuRDtBQUM2REMsTUFBQUEsUUFEN0Q7QUFFRkMsTUFBQUEsT0FGRTtBQUVPQyxNQUFBQSxPQUZQO0FBRWdCQyxNQUFBQSxNQUZoQjtBQUV3QkMsTUFBQUEsS0FGeEI7QUFHRkMsTUFBQUEsT0FBTyxFQUFFQztBQUhQLFFBSUFoQixRQUpKO0FBS0EsVUFBTWlCLFFBQVEsR0FBRy9ELFVBQVUsQ0FBQ21ELElBQUQsQ0FBVixJQUFvQkEsSUFBckM7O0FBQ0EsUUFBSSxDQUFDRyxRQUFMLEVBQWU7QUFDYixVQUFJSixXQUFKLEVBQWlCO0FBQ2Z6QixRQUFBQSxVQUFVLENBQUNDLElBQVgsQ0FBaUIsTUFBS3dCLFdBQVcsQ0FBQ2MsT0FBWixDQUFvQixTQUFwQixFQUErQixHQUEvQixFQUFvQ0MsSUFBcEMsRUFBMkMsRUFBakU7QUFDRDs7QUFDRCxVQUFJLHFCQUFTTixNQUFULENBQUosRUFBc0I7QUFJcEIsY0FBTU8sVUFBVSxHQUFHckIsZ0JBQWdCLENBQUNjLE1BQUQsQ0FBaEIsS0FDaEJkLGdCQUFnQixDQUFDYyxNQUFELENBQWhCLEdBQTJCLEVBRFgsQ0FBbkI7QUFFQU8sUUFBQUEsVUFBVSxDQUFDeEMsSUFBWCxDQUFnQnVCLE1BQWhCO0FBQ0FVLFFBQUFBLE1BQU0sR0FBRyxLQUFUO0FBQ0Q7O0FBQ0QsWUFBTVEsU0FBUyxHQUFHVixPQUFPLEdBQ3JCLENBQUUscUJBQW9CUixNQUFPLGNBQTdCLENBRHFCLEdBRXJCRyxZQUFZLEdBQ1YsQ0FBRSx1QkFBc0JILE1BQU8sT0FBTUcsWUFBYSxJQUFsRCxDQURVLEdBRVYsQ0FBRSxTQUFRVyxRQUFTLEtBQUlkLE1BQU8sSUFBOUIsQ0FKTjtBQUtBa0IsTUFBQUEsU0FBUyxDQUFDekMsSUFBVixDQUNFMkIsUUFBUSxJQUFJLFlBRGQsRUFFRSxDQUFDSSxPQUFELElBQVlELFFBQVosSUFBd0IsZUFGMUIsRUFHRUQsUUFBUSxJQUFJLFlBSGQsRUFJRUksTUFBTSxJQUFJLFVBSlosRUFLRUMsS0FBSyxJQUFJLFNBTFg7O0FBT0EsVUFBSUUsUUFBUSxLQUFLTSxTQUFqQixFQUE0QjtBQUMxQixZQUFJQyxLQUFLLEdBQUdqRSxhQUFhLENBQUMwRCxRQUFELENBQXpCOztBQUNBLFlBQUksQ0FBQ08sS0FBTCxFQUFZO0FBQ1ZBLFVBQUFBLEtBQUssR0FBRyxvQkFBUVAsUUFBUixLQUFxQixxQkFBU0EsUUFBVCxDQUFyQixHQUNKUSxJQUFJLENBQUNDLFNBQUwsQ0FBZVQsUUFBZixDQURJLEdBRUpBLFFBRko7O0FBR0EsY0FBSSxxQkFBU08sS0FBVCxDQUFKLEVBQXFCO0FBQ25CQSxZQUFBQSxLQUFLLEdBQUksSUFBR0EsS0FBTSxHQUFsQjtBQUNEO0FBQ0Y7O0FBQ0RGLFFBQUFBLFNBQVMsQ0FBQ3pDLElBQVYsQ0FBZ0IsYUFBWTJDLEtBQU0sR0FBbEM7QUFDRDs7QUFDRCxVQUFJWCxPQUFKLEVBQWE7QUFDWCxhQUFLLE1BQU1jLFFBQVgsSUFBdUJ6QixNQUFNLENBQUMwQixNQUFQLENBQWM5QixTQUFkLENBQXZCLEVBQWlEO0FBRy9DLGdCQUFNO0FBQUUrQixZQUFBQSxJQUFGO0FBQVFDLFlBQUFBLEVBQVI7QUFBWUMsWUFBQUE7QUFBWixjQUFzQkosUUFBNUI7QUFDQSxnQkFBTSxDQUFDSyxTQUFELEVBQVlDLFlBQVosSUFBNEIsQ0FBQUosSUFBSSxRQUFKLFlBQUFBLElBQUksQ0FBRUssS0FBTixDQUFZLEdBQVosTUFBb0IsRUFBdEQ7O0FBQ0EsY0FBSUQsWUFBWSxLQUFLbEUsSUFBckIsRUFBMkI7QUFDekIsZ0JBQUlpRSxTQUFTLEtBQUs1RCxVQUFVLENBQUNMLElBQTdCLEVBQW1DO0FBQ2pDLG9CQUFNTSxLQUFLLENBQUUsaUNBQWdDc0QsUUFBUyxFQUEzQyxDQUFYO0FBQ0Q7O0FBQ0Qsa0JBQU0sQ0FBQ1EsT0FBRCxFQUFVQyxVQUFWLElBQXdCLENBQUFOLEVBQUUsUUFBRixZQUFBQSxFQUFFLENBQUVJLEtBQUosQ0FBVSxHQUFWLE1BQWtCLEVBQWhEO0FBQ0FaLFlBQUFBLFNBQVMsQ0FBQ3pDLElBQVYsQ0FDRSxJQURGLEVBRUcsZUFBY2YsR0FBRyxDQUFDOEIsbUJBQUosQ0FBd0J3QyxVQUF4QixDQUFvQyxJQUZyRCxFQUdHLFlBQVd0RSxHQUFHLENBQUM4QixtQkFBSixDQUF3QnVDLE9BQXhCLENBQWlDLElBSC9DLEVBUUUsQ0FBQ0osS0FBRCxJQUFXLHFCQVJiO0FBVUQ7QUFDRjtBQUNGOztBQUNEbkQsTUFBQUEsVUFBVSxDQUFDQyxJQUFYLENBQWdCeUMsU0FBUyxDQUFDZSxNQUFWLENBQWlCQyxHQUFHLElBQUksQ0FBQyxDQUFDQSxHQUExQixFQUErQjVFLElBQS9CLENBQW9DLEdBQXBDLEVBQ2J5RCxPQURhLENBQ0wsU0FESyxFQUNNLE9BRE4sQ0FBaEI7QUFFRDtBQUNGOztBQUNELE9BQUssTUFBTUUsVUFBWCxJQUF5Qm5CLE1BQU0sQ0FBQzBCLE1BQVAsQ0FBYzVCLGdCQUFkLENBQXpCLEVBQTBEO0FBQ3hEcEIsSUFBQUEsVUFBVSxDQUFDQyxJQUFYLENBQWlCLGlCQUNmd0MsVUFBVSxDQUFDbkQsR0FBWCxDQUFla0MsTUFBTSxJQUFLLElBQUdBLE1BQU8sR0FBcEMsRUFBd0MxQyxJQUF4QyxDQUE2QyxJQUE3QyxDQUNELElBRkQ7QUFHRDtBQUNGOztBQUVELGVBQWVjLG9CQUFmLENBQW9DSixVQUFwQyxFQUFnRE4sR0FBaEQsRUFBcURRLE1BQXJELEVBQTZEO0FBQzNELFFBQU07QUFBRXdCLElBQUFBO0FBQUYsTUFBZ0IxQixVQUFVLENBQUMyQixVQUFqQzs7QUFDQSxPQUFLLE1BQU00QixRQUFYLElBQXVCekIsTUFBTSxDQUFDMEIsTUFBUCxDQUFjOUIsU0FBZCxDQUF2QixFQUFpRDtBQUMvQyxVQUFNO0FBQUUrQixNQUFBQSxJQUFGO0FBQVFDLE1BQUFBLEVBQVI7QUFBWVMsTUFBQUE7QUFBWixRQUF3QlosUUFBOUI7QUFDQSxVQUFNYSxhQUFhLEdBQUcsOEJBQWlCYixRQUFRLENBQUNBLFFBQTFCLENBQXRCOztBQUNBLFFBQUksb0NBQXVCYSxhQUF2QixLQUF5QyxDQUFDRCxPQUE5QyxFQUF1RDtBQUdyRCxZQUFNLENBQUNQLFNBQUQsRUFBWUMsWUFBWixJQUE0QixDQUFBSixJQUFJLFFBQUosWUFBQUEsSUFBSSxDQUFFSyxLQUFOLENBQVksR0FBWixNQUFvQixFQUF0RDtBQUNBLFlBQU0sQ0FBQ0MsT0FBRCxFQUFVQyxVQUFWLElBQXdCLENBQUFOLEVBQUUsUUFBRixZQUFBQSxFQUFFLENBQUVJLEtBQUosQ0FBVSxHQUFWLE1BQWtCLEVBQWhEO0FBQ0EsWUFBTXRELFVBQVUsR0FBRyxFQUFuQjtBQUVBLFlBQU1ELFNBQVMsR0FBR2IsR0FBRyxDQUFDOEIsbUJBQUosQ0FBeUIsR0FBRW9DLFNBQVUsR0FBRUcsT0FBUSxFQUEvQyxDQUFsQjtBQUNBLFlBQU1NLE1BQU0sR0FBRzNFLEdBQUcsQ0FBQzhCLG1CQUFKLENBQ1osR0FBRW9DLFNBQVUsR0FBRSx1QkFBV0MsWUFBWCxDQUF5QixFQUQzQixDQUFmO0FBRUEsWUFBTVMsSUFBSSxHQUFHNUUsR0FBRyxDQUFDOEIsbUJBQUosQ0FDVixHQUFFdUMsT0FBUSxHQUFFLHVCQUFXQyxVQUFYLENBQXVCLEVBRHpCLENBQWI7QUFFQTlELE1BQUFBLE1BQU0sQ0FBQ08sSUFBUCxDQUFZO0FBQUVGLFFBQUFBLFNBQUY7QUFBYUMsUUFBQUE7QUFBYixPQUFaO0FBQ0FBLE1BQUFBLFVBQVUsQ0FBQ0MsSUFBWCxDQUFpQixrQ0FBakI7QUFDQUQsTUFBQUEsVUFBVSxDQUFDQyxJQUFYLENBQWdCLG9CQUFTO0FBQy9CLHlCQUF5QjRELE1BQU87QUFDaEMseUJBQXlCM0UsR0FBRyxDQUFDOEIsbUJBQUosQ0FBd0JxQyxZQUF4QixDQUFzQztBQUMvRCxzQkFBc0JuRSxHQUFHLENBQUM4QixtQkFBSixDQUF3Qm9DLFNBQXhCLENBQW1DO0FBQ3pELCtCQUpNO0FBS0FwRCxNQUFBQSxVQUFVLENBQUNDLElBQVgsQ0FBZ0Isb0JBQVM7QUFDL0IseUJBQXlCNkQsSUFBSztBQUM5Qix5QkFBeUI1RSxHQUFHLENBQUM4QixtQkFBSixDQUF3QndDLFVBQXhCLENBQW9DO0FBQzdELHNCQUFzQnRFLEdBQUcsQ0FBQzhCLG1CQUFKLENBQXdCdUMsT0FBeEIsQ0FBaUM7QUFDdkQsK0JBSk07QUFLRDtBQUNGO0FBQ0Y7O0FBR0QsU0FBU1EsT0FBVCxDQUFpQkMsT0FBakIsRUFBMEI7QUFDeEIsU0FBT0EsT0FBTyxDQUFDQyxRQUFSLEdBQW1CQyxRQUFuQixDQUE0QixDQUE1QixFQUErQixHQUEvQixDQUFQO0FBQ0Q7O0FBSUQsU0FBUzVELFlBQVQsR0FBd0I7QUFDdEIsUUFBTTZELENBQUMsR0FBRyxJQUFJQyxJQUFKLEVBQVY7QUFDQSxTQUFPRCxDQUFDLENBQUNFLFdBQUYsR0FBZ0JKLFFBQWhCLEtBQ0xGLE9BQU8sQ0FBQ0ksQ0FBQyxDQUFDRyxRQUFGLEtBQWUsQ0FBaEIsQ0FERixHQUVMUCxPQUFPLENBQUNJLENBQUMsQ0FBQ0ksT0FBRixFQUFELENBRkYsR0FHTFIsT0FBTyxDQUFDSSxDQUFDLENBQUNLLFFBQUYsRUFBRCxDQUhGLEdBSUxULE9BQU8sQ0FBQ0ksQ0FBQyxDQUFDTSxVQUFGLEVBQUQsQ0FKRixHQUtMVixPQUFPLENBQUNJLENBQUMsQ0FBQ08sVUFBRixFQUFELENBTFQ7QUFNRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXG5pbXBvcnQgZnMgZnJvbSAnZnMtZXh0cmEnXG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnXG5pbXBvcnQgeyBnZXRSZWxhdGlvbkNsYXNzLCBpc1Rocm91Z2hSZWxhdGlvbkNsYXNzIH0gZnJvbSAnQC9zY2hlbWEnXG5pbXBvcnQge1xuICBpc09iamVjdCwgaXNBcnJheSwgaXNTdHJpbmcsIGRlaW5kZW50LCBjYXBpdGFsaXplXG59IGZyb20gJ0BkaXRvanMvdXRpbHMnXG5cbmNvbnN0IHR5cGVUb0tuZXggPSB7XG4gIG51bWJlcjogJ2RvdWJsZScsXG4gIG9iamVjdDogJ2pzb24nLFxuICBhcnJheTogJ2pzb24nXG59XG5cbmNvbnN0IGRlZmF1bHRWYWx1ZXMgPSB7XG4gICdub3coKSc6IGBrbmV4LnJhdygnQ1VSUkVOVF9USU1FU1RBTVAnKWBcbn1cblxuY29uc3QgbWlncmF0aW9uRGlyID0gcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICdtaWdyYXRpb25zJylcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZU1pZ3JhdGlvbihhcHAsIG5hbWUsIC4uLm1vZGVsTmFtZXMpIHtcbiAgY29uc3QgbW9kZWxzID0gbW9kZWxOYW1lcy5tYXAobW9kZWxOYW1lID0+IHtcbiAgICBjb25zdCBtb2RlbENsYXNzID0gYXBwLm1vZGVsc1ttb2RlbE5hbWVdXG4gICAgaWYgKCFtb2RlbENsYXNzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1vZGVsIGNsYXNzIHdpdGggbmFtZSAnJHttb2RlbE5hbWV9JyBkb2VzIG5vdCBleGlzdGApXG4gICAgfVxuICAgIHJldHVybiBtb2RlbENsYXNzXG4gIH0pXG4gIGNvbnN0IHRhYmxlcyA9IFtdXG4gIGZvciAoY29uc3QgbW9kZWxDbGFzcyBvZiBtb2RlbHMpIHtcbiAgICBjb2xsZWN0TW9kZWxUYWJsZXMobW9kZWxDbGFzcywgYXBwLCB0YWJsZXMpXG4gIH1cbiAgZm9yIChjb25zdCBtb2RlbENsYXNzIG9mIG1vZGVscykge1xuICAgIGNvbGxlY3RUaHJvdWdoVGFibGVzKG1vZGVsQ2xhc3MsIGFwcCwgdGFibGVzKVxuICB9XG4gIGNvbnN0IGNyZWF0ZVRhYmxlcyA9IFtdXG4gIGNvbnN0IGRyb3BUYWJsZXMgPSBbXVxuICBmb3IgKGNvbnN0IHsgdGFibGVOYW1lLCBzdGF0ZW1lbnRzIH0gb2YgdGFibGVzKSB7XG4gICAgY3JlYXRlVGFibGVzLnB1c2goZGVpbmRlbnRgXG4gICAgICAuY3JlYXRlVGFibGUoJyR7dGFibGVOYW1lfScsIHRhYmxlID0+IHtcbiAgICAgICAgJHtzdGF0ZW1lbnRzLmpvaW4oJ1xcbicpfVxuICAgICAgfSlgKVxuICAgIGRyb3BUYWJsZXMudW5zaGlmdChkZWluZGVudGBcbiAgICAgIC5kcm9wVGFibGVJZkV4aXN0cygnJHt0YWJsZU5hbWV9JylgKVxuICB9XG4gIGNvbnN0IGdldENvZGUgPSB0YWJsZXMgPT4gdGFibGVzLmxlbmd0aCA+IDBcbiAgICA/IGRlaW5kZW50YFxuICAgICAgYXdhaXQga25leC5zY2hlbWFcbiAgICAgICAgJHt0YWJsZXMuam9pbignXFxuJyl9YFxuICAgIDogJydcbiAgY29uc3QgZmlsZW5hbWUgPSBgJHtnZXRUaW1lc3RhbXAoKX1fJHtuYW1lfS5qc2BcbiAgY29uc3QgZmlsZSA9IHBhdGguam9pbihtaWdyYXRpb25EaXIsIGZpbGVuYW1lKVxuICBpZiAoYXdhaXQgZnMuZXhpc3RzKGZpbGUpKSB7XG4gICAgLy8gVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLCBidXQgbGV0J3MgYmUgb24gdGhlIHNhZmUgc2lkZSBoZXJlOlxuICAgIGNvbnNvbGUuaW5mbyhjaGFsay5yZWQoYE1pZ3JhdGlvbiAnJHtmaWxlbmFtZX0nIGFscmVhZHkgZXhpc3RzLmApKVxuICAgIHJldHVybiBmYWxzZVxuICB9IGVsc2Uge1xuICAgIGF3YWl0IGZzLndyaXRlRmlsZShmaWxlLCBkZWluZGVudGBcbiAgICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiB1cChrbmV4KSB7XG4gICAgICAgICR7Z2V0Q29kZShjcmVhdGVUYWJsZXMpfVxuICAgICAgfVxuXG4gICAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gZG93bihrbmV4KSB7XG4gICAgICAgICR7Z2V0Q29kZShkcm9wVGFibGVzKX1cbiAgICAgIH1cbiAgICBgKVxuICAgIGNvbnNvbGUuaW5mbyhjaGFsay5jeWFuKGBNaWdyYXRpb24gJyR7ZmlsZW5hbWV9JyBzdWNjZXNzZnVsbHkgY3JlYXRlZC5gKSlcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbGxlY3RNb2RlbFRhYmxlcyhtb2RlbENsYXNzLCBhcHAsIHRhYmxlcykge1xuICBjb25zdCB0YWJsZU5hbWUgPSBhcHAubm9ybWFsaXplSWRlbnRpZmllcihtb2RlbENsYXNzLnRhYmxlTmFtZSlcbiAgY29uc3QgeyBwcm9wZXJ0aWVzLCByZWxhdGlvbnMgfSA9IG1vZGVsQ2xhc3MuZGVmaW5pdGlvblxuICBjb25zdCBzdGF0ZW1lbnRzID0gW11cbiAgdGFibGVzLnB1c2goeyB0YWJsZU5hbWUsIHN0YXRlbWVudHMgfSlcbiAgY29uc3QgdW5pcXVlQ29tcG9zaXRlcyA9IHt9XG4gIGZvciAoY29uc3QgW25hbWUsIHByb3BlcnR5XSBvZiBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKSkge1xuICAgIGNvbnN0IGNvbHVtbiA9IGFwcC5ub3JtYWxpemVJZGVudGlmaWVyKG5hbWUpXG4gICAgbGV0IHtcbiAgICAgIGRlc2NyaXB0aW9uLCB0eXBlLCBzcGVjaWZpY1R5cGUsIHVuc2lnbmVkLCBjb21wdXRlZCwgbnVsbGFibGUsIHJlcXVpcmVkLFxuICAgICAgcHJpbWFyeSwgZm9yZWlnbiwgdW5pcXVlLCBpbmRleCxcbiAgICAgIGRlZmF1bHQ6IF9kZWZhdWx0XG4gICAgfSA9IHByb3BlcnR5XG4gICAgY29uc3Qga25leFR5cGUgPSB0eXBlVG9LbmV4W3R5cGVdIHx8IHR5cGVcbiAgICBpZiAoIWNvbXB1dGVkKSB7XG4gICAgICBpZiAoZGVzY3JpcHRpb24pIHtcbiAgICAgICAgc3RhdGVtZW50cy5wdXNoKGAvLyAke2Rlc2NyaXB0aW9uLnJlcGxhY2UoL1xcc3syLH0vZywgJyAnKS50cmltKCl9YClcbiAgICAgIH1cbiAgICAgIGlmIChpc1N0cmluZyh1bmlxdWUpKSB7XG4gICAgICAgIC8vIFRvIGRlY2xhcmUgY29tcG9zaXRlIGZvcmVpZ24ga2V5cyBhcyB1bmlxdWUsIHlvdSBjYW4gZ2l2ZSBlYWNoXG4gICAgICAgIC8vIHByb3BlcnR5IHRoZSBzYW1lIHN0cmluZyB2YWx1ZSBpbiB0aGUgYHVuaXF1ZWAga2V5d29yZHMsIGUuZy46XG4gICAgICAgIC8vIGB1bmlxdWU6ICdjdXN0b21lcklkX25hbWUnXG4gICAgICAgIGNvbnN0IGNvbXBvc2l0ZXMgPSB1bmlxdWVDb21wb3NpdGVzW3VuaXF1ZV0gfHxcbiAgICAgICAgICAodW5pcXVlQ29tcG9zaXRlc1t1bmlxdWVdID0gW10pXG4gICAgICAgIGNvbXBvc2l0ZXMucHVzaChjb2x1bW4pXG4gICAgICAgIHVuaXF1ZSA9IGZhbHNlXG4gICAgICB9XG4gICAgICBjb25zdCBzdGF0ZW1lbnQgPSBwcmltYXJ5XG4gICAgICAgID8gW2B0YWJsZS5pbmNyZW1lbnRzKCcke2NvbHVtbn0nKS5wcmltYXJ5KClgXVxuICAgICAgICA6IHNwZWNpZmljVHlwZVxuICAgICAgICAgID8gW2B0YWJsZS5zcGVjaWZpY1R5cGUoJyR7Y29sdW1ufScsICcke3NwZWNpZmljVHlwZX0nKWBdXG4gICAgICAgICAgOiBbYHRhYmxlLiR7a25leFR5cGV9KCcke2NvbHVtbn0nKWBdXG4gICAgICBzdGF0ZW1lbnQucHVzaChcbiAgICAgICAgdW5zaWduZWQgJiYgJ3Vuc2lnbmVkKCknLFxuICAgICAgICAhcHJpbWFyeSAmJiByZXF1aXJlZCAmJiAnbm90TnVsbGFibGUoKScsXG4gICAgICAgIG51bGxhYmxlICYmICdudWxsYWJsZSgpJyxcbiAgICAgICAgdW5pcXVlICYmICd1bmlxdWUoKScsXG4gICAgICAgIGluZGV4ICYmICdpbmRleCgpJ1xuICAgICAgKVxuICAgICAgaWYgKF9kZWZhdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGV0IHZhbHVlID0gZGVmYXVsdFZhbHVlc1tfZGVmYXVsdF1cbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgIHZhbHVlID0gaXNBcnJheShfZGVmYXVsdCkgfHwgaXNPYmplY3QoX2RlZmF1bHQpXG4gICAgICAgICAgICA/IEpTT04uc3RyaW5naWZ5KF9kZWZhdWx0KVxuICAgICAgICAgICAgOiBfZGVmYXVsdFxuICAgICAgICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlID0gYCcke3ZhbHVlfSdgXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHN0YXRlbWVudC5wdXNoKGBkZWZhdWx0VG8oJHt2YWx1ZX0pYClcbiAgICAgIH1cbiAgICAgIGlmIChmb3JlaWduKSB7XG4gICAgICAgIGZvciAoY29uc3QgcmVsYXRpb24gb2YgT2JqZWN0LnZhbHVlcyhyZWxhdGlvbnMpKSB7XG4gICAgICAgICAgLy8gVE9ETzogU3VwcG9ydCBjb21wb3NpdGUga2V5cyBmb3IgZm9yZWlnbiByZWZlcmVuY2VzOlxuICAgICAgICAgIC8vIFVzZSBgYXNBcnJheShmcm9tKWAsIGBhc0FycmF5KHRvKWBcbiAgICAgICAgICBjb25zdCB7IGZyb20sIHRvLCBvd25lciB9ID0gcmVsYXRpb25cbiAgICAgICAgICBjb25zdCBbZnJvbUNsYXNzLCBmcm9tUHJvcGVydHldID0gZnJvbT8uc3BsaXQoJy4nKSB8fCBbXVxuICAgICAgICAgIGlmIChmcm9tUHJvcGVydHkgPT09IG5hbWUpIHtcbiAgICAgICAgICAgIGlmIChmcm9tQ2xhc3MgIT09IG1vZGVsQ2xhc3MubmFtZSkge1xuICAgICAgICAgICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCByZWxhdGlvbiBkZWNsYXJhdGlvbjogJHtyZWxhdGlvbn1gKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgW3RvQ2xhc3MsIHRvUHJvcGVydHldID0gdG8/LnNwbGl0KCcuJykgfHwgW11cbiAgICAgICAgICAgIHN0YXRlbWVudC5wdXNoKFxuICAgICAgICAgICAgICAnXFxuJyxcbiAgICAgICAgICAgICAgYHJlZmVyZW5jZXMoJyR7YXBwLm5vcm1hbGl6ZUlkZW50aWZpZXIodG9Qcm9wZXJ0eSl9JylgLFxuICAgICAgICAgICAgICBgaW5UYWJsZSgnJHthcHAubm9ybWFsaXplSWRlbnRpZmllcih0b0NsYXNzKX0nKWAsXG4gICAgICAgICAgICAgIC8vIE9ubHkgcmVsYXRpb25zIHRoYXQgYXJlbid0IG93bmVycyBvZiB0aGVpciBkYXRhIHNob3VsZCBjYXNjYWRlXG4gICAgICAgICAgICAgIC8vIG9uIGRlbGV0ZS5cbiAgICAgICAgICAgICAgLy8gVE9ETzogRmluZCB0aGUgcmV2ZXJzZSByZWxhdGlvbiBvZiB0aGlzIGluIHRoZSBvdGhlciBjbGFzcyBhbmRcbiAgICAgICAgICAgICAgLy8gb25seSBhZGQgYG9uRGVsZXRlKCdDQVNDQURFJylgIGlmIHRoYXQgb25lJ3MgYW4gb3duZXIuXG4gICAgICAgICAgICAgICFvd25lciAmJiBgb25EZWxldGUoJ0NBU0NBREUnKWBcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHN0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQuZmlsdGVyKHN0ciA9PiAhIXN0cikuam9pbignLicpXG4gICAgICAgIC5yZXBsYWNlKC9cXC5cXG5cXC4vZywgJ1xcbiAgLicpKVxuICAgIH1cbiAgfVxuICBmb3IgKGNvbnN0IGNvbXBvc2l0ZXMgb2YgT2JqZWN0LnZhbHVlcyh1bmlxdWVDb21wb3NpdGVzKSkge1xuICAgIHN0YXRlbWVudHMucHVzaChgdGFibGUudW5pcXVlKFske1xuICAgICAgY29tcG9zaXRlcy5tYXAoY29sdW1uID0+IGAnJHtjb2x1bW59J2ApLmpvaW4oJywgJylcbiAgICB9XSlgKVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbGxlY3RUaHJvdWdoVGFibGVzKG1vZGVsQ2xhc3MsIGFwcCwgdGFibGVzKSB7XG4gIGNvbnN0IHsgcmVsYXRpb25zIH0gPSBtb2RlbENsYXNzLmRlZmluaXRpb25cbiAgZm9yIChjb25zdCByZWxhdGlvbiBvZiBPYmplY3QudmFsdWVzKHJlbGF0aW9ucykpIHtcbiAgICBjb25zdCB7IGZyb20sIHRvLCBpbnZlcnNlIH0gPSByZWxhdGlvblxuICAgIGNvbnN0IHJlbGF0aW9uQ2xhc3MgPSBnZXRSZWxhdGlvbkNsYXNzKHJlbGF0aW9uLnJlbGF0aW9uKVxuICAgIGlmIChpc1Rocm91Z2hSZWxhdGlvbkNsYXNzKHJlbGF0aW9uQ2xhc3MpICYmICFpbnZlcnNlKSB7XG4gICAgICAvLyBUT0RPOiBTdXBwb3J0IGNvbXBvc2l0ZSBrZXlzIGZvciBmb3JlaWduIHJlZmVyZW5jZXM6XG4gICAgICAvLyBVc2UgYGFzQXJyYXkoZnJvbSlgLCBgYXNBcnJheSh0bylgXG4gICAgICBjb25zdCBbZnJvbUNsYXNzLCBmcm9tUHJvcGVydHldID0gZnJvbT8uc3BsaXQoJy4nKSB8fCBbXVxuICAgICAgY29uc3QgW3RvQ2xhc3MsIHRvUHJvcGVydHldID0gdG8/LnNwbGl0KCcuJykgfHwgW11cbiAgICAgIGNvbnN0IHN0YXRlbWVudHMgPSBbXVxuICAgICAgLy8gU2VlIGNvbnZlcnRSZWxhdGlvbnMoKVxuICAgICAgY29uc3QgdGFibGVOYW1lID0gYXBwLm5vcm1hbGl6ZUlkZW50aWZpZXIoYCR7ZnJvbUNsYXNzfSR7dG9DbGFzc31gKVxuICAgICAgY29uc3QgZnJvbUlkID0gYXBwLm5vcm1hbGl6ZUlkZW50aWZpZXIoXG4gICAgICAgIGAke2Zyb21DbGFzc30ke2NhcGl0YWxpemUoZnJvbVByb3BlcnR5KX1gKVxuICAgICAgY29uc3QgdG9JZCA9IGFwcC5ub3JtYWxpemVJZGVudGlmaWVyKFxuICAgICAgICBgJHt0b0NsYXNzfSR7Y2FwaXRhbGl6ZSh0b1Byb3BlcnR5KX1gKVxuICAgICAgdGFibGVzLnB1c2goeyB0YWJsZU5hbWUsIHN0YXRlbWVudHMgfSlcbiAgICAgIHN0YXRlbWVudHMucHVzaChgdGFibGUuaW5jcmVtZW50cygnaWQnKS5wcmltYXJ5KClgKVxuICAgICAgc3RhdGVtZW50cy5wdXNoKGRlaW5kZW50YFxuICAgICAgICB0YWJsZS5pbnRlZ2VyKCcke2Zyb21JZH0nKS51bnNpZ25lZCgpLmluZGV4KClcbiAgICAgICAgICAucmVmZXJlbmNlcygnJHthcHAubm9ybWFsaXplSWRlbnRpZmllcihmcm9tUHJvcGVydHkpfScpXFxcXFxuICAgICAgICAgIC5pblRhYmxlKCcke2FwcC5ub3JtYWxpemVJZGVudGlmaWVyKGZyb21DbGFzcyl9JylcXFxcXG4gICAgICAgICAgLm9uRGVsZXRlKCdDQVNDQURFJylgKVxuICAgICAgc3RhdGVtZW50cy5wdXNoKGRlaW5kZW50YFxuICAgICAgICB0YWJsZS5pbnRlZ2VyKCcke3RvSWR9JykudW5zaWduZWQoKS5pbmRleCgpXG4gICAgICAgICAgLnJlZmVyZW5jZXMoJyR7YXBwLm5vcm1hbGl6ZUlkZW50aWZpZXIodG9Qcm9wZXJ0eSl9JylcXFxcXG4gICAgICAgICAgLmluVGFibGUoJyR7YXBwLm5vcm1hbGl6ZUlkZW50aWZpZXIodG9DbGFzcyl9JylcXFxcXG4gICAgICAgICAgLm9uRGVsZXRlKCdDQVNDQURFJylgKVxuICAgIH1cbiAgfVxufVxuXG4vLyBFbnN1cmUgdGhhdCB3ZSBoYXZlIDIgcGxhY2VzIGZvciBlYWNoIG9mIHRoZSBkYXRlIHNlZ21lbnRzLlxuZnVuY3Rpb24gcGFkRGF0ZShzZWdtZW50KSB7XG4gIHJldHVybiBzZWdtZW50LnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKVxufVxuXG4vLyBHZXQgYSBkYXRlIG9iamVjdCBpbiB0aGUgY29ycmVjdCBmb3JtYXQsIHdpdGhvdXQgcmVxdWlyaW5nIGEgZnVsbCBvdXQgbGlicmFyeVxuLy8gbGlrZSBcIm1vbWVudC5qc1wiLlxuZnVuY3Rpb24gZ2V0VGltZXN0YW1wKCkge1xuICBjb25zdCBkID0gbmV3IERhdGUoKVxuICByZXR1cm4gZC5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCkgK1xuICAgIHBhZERhdGUoZC5nZXRNb250aCgpICsgMSkgK1xuICAgIHBhZERhdGUoZC5nZXREYXRlKCkpICtcbiAgICBwYWREYXRlKGQuZ2V0SG91cnMoKSkgK1xuICAgIHBhZERhdGUoZC5nZXRNaW51dGVzKCkpICtcbiAgICBwYWREYXRlKGQuZ2V0U2Vjb25kcygpKVxufVxuIl19
|
|
237
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGkvZGIvY3JlYXRlTWlncmF0aW9uLmpzIl0sIm5hbWVzIjpbInR5cGVUb0tuZXgiLCJudW1iZXIiLCJvYmplY3QiLCJhcnJheSIsImRlZmF1bHRWYWx1ZXMiLCJtaWdyYXRpb25EaXIiLCJwYXRoIiwiam9pbiIsInByb2Nlc3MiLCJjd2QiLCJjcmVhdGVNaWdyYXRpb24iLCJhcHAiLCJuYW1lIiwibW9kZWxOYW1lcyIsIm1vZGVscyIsIm1hcCIsIm1vZGVsTmFtZSIsIm1vZGVsQ2xhc3MiLCJFcnJvciIsInRhYmxlcyIsImNvbGxlY3RNb2RlbFRhYmxlcyIsImNvbGxlY3RUaHJvdWdoVGFibGVzIiwiY3JlYXRlVGFibGVzIiwiZHJvcFRhYmxlcyIsInRhYmxlTmFtZSIsInN0YXRlbWVudHMiLCJwdXNoIiwidW5zaGlmdCIsImdldENvZGUiLCJsZW5ndGgiLCJmaWxlbmFtZSIsImdldFRpbWVzdGFtcCIsImZpbGUiLCJmcyIsImV4aXN0cyIsImNvbnNvbGUiLCJpbmZvIiwicGljbyIsInJlZCIsIndyaXRlRmlsZSIsImN5YW4iLCJub3JtYWxpemVJZGVudGlmaWVyIiwicHJvcGVydGllcyIsInJlbGF0aW9ucyIsImRlZmluaXRpb24iLCJ1bmlxdWVDb21wb3NpdGVzIiwicHJvcGVydHkiLCJPYmplY3QiLCJlbnRyaWVzIiwiY29sdW1uIiwiZGVzY3JpcHRpb24iLCJ0eXBlIiwic3BlY2lmaWNUeXBlIiwidW5zaWduZWQiLCJjb21wdXRlZCIsIm51bGxhYmxlIiwicmVxdWlyZWQiLCJwcmltYXJ5IiwiZm9yZWlnbiIsInVuaXF1ZSIsImluZGV4IiwiZGVmYXVsdCIsIl9kZWZhdWx0Iiwia25leFR5cGUiLCJyZXBsYWNlIiwidHJpbSIsImNvbXBvc2l0ZXMiLCJzdGF0ZW1lbnQiLCJ1bmRlZmluZWQiLCJ2YWx1ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJyZWxhdGlvbiIsInZhbHVlcyIsImZyb20iLCJ0byIsIm93bmVyIiwiZnJvbUNsYXNzIiwiZnJvbVByb3BlcnR5Iiwic3BsaXQiLCJ0b0NsYXNzIiwidG9Qcm9wZXJ0eSIsImZpbHRlciIsInN0ciIsImludmVyc2UiLCJyZWxhdGlvbkNsYXNzIiwiZnJvbUlkIiwidG9JZCIsInBhZERhdGUiLCJzZWdtZW50IiwidG9TdHJpbmciLCJwYWRTdGFydCIsImQiLCJEYXRlIiwiZ2V0RnVsbFllYXIiLCJnZXRNb250aCIsImdldERhdGUiLCJnZXRIb3VycyIsImdldE1pbnV0ZXMiLCJnZXRTZWNvbmRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBSUEsTUFBTUEsVUFBVSxHQUFHO0FBQ2pCQyxFQUFBQSxNQUFNLEVBQUUsUUFEUztBQUVqQkMsRUFBQUEsTUFBTSxFQUFFLE1BRlM7QUFHakJDLEVBQUFBLEtBQUssRUFBRTtBQUhVLENBQW5CO0FBTUEsTUFBTUMsYUFBYSxHQUFHO0FBQ3BCLFdBQVU7QUFEVSxDQUF0Qjs7QUFJQSxNQUFNQyxZQUFZLEdBQUdDLGNBQUtDLElBQUwsQ0FBVUMsT0FBTyxDQUFDQyxHQUFSLEVBQVYsRUFBeUIsWUFBekIsQ0FBckI7O0FBRU8sZUFBZUMsZUFBZixDQUErQkMsR0FBL0IsRUFBb0NDLElBQXBDLEVBQTBDLEdBQUdDLFVBQTdDLEVBQXlEO0FBQzlELFFBQU1DLE1BQU0sR0FBR0QsVUFBVSxDQUFDRSxHQUFYLENBQWVDLFNBQVMsSUFBSTtBQUN6QyxVQUFNQyxVQUFVLEdBQUdOLEdBQUcsQ0FBQ0csTUFBSixDQUFXRSxTQUFYLENBQW5COztBQUNBLFFBQUksQ0FBQ0MsVUFBTCxFQUFpQjtBQUNmLFlBQU0sSUFBSUMsS0FBSixDQUFXLDBCQUF5QkYsU0FBVSxrQkFBOUMsQ0FBTjtBQUNEOztBQUNELFdBQU9DLFVBQVA7QUFDRCxHQU5jLENBQWY7QUFPQSxRQUFNRSxNQUFNLEdBQUcsRUFBZjs7QUFDQSxPQUFLLE1BQU1GLFVBQVgsSUFBeUJILE1BQXpCLEVBQWlDO0FBQy9CTSxJQUFB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RjtBQUNGOztBQUdELFNBQVNRLE9BQVQsQ0FBaUJDLE9BQWpCLEVBQTBCO0FBQ3hCLFNBQU9BLE9BQU8sQ0FBQ0MsUUFBUixHQUFtQkMsUUFBbkIsQ0FBNEIsQ0FBNUIsRUFBK0IsR0FBL0IsQ0FBUDtBQUNEOztBQUlELFNBQVM1RCxZQUFULEdBQXdCO0FBQ3RCLFFBQU02RCxDQUFDLEdBQUcsSUFBSUMsSUFBSixFQUFWO0FBQ0EsU0FBT0QsQ0FBQyxDQUFDRSxXQUFGLEdBQWdCSixRQUFoQixLQUNMRixPQUFPLENBQUNJLENBQUMsQ0FBQ0csUUFBRixLQUFlLENBQWhCLENBREYsR0FFTFAsT0FBTyxDQUFDSSxDQUFDLENBQUNJLE9BQUYsRUFBRCxDQUZGLEdBR0xSLE9BQU8sQ0FBQ0ksQ0FBQyxDQUFDSyxRQUFGLEVBQUQsQ0FIRixHQUlMVCxPQUFPLENBQUNJLENBQUMsQ0FBQ00sVUFBRixFQUFELENBSkYsR0FLTFYsT0FBTyxDQUFDSSxDQUFDLENBQUNPLFVBQUYsRUFBRCxDQUxUO0FBTUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdwYXRoJ1xuaW1wb3J0IGZzIGZyb20gJ2ZzLWV4dHJhJ1xuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycydcbmltcG9ydCB7IGdldFJlbGF0aW9uQ2xhc3MsIGlzVGhyb3VnaFJlbGF0aW9uQ2xhc3MgfSBmcm9tICdAL3NjaGVtYSdcbmltcG9ydCB7XG4gIGlzT2JqZWN0LCBpc0FycmF5LCBpc1N0cmluZywgZGVpbmRlbnQsIGNhcGl0YWxpemVcbn0gZnJvbSAnQGRpdG9qcy91dGlscydcblxuY29uc3QgdHlwZVRvS25leCA9IHtcbiAgbnVtYmVyOiAnZG91YmxlJyxcbiAgb2JqZWN0OiAnanNvbicsXG4gIGFycmF5OiAnanNvbidcbn1cblxuY29uc3QgZGVmYXVsdFZhbHVlcyA9IHtcbiAgJ25vdygpJzogYGtuZXgucmF3KCdDVVJSRU5UX1RJTUVTVEFNUCcpYFxufVxuXG5jb25zdCBtaWdyYXRpb25EaXIgPSBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgJ21pZ3JhdGlvbnMnKVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlTWlncmF0aW9uKGFwcCwgbmFtZSwgLi4ubW9kZWxOYW1lcykge1xuICBjb25zdCBtb2RlbHMgPSBtb2RlbE5hbWVzLm1hcChtb2RlbE5hbWUgPT4ge1xuICAgIGNvbnN0IG1vZGVsQ2xhc3MgPSBhcHAubW9kZWxzW21vZGVsTmFtZV1cbiAgICBpZiAoIW1vZGVsQ2xhc3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTW9kZWwgY2xhc3Mgd2l0aCBuYW1lICcke21vZGVsTmFtZX0nIGRvZXMgbm90IGV4aXN0YClcbiAgICB9XG4gICAgcmV0dXJuIG1vZGVsQ2xhc3NcbiAgfSlcbiAgY29uc3QgdGFibGVzID0gW11cbiAgZm9yIChjb25zdCBtb2RlbENsYXNzIG9mIG1vZGVscykge1xuICAgIGNvbGxlY3RNb2RlbFRhYmxlcyhtb2RlbENsYXNzLCBhcHAsIHRhYmxlcylcbiAgfVxuICBmb3IgKGNvbnN0IG1vZGVsQ2xhc3Mgb2YgbW9kZWxzKSB7XG4gICAgY29sbGVjdFRocm91Z2hUYWJsZXMobW9kZWxDbGFzcywgYXBwLCB0YWJsZXMpXG4gIH1cbiAgY29uc3QgY3JlYXRlVGFibGVzID0gW11cbiAgY29uc3QgZHJvcFRhYmxlcyA9IFtdXG4gIGZvciAoY29uc3QgeyB0YWJsZU5hbWUsIHN0YXRlbWVudHMgfSBvZiB0YWJsZXMpIHtcbiAgICBjcmVhdGVUYWJsZXMucHVzaChkZWluZGVudGBcbiAgICAgIC5jcmVhdGVUYWJsZSgnJHt0YWJsZU5hbWV9JywgdGFibGUgPT4ge1xuICAgICAgICAke3N0YXRlbWVudHMuam9pbignXFxuJyl9XG4gICAgICB9KWApXG4gICAgZHJvcFRhYmxlcy51bnNoaWZ0KGRlaW5kZW50YFxuICAgICAgLmRyb3BUYWJsZUlmRXhpc3RzKCcke3RhYmxlTmFtZX0nKWApXG4gIH1cbiAgY29uc3QgZ2V0Q29kZSA9IHRhYmxlcyA9PiB0YWJsZXMubGVuZ3RoID4gMFxuICAgID8gZGVpbmRlbnRgXG4gICAgICBhd2FpdCBrbmV4LnNjaGVtYVxuICAgICAgICAke3RhYmxlcy5qb2luKCdcXG4nKX1gXG4gICAgOiAnJ1xuICBjb25zdCBmaWxlbmFtZSA9IGAke2dldFRpbWVzdGFtcCgpfV8ke25hbWV9LmpzYFxuICBjb25zdCBmaWxlID0gcGF0aC5qb2luKG1pZ3JhdGlvbkRpciwgZmlsZW5hbWUpXG4gIGlmIChhd2FpdCBmcy5leGlzdHMoZmlsZSkpIHtcbiAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4sIGJ1dCBsZXQncyBiZSBvbiB0aGUgc2FmZSBzaWRlIGhlcmU6XG4gICAgY29uc29sZS5pbmZvKHBpY28ucmVkKGBNaWdyYXRpb24gJyR7ZmlsZW5hbWV9JyBhbHJlYWR5IGV4aXN0cy5gKSlcbiAgICByZXR1cm4gZmFsc2VcbiAgfSBlbHNlIHtcbiAgICBhd2FpdCBmcy53cml0ZUZpbGUoZmlsZSwgZGVpbmRlbnRgXG4gICAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gdXAoa25leCkge1xuICAgICAgICAke2dldENvZGUoY3JlYXRlVGFibGVzKX1cbiAgICAgIH1cblxuICAgICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRvd24oa25leCkge1xuICAgICAgICAke2dldENvZGUoZHJvcFRhYmxlcyl9XG4gICAgICB9XG4gICAgYClcbiAgICBjb25zb2xlLmluZm8ocGljby5jeWFuKGBNaWdyYXRpb24gJyR7ZmlsZW5hbWV9JyBzdWNjZXNzZnVsbHkgY3JlYXRlZC5gKSlcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbGxlY3RNb2RlbFRhYmxlcyhtb2RlbENsYXNzLCBhcHAsIHRhYmxlcykge1xuICBjb25zdCB0YWJsZU5hbWUgPSBhcHAubm9ybWFsaXplSWRlbnRpZmllcihtb2RlbENsYXNzLnRhYmxlTmFtZSlcbiAgY29uc3QgeyBwcm9wZXJ0aWVzLCByZWxhdGlvbnMgfSA9IG1vZGVsQ2xhc3MuZGVmaW5pdGlvblxuICBjb25zdCBzdGF0ZW1lbnRzID0gW11cbiAgdGFibGVzLnB1c2goeyB0YWJsZU5hbWUsIHN0YXRlbWVudHMgfSlcbiAgY29uc3QgdW5pcXVlQ29tcG9zaXRlcyA9IHt9XG4gIGZvciAoY29uc3QgW25hbWUsIHByb3BlcnR5XSBvZiBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKSkge1xuICAgIGNvbnN0IGNvbHVtbiA9IGFwcC5ub3JtYWxpemVJZGVudGlmaWVyKG5hbWUpXG4gICAgbGV0IHtcbiAgICAgIGRlc2NyaXB0aW9uLCB0eXBlLCBzcGVjaWZpY1R5cGUsIHVuc2lnbmVkLCBjb21wdXRlZCwgbnVsbGFibGUsIHJlcXVpcmVkLFxuICAgICAgcHJpbWFyeSwgZm9yZWlnbiwgdW5pcXVlLCBpbmRleCxcbiAgICAgIGRlZmF1bHQ6IF9kZWZhdWx0XG4gICAgfSA9IHByb3BlcnR5XG4gICAgY29uc3Qga25leFR5cGUgPSB0eXBlVG9LbmV4W3R5cGVdIHx8IHR5cGVcbiAgICBpZiAoIWNvbXB1dGVkKSB7XG4gICAgICBpZiAoZGVzY3JpcHRpb24pIHtcbiAgICAgICAgc3RhdGVtZW50cy5wdXNoKGAvLyAke2Rlc2NyaXB0aW9uLnJlcGxhY2UoL1xcc3syLH0vZywgJyAnKS50cmltKCl9YClcbiAgICAgIH1cbiAgICAgIGlmIChpc1N0cmluZyh1bmlxdWUpKSB7XG4gICAgICAgIC8vIFRvIGRlY2xhcmUgY29tcG9zaXRlIGZvcmVpZ24ga2V5cyBhcyB1bmlxdWUsIHlvdSBjYW4gZ2l2ZSBlYWNoXG4gICAgICAgIC8vIHByb3BlcnR5IHRoZSBzYW1lIHN0cmluZyB2YWx1ZSBpbiB0aGUgYHVuaXF1ZWAga2V5d29yZHMsIGUuZy46XG4gICAgICAgIC8vIGB1bmlxdWU6ICdjdXN0b21lcklkX25hbWUnXG4gICAgICAgIGNvbnN0IGNvbXBvc2l0ZXMgPSB1bmlxdWVDb21wb3NpdGVzW3VuaXF1ZV0gfHxcbiAgICAgICAgICAodW5pcXVlQ29tcG9zaXRlc1t1bmlxdWVdID0gW10pXG4gICAgICAgIGNvbXBvc2l0ZXMucHVzaChjb2x1bW4pXG4gICAgICAgIHVuaXF1ZSA9IGZhbHNlXG4gICAgICB9XG4gICAgICBjb25zdCBzdGF0ZW1lbnQgPSBwcmltYXJ5XG4gICAgICAgID8gW2B0YWJsZS5pbmNyZW1lbnRzKCcke2NvbHVtbn0nKS5wcmltYXJ5KClgXVxuICAgICAgICA6IHNwZWNpZmljVHlwZVxuICAgICAgICAgID8gW2B0YWJsZS5zcGVjaWZpY1R5cGUoJyR7Y29sdW1ufScsICcke3NwZWNpZmljVHlwZX0nKWBdXG4gICAgICAgICAgOiBbYHRhYmxlLiR7a25leFR5cGV9KCcke2NvbHVtbn0nKWBdXG4gICAgICBzdGF0ZW1lbnQucHVzaChcbiAgICAgICAgdW5zaWduZWQgJiYgJ3Vuc2lnbmVkKCknLFxuICAgICAgICAhcHJpbWFyeSAmJiByZXF1aXJlZCAmJiAnbm90TnVsbGFibGUoKScsXG4gICAgICAgIG51bGxhYmxlICYmICdudWxsYWJsZSgpJyxcbiAgICAgICAgdW5pcXVlICYmICd1bmlxdWUoKScsXG4gICAgICAgIGluZGV4ICYmICdpbmRleCgpJ1xuICAgICAgKVxuICAgICAgaWYgKF9kZWZhdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGV0IHZhbHVlID0gZGVmYXVsdFZhbHVlc1tfZGVmYXVsdF1cbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgIHZhbHVlID0gaXNBcnJheShfZGVmYXVsdCkgfHwgaXNPYmplY3QoX2RlZmF1bHQpXG4gICAgICAgICAgICA/IEpTT04uc3RyaW5naWZ5KF9kZWZhdWx0KVxuICAgICAgICAgICAgOiBfZGVmYXVsdFxuICAgICAgICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlID0gYCcke3ZhbHVlfSdgXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHN0YXRlbWVudC5wdXNoKGBkZWZhdWx0VG8oJHt2YWx1ZX0pYClcbiAgICAgIH1cbiAgICAgIGlmIChmb3JlaWduKSB7XG4gICAgICAgIGZvciAoY29uc3QgcmVsYXRpb24gb2YgT2JqZWN0LnZhbHVlcyhyZWxhdGlvbnMpKSB7XG4gICAgICAgICAgLy8gVE9ETzogU3VwcG9ydCBjb21wb3NpdGUga2V5cyBmb3IgZm9yZWlnbiByZWZlcmVuY2VzOlxuICAgICAgICAgIC8vIFVzZSBgYXNBcnJheShmcm9tKWAsIGBhc0FycmF5KHRvKWBcbiAgICAgICAgICBjb25zdCB7IGZyb20sIHRvLCBvd25lciB9ID0gcmVsYXRpb25cbiAgICAgICAgICBjb25zdCBbZnJvbUNsYXNzLCBmcm9tUHJvcGVydHldID0gZnJvbT8uc3BsaXQoJy4nKSB8fCBbXVxuICAgICAgICAgIGlmIChmcm9tUHJvcGVydHkgPT09IG5hbWUpIHtcbiAgICAgICAgICAgIGlmIChmcm9tQ2xhc3MgIT09IG1vZGVsQ2xhc3MubmFtZSkge1xuICAgICAgICAgICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCByZWxhdGlvbiBkZWNsYXJhdGlvbjogJHtyZWxhdGlvbn1gKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgW3RvQ2xhc3MsIHRvUHJvcGVydHldID0gdG8/LnNwbGl0KCcuJykgfHwgW11cbiAgICAgICAgICAgIHN0YXRlbWVudC5wdXNoKFxuICAgICAgICAgICAgICAnXFxuJyxcbiAgICAgICAgICAgICAgYHJlZmVyZW5jZXMoJyR7YXBwLm5vcm1hbGl6ZUlkZW50aWZpZXIodG9Qcm9wZXJ0eSl9JylgLFxuICAgICAgICAgICAgICBgaW5UYWJsZSgnJHthcHAubm9ybWFsaXplSWRlbnRpZmllcih0b0NsYXNzKX0nKWAsXG4gICAgICAgICAgICAgIC8vIE9ubHkgcmVsYXRpb25zIHRoYXQgYXJlbid0IG93bmVycyBvZiB0aGVpciBkYXRhIHNob3VsZCBjYXNjYWRlXG4gICAgICAgICAgICAgIC8vIG9uIGRlbGV0ZS5cbiAgICAgICAgICAgICAgLy8gVE9ETzogRmluZCB0aGUgcmV2ZXJzZSByZWxhdGlvbiBvZiB0aGlzIGluIHRoZSBvdGhlciBjbGFzcyBhbmRcbiAgICAgICAgICAgICAgLy8gb25seSBhZGQgYG9uRGVsZXRlKCdDQVNDQURFJylgIGlmIHRoYXQgb25lJ3MgYW4gb3duZXIuXG4gICAgICAgICAgICAgICFvd25lciAmJiBgb25EZWxldGUoJ0NBU0NBREUnKWBcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHN0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQuZmlsdGVyKHN0ciA9PiAhIXN0cikuam9pbignLicpXG4gICAgICAgIC5yZXBsYWNlKC9cXC5cXG5cXC4vZywgJ1xcbiAgLicpKVxuICAgIH1cbiAgfVxuICBmb3IgKGNvbnN0IGNvbXBvc2l0ZXMgb2YgT2JqZWN0LnZhbHVlcyh1bmlxdWVDb21wb3NpdGVzKSkge1xuICAgIHN0YXRlbWVudHMucHVzaChgdGFibGUudW5pcXVlKFske1xuICAgICAgY29tcG9zaXRlcy5tYXAoY29sdW1uID0+IGAnJHtjb2x1bW59J2ApLmpvaW4oJywgJylcbiAgICB9XSlgKVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbGxlY3RUaHJvdWdoVGFibGVzKG1vZGVsQ2xhc3MsIGFwcCwgdGFibGVzKSB7XG4gIGNvbnN0IHsgcmVsYXRpb25zIH0gPSBtb2RlbENsYXNzLmRlZmluaXRpb25cbiAgZm9yIChjb25zdCByZWxhdGlvbiBvZiBPYmplY3QudmFsdWVzKHJlbGF0aW9ucykpIHtcbiAgICBjb25zdCB7IGZyb20sIHRvLCBpbnZlcnNlIH0gPSByZWxhdGlvblxuICAgIGNvbnN0IHJlbGF0aW9uQ2xhc3MgPSBnZXRSZWxhdGlvbkNsYXNzKHJlbGF0aW9uLnJlbGF0aW9uKVxuICAgIGlmIChpc1Rocm91Z2hSZWxhdGlvbkNsYXNzKHJlbGF0aW9uQ2xhc3MpICYmICFpbnZlcnNlKSB7XG4gICAgICAvLyBUT0RPOiBTdXBwb3J0IGNvbXBvc2l0ZSBrZXlzIGZvciBmb3JlaWduIHJlZmVyZW5jZXM6XG4gICAgICAvLyBVc2UgYGFzQXJyYXkoZnJvbSlgLCBgYXNBcnJheSh0bylgXG4gICAgICBjb25zdCBbZnJvbUNsYXNzLCBmcm9tUHJvcGVydHldID0gZnJvbT8uc3BsaXQoJy4nKSB8fCBbXVxuICAgICAgY29uc3QgW3RvQ2xhc3MsIHRvUHJvcGVydHldID0gdG8/LnNwbGl0KCcuJykgfHwgW11cbiAgICAgIGNvbnN0IHN0YXRlbWVudHMgPSBbXVxuICAgICAgLy8gU2VlIGNvbnZlcnRSZWxhdGlvbnMoKVxuICAgICAgY29uc3QgdGFibGVOYW1lID0gYXBwLm5vcm1hbGl6ZUlkZW50aWZpZXIoYCR7ZnJvbUNsYXNzfSR7dG9DbGFzc31gKVxuICAgICAgY29uc3QgZnJvbUlkID0gYXBwLm5vcm1hbGl6ZUlkZW50aWZpZXIoXG4gICAgICAgIGAke2Zyb21DbGFzc30ke2NhcGl0YWxpemUoZnJvbVByb3BlcnR5KX1gKVxuICAgICAgY29uc3QgdG9JZCA9IGFwcC5ub3JtYWxpemVJZGVudGlmaWVyKFxuICAgICAgICBgJHt0b0NsYXNzfSR7Y2FwaXRhbGl6ZSh0b1Byb3BlcnR5KX1gKVxuICAgICAgdGFibGVzLnB1c2goeyB0YWJsZU5hbWUsIHN0YXRlbWVudHMgfSlcbiAgICAgIHN0YXRlbWVudHMucHVzaChgdGFibGUuaW5jcmVtZW50cygnaWQnKS5wcmltYXJ5KClgKVxuICAgICAgc3RhdGVtZW50cy5wdXNoKGRlaW5kZW50YFxuICAgICAgICB0YWJsZS5pbnRlZ2VyKCcke2Zyb21JZH0nKS51bnNpZ25lZCgpLmluZGV4KClcbiAgICAgICAgICAucmVmZXJlbmNlcygnJHthcHAubm9ybWFsaXplSWRlbnRpZmllcihmcm9tUHJvcGVydHkpfScpXFxcXFxuICAgICAgICAgIC5pblRhYmxlKCcke2FwcC5ub3JtYWxpemVJZGVudGlmaWVyKGZyb21DbGFzcyl9JylcXFxcXG4gICAgICAgICAgLm9uRGVsZXRlKCdDQVNDQURFJylgKVxuICAgICAgc3RhdGVtZW50cy5wdXNoKGRlaW5kZW50YFxuICAgICAgICB0YWJsZS5pbnRlZ2VyKCcke3RvSWR9JykudW5zaWduZWQoKS5pbmRleCgpXG4gICAgICAgICAgLnJlZmVyZW5jZXMoJyR7YXBwLm5vcm1hbGl6ZUlkZW50aWZpZXIodG9Qcm9wZXJ0eSl9JylcXFxcXG4gICAgICAgICAgLmluVGFibGUoJyR7YXBwLm5vcm1hbGl6ZUlkZW50aWZpZXIodG9DbGFzcyl9JylcXFxcXG4gICAgICAgICAgLm9uRGVsZXRlKCdDQVNDQURFJylgKVxuICAgIH1cbiAgfVxufVxuXG4vLyBFbnN1cmUgdGhhdCB3ZSBoYXZlIDIgcGxhY2VzIGZvciBlYWNoIG9mIHRoZSBkYXRlIHNlZ21lbnRzLlxuZnVuY3Rpb24gcGFkRGF0ZShzZWdtZW50KSB7XG4gIHJldHVybiBzZWdtZW50LnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKVxufVxuXG4vLyBHZXQgYSBkYXRlIG9iamVjdCBpbiB0aGUgY29ycmVjdCBmb3JtYXQsIHdpdGhvdXQgcmVxdWlyaW5nIGEgZnVsbCBvdXQgbGlicmFyeVxuLy8gbGlrZSBcIm1vbWVudC5qc1wiLlxuZnVuY3Rpb24gZ2V0VGltZXN0YW1wKCkge1xuICBjb25zdCBkID0gbmV3IERhdGUoKVxuICByZXR1cm4gZC5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCkgK1xuICAgIHBhZERhdGUoZC5nZXRNb250aCgpICsgMSkgK1xuICAgIHBhZERhdGUoZC5nZXREYXRlKCkpICtcbiAgICBwYWREYXRlKGQuZ2V0SG91cnMoKSkgK1xuICAgIHBhZERhdGUoZC5nZXRNaW51dGVzKCkpICtcbiAgICBwYWREYXRlKGQuZ2V0U2Vjb25kcygpKVxufVxuIl19
|
package/lib/cli/db/index.js
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
require("core-js/modules/esnext.async-iterator.for-each.js");
|
|
4
|
+
|
|
5
|
+
require("core-js/modules/esnext.iterator.constructor.js");
|
|
6
|
+
|
|
7
|
+
require("core-js/modules/esnext.iterator.for-each.js");
|
|
8
|
+
|
|
3
9
|
exports.__esModule = true;
|
|
4
10
|
|
|
5
11
|
var _createMigration = require("./createMigration");
|
|
@@ -57,4 +63,4 @@ Object.keys(_unlock).forEach(function (key) {
|
|
|
57
63
|
if (key in exports && exports[key] === _unlock[key]) return;
|
|
58
64
|
exports[key] = _unlock[key];
|
|
59
65
|
});
|
|
60
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGkvZGIvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NyZWF0ZU1pZ3JhdGlvbidcbmV4cG9ydCAqIGZyb20gJy4vbGlzdEFzc2V0Q29uZmlnJ1xuZXhwb3J0ICogZnJvbSAnLi9taWdyYXRlJ1xuZXhwb3J0ICogZnJvbSAnLi9yb2xsYmFjaydcbmV4cG9ydCAqIGZyb20gJy4vcmVzZXQnXG5leHBvcnQgKiBmcm9tICcuL3NlZWQnXG5leHBvcnQgKiBmcm9tICcuL3VubG9jaydcbiJdfQ==
|
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
exports.listAssetConfig = listAssetConfig;
|
|
5
5
|
|
|
6
|
+
var _utils = require("../../utils");
|
|
7
|
+
|
|
6
8
|
async function listAssetConfig(app, ...args) {
|
|
7
9
|
const assetConfig = app.getAssetConfig({
|
|
8
10
|
models: args.length > 0 ? args : Object.keys(app.models),
|
|
9
11
|
normalizeDbNames: true
|
|
10
12
|
});
|
|
11
|
-
console.info(
|
|
13
|
+
console.info((0, _utils.formatJson)(assetConfig));
|
|
12
14
|
return true;
|
|
13
15
|
}
|
|
14
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGkvZGIvbGlzdEFzc2V0Q29uZmlnLmpzIl0sIm5hbWVzIjpbImxpc3RBc3NldENvbmZpZyIsImFwcCIsImFyZ3MiLCJhc3NldENvbmZpZyIsImdldEFzc2V0Q29uZmlnIiwibW9kZWxzIiwibGVuZ3RoIiwiT2JqZWN0Iiwia2V5cyIsIm5vcm1hbGl6ZURiTmFtZXMiLCJjb25zb2xlIiwiaW5mbyJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7QUFFTyxlQUFlQSxlQUFmLENBQStCQyxHQUEvQixFQUFvQyxHQUFHQyxJQUF2QyxFQUE2QztBQUNsRCxRQUFNQyxXQUFXLEdBQUdGLEdBQUcsQ0FBQ0csY0FBSixDQUFtQjtBQUNyQ0MsSUFBQUEsTUFBTSxFQUFFSCxJQUFJLENBQUNJLE1BQUwsR0FBYyxDQUFkLEdBQWtCSixJQUFsQixHQUF5QkssTUFBTSxDQUFDQyxJQUFQLENBQVlQLEdBQUcsQ0FBQ0ksTUFBaEIsQ0FESTtBQUVyQ0ksSUFBQUEsZ0JBQWdCLEVBQUU7QUFGbUIsR0FBbkIsQ0FBcEI7QUFJQUMsRUFBQUEsT0FBTyxDQUFDQyxJQUFSLENBQWEsdUJBQVdSLFdBQVgsQ0FBYjtBQUNBLFNBQU8sSUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZm9ybWF0SnNvbiB9IGZyb20gJ0AvdXRpbHMnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaXN0QXNzZXRDb25maWcoYXBwLCAuLi5hcmdzKSB7XG4gIGNvbnN0IGFzc2V0Q29uZmlnID0gYXBwLmdldEFzc2V0Q29uZmlnKHtcbiAgICBtb2RlbHM6IGFyZ3MubGVuZ3RoID4gMCA/IGFyZ3MgOiBPYmplY3Qua2V5cyhhcHAubW9kZWxzKSxcbiAgICBub3JtYWxpemVEYk5hbWVzOiB0cnVlXG4gIH0pXG4gIGNvbnNvbGUuaW5mbyhmb3JtYXRKc29uKGFzc2V0Q29uZmlnKSlcbiAgcmV0dXJuIHRydWVcbn1cbiJdfQ==
|
package/lib/cli/db/migrate.js
CHANGED
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
exports.migrate = migrate;
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _picocolors = _interopRequireDefault(require("picocolors"));
|
|
7
7
|
|
|
8
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
9
|
|
|
10
10
|
async function migrate(knex) {
|
|
11
11
|
const [batch, log] = await knex.migrate.latest();
|
|
12
|
-
console.info(log.length === 0 ?
|
|
12
|
+
console.info(log.length === 0 ? _picocolors.default.cyan('Already up to date') : _picocolors.default.green(`Batch ${batch} run: ${log.length} migrations\n`) + _picocolors.default.cyan(log.join('\n')));
|
|
13
13
|
return true;
|
|
14
14
|
}
|
|
15
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGkvZGIvbWlncmF0ZS5qcyJdLCJuYW1lcyI6WyJtaWdyYXRlIiwia25leCIsImJhdGNoIiwibG9nIiwibGF0ZXN0IiwiY29uc29sZSIsImluZm8iLCJsZW5ndGgiLCJwaWNvIiwiY3lhbiIsImdyZWVuIiwiam9pbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7OztBQUVPLGVBQWVBLE9BQWYsQ0FBdUJDLElBQXZCLEVBQTZCO0FBQ2xDLFFBQU0sQ0FBQ0MsS0FBRCxFQUFRQyxHQUFSLElBQWUsTUFBTUYsSUFBSSxDQUFDRCxPQUFMLENBQWFJLE1BQWIsRUFBM0I7QUFDQUMsRUFBQUEsT0FBTyxDQUFDQyxJQUFSLENBQWFILEdBQUcsQ0FBQ0ksTUFBSixLQUFlLENBQWYsR0FDVEMsb0JBQUtDLElBQUwsQ0FBVSxvQkFBVixDQURTLEdBRVRELG9CQUFLRSxLQUFMLENBQVksU0FBUVIsS0FBTSxTQUFRQyxHQUFHLENBQUNJLE1BQU8sZUFBN0MsSUFDQUMsb0JBQUtDLElBQUwsQ0FBVU4sR0FBRyxDQUFDUSxJQUFKLENBQVMsSUFBVCxDQUFWLENBSEo7QUFJQSxTQUFPLElBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwaWNvIGZyb20gJ3BpY29jb2xvcnMnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtaWdyYXRlKGtuZXgpIHtcbiAgY29uc3QgW2JhdGNoLCBsb2ddID0gYXdhaXQga25leC5taWdyYXRlLmxhdGVzdCgpXG4gIGNvbnNvbGUuaW5mbyhsb2cubGVuZ3RoID09PSAwXG4gICAgPyBwaWNvLmN5YW4oJ0FscmVhZHkgdXAgdG8gZGF0ZScpXG4gICAgOiBwaWNvLmdyZWVuKGBCYXRjaCAke2JhdGNofSBydW46ICR7bG9nLmxlbmd0aH0gbWlncmF0aW9uc1xcbmApICtcbiAgICAgIHBpY28uY3lhbihsb2cuam9pbignXFxuJykpKVxuICByZXR1cm4gdHJ1ZVxufVxuIl19
|
package/lib/cli/db/reset.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
exports.reset = reset;
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _picocolors = _interopRequireDefault(require("picocolors"));
|
|
7
7
|
|
|
8
8
|
var _migrate = require("./migrate");
|
|
9
9
|
|
|
@@ -20,8 +20,8 @@ async function reset(knex) {
|
|
|
20
20
|
migrations.push(...log);
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
console.info(migrations.length === 0 ?
|
|
23
|
+
console.info(migrations.length === 0 ? _picocolors.default.cyan('Already at the base migration') : _picocolors.default.green(`${batches.length > 1 ? 'Batches' : 'Batch'} ${batches} ` + `rolled back: ${migrations.length} migrations\n`) + _picocolors.default.cyan(migrations.join('\n')));
|
|
24
24
|
await (0, _migrate.migrate)(knex);
|
|
25
25
|
return true;
|
|
26
26
|
}
|
|
27
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGkvZGIvcmVzZXQuanMiXSwibmFtZXMiOlsicmVzZXQiLCJrbmV4IiwiYmF0Y2hlcyIsIm1pZ3JhdGlvbnMiLCJiYXRjaCIsImxvZyIsIm1pZ3JhdGUiLCJyb2xsYmFjayIsImxlbmd0aCIsInB1c2giLCJjb25zb2xlIiwiaW5mbyIsInBpY28iLCJjeWFuIiwiZ3JlZW4iLCJqb2luIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUNBOzs7O0FBRU8sZUFBZUEsS0FBZixDQUFxQkMsSUFBckIsRUFBMkI7QUFDaEMsUUFBTUMsT0FBTyxHQUFHLEVBQWhCO0FBQ0EsUUFBTUMsVUFBVSxHQUFHLEVBQW5COztBQUNBLFNBQU8sSUFBUCxFQUFhO0FBQ1gsVUFBTSxDQUFDQyxLQUFELEVBQVFDLEdBQVIsSUFBZSxNQUFNSixJQUFJLENBQUNLLE9BQUwsQ0FBYUMsUUFBYixFQUEzQjtBQUNBLFFBQUlGLEdBQUcsQ0FBQ0csTUFBSixLQUFlLENBQW5CLEVBQXNCO0FBQ3RCTixJQUFBQSxPQUFPLENBQUNPLElBQVIsQ0FBYUwsS0FBYjtBQUNBRCxJQUFBQSxVQUFVLENBQUNNLElBQVgsQ0FBZ0IsR0FBR0osR0FBbkI7QUFDRDs7QUFDREssRUFBQUEsT0FBTyxDQUFDQyxJQUFSLENBQWFSLFVBQVUsQ0FBQ0ssTUFBWCxLQUFzQixDQUF0QixHQUNUSSxvQkFBS0MsSUFBTCxDQUFVLCtCQUFWLENBRFMsR0FFVEQsb0JBQUtFLEtBQUwsQ0FBWSxHQUFFWixPQUFPLENBQUNNLE1BQVIsR0FBaUIsQ0FBakIsR0FBcUIsU0FBckIsR0FBaUMsT0FBUSxJQUFHTixPQUFRLEdBQXZELEdBQ1YsZ0JBQWVDLFVBQVUsQ0FBQ0ssTUFBTyxlQURsQyxJQUVBSSxvQkFBS0MsSUFBTCxDQUFVVixVQUFVLENBQUNZLElBQVgsQ0FBZ0IsSUFBaEIsQ0FBVixDQUpKO0FBS0EsUUFBTSxzQkFBUWQsSUFBUixDQUFOO0FBQ0EsU0FBTyxJQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGljbyBmcm9tICdwaWNvY29sb3JzJ1xuaW1wb3J0IHsgbWlncmF0ZSB9IGZyb20gJy4vbWlncmF0ZSdcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc2V0KGtuZXgpIHtcbiAgY29uc3QgYmF0Y2hlcyA9IFtdXG4gIGNvbnN0IG1pZ3JhdGlvbnMgPSBbXVxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGNvbnN0IFtiYXRjaCwgbG9nXSA9IGF3YWl0IGtuZXgubWlncmF0ZS5yb2xsYmFjaygpXG4gICAgaWYgKGxvZy5sZW5ndGggPT09IDApIGJyZWFrXG4gICAgYmF0Y2hlcy5wdXNoKGJhdGNoKVxuICAgIG1pZ3JhdGlvbnMucHVzaCguLi5sb2cpXG4gIH1cbiAgY29uc29sZS5pbmZvKG1pZ3JhdGlvbnMubGVuZ3RoID09PSAwXG4gICAgPyBwaWNvLmN5YW4oJ0FscmVhZHkgYXQgdGhlIGJhc2UgbWlncmF0aW9uJylcbiAgICA6IHBpY28uZ3JlZW4oYCR7YmF0Y2hlcy5sZW5ndGggPiAxID8gJ0JhdGNoZXMnIDogJ0JhdGNoJ30gJHtiYXRjaGVzfSBgICtcbiAgICAgIGByb2xsZWQgYmFjazogJHttaWdyYXRpb25zLmxlbmd0aH0gbWlncmF0aW9uc1xcbmApICtcbiAgICAgIHBpY28uY3lhbihtaWdyYXRpb25zLmpvaW4oJ1xcbicpKSlcbiAgYXdhaXQgbWlncmF0ZShrbmV4KVxuICByZXR1cm4gdHJ1ZVxufVxuIl19
|
package/lib/cli/db/rollback.js
CHANGED
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
exports.rollback = rollback;
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _picocolors = _interopRequireDefault(require("picocolors"));
|
|
7
7
|
|
|
8
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
9
|
|
|
10
10
|
async function rollback(knex) {
|
|
11
11
|
const [batch, log] = await knex.migrate.rollback();
|
|
12
|
-
console.info(log.length === 0 ?
|
|
12
|
+
console.info(log.length === 0 ? _picocolors.default.cyan('Already at the base migration') : _picocolors.default.green(`Batch ${batch} rolled back: ${log.length} migrations\n`) + _picocolors.default.cyan(log.join('\n')));
|
|
13
13
|
return true;
|
|
14
14
|
}
|
|
15
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGkvZGIvcm9sbGJhY2suanMiXSwibmFtZXMiOlsicm9sbGJhY2siLCJrbmV4IiwiYmF0Y2giLCJsb2ciLCJtaWdyYXRlIiwiY29uc29sZSIsImluZm8iLCJsZW5ndGgiLCJwaWNvIiwiY3lhbiIsImdyZWVuIiwiam9pbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7OztBQUVPLGVBQWVBLFFBQWYsQ0FBd0JDLElBQXhCLEVBQThCO0FBQ25DLFFBQU0sQ0FBQ0MsS0FBRCxFQUFRQyxHQUFSLElBQWUsTUFBTUYsSUFBSSxDQUFDRyxPQUFMLENBQWFKLFFBQWIsRUFBM0I7QUFDQUssRUFBQUEsT0FBTyxDQUFDQyxJQUFSLENBQWFILEdBQUcsQ0FBQ0ksTUFBSixLQUFlLENBQWYsR0FDVEMsb0JBQUtDLElBQUwsQ0FBVSwrQkFBVixDQURTLEdBRVRELG9CQUFLRSxLQUFMLENBQVksU0FBUVIsS0FBTSxpQkFBZ0JDLEdBQUcsQ0FBQ0ksTUFBTyxlQUFyRCxJQUNBQyxvQkFBS0MsSUFBTCxDQUFVTixHQUFHLENBQUNRLElBQUosQ0FBUyxJQUFULENBQVYsQ0FISjtBQUlBLFNBQU8sSUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycydcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJvbGxiYWNrKGtuZXgpIHtcbiAgY29uc3QgW2JhdGNoLCBsb2ddID0gYXdhaXQga25leC5taWdyYXRlLnJvbGxiYWNrKClcbiAgY29uc29sZS5pbmZvKGxvZy5sZW5ndGggPT09IDBcbiAgICA/IHBpY28uY3lhbignQWxyZWFkeSBhdCB0aGUgYmFzZSBtaWdyYXRpb24nKVxuICAgIDogcGljby5ncmVlbihgQmF0Y2ggJHtiYXRjaH0gcm9sbGVkIGJhY2s6ICR7bG9nLmxlbmd0aH0gbWlncmF0aW9uc1xcbmApICtcbiAgICAgIHBpY28uY3lhbihsb2cuam9pbignXFxuJykpKVxuICByZXR1cm4gdHJ1ZVxufVxuIl19
|