verdaccio 5.19.1 → 5.21.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/LICENSE +1 -1
- package/README.md +2 -2
- package/build/api/debug/index.js +2 -1
- package/build/api/endpoint/api/dist-tags.js +7 -3
- package/build/api/endpoint/api/package.js +14 -4
- package/build/api/endpoint/api/ping.js +1 -1
- package/build/api/endpoint/api/publish.js +8 -4
- package/build/api/endpoint/api/star.js +1 -1
- package/build/api/endpoint/api/stars.js +10 -3
- package/build/api/endpoint/api/user.js +13 -12
- package/build/api/endpoint/api/v1/profile.js +5 -5
- package/build/api/endpoint/api/v1/search.js +1 -1
- package/build/api/endpoint/api/v1/token.js +17 -17
- package/build/api/endpoint/index.js +3 -5
- package/build/api/index.d.ts +1 -0
- package/build/api/index.js +19 -26
- package/build/api/middleware.d.ts +3 -15
- package/build/api/middleware.js +19 -264
- package/build/api/web/{endpoint → api}/index.d.ts +0 -0
- package/build/api/web/{endpoint → api}/index.js +4 -4
- package/build/api/web/{endpoint → api}/package.d.ts +0 -0
- package/build/api/web/api/package.js +166 -0
- package/build/api/web/{endpoint → api}/search.d.ts +0 -0
- package/build/api/web/api/search.js +51 -0
- package/build/api/web/{endpoint → api}/user.d.ts +0 -0
- package/build/api/web/api/user.js +67 -0
- package/build/api/web/index.d.ts +2 -3
- package/build/api/web/index.js +15 -88
- package/build/index.d.ts +1 -1
- package/build/index.js +3 -3
- package/build/lib/auth-utils.d.ts +1 -5
- package/build/lib/auth-utils.js +13 -28
- package/build/lib/auth.js +17 -13
- package/build/lib/bootstrap.js +1 -1
- package/build/lib/cli/commands/init.js +1 -1
- package/build/lib/cli/utils.js +1 -1
- package/build/lib/config-path.js +1 -2
- package/build/lib/config-utils.d.ts +1 -2
- package/build/lib/config-utils.js +5 -14
- package/build/lib/config.js +9 -8
- package/build/lib/constants.d.ts +2 -121
- package/build/lib/constants.js +80 -135
- package/build/lib/crypto-utils.d.ts +0 -11
- package/build/lib/crypto-utils.js +1 -21
- package/build/lib/local-storage.js +34 -35
- package/build/lib/logger/index.d.ts +3 -1
- package/build/lib/logger/index.js +10 -19
- package/build/lib/notify/index.js +1 -1
- package/build/lib/plugin-loader.js +1 -1
- package/build/lib/{bootstrap.v2.d.ts → run-server.d.ts} +0 -0
- package/build/lib/run-server.js +152 -0
- package/build/lib/storage-utils.d.ts +4 -5
- package/build/lib/storage-utils.js +28 -34
- package/build/lib/storage.js +4 -4
- package/build/lib/up-storage.js +20 -28
- package/build/lib/uplink-util.js +2 -2
- package/build/lib/utils.d.ts +15 -70
- package/build/lib/utils.js +42 -254
- package/eslintrc.js +2 -0
- package/package.json +42 -54
- package/prettier.config.js +1 -1
- package/CHANGELOG.md +0 -2509
- package/CONTRIBUTING.md +0 -195
- package/CONTRIBUTORS.md +0 -41
- package/SECURITY.md +0 -76
- package/build/api/rate-limiter.d.ts +0 -3
- package/build/api/rate-limiter.js +0 -19
- package/build/api/web/api.d.ts +0 -4
- package/build/api/web/api.js +0 -34
- package/build/api/web/endpoint/package.js +0 -152
- package/build/api/web/endpoint/search.js +0 -51
- package/build/api/web/endpoint/user.js +0 -67
- package/build/api/web/html/manifest.d.ts +0 -6
- package/build/api/web/html/manifest.js +0 -18
- package/build/api/web/html/renderHTML.d.ts +0 -3
- package/build/api/web/html/renderHTML.js +0 -130
- package/build/api/web/html/template.d.ts +0 -26
- package/build/api/web/html/template.js +0 -38
- package/build/lib/bootstrap.v2.js +0 -152
- package/build/lib/logger/formatter/index.d.ts +0 -1
- package/build/lib/logger/formatter/index.js +0 -16
- package/build/lib/logger/formatter/prettifier.d.ts +0 -18
- package/build/lib/logger/formatter/prettifier.js +0 -89
- package/build/lib/logger/levels.d.ts +0 -33
- package/build/lib/logger/levels.js +0 -61
- package/build/lib/logger/logger.d.ts +0 -22
- package/build/lib/logger/logger.js +0 -141
- package/build/lib/logger/utils.d.ts +0 -5
- package/build/lib/logger/utils.js +0 -25
- package/build/utils/user.d.ts +0 -5
- package/build/utils/user.js +0 -30
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@ Google Cloud Storage** or create your own plugin.
|
|
|
18
18
|
[](https://opencollective.com/verdaccio)
|
|
19
19
|
[](https://stackshare.io/verdaccio)
|
|
20
20
|
|
|
21
|
-
[](
|
|
21
|
+
[](https://discord.gg/7qWJxBf)
|
|
22
22
|
[](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
|
|
23
23
|
[](https://crowdin.com/project/verdaccio)
|
|
24
24
|
|
|
@@ -258,7 +258,7 @@ If you want to report a security vulnerability, please follow the steps which we
|
|
|
258
258
|
| [Juan Picado](https://github.com/juanpicado) | [Ayush Sharma](https://github.com/ayusharma) | [Sergio Hg](https://github.com/sergiohgz) |
|
|
259
259
|
| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------------ |
|
|
260
260
|
|  |  |  |
|
|
261
|
-
| [@jotadeveloper](https://fosstodon.org/@jotadeveloper)
|
|
261
|
+
| [@jotadeveloper](https://fosstodon.org/@jotadeveloper) | [@ayusharma\_](https://twitter.com/ayusharma_) | [@sergiohgz](https://twitter.com/sergiohgz) |
|
|
262
262
|
| [Priscila Oliveria](https://github.com/priscilawebdev) | [Daniel Ruf](https://github.com/DanielRuf) |
|
|
263
263
|
|  |  |
|
|
264
264
|
| [@priscilawebdev](https://twitter.com/priscilawebdev) | [@DanielRufde](https://twitter.com/DanielRufde) |
|
package/build/api/debug/index.js
CHANGED
|
@@ -11,6 +11,7 @@ var _default = (app, selfPath) => {
|
|
|
11
11
|
app.get('/-/_debug', function (req, res, next) {
|
|
12
12
|
const doGarbabeCollector = _lodash.default.isNil(global.gc) === false;
|
|
13
13
|
if (doGarbabeCollector) {
|
|
14
|
+
// @ts-ignore
|
|
14
15
|
global.gc();
|
|
15
16
|
}
|
|
16
17
|
next({
|
|
@@ -24,4 +25,4 @@ var _default = (app, selfPath) => {
|
|
|
24
25
|
});
|
|
25
26
|
};
|
|
26
27
|
exports.default = _default;
|
|
27
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcHAiLCJzZWxmUGF0aCIsImdldCIsInJlcSIsInJlcyIsIm5leHQiLCJkb0dhcmJhYmVDb2xsZWN0b3IiLCJfIiwiaXNOaWwiLCJnbG9iYWwiLCJnYyIsInBpZCIsInByb2Nlc3MiLCJtYWluIiwibWFpbk1vZHVsZSIsImZpbGVuYW1lIiwiY29uZiIsIm1lbSIsIm1lbW9yeVVzYWdlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9kZWJ1Zy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHBsaWNhdGlvbiB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgJE5leHRGdW5jdGlvblZlciwgJFJlcXVlc3RFeHRlbmQsICRSZXNwb25zZUV4dGVuZCB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuZXhwb3J0IGRlZmF1bHQgKGFwcDogQXBwbGljYXRpb24sIHNlbGZQYXRoOiBzdHJpbmcpOiB2b2lkID0+
|
|
28
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcHAiLCJzZWxmUGF0aCIsImdldCIsInJlcSIsInJlcyIsIm5leHQiLCJkb0dhcmJhYmVDb2xsZWN0b3IiLCJfIiwiaXNOaWwiLCJnbG9iYWwiLCJnYyIsInBpZCIsInByb2Nlc3MiLCJtYWluIiwibWFpbk1vZHVsZSIsImZpbGVuYW1lIiwiY29uZiIsIm1lbSIsIm1lbW9yeVVzYWdlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9kZWJ1Zy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHBsaWNhdGlvbiB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgJE5leHRGdW5jdGlvblZlciwgJFJlcXVlc3RFeHRlbmQsICRSZXNwb25zZUV4dGVuZCB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuZXhwb3J0IGRlZmF1bHQgKGFwcDogQXBwbGljYXRpb24sIHNlbGZQYXRoOiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgLy8gSG9vayBmb3IgdGVzdHMgb25seVxuICBhcHAuZ2V0KFxuICAgICcvLS9fZGVidWcnLFxuICAgIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgICAgY29uc3QgZG9HYXJiYWJlQ29sbGVjdG9yID0gXy5pc05pbChnbG9iYWwuZ2MpID09PSBmYWxzZTtcblxuICAgICAgaWYgKGRvR2FyYmFiZUNvbGxlY3Rvcikge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGdsb2JhbC5nYygpO1xuICAgICAgfVxuXG4gICAgICBuZXh0KHtcbiAgICAgICAgcGlkOiBwcm9jZXNzLnBpZCxcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBtYWluOiBwcm9jZXNzLm1haW5Nb2R1bGUuZmlsZW5hbWUsXG4gICAgICAgIGNvbmY6IHNlbGZQYXRoLFxuICAgICAgICBtZW06IHByb2Nlc3MubWVtb3J5VXNhZ2UoKSxcbiAgICAgICAgZ2M6IGRvR2FyYmFiZUNvbGxlY3RvcixcbiAgICAgIH0pO1xuICAgIH1cbiAgKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBO0FBQXVCO0FBQUEsZUFJUixDQUFDQSxHQUFnQixFQUFFQyxRQUFnQixLQUFXO0VBQzNEO0VBQ0FELEdBQUcsQ0FBQ0UsR0FBRyxDQUNMLFdBQVcsRUFDWCxVQUFVQyxHQUFtQixFQUFFQyxHQUFvQixFQUFFQyxJQUFzQixFQUFRO0lBQ2pGLE1BQU1DLGtCQUFrQixHQUFHQyxlQUFDLENBQUNDLEtBQUssQ0FBQ0MsTUFBTSxDQUFDQyxFQUFFLENBQUMsS0FBSyxLQUFLO0lBRXZELElBQUlKLGtCQUFrQixFQUFFO01BQ3RCO01BQ0FHLE1BQU0sQ0FBQ0MsRUFBRSxFQUFFO0lBQ2I7SUFFQUwsSUFBSSxDQUFDO01BQ0hNLEdBQUcsRUFBRUMsT0FBTyxDQUFDRCxHQUFHO01BQ2hCO01BQ0FFLElBQUksRUFBRUQsT0FBTyxDQUFDRSxVQUFVLENBQUNDLFFBQVE7TUFDakNDLElBQUksRUFBRWYsUUFBUTtNQUNkZ0IsR0FBRyxFQUFFTCxPQUFPLENBQUNNLFdBQVcsRUFBRTtNQUMxQlIsRUFBRSxFQUFFSjtJQUNOLENBQUMsQ0FBQztFQUNKLENBQUMsQ0FDRjtBQUNILENBQUM7QUFBQSJ9
|
|
@@ -6,11 +6,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = _default;
|
|
7
7
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
8
8
|
var _mime = _interopRequireDefault(require("mime"));
|
|
9
|
+
var _middleware = require("@verdaccio/middleware");
|
|
9
10
|
var _constants = require("../../../lib/constants");
|
|
10
|
-
var
|
|
11
|
+
var _logger = require("../../../lib/logger");
|
|
11
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
13
|
function _default(route, auth, storage) {
|
|
13
|
-
const can = (0, _middleware.allow)(auth
|
|
14
|
+
const can = (0, _middleware.allow)(auth, {
|
|
15
|
+
beforeAll: (params, message) => _logger.logger.trace(params, message),
|
|
16
|
+
afterAll: (params, message) => _logger.logger.trace(params, message)
|
|
17
|
+
});
|
|
14
18
|
const tag_package_version = function (req, res, next) {
|
|
15
19
|
if (_lodash.default.isString(req.body) === false) {
|
|
16
20
|
return next('route');
|
|
@@ -70,4 +74,4 @@ function _default(route, auth, storage) {
|
|
|
70
74
|
});
|
|
71
75
|
});
|
|
72
76
|
}
|
|
73
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyb3V0ZSIsImF1dGgiLCJzdG9yYWdlIiwiY2FuIiwiYWxsb3ciLCJiZWZvcmVBbGwiLCJwYXJhbXMiLCJtZXNzYWdlIiwibG9nZ2VyIiwidHJhY2UiLCJhZnRlckFsbCIsInRhZ19wYWNrYWdlX3ZlcnNpb24iLCJyZXEiLCJyZXMiLCJuZXh0IiwiXyIsImlzU3RyaW5nIiwiYm9keSIsInRhZ3MiLCJ0YWciLCJtZXJnZVRhZ3MiLCJwYWNrYWdlIiwiZXJyIiwic3RhdHVzIiwiSFRUUF9TVEFUVVMiLCJDUkVBVEVEIiwib2siLCJBUElfTUVTU0FHRSIsIlRBR19BRERFRCIsInB1dCIsIm1lZGlhIiwibWltZSIsImdldFR5cGUiLCJwb3N0IiwiZGVsZXRlIiwiVEFHX1JFTU9WRUQiLCJnZXQiLCJnZXRQYWNrYWdlIiwibmFtZSIsInVwbGlua3NMb29rIiwiY2FsbGJhY2siLCJpbmZvIiwiRElTVF9UQUdTIiwiVEFHX1VQREFURUQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL2VuZHBvaW50L2FwaS9kaXN0LXRhZ3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IG1pbWUgZnJvbSAnbWltZSc7XG5cbmltcG9ydCB7IGFsbG93LCBtZWRpYSB9IGZyb20gJ0B2ZXJkYWNjaW8vbWlkZGxld2FyZSc7XG5pbXBvcnQgeyBQYWNrYWdlIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5cbmltcG9ydCB7IEFQSV9NRVNTQUdFLCBESVNUX1RBR1MsIEhUVFBfU1RBVFVTIH0gZnJvbSAnLi4vLi4vLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi8uLi9saWIvbG9nZ2VyJztcbmltcG9ydCB7XG4gICROZXh0RnVuY3Rpb25WZXIsXG4gICRSZXF1ZXN0RXh0ZW5kLFxuICAkUmVzcG9uc2VFeHRlbmQsXG4gIElBdXRoLFxuICBJU3RvcmFnZUhhbmRsZXIsXG59IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHJvdXRlOiBSb3V0ZXIsIGF1dGg6IElBdXRoLCBzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIpOiB2b2lkIHtcbiAgY29uc3QgY2FuID0gYWxsb3coYXV0aCwge1xuICAgIGJlZm9yZUFsbDogKHBhcmFtcywgbWVzc2FnZSkgPT4gbG9nZ2VyLnRyYWNlKHBhcmFtcywgbWVzc2FnZSksXG4gICAgYWZ0ZXJBbGw6IChwYXJhbXMsIG1lc3NhZ2UpID0+IGxvZ2dlci50cmFjZShwYXJhbXMsIG1lc3NhZ2UpLFxuICB9KTtcbiAgY29uc3QgdGFnX3BhY2thZ2VfdmVyc2lvbiA9IGZ1bmN0aW9uIChcbiAgICByZXE6ICRSZXF1ZXN0RXh0ZW5kLFxuICAgIHJlczogJFJlc3BvbnNlRXh0ZW5kLFxuICAgIG5leHQ6ICROZXh0RnVuY3Rpb25WZXJcbiAgKTogJE5leHRGdW5jdGlvblZlciB7XG4gICAgaWYgKF8uaXNTdHJpbmcocmVxLmJvZHkpID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIG5leHQoJ3JvdXRlJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdGFncyA9IHt9O1xuICAgIHRhZ3NbcmVxLnBhcmFtcy50YWddID0gcmVxLmJvZHk7XG4gICAgc3RvcmFnZS5tZXJnZVRhZ3MocmVxLnBhcmFtcy5wYWNrYWdlLCB0YWdzLCBmdW5jdGlvbiAoZXJyOiBFcnJvcik6ICROZXh0RnVuY3Rpb25WZXIge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgfVxuICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgIHJldHVybiBuZXh0KHsgb2s6IEFQSV9NRVNTQUdFLlRBR19BRERFRCB9KTtcbiAgICB9KTtcbiAgfTtcblxuICAvLyB0YWdnaW5nIGEgcGFja2FnZVxuICByb3V0ZS5wdXQoJy86cGFja2FnZS86dGFnJywgY2FuKCdwdWJsaXNoJyksIG1lZGlhKG1pbWUuZ2V0VHlwZSgnanNvbicpKSwgdGFnX3BhY2thZ2VfdmVyc2lvbik7XG5cbiAgcm91dGUucG9zdChcbiAgICAnLy0vcGFja2FnZS86cGFja2FnZS9kaXN0LXRhZ3MvOnRhZycsXG4gICAgY2FuKCdwdWJsaXNoJyksXG4gICAgbWVkaWEobWltZS5nZXRUeXBlKCdqc29uJykpLFxuICAgIHRhZ19wYWNrYWdlX3ZlcnNpb25cbiAgKTtcblxuICByb3V0ZS5wdXQoXG4gICAgJy8tL3BhY2thZ2UvOnBhY2thZ2UvZGlzdC10YWdzLzp0YWcnLFxuICAgIGNhbigncHVibGlzaCcpLFxuICAgIG1lZGlhKG1pbWUuZ2V0VHlwZSgnanNvbicpKSxcbiAgICB0YWdfcGFja2FnZV92ZXJzaW9uXG4gICk7XG5cbiAgcm91dGUuZGVsZXRlKFxuICAgICcvLS9wYWNrYWdlLzpwYWNrYWdlL2Rpc3QtdGFncy86dGFnJyxcbiAgICBjYW4oJ3B1Ymxpc2gnKSxcbiAgICBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICAgIGNvbnN0IHRhZ3MgPSB7fTtcbiAgICAgIHRhZ3NbcmVxLnBhcmFtcy50YWddID0gbnVsbDtcbiAgICAgIHN0b3JhZ2UubWVyZ2VUYWdzKHJlcS5wYXJhbXMucGFja2FnZSwgdGFncywgZnVuY3Rpb24gKGVycjogYW55KTogJE5leHRGdW5jdGlvblZlciB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgICB9XG4gICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgIHJldHVybiBuZXh0KHtcbiAgICAgICAgICBvazogQVBJX01FU1NBR0UuVEFHX1JFTU9WRUQsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICApO1xuXG4gIHJvdXRlLmdldChcbiAgICAnLy0vcGFja2FnZS86cGFja2FnZS9kaXN0LXRhZ3MnLFxuICAgIGNhbignYWNjZXNzJyksXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICBzdG9yYWdlLmdldFBhY2thZ2Uoe1xuICAgICAgICBuYW1lOiByZXEucGFyYW1zLnBhY2thZ2UsXG4gICAgICAgIHVwbGlua3NMb29rOiB0cnVlLFxuICAgICAgICByZXEsXG4gICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbiAoZXJyOiBhbnksIGluZm86IFBhY2thZ2UpOiAkTmV4dEZ1bmN0aW9uVmVyIHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG5leHQoaW5mb1tESVNUX1RBR1NdKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgKTtcblxuICByb3V0ZS5wb3N0KFxuICAgICcvLS9wYWNrYWdlLzpwYWNrYWdlL2Rpc3QtdGFncycsXG4gICAgY2FuKCdwdWJsaXNoJyksXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICBzdG9yYWdlLm1lcmdlVGFncyhyZXEucGFyYW1zLnBhY2thZ2UsIHJlcS5ib2R5LCBmdW5jdGlvbiAoZXJyOiBhbnkpOiAkTmV4dEZ1bmN0aW9uVmVyIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICAgIH1cbiAgICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgICAgcmV0dXJuIG5leHQoe1xuICAgICAgICAgIG9rOiBBUElfTUVTU0FHRS5UQUdfVVBEQVRF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
|
|
@@ -5,10 +5,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = _default;
|
|
7
7
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
8
|
+
var _middleware = require("@verdaccio/middleware");
|
|
9
|
+
var _tarball = require("@verdaccio/tarball");
|
|
8
10
|
var _constants = require("../../../lib/constants");
|
|
11
|
+
var _logger = require("../../../lib/logger");
|
|
9
12
|
var _utils = require("../../../lib/utils");
|
|
10
13
|
var _string = require("../../../utils/string");
|
|
11
|
-
var _middleware = require("../../middleware");
|
|
12
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
15
|
const downloadStream = (packageName, filename, storage, req, res) => {
|
|
14
16
|
const stream = storage.getTarball(packageName, filename);
|
|
@@ -39,7 +41,10 @@ const redirectOrDownloadStream = (packageName, filename, storage, req, res, conf
|
|
|
39
41
|
});
|
|
40
42
|
};
|
|
41
43
|
function _default(route, auth, storage, config) {
|
|
42
|
-
const can = (0, _middleware.allow)(auth
|
|
44
|
+
const can = (0, _middleware.allow)(auth, {
|
|
45
|
+
beforeAll: (params, message) => _logger.logger.trace(params, message),
|
|
46
|
+
afterAll: (params, message) => _logger.logger.trace(params, message)
|
|
47
|
+
});
|
|
43
48
|
// TODO: anonymous user?
|
|
44
49
|
route.get('/:package/:version?', can('access'), function (req, res, next) {
|
|
45
50
|
const abbreviated = (0, _string.getByQualityPriorityValue)(req.get('Accept')) === 'application/vnd.npm.install-v1+json';
|
|
@@ -47,7 +52,12 @@ function _default(route, auth, storage, config) {
|
|
|
47
52
|
if (err) {
|
|
48
53
|
return next(err);
|
|
49
54
|
}
|
|
50
|
-
metadata = (0,
|
|
55
|
+
metadata = (0, _tarball.convertDistRemoteToLocalTarballUrls)(metadata, {
|
|
56
|
+
protocol: req.protocol,
|
|
57
|
+
headers: req.headers,
|
|
58
|
+
host: req.host,
|
|
59
|
+
remoteAddress: req.socket.remoteAddress
|
|
60
|
+
}, config.url_prefix);
|
|
51
61
|
let queryVersion = req.params.version;
|
|
52
62
|
if (_lodash.default.isNil(queryVersion)) {
|
|
53
63
|
if (abbreviated) {
|
|
@@ -101,4 +111,4 @@ function _default(route, auth, storage, config) {
|
|
|
101
111
|
}
|
|
102
112
|
});
|
|
103
113
|
}
|
|
104
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkb3dubG9hZFN0cmVhbSIsInBhY2thZ2VOYW1lIiwiZmlsZW5hbWUiLCJzdG9yYWdlIiwicmVxIiwicmVzIiwic3RyZWFtIiwiZ2V0VGFyYmFsbCIsIm9uIiwiY29udGVudCIsImhlYWRlciIsImVyciIsImxvY2FscyIsInJlcG9ydF9lcnJvciIsIkhFQURFUlMiLCJDT05URU5UX1RZUEUiLCJPQ1RFVF9TVFJFQU0iLCJwaXBlIiwicmVkaXJlY3RPckRvd25sb2FkU3RyZWFtIiwiY29uZmlnIiwidGFyYmFsbFVybFJlZGlyZWN0IiwiXyIsImdldCIsImhhc0xvY2FsVGFyYmFsbCIsInRoZW4iLCJjb250ZXh0IiwidGFyYmFsbFVybCIsInRlbXBsYXRlIiwicmVkaXJlY3QiLCJjYXRjaCIsInJvdXRlIiwiYXV0aCIsImNhbiIsImFsbG93IiwibmV4dCIsImFiYnJldmlhdGVkIiwiZ2V0QnlRdWFsaXR5UHJpb3JpdHlWYWx1ZSIsImdldFBhY2thZ2VNZXRhQ2FsbGJhY2siLCJtZXRhZGF0YSIsImNvbnZlcnREaXN0UmVtb3RlVG9Mb2NhbFRhcmJhbGxVcmxzIiwidXJsX3ByZWZpeCIsInF1ZXJ5VmVyc2lvbiIsInBhcmFtcyIsInZlcnNpb24iLCJpc05pbCIsInNldEhlYWRlciIsIkpTT04iLCJnZXRWZXJzaW9uIiwiRElTVF9UQUdTIiwiRXJyb3JDb2RlIiwiZ2V0Tm90Rm91bmQiLCJBUElfRVJST1IiLCJWRVJTSU9OX05PVF9FWElTVCIsImdldFBhY2thZ2UiLCJuYW1lIiwicGFja2FnZSIsInVwbGlua3NMb29rIiwiY2FsbGJhY2siLCJzY29wZWRQYWNrYWdlIiwidW5kZWZpbmVkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9lbmRwb2ludC9hcGkvcGFja2FnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IENvbmZpZywgUGFja2FnZSB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuXG5pbXBvcnQgeyBBUElfRVJST1IsIERJU1RfVEFHUywgSEVBREVSUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgRXJyb3JDb2RlLCBjb252ZXJ0RGlzdFJlbW90ZVRvTG9jYWxUYXJiYWxsVXJscywgZ2V0VmVyc2lvbiB9IGZyb20gJy4uLy4uLy4uL2xpYi91dGlscyc7XG5pbXBvcnQgeyAkTmV4dEZ1bmN0aW9uVmVyLCAkUmVxdWVzdEV4dGVuZCwgJFJlc3BvbnNlRXh0ZW5kLCBJQXV0aCwgSVN0b3JhZ2VIYW5kbGVyIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0QnlRdWFsaXR5UHJpb3JpdHlWYWx1ZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3N0cmluZyc7XG5pbXBvcnQgeyBhbGxvdyB9IGZyb20gJy4uLy4uL21pZGRsZXdhcmUnO1xuXG5jb25zdCBkb3dubG9hZFN0cmVhbSA9IChwYWNrYWdlTmFtZTogc3RyaW5nLCBmaWxlbmFtZTogc3RyaW5nLCBzdG9yYWdlOiBhbnksIHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kKTogdm9pZCA9PiB7XG4gIGNvbnN0IHN0cmVhbSA9IHN0b3JhZ2UuZ2V0VGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUpO1xuXG4gIHN0cmVhbS5vbignY29udGVudC1sZW5ndGgnLCBmdW5jdGlvbiAoY29udGVudCk6IHZvaWQge1xuICAgIHJlcy5oZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJywgY29udGVudCk7XG4gIH0pO1xuXG4gIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKTogdm9pZCB7XG4gICAgcmV0dXJuIHJlcy5sb2NhbHMucmVwb3J0X2Vycm9yKGVycik7XG4gIH0pO1xuXG4gIHJlcy5oZWFkZXIoSEVBREVSUy5DT05URU5UX1RZUEUsIEhFQURFUlMuT0NURVRfU1RSRUFNKTtcbiAgc3RyZWFtLnBpcGUocmVzKTtcbn07XG5cbmNvbnN0IHJlZGlyZWN0T3JEb3dubG9hZFN0cmVhbSA9IChwYWNrYWdlTmFtZTogc3RyaW5nLCBmaWxlbmFtZTogc3RyaW5nLCBzdG9yYWdlOiBhbnksIHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBjb25maWc6IENvbmZpZyk6IHZvaWQgPT4ge1xuICBjb25zdCB0YXJiYWxsVXJsUmVkaXJlY3QgPSBfLmdldChjb25maWcsICdleHBlcmltZW50cy50YXJiYWxsX3VybF9yZWRpcmVjdCcpO1xuICBzdG9yYWdlXG4gICAgLmhhc0xvY2FsVGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUpXG4gICAgLnRoZW4oKGhhc0xvY2FsVGFyYmFsbCkgPT4ge1xuICAgICAgaWYgKGhhc0xvY2FsVGFyYmFsbCkge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0geyBwYWNrYWdlTmFtZSwgZmlsZW5hbWUgfTtcbiAgICAgICAgY29uc3QgdGFyYmFsbFVybCA9IHR5cGVvZiB0YXJiYWxsVXJsUmVkaXJlY3QgPT09ICdmdW5jdGlvbicgPyB0YXJiYWxsVXJsUmVkaXJlY3QoY29udGV4dCkgOiBfLnRlbXBsYXRlKHRhcmJhbGxVcmxSZWRpcmVjdCkoY29udGV4dCk7XG4gICAgICAgIHJlcy5yZWRpcmVjdCh0YXJiYWxsVXJsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvd25sb2FkU3RyZWFtKHBhY2thZ2VOYW1lLCBmaWxlbmFtZSwgc3RvcmFnZSwgcmVxLCByZXMpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgIHJlcy5sb2NhbHMucmVwb3J0X2Vycm9yKGVycik7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAocm91dGU6IFJvdXRlciwgYXV0aDogSUF1dGgsIHN0b3JhZ2U6IElTdG9yYWdlSGFuZGxlciwgY29uZmlnOiBDb25maWcpOiB2b2lkIHtcbiAgY29uc3QgY2FuID0gYWxsb3coYXV0aCk7XG4gIC8vIFRPRE86IGFub255bW91cyB1c2VyP1xuICByb3V0ZS5nZXQoJy86cGFja2FnZS86dmVyc2lvbj8nLCBjYW4oJ2FjY2VzcycpLCBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCBhYmJyZXZpYXRlZCA9IGdldEJ5UXVhbGl0eVByaW9yaXR5VmFsdWUocmVxLmdldCgnQWNjZXB0JykpID09PSAnYXBwbGljYXRpb24vdm5kLm5wbS5pbnN0YWxsLXYxK2pzb24nO1xuICAgIGNvbnN0IGdldFBhY2thZ2VNZXRhQ2FsbGJhY2sgPSBmdW5jdGlvbiAoZXJyLCBtZXRhZGF0YTogUGFja2FnZSk6IHZvaWQge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgfVxuICAgICAgbWV0YWRhdGEgPSBjb252ZXJ0RGlzdFJlbW90ZVRvTG9jYWxUYXJiYWxsVXJscyhtZXRhZGF0YSwgcmVxLCBjb25maWcudXJsX3ByZWZpeCk7XG5cbiAgICAgIGxldCBxdWVyeVZlcnNpb24gPSByZXEucGFyYW1zLnZlcnNpb247XG4gICAgICBpZiAoXy5pc05pbChxdWVyeVZlcnNpb24pKSB7XG4gICAgICAgIGlmIChhYmJyZXZpYXRlZCkge1xuICAgICAgICAgIHJlcy5zZXRIZWFkZXIoSEVBREVSUy5DT05URU5UX1RZUEUsICdhcHBsaWNhdGlvbi92bmQubnBtLmluc3RhbGwtdjEranNvbicpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlcy5zZXRIZWFkZXIoSEVBREVSUy5DT05URU5UX1RZUEUsIEhFQURFUlMuSlNPTik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV4dChtZXRhZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIGxldCB2ZXJzaW9uID0gZ2V0VmVyc2lvbihtZXRhZGF0YSwgcXVlcnlWZXJzaW9uKTtcbiAgICAgIGlmIChfLmlzTmlsKHZlcnNpb24pID09PSBmYWxzZSkge1xuICAgICAgICByZXMuc2V0SGVhZGVyKEhFQURFUlMuQ09OVEVOVF9UWVBFLCBIRUFERVJTLkpTT04pO1xuICAgICAgICByZXR1cm4gbmV4dCh2ZXJzaW9uKTtcbiAgICAgIH1cblxuICAgICAgaWYgKF8uaXNOaWwobWV0YWRhdGFbRElTVF9UQUdTXSkgPT09IGZhbHNlKSB7XG4gICAgICAgIGlmIChfLmlzTmlsKG1ldGFkYXRhW0RJU1RfVEFHU11bcXVlcnlWZXJzaW9uXSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgcXVlcnlWZXJzaW9uID0gbWV0YWRhdGFbRElTVF9UQUdTXVtxdWVyeVZlcnNpb25dO1xuICAgICAgICAgIHZlcnNpb24gPSBnZXRWZXJzaW9uKG1ldGFkYXRhLCBxdWVyeVZlcnNpb24pO1xuICAgICAgICAgIGlmIChfLmlzTmlsKHZlcnNpb24pID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmVzLnNldEhlYWRlcihIRUFERVJTLkNPTlRFTlRfVFlQRSwgSEVBREVSUy5KU09OKTtcbiAgICAgICAgICAgIHJldHVybiBuZXh0KHZlcnNpb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldE5vdEZvdW5kKGAke0FQSV9FUlJPUi5WRVJTSU9OX05PVF9FWElTVH06ICR7cmVxLnBhcmFtcy52ZXJzaW9ufWApKTtcbiAgICB9O1xuXG4gICAgc3RvcmFnZS5nZXRQYWNrYWdlKHtcbiAgICAgIG5hbWU6IHJlcS5wYXJhbXMucGFja2FnZSxcbiAgICAgIHVwbGlua3NMb29rOiB0cnVlLFxuICAgICAgcmVxLFxuICAgICAgYWJicmV2aWF0ZWQsXG4gICAgICBjYWxsYmFjazogZ2V0UGFja2FnZU1ldGFDYWxsYmFjayxcbiAgICB9KTtcbiAgfSk7XG5cbiAgcm91dGUuZ2V0KCcvOnNjb3BlZFBhY2thZ2UvLS86c2NvcGUvOmZpbGVuYW1lJywgY2FuKCdhY2Nlc3MnKSwgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kKTogdm9pZCB7XG4gICAgY29uc3QgeyBzY29wZWRQYWNrYWdlLCBmaWxlbmFtZSB9ID0gcmVxLnBhcmFtcztcbiAgICBpZiAoXy5nZXQoY29uZmlnLCAnZXhwZXJpbWVudHMudGFyYmFsbF91cmxfcmVkaXJlY3QnKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBkb3dubG9hZFN0cmVhbShzY29wZWRQYWNrYWdlLCBmaWxlbmFtZSwgc3RvcmFnZSwgcmVxLCByZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZWRpcmVjdE9yRG93bmxvYWRTdHJlYW0oc2NvcGVkUGFja2FnZSwgZmlsZW5hbWUsIHN0b3JhZ2UsIHJlcSwgcmVzLCBjb25maWcpO1xuICAgIH1cbiAgfSk7XG5cbiAgcm91dGUuZ2V0KCcvOnBhY2thZ2UvLS86ZmlsZW5hbWUnLCBjYW4oJ2FjY2VzcycpLCBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQpOiB2b2lkIHtcbiAgICBpZiAoXy5nZXQoY29uZmlnLCAnZXhwZXJpbWVudHMudGFyYmFsbF91cmxfcmVkaXJlY3QnKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBkb3dubG9hZFN0cmVhbShyZXEucGFyYW1zLnBhY2thZ2UsIHJlcS5wYXJhbXMuZmlsZW5hbWUsIHN0b3JhZ2UsIHJlcSwgcmVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVkaXJlY3RPckRvd25sb2FkU3RyZWFtKHJlcS5wYXJhbXMucGFja2FnZSwgcmVxLnBhcmFtcy5maWxlbmFtZSwgc3RvcmFnZSwgcmVxLCByZXMsIGNvbmZpZyk7XG4gICAgfVxuICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0E7QUFJQTtBQUNBO0FBRUE7QUFDQTtBQUF5QztBQUV6QyxNQUFNQSxjQUFjLEdBQUcsQ0FBQ0MsV0FBbUIsRUFBRUMsUUFBZ0IsRUFBRUMs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
|
|
114
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkb3dubG9hZFN0cmVhbSIsInBhY2thZ2VOYW1lIiwiZmlsZW5hbWUiLCJzdG9yYWdlIiwicmVxIiwicmVzIiwic3RyZWFtIiwiZ2V0VGFyYmFsbCIsIm9uIiwiY29udGVudCIsImhlYWRlciIsImVyciIsImxvY2FscyIsInJlcG9ydF9lcnJvciIsIkhFQURFUlMiLCJDT05URU5UX1RZUEUiLCJPQ1RFVF9TVFJFQU0iLCJwaXBlIiwicmVkaXJlY3RPckRvd25sb2FkU3RyZWFtIiwiY29uZmlnIiwidGFyYmFsbFVybFJlZGlyZWN0IiwiXyIsImdldCIsImhhc0xvY2FsVGFyYmFsbCIsInRoZW4iLCJjb250ZXh0IiwidGFyYmFsbFVybCIsInRlbXBsYXRlIiwicmVkaXJlY3QiLCJjYXRjaCIsInJvdXRlIiwiYXV0aCIsImNhbiIsImFsbG93IiwiYmVmb3JlQWxsIiwicGFyYW1zIiwibWVzc2FnZSIsImxvZ2dlciIsInRyYWNlIiwiYWZ0ZXJBbGwiLCJuZXh0IiwiYWJicmV2aWF0ZWQiLCJnZXRCeVF1YWxpdHlQcmlvcml0eVZhbHVlIiwiZ2V0UGFja2FnZU1ldGFDYWxsYmFjayIsIm1ldGFkYXRhIiwiY29udmVydERpc3RSZW1vdGVUb0xvY2FsVGFyYmFsbFVybHMiLCJwcm90b2NvbCIsImhlYWRlcnMiLCJob3N0IiwicmVtb3RlQWRkcmVzcyIsInNvY2tldCIsInVybF9wcmVmaXgiLCJxdWVyeVZlcnNpb24iLCJ2ZXJzaW9uIiwiaXNOaWwiLCJzZXRIZWFkZXIiLCJKU09OIiwiZ2V0VmVyc2lvbiIsIkRJU1RfVEFHUyIsIkVycm9yQ29kZSIsImdldE5vdEZvdW5kIiwiQVBJX0VSUk9SIiwiVkVSU0lPTl9OT1RfRVhJU1QiLCJnZXRQYWNrYWdlIiwibmFtZSIsInBhY2thZ2UiLCJ1cGxpbmtzTG9vayIsImNhbGxiYWNrIiwic2NvcGVkUGFja2FnZSIsInVuZGVmaW5lZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3BhY2thZ2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyBhbGxvdyB9IGZyb20gJ0B2ZXJkYWNjaW8vbWlkZGxld2FyZSc7XG5pbXBvcnQgeyBjb252ZXJ0RGlzdFJlbW90ZVRvTG9jYWxUYXJiYWxsVXJscyB9IGZyb20gJ0B2ZXJkYWNjaW8vdGFyYmFsbCc7XG5pbXBvcnQgeyBDb25maWcsIFBhY2thZ2UgfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcblxuaW1wb3J0IHsgQVBJX0VSUk9SLCBESVNUX1RBR1MsIEhFQURFUlMgfSBmcm9tICcuLi8uLi8uLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uLy4uL2xpYi9sb2dnZXInO1xuaW1wb3J0IHsgRXJyb3JDb2RlLCBnZXRWZXJzaW9uIH0gZnJvbSAnLi4vLi4vLi4vbGliL3V0aWxzJztcbmltcG9ydCB7XG4gICROZXh0RnVuY3Rpb25WZXIsXG4gICRSZXF1ZXN0RXh0ZW5kLFxuICAkUmVzcG9uc2VFeHRlbmQsXG4gIElBdXRoLFxuICBJU3RvcmFnZUhhbmRsZXIsXG59IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGdldEJ5UXVhbGl0eVByaW9yaXR5VmFsdWUgfSBmcm9tICcuLi8uLi8uLi91dGlscy9zdHJpbmcnO1xuXG5jb25zdCBkb3dubG9hZFN0cmVhbSA9IChcbiAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgZmlsZW5hbWU6IHN0cmluZyxcbiAgc3RvcmFnZTogYW55LFxuICByZXE6ICRSZXF1ZXN0RXh0ZW5kLFxuICByZXM6ICRSZXNwb25zZUV4dGVuZFxuKTogdm9pZCA9PiB7XG4gIGNvbnN0IHN0cmVhbSA9IHN0b3JhZ2UuZ2V0VGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUpO1xuXG4gIHN0cmVhbS5vbignY29udGVudC1sZW5ndGgnLCBmdW5jdGlvbiAoY29udGVudCk6IHZvaWQge1xuICAgIHJlcy5oZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJywgY29udGVudCk7XG4gIH0pO1xuXG4gIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKTogdm9pZCB7XG4gICAgcmV0dXJuIHJlcy5sb2NhbHMucmVwb3J0X2Vycm9yKGVycik7XG4gIH0pO1xuXG4gIHJlcy5oZWFkZXIoSEVBREVSUy5DT05URU5UX1RZUEUsIEhFQURFUlMuT0NURVRfU1RSRUFNKTtcbiAgc3RyZWFtLnBpcGUocmVzKTtcbn07XG5cbmNvbnN0IHJlZGlyZWN0T3JEb3dubG9hZFN0cmVhbSA9IChcbiAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgZmlsZW5hbWU6IHN0cmluZyxcbiAgc3RvcmFnZTogYW55LFxuICByZXE6ICRSZXF1ZXN0RXh0ZW5kLFxuICByZXM6ICRSZXNwb25zZUV4dGVuZCxcbiAgY29uZmlnOiBDb25maWdcbik6IHZvaWQgPT4ge1xuICBjb25zdCB0YXJiYWxsVXJsUmVkaXJlY3QgPSBfLmdldChjb25maWcsICdleHBlcmltZW50cy50YXJiYWxsX3VybF9yZWRpcmVjdCcpO1xuICBzdG9yYWdlXG4gICAgLmhhc0xvY2FsVGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUpXG4gICAgLnRoZW4oKGhhc0xvY2FsVGFyYmFsbCkgPT4ge1xuICAgICAgaWYgKGhhc0xvY2FsVGFyYmFsbCkge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0geyBwYWNrYWdlTmFtZSwgZmlsZW5hbWUgfTtcbiAgICAgICAgY29uc3QgdGFyYmFsbFVybCA9XG4gICAgICAgICAgdHlwZW9mIHRhcmJhbGxVcmxSZWRpcmVjdCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgPyB0YXJiYWxsVXJsUmVkaXJlY3QoY29udGV4dClcbiAgICAgICAgICAgIDogXy50ZW1wbGF0ZSh0YXJiYWxsVXJsUmVkaXJlY3QpKGNvbnRleHQpO1xuICAgICAgICByZXMucmVkaXJlY3QodGFyYmFsbFVybCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkb3dubG9hZFN0cmVhbShwYWNrYWdlTmFtZSwgZmlsZW5hbWUsIHN0b3JhZ2UsIHJlcSwgcmVzKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICByZXMubG9jYWxzLnJlcG9ydF9lcnJvcihlcnIpO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKFxuICByb3V0ZTogUm91dGVyLFxuICBhdXRoOiBJQXV0aCxcbiAgc3RvcmFnZTogSVN0b3JhZ2VIYW5kbGVyLFxuICBjb25maWc6IENvbmZpZ1xuKTogdm9pZCB7XG4gIGNvbnN0IGNhbiA9IGFsbG93KGF1dGgsIHtcbiAgICBiZWZvcmVBbGw6IChwYXJhbXMsIG1lc3NhZ2UpID0+IGxvZ2dlci50cmFjZShwYXJhbXMsIG1lc3NhZ2UpLFxuICAgIGFmdGVyQWxsOiAocGFyYW1zLCBtZXNzYWdlKSA9PiBsb2dnZXIudHJhY2UocGFyYW1zLCBtZXNzYWdlKSxcbiAgfSk7XG4gIC8vIFRPRE86IGFub255bW91cyB1c2VyP1xuICByb3V0ZS5nZXQoXG4gICAgJy86cGFja2FnZS86dmVyc2lvbj8nLFxuICAgIGNhbignYWNjZXNzJyksXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICBjb25zdCBhYmJyZXZpYXRlZCA9XG4gICAgICAgIGdldEJ5UXVhbGl0eVByaW9yaXR5VmFsdWUocmVxLmdldCgnQWNjZXB0JykpID09PSAnYXBwbGljYXRpb24vdm5kLm5wbS5pbnN0YWxsLXYxK2pzb24nO1xuICAgICAgY29uc3QgZ2V0UGFja2FnZU1ldGFDYWxsYmFjayA9IGZ1bmN0aW9uIChlcnIsIG1ldGFkYXRhOiBQYWNrYWdlKTogdm9pZCB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgICB9XG4gICAgICAgIG1ldGFkYXRhID0gY29udmVydERpc3RSZW1vdGVUb0xvY2FsVGFyYmFsbFVybHMoXG4gICAgICAgICAgbWV0YWRhdGEsXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHJvdG9jb2w6IHJlcS5wcm90b2NvbCxcbiAgICAgICAgICAgIGhlYWRlcnM6IHJlcS5oZWFkZXJzIGFzIGFueSxcbiAgICAgICAgICAgIGhvc3Q6IHJlcS5ob3N0LFxuICAgICAgICAgICAgcmVtb3RlQWRkcmVzczogcmVxLnNvY2tldC5yZW1vdGVBZGRyZXNzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY29uZmlnLnVybF9wcmVmaXhcbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgcXVlcnlWZXJzaW9uID0gcmVxLnBhcmFtcy52ZXJzaW9uO1xuICAgICAgICBpZiAoXy5pc05pbChxdWVyeVZlcnNpb24pKSB7XG4gICAgICAgICAgaWYgKGFiYnJldmlhdGVkKSB7XG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKEhFQURFUlMuQ09OVEVOVF9UWVBFLCAnYXBwbGljYXRpb24vdm5kLm5wbS5pbnN0YWxsLXYxK2pzb24nKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzLnNldEhlYWRlcihIRUFERVJTLkNPTlRFTlRfVFlQRSwgSEVBREVSUy5KU09OKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbmV4dChtZXRhZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdmVyc2lvbiA9IGdldFZlcnNpb24obWV0YWRhdGEsIHF1ZXJ5VmVyc2lvbik7XG4gICAgICAgIGlmIChfLmlzTmlsKHZlcnNpb24pID09PSBmYWxzZSkge1xuICAgICAgICAgIHJlcy5zZXRIZWFkZXIoSEVBREVSUy5DT05URU5UX1RZUEUsIEhFQURFUlMuSlNPTik7XG4gICAgICAgICAgcmV0dXJuIG5leHQodmVyc2lvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5pc05pbChtZXRhZGF0YVtESVNUX1RBR1NdKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBpZiAoXy5pc05pbChtZXRhZGF0YVtESVNUX1RBR1NdW3F1ZXJ5VmVyc2lvbl0pID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcXVlcnlWZXJzaW9uID0gbWV0YWRhdGFbRElTVF9UQUdTXVtxdWVyeVZlcnNpb25dO1xuICAgICAgICAgICAgdmVyc2lvbiA9IGdldFZlcnNpb24obWV0YWRhdGEsIHF1ZXJ5VmVyc2lvbik7XG4gICAgICAgICAgICBpZiAoXy5pc05pbCh2ZXJzaW9uKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcihIRUFERVJTLkNPTlRFTlRfVFlQRSwgSEVBREVSUy5KU09OKTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQodmVyc2lvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXROb3RGb3VuZChgJHtBUElfRVJST1IuVkVSU0lPTl9OT1RfRVhJU1R9OiAke3JlcS5wYXJhbXMudmVyc2lvbn1gKSk7XG4gICAgICB9O1xuXG4gICAgICBzdG9yYWdlLmdldFBhY2thZ2Uoe1xuICAgICAgICBuYW1lOiByZXEucGFyYW1zLnBhY2thZ2UsXG4gICAgICAgIHVwbGlua3NMb29rOiB0cnVlLFxuICAgICAgICByZXEsXG4gICAgICAgIGFiYnJldmlhdGVkLFxuICAgICAgICBjYWxsYmFjazogZ2V0UGFja2FnZU1ldGFDYWxsYmFjayxcbiAgICAgIH0pO1xuICAgIH1cbiAgKTtcblxuICByb3V0ZS5nZXQoXG4gICAgJy86c2NvcGVkUGFja2FnZS8tLzpzY29wZS86ZmlsZW5hbWUnLFxuICAgIGNhbignYWNjZXNzJyksXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kKTogdm9pZCB7XG4gICAgICBjb25zdCB7IHNjb3BlZFBhY2thZ2UsIGZpbGVuYW1lIH0gPSByZXEucGFyYW1zO1xuICAgICAgaWYgKF8uZ2V0KGNvbmZpZywgJ2V4cGVyaW1lbnRzLnRhcmJhbGxfdXJsX3JlZGlyZWN0JykgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBkb3dubG9hZFN0cmVhbShzY29wZWRQYWNrYWdlLCBmaWxlbmFtZSwgc3RvcmFnZSwgcmVxLCByZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVkaXJlY3RPckRvd25sb2FkU3RyZWFtKHNjb3BlZFBhY2thZ2UsIGZpbGVuYW1lLCBzdG9yYWdlLCByZXEsIHJlcywgY29uZmlnKTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgcm91dGUuZ2V0KFxuICAgICcvOnBhY2thZ2UvLS86ZmlsZW5hbWUnLFxuICAgIGNhbignYWNjZXNzJyksXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kKTogdm9pZCB7XG4gICAgICBpZiAoXy5nZXQoY29uZmlnLCAnZXhwZXJpbWVudHMudGFyYmFsbF91cmxfcmVkaXJlY3QnKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRvd25sb2FkU3RyZWFtKHJlcS5wYXJhbXMucGFja2FnZSwgcmVxLnBhcmFtcy5maWxlbmFtZSwgc3RvcmFnZSwgcmVxLCByZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVkaXJlY3RPckRvd25sb2FkU3RyZWFtKFxuICAgICAgICAgIHJlcS5wYXJhbXMucGFja2FnZSxcbiAgICAgICAgICByZXEucGFyYW1zLmZpbGVuYW1lLFxuICAgICAgICAgIHN0b3JhZ2UsXG4gICAgICAgICAgcmVxLFxuICAgICAgICAgIHJlcyxcbiAgICAgICAgICBjb25maWdcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQVFBO0FBQWtFO0FBRWxFLE1BQU1BLGNBQWMsR0FBRyxDQUNyQkMs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
|
|
@@ -9,4 +9,4 @@ function _default(route) {
|
|
|
9
9
|
next({});
|
|
10
10
|
});
|
|
11
11
|
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyb3V0ZSIsImdldCIsInJlcSIsInJlcyIsIm5leHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL2VuZHBvaW50L2FwaS9waW5nLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdXRlciB9IGZyb20gJ2V4cHJlc3MnO1xuXG5pbXBvcnQgeyAkTmV4dEZ1bmN0aW9uVmVyLCAkUmVxdWVzdEV4dGVuZCwgJFJlc3BvbnNlRXh0ZW5kIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAocm91dGU6IFJvdXRlcik6IHZvaWQge1xuICByb3V0ZS5nZXQoXG4gICAgJy8tL3BpbmcnLFxuICAgIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcikge1xuICAgICAgbmV4dCh7fSk7XG4gICAgfVxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFJZSxrQkFBVUEsS0FBYSxFQUFRO0VBQzVDQSxLQUFLLENBQUNDLEdBQUcsQ0FDUCxTQUFTLEVBQ1QsVUFBVUMsR0FBbUIsRUFBRUMsR0FBb0IsRUFBRUMsSUFBc0IsRUFBRTtJQUMzRUEsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQ1YsQ0FBQyxDQUNGO0FBQ0gifQ==
|
|
@@ -13,12 +13,13 @@ var _debug = _interopRequireDefault(require("debug"));
|
|
|
13
13
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
14
14
|
var _mime = _interopRequireDefault(require("mime"));
|
|
15
15
|
var _path = _interopRequireDefault(require("path"));
|
|
16
|
+
var _core = require("@verdaccio/core");
|
|
17
|
+
var _middleware = require("@verdaccio/middleware");
|
|
16
18
|
var _constants = require("../../../lib/constants");
|
|
17
19
|
var _logger = require("../../../lib/logger");
|
|
18
20
|
var _notify = require("../../../lib/notify");
|
|
19
21
|
var _storageUtils = require("../../../lib/storage-utils");
|
|
20
22
|
var _utils = require("../../../lib/utils");
|
|
21
|
-
var _middleware = require("../../middleware");
|
|
22
23
|
var _star = _interopRequireDefault(require("./star"));
|
|
23
24
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
24
25
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -28,7 +29,10 @@ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typ
|
|
|
28
29
|
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
29
30
|
const debug = (0, _debug.default)('verdaccio:publish');
|
|
30
31
|
function publish(router, auth, storage, config) {
|
|
31
|
-
const can = (0, _middleware.allow)(auth
|
|
32
|
+
const can = (0, _middleware.allow)(auth, {
|
|
33
|
+
beforeAll: (params, message) => _logger.logger.trace(params, message),
|
|
34
|
+
afterAll: (params, message) => _logger.logger.trace(params, message)
|
|
35
|
+
});
|
|
32
36
|
|
|
33
37
|
/**
|
|
34
38
|
* Publish a package / update package / un/start a package
|
|
@@ -222,7 +226,7 @@ function publishPackage(storage, config, auth) {
|
|
|
222
226
|
return starApi(req, res, next);
|
|
223
227
|
}
|
|
224
228
|
try {
|
|
225
|
-
const metadata =
|
|
229
|
+
const metadata = _core.validatioUtils.normalizeMetadata(req.body, packageName);
|
|
226
230
|
// check _attachments to distinguish publish and deprecate
|
|
227
231
|
if (req.params._rev || (0, _utils.isRelatedToDeprecation)(req.body) && _lodash.default.isEmpty(req.body._attachments)) {
|
|
228
232
|
debug('updating a new version for %o', packageName);
|
|
@@ -351,4 +355,4 @@ function uploadPackageTarball(storage) {
|
|
|
351
355
|
});
|
|
352
356
|
};
|
|
353
357
|
}
|
|
354
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZWJ1ZyIsImJ1aWxkRGVidWciLCJwdWJsaXNoIiwicm91dGVyIiwiYXV0aCIsInN0b3JhZ2UiLCJjb25maWciLCJjYW4iLCJhbGxvdyIsInB1dCIsIm1lZGlhIiwibWltZSIsImdldFR5cGUiLCJleHBlY3RKc29uIiwicHVibGlzaFBhY2thZ2UiLCJkZWxldGUiLCJ1blB1Ymxpc2hQYWNrYWdlIiwicmVtb3ZlVGFyYmFsbCIsIkhFQURFUlMiLCJPQ1RFVF9TVFJFQU0iLCJ1cGxvYWRQYWNrYWdlVGFyYmFsbCIsImFkZFZlcnNpb24iLCJzdGFyQXBpIiwic3RhciIsInJlcSIsInJlcyIsIm5leHQiLCJwYWNrYWdlTmFtZSIsInBhcmFtcyIsInBhY2thZ2UiLCJjcmVhdGVUYXJiYWxsIiwiZmlsZW5hbWUiLCJkYXRhIiwiY2IiLCJzdHJlYW0iLCJhZGRUYXJiYWxsIiwib24iLCJlcnIiLCJlbmQiLCJCdWZmZXIiLCJmcm9tIiwiZG9uZSIsImNyZWF0ZVZlcnNpb24iLCJ2ZXJzaW9uIiwibWV0YWRhdGEiLCJhZGRUYWdzIiwidGFncyIsIm1lcmdlVGFncyIsImFmdGVyQ2hhbmdlIiwiZXJyb3IiLCJva01lc3NhZ2UiLCJtZXRhZGF0YUNvcHkiLCJfYXR0YWNobWVudHMiLCJ2ZXJzaW9ucyIsIl8iLCJpc05pbCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGF0dXMiLCJIVFRQX1NUQVRVUyIsIkNSRUFURUQiLCJvayIsInN1Y2Nlc3MiLCJpc0ludmFsaWRCb2R5Rm9ybWF0IiwiaXNPYmplY3QiLCJoYXNEaWZmT25lS2V5IiwibG9nZ2VyIiwiaW5mbyIsIkVycm9yQ29kZSIsImdldEJhZFJlcXVlc3QiLCJBUElfRVJST1IiLCJVTlNVUE9SVEVEX1JFR0lTVFJZX0NBTEwiLCJDT05GTElDVCIsImZpcnN0QXR0YWNobWVudEtleSIsIk9iamVjdCIsImtleXMiLCJQYXRoIiwiYmFzZW5hbWUiLCJ2ZXJzaW9uVG9QdWJsaXNoIiwidmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoIiwicmVhZG1lIiwiU3RyaW5nIiwiRElTVF9UQUdTIiwibm90aWZ5IiwicmVtb3RlX3VzZXIiLCJuYW1lIiwiaXNQdWJsaXNoYWJsZVBhY2thZ2UiLCJib2R5IiwidXNlcnMiLCJ2YWxpZGF0ZU1ldGFkYXRhIiwiX3JldiIsImlzUmVsYXRlZFRvRGVwcmVjYXRpb24iLCJpc0VtcHR5IiwicmVtb3RlIiwiYWxsb3dfdW5wdWJsaXNoIiwiY2hhbmdlUGFja2FnZSIsInJldmlzaW9uIiwiQVBJX01FU1NBR0UiLCJQS0dfQ0hBTkdFRCIsImFkZFBhY2thZ2UiLCJQS0dfQ1JFQVRFRCIsImdldEJhZERhdGEiLCJCQURfUEFDS0FHRV9EQVRBIiwicmVtb3ZlUGFja2FnZSIsIlBLR19SRU1PVkVEIiwiVEFSQkFMTF9SRU1PVkVEIiwidGFnIiwiUEtHX1BVQkxJU0hFRCIsInBpcGUiLCJjb21wbGV0ZSIsImFib3J0IiwibG9jYWxzIiwicmVwb3J0X2Vycm9yIiwiVEFSQkFMTF9VUExPQURFRCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3B1Ymxpc2gudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJ1aWxkRGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IG1pbWUgZnJvbSAnbWltZSc7XG5pbXBvcnQgUGF0aCBmcm9tICdwYXRoJztcblxuaW1wb3J0IHsgQ2FsbGJhY2ssIENvbmZpZywgTWVyZ2VUYWdzLCBQYWNrYWdlLCBWZXJzaW9uIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5cbmltcG9ydCB7IEFQSV9FUlJPUiwgQVBJX01FU1NBR0UsIERJU1RfVEFHUywgSEVBREVSUywgSFRUUF9TVEFUVVMgfSBmcm9tICcuLi8uLi8uLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uLy4uL2xpYi9sb2dnZXInO1xuaW1wb3J0IHsgbm90aWZ5IH0gZnJvbSAnLi4vLi4vLi4vbGliL25vdGlmeSc7XG5pbXBvcnQgeyBpc1B1Ymxpc2hhYmxlUGFja2FnZSB9IGZyb20gJy4uLy4uLy4uL2xpYi9zdG9yYWdlLXV0aWxzJztcbmltcG9ydCB7IEVycm9yQ29kZSwgaGFzRGlmZk9uZUtleSwgaXNPYmplY3QsIGlzUmVsYXRlZFRvRGVwcmVjYXRpb24sIHZhbGlkYXRlTWV0YWRhdGEgfSBmcm9tICcuLi8uLi8uLi9saWIvdXRpbHMnO1xuaW1wb3J0IHsgJE5leHRGdW5jdGlvblZlciwgJFJlcXVlc3RFeHRlbmQsICRSZXNwb25zZUV4dGVuZCwgSUF1dGgsIElTdG9yYWdlSGFuZGxlciB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGFsbG93LCBleHBlY3RKc29uLCBtZWRpYSB9IGZyb20gJy4uLy4uL21pZGRsZXdhcmUnO1xuaW1wb3J0IHN0YXIgZnJvbSAnLi9zdGFyJztcblxuY29uc3QgZGVidWcgPSBidWlsZERlYnVnKCd2ZXJkYWNjaW86cHVibGlzaCcpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwdWJsaXNoKHJvdXRlcjogUm91dGVyLCBhdXRoOiBJQXV0aCwgc3RvcmFnZTogSVN0b3JhZ2VIYW5kbGVyLCBjb25maWc6IENvbmZpZyk6IHZvaWQge1xuICBjb25zdCBjYW4gPSBhbGxvdyhhdXRoKTtcblxuICAvKipcbiAgICogUHVibGlzaCBhIHBhY2thZ2UgLyB1cGRhdGUgcGFja2FnZSAvIHVuL3N0YXJ0IGEgcGFja2FnZVxuICAgKlxuICAgKiBUaGVyZSBhcmUgbXVsdGlwbGVzIHNjZW5hcmlvcyBoZXJlIHRvIGJlIGNvbnNpZGVyZWQ6XG4gICAqXG4gICAqIDEuIFB1Ymxpc2ggc2NlbmFyaW9cbiAgICpcbiAgICogUHVibGlzaCBhIHBhY2thZ2UgY29uc2lzdCBvZiBhdCBsZWFzdCAxIHN0ZXAgKFBVVCkgd2l0aCBhIG1ldGFkYXRhIHBheWxvYWQuXG4gICAqIFdoZW4gYSBwYWNrYWdlIGlzIHB1Ymxpc2hlZCwgYW4gX2F0dGFjaG1lbnQgcHJvcGVydHkgaXMgcHJlc2VudCB0aGF0IGNvbnRhaW5zIHRoZSBkYXRhXG4gICAqIG9mIHRoZSB0YXJiYWxsLlxuICAgKlxuICAgKiBFeGFtcGxlIGZsb3cgb2YgcHVibGlzaC5cbiAgICpcbiAgICogIG5wbSBodHRwIGZldGNoIFBVVCAyMDEgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxIDk2Mjdtc1xuICAgICAgbnBtIGluZm8gbGlmZWN5Y2xlIEBzY29wZS90ZXN0MUAxLjAuMX5wdWJsaXNoOiBAc2NvcGUvdGVzdDFAMS4wLjFcbiAgICAgIG5wbSBpbmZvIGxpZmVjeWNsZSBAc2NvcGUvdGVzdDFAMS4wLjF+cG9zdHB1Ymxpc2g6IEBzY29wZS90ZXN0MUAxLjAuMVxuICAgICAgKyBAc2NvcGUvdGVzdDFAMS4wLjFcbiAgICAgIG5wbSB2ZXJiIGV4aXQgWyAwLCB0cnVlIF1cbiAgICpcbiAgICpcbiAgICogMi4gVW5wdWJsaXNoIHNjZW5hcmlvXG4gICAqXG4gICAqIFVucHVibGlzaCBjb25zaXN0IGluIDMgc3RlcHMuXG4gICAqICAxLiBUcnkgdG8gZmV0Y2ggIG1ldGFkYXRhIC0+IGlmIGl0IGZhaWxzLCByZXR1cm4gNDA0XG4gICAqICAyLiBDb21wdXRlIG1ldGFkYXRhIGxvY2FsbHkgKGNsaWVudCBzaWRlKSBhbmQgc2VuZCBhIG11dGF0ZSBwYXlsb2FkIGV4Y2x1ZGluZyB0aGUgdmVyc2lvbiB0byBiZSB1bnB1Ymxpc2hlZFxuICAgKiAgICBlZzogaWYgbWV0YWRhdGEgcmVmbGVjdHMgMS4wLjEsIDEuMC4yIGFuZCAxLjAuMywgdGhlIGNvbXB1dGVkIG1ldGFkYXRhIHdvbid0IGluY2x1ZGUgMS4wLjMuXG4gICAqICAzLiBPbmNlIHRoZSBzZWNvbmQgc3RlcCBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgZmluaXNoZWQsIGRlbGV0ZSB0aGUgdGFyYmFsbC5cbiAgICpcbiAgICogIEFsbCB0aGVzZSBzdGVwcyBhcmUgY29uc2VjdXRpdmUgYW5kIHJlcXVpcmVkLCB0aGVyZSBpcyBubyB0cmFuc2FjaW9ucyBoZXJlLCBpZiBzdGVwIDMgZmFpbHMsIG1ldGFkYXRhIG1pZ2h0XG4gICAqICBnZXQgY29ycnVwdGVkLlxuICAgKlxuICAgKiAgTm90ZSB0aGUgdW5wdWJsaXNoIGNhbGwgd2lsbCBzdWZmaXggaW4gdGhlIHVybCBhIC8tcmV2LzE0LTVkNTAwY2ZjZTkyZjkwZmQgcmV2aXNpb24gbnVtYmVyLCB0aGlzIG5vdFxuICAgKiAgdXNlZCBpbnRlcm5hbGx5LlxuICAgKlxuICAgKlxuICAgKiBFeGFtcGxlIGZsb3cgb2YgdW5wdWJsaXNoLlxuICAgKlxuICAgKiBucG0gaHR0cCBmZXRjaCBHRVQgMjAwIGh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9Ac2NvcGUlMmZ0ZXN0MT93cml0ZT10cnVlIDE2ODBtc1xuICAgICBucG0gaHR0cCBmZXRjaCBQVVQgMjAxIGh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9Ac2NvcGUlMmZ0ZXN0MS8tcmV2LzE0LTVkNTAwY2ZjZTkyZjkwZmQgOTU2NjA2bXMgYXR0ZW1wdCAjMlxuICAgICBucG0gaHR0cCBmZXRjaCBHRVQgMjAwIGh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9Ac2NvcGUlMmZ0ZXN0MT93cml0ZT10cnVlIDE2MDFtc1xuICAgICBucG0gaHR0cCBmZXRjaCBERUxFVEUgMjAxIGh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9Ac2NvcGUlMmZ0ZXN0MS8tL3Rlc3QxLTEuMC4zLnRnei8tcmV2LzE2LWUxMWM4ZGIyODJiMmQ5OTIgMTltc1xuICAgKlxuICAgKiAzLiBTdGFyIGEgcGFja2FnZVxuICAgKlxuICAgKiBQZXJtaXNzaW9uczogc3RhcnQgYSBwYWNrYWdlIGRlcGVuZHMgb2YgdGhlIHB1Ymxpc2ggYW5kIHVucHVibGlzaCBwZXJtaXNzaW9ucywgdGhlcmUgaXMgbm8gc3BlY2lmaWMgZmxhZyBmb3Igc3RhciBvciB1biBzdGFydC5cbiAgICogVGhlIFVSTCBmb3Igc3RhciBpcyBzaW1pbGFyIHRvIHRoZSB1bnB1Ymxpc2ggKGNoYW5nZSBwYWNrYWdlIGZvcm1hdClcbiAgICpcbiAgICogbnBtIGhhcyBubyBlbnBvaW50IGZvciBzdGFyIGEgcGFja2FnZSwgcmF0aGVyIG11dGF0ZSB0aGUgbWV0YWRhdGEgYW5kIGFjdHMgYXMsIHRoZSBkaWZmZXJlbmNlIGlzIHRoZVxuICAgKiB1c2VycyBwcm9wZXJ0eSB3aGljaCBpcyBwYXJ0IG9mIHRoZSBwYXlsb2FkIGFuZCB0aGUgYm9keSBvbmx5IGluY2x1ZGVzXG4gICAqXG4gICAqIHtcblx0XHQgIFwiX2lkXCI6IHBrZ05hbWUsXG5cdCAgXHRcIl9yZXZcIjogXCIzLWIwY2RhZWZjOWJkYjc3YzhcIixcblx0XHQgIFwidXNlcnNcIjoge1xuXHRcdCAgICBbdXNlcm5hbWVdOiBib29sZWFuIHZhbHVlICh0cnVlLCBmYWxzZSlcblx0XHQgIH1cblx0fVxuICAgKlxuICAgKi9cbiAgcm91dGVyLnB1dCgnLzpwYWNrYWdlLzpfcmV2Py86cmV2aXNpb24/JywgY2FuKCdwdWJsaXNoJyksIG1lZGlhKG1pbWUuZ2V0VHlwZSgnanNvbicpKSwgZXhwZWN0SnNvbiwgcHVibGlzaFBhY2thZ2Uoc3RvcmFnZSwgY29uZmlnLCBhdXRoKSk7XG5cbiAgLyoqXG4gICAqIFVuLXB1Ymxpc2hpbmcgYW4gZW50aXJlIHBhY2thZ2UuXG4gICAqXG4gICAqIFRoaXMgc2NlbmFyaW8gaGFwcGVucyB3aGVuIHRoZSBmaXJzdCBjYWxsIGRldGVjdCB0aGVyZSBpcyBvbmx5IG9uZSB2ZXJzaW9uIHJlbWFpbmluZ1xuICAgKiBpbiB0aGUgbWV0YWRhdGEsIHRoZW4gdGhlIGNsaWVudCBkZWNpZGVzIHRvIERFTEVURSB0aGUgcmVzb3VyY2VcbiAgICogbnBtIGh0dHAgZmV0Y2ggR0VUIDMwNCBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDE/d3JpdGU9dHJ1ZSAxMDc2bXMgKGZyb20gY2FjaGUpXG4gICAgIG5wbSBodHRwIGZldGNoIERFTEVURSAyMDEgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxLy1yZXYvMTgtZDhlYmUzMDIwYmQ0YWM5YyAyMm1zXG4gICAqL1xuICByb3V0ZXIuZGVsZXRlKCcvOnBhY2thZ2UvLXJldi8qJywgY2FuKCd1bnB1Ymxpc2gnKSwgdW5QdWJsaXNoUGFja2FnZShzdG9yYWdlKSk7XG5cbiAgLy8gcmVtb3ZpbmcgYSB0YXJiYWxsXG4gIHJvdXRlci5kZWxldGUoJy86cGFja2FnZS8tLzpmaWxlbmFtZS8tcmV2LzpyZXZpc2lvbicsIGNhbigndW5wdWJsaXNoJyksIGNhbigncHVibGlzaCcpLCByZW1vdmVUYXJiYWxsKHN0b3JhZ2UpKTtcblxuICAvLyB1cGxvYWRpbmcgcGFja2FnZSB0YXJiYWxsXG4gIHJvdXRlci5wdXQoJy86cGFja2FnZS8tLzpmaWxlbmFtZS8qJywgY2FuKCdwdWJsaXNoJyksIG1lZGlhKEhFQURFUlMuT0NURVRfU1RSRUFNKSwgdXBsb2FkUGFja2FnZVRhcmJhbGwoc3RvcmFnZSkpO1xuXG4gIC8vIGFkZGluZyBhIHZlcnNpb25cbiAgcm91dGVyLnB1dCgnLzpwYWNrYWdlLzp2ZXJzaW9uLy10YWcvOnRhZycsIGNhbigncHVibGlzaCcpLCBtZWRpYShtaW1lLmdldFR5cGUoJ2pzb24nKSksIGV4cGVjdEpzb24sIGFkZFZlcnNpb24oc3RvcmFnZSkpO1xufVxuXG4vKipcbiAqIFB1Ymxpc2ggYSBwYWNrYWdlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwdWJsaXNoUGFja2FnZShzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIsIGNvbmZpZzogQ29uZmlnLCBhdXRoOiBJQXV0aCk6IGFueSB7XG4gIGNvbnN0IHN0YXJBcGkgPSBzdGFyKHN0b3JhZ2UpO1xuICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSByZXEucGFyYW1zLnBhY2thZ2U7XG4gICAgZGVidWcoJ3B1Ymxpc2hpbmcgb3IgdXBkYXRpbmcgYSBuZXcgdmVyc2lvbiBmb3IgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgLyoqXG4gICAgICogV3JpdGUgdGFyYmFsbCBvZiBzdHJlYW0gZGF0YSBmcm9tIHBhY2thZ2UgY2xpZW50cy5cbiAgICAgKi9cbiAgICBjb25zdCBjcmVhdGVUYXJiYWxsID0gZnVuY3Rpb24gKGZpbGVuYW1lOiBzdHJpbmcsIGRhdGEsIGNiOiBDYWxsYmFjayk6IHZvaWQge1xuICAgICAgY29uc3Qgc3RyZWFtID0gc3RvcmFnZS5hZGRUYXJiYWxsKHBhY2thZ2VOYW1lLCBmaWxlbmFtZSk7XG4gICAgICBzdHJlYW0ub24oJ2Vycm9yJywgZnVuY3Rpb24gKGVycikge1xuICAgICAgICBjYihlcnIpO1xuICAgICAgfSk7XG4gICAgICBzdHJlYW0ub24oJ3N1Y2Nlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNiKCk7XG4gICAgICB9KTtcbiAgICAgIC8vIHRoaXMgaXMgZHVtYiBhbmQgbWVtb3J5LWNvbnN1bWluZywgYnV0IHdoYXQgY2hvaWNlcyBkbyB3ZSBoYXZlP1xuICAgICAgLy8gZmxvdzogd2UgbmVlZCBmaXJzdCByZWZhY3RvciB0aGlzIGZpbGUgYmVmb3JlIGRlY2lkZXMgd2hpY2ggdHlwZSB1c2UgaGVyZVxuICAgICAgc3RyZWFtLmVuZChCdWZmZXIuZnJvbShkYXRhLmRhdGEsICdiYXNlNjQnKSk7XG4gICAgICBzdHJlYW0uZG9uZSgpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBBZGQgbmV3IHBhY2thZ2UgdmVyc2lvbiBpbiBzdG9yYWdlXG4gICAgICovXG4gICAgY29uc3QgY3JlYXRlVmVyc2lvbiA9IGZ1bmN0aW9uICh2ZXJzaW9uOiBzdHJpbmcsIG1ldGFkYXRhOiBWZXJzaW9uLCBjYjogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICAgIHN0b3JhZ2UuYWRkVmVyc2lvbihwYWNrYWdlTmFtZSwgdmVyc2lvbiwgbWV0YWRhdGEsIG51bGwsIGNiKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQWRkIG5ldyB0YWdzIGluIHN0b3JhZ2VcbiAgICAgKi9cbiAgICBjb25zdCBhZGRUYWdzID0gZnVuY3Rpb24gKHRhZ3M6IE1lcmdlVGFncywgY2I6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgICBzdG9yYWdlLm1lcmdlVGFncyhwYWNrYWdlTmFtZSwgdGFncywgY2IpO1xuICAgIH07XG5cbiAgICBjb25zdCBhZnRlckNoYW5nZSA9IGZ1bmN0aW9uIChlcnJvciwgb2tNZXNzYWdlLCBtZXRhZGF0YSk6IHZvaWQge1xuICAgICAgY29uc3QgbWV0YWRhdGFDb3B5OiBQYWNrYWdlID0geyAuLi5tZXRhZGF0YSB9O1xuXG4gICAgICBjb25zdCB7IF9hdHRhY2htZW50cywgdmVyc2lvbnMgfSA9IG1ldGFkYXRhQ29weTtcblxuICAgICAgLy8gYG5wbSBzdGFyYCB3b3VsZG4ndCBoYXZlIGF0dGFjaG1lbnRzXG4gICAgICAvLyBhbmQgYG5wbSBkZXByZWNhdGVgIHdvdWxkIGhhdmUgYXR0YWNobWVudHMgYXMgYSBlbXB0eSBvYmplY3QsIGkuZSB7fVxuICAgICAgaWYgKF8uaXNOaWwoX2F0dGFjaG1lbnRzKSB8fCBKU09OLnN0cmluZ2lmeShfYXR0YWNobWVudHMpID09PSAne30nKSB7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgICAgb2s6IG9rTWVzc2FnZSxcbiAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gbnBtLXJlZ2lzdHJ5LWNsaWVudCAwLjMrIGVtYmVkcyB0YXJiYWxsIGludG8gdGhlIGpzb24gdXBsb2FkXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vaXNhYWNzL25wbS1yZWdpc3RyeS1jbGllbnQvY29tbWl0L2U5ZmJlYjhiNjdmMjQ5Mzk0ZjczNWM3NGVmMTFmZTQ3MjBkNDZjYTBcbiAgICAgIC8vIGlzc3VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ybGlkd2thL3Npbm9waWEvaXNzdWVzLzMxLCBkZWFsaW5nIHdpdGggaXQgaGVyZTpcbiAgICAgIGNvbnN0IGlzSW52YWxpZEJvZHlGb3JtYXQgPSBpc09iamVjdChfYXR0YWNobWVudHMpID09PSBmYWxzZSB8fCBoYXNEaWZmT25lS2V5KF9hdHRhY2htZW50cykgfHwgaXNPYmplY3QodmVyc2lvbnMpID09PSBmYWxzZSB8fCBoYXNEaWZmT25lS2V5KHZlcnNpb25zKTtcblxuICAgICAgaWYgKGlzSW52YWxpZEJvZHlGb3JtYXQpIHtcbiAgICAgICAgLy8gbnBtIGlzIGRvaW5nIHNvbWV0aGluZyBzdHJhbmdlIGFnYWluXG4gICAgICAgIC8vIGlmIHRoaXMgaGFwcGVucyBpbiBub3JtYWwgY2lyY3Vtc3RhbmNlcywgcmVwb3J0IGl0IGFzIGEgYnVnXG4gICAgICAgIGxvZ2dlci5pbmZvKHsgcGFja2FnZU5hbWUgfSwgYHdyb25nIHBhY2thZ2UgZm9ybWF0IG9uIHB1Ymxpc2ggYSBwYWNrYWdlIEB7cGFja2FnZU5hbWV9YCk7XG4gICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRCYWRSZXF1ZXN0KEFQSV9FUlJPUi5VTlNVUE9SVEVEX1JFR0lTVFJZX0NBTEwpKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGVycm9yICYmIGVycm9yLnN0YXR1cyAhPT0gSFRUUF9TVEFUVVMuQ09ORkxJQ1QpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgfVxuXG4gICAgICAvLyBhdCB0aGlzIHBvaW50IGRvY3VtZW50IGlzIGVpdGhlciBjcmVhdGVkIG9yIGV4aXN0ZWQgYmVmb3JlXG4gICAgICBjb25zdCBbZmlyc3RBdHRhY2htZW50S2V5XSA9IE9iamVjdC5rZXlzKF9hdHRhY2htZW50cyk7XG5cbiAgICAgIGNyZWF0ZVRhcmJhbGwoUGF0aC5iYXNlbmFtZShmaXJzdEF0dGFjaG1lbnRLZXkpLCBfYXR0YWNobWVudHNbZmlyc3RBdHRhY2htZW50S2V5XSwgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZlcnNpb25Ub1B1Ymxpc2ggPSBPYmplY3Qua2V5cyh2ZXJzaW9ucylbMF07XG4gICAgICAgIGNvbnN0IHZlcnNpb25NZXRhZGF0YVRvUHVibGlzaCA9IHZlcnNpb25zW3ZlcnNpb25Ub1B1Ymxpc2hdO1xuXG4gICAgICAgIHZlcnNpb25NZXRhZGF0YVRvUHVibGlzaC5yZWFkbWUgPSBfLmlzTmlsKHZlcnNpb25NZXRhZGF0YVRvUHVibGlzaC5yZWFkbWUpID09PSBmYWxzZSA/IFN0cmluZyh2ZXJzaW9uTWV0YWRhdGFUb1B1Ymxpc2gucmVhZG1lKSA6ICcnO1xuXG4gICAgICAgIGNyZWF0ZVZlcnNpb24odmVyc2lvblRvUHVibGlzaCwgdmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBhZGRUYWdzKG1ldGFkYXRhQ29weVtESVNUX1RBR1NdLCBhc3luYyBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGF3YWl0IG5vdGlmeShtZXRhZGF0YUNvcHksIGNvbmZpZywgcmVxLnJlbW90ZV91c2VyLCBgJHttZXRhZGF0YUNvcHkubmFtZX1AJHt2ZXJzaW9uVG9QdWJsaXNofWApO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKHsgZXJyb3IgfSwgJ25vdGlmeSBiYXRjaCBzZXJ2aWNlIGhhcyBmYWlsZWQ6IEB7ZXJyb3J9Jyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgICAgICByZXR1cm4gbmV4dCh7IG9rOiBva01lc3NhZ2UsIHN1Y2Nlc3M6IHRydWUgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGlmIChpc1B1Ymxpc2hhYmxlUGFja2FnZShyZXEuYm9keSkgPT09IGZhbHNlICYmIGlzT2JqZWN0KHJlcS5ib2R5LnVzZXJzKSkge1xuICAgICAgcmV0dXJuIHN0YXJBcGkocmVxLCByZXMsIG5leHQpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBtZXRhZGF0YSA9IHZhbGlkYXRlTWV0YWRhdGEocmVxLmJvZHksIHBhY2thZ2VOYW1lKTtcbiAgICAgIC8vIGNoZWNrIF9hdHRhY2htZW50cyB0byBkaXN0aW5ndWlzaCBwdWJsaXNoIGFuZCBkZXByZWNhdGVcbiAgICAgIGlmIChyZXEucGFyYW1zLl9yZXYgfHwgKGlzUmVsYXRlZFRvRGVwcmVjYXRpb24ocmVxLmJvZHkpICYmIF8uaXNFbXB0eShyZXEuYm9keS5fYXR0YWNobWVudHMpKSkge1xuICAgICAgICBkZWJ1ZygndXBkYXRpbmcgYSBuZXcgdmVyc2lvbiBmb3IgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgICAgIC8vIHdlIGNoZWNrIHVucHVibGlzaCBwZXJtaXNzaW9ucywgYW4gdXBkYXRlIGlzIGJhc2ljYWxseSByZW1vdmUgdmVyc2lvbnNcbiAgICAgICAgY29uc3QgcmVtb3RlID0gcmVxLnJlbW90ZV91c2VyO1xuICAgICAgICBhdXRoLmFsbG93X3VucHVibGlzaCh7IHBhY2thZ2VOYW1lIH0sIHJlbW90ZSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoeyBwYWNrYWdlTmFtZSB9LCBgbm90IGFsbG93ZWQgdG8gdW5wdWJsaXNoIGEgdmVyc2lvbiBmb3IgQHtwYWNrYWdlTmFtZX1gKTtcbiAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc3RvcmFnZS5jaGFuZ2VQYWNrYWdlKHBhY2thZ2VOYW1lLCBtZXRhZGF0YSwgcmVxLnBhcmFtcy5yZXZpc2lvbiwgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICBhZnRlckNoYW5nZShlcnJvciwgQVBJX01FU1NBR0UuUEtHX0NIQU5HRUQsIG1ldGFkYXRhKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWJ1ZygnYWRkaW5nIGEgbmV3IHZlcnNpb24gZm9yICVvJywgcGFja2FnZU5hbWUpO1xuICAgICAgICBzdG9yYWdlLmFkZFBhY2thZ2UocGFja2FnZU5hbWUsIG1ldGFkYXRhLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICBhZnRlckNoYW5nZShlcnJvciwgQVBJX01FU1NBR0UuUEtHX0NSRUFURUQsIG1ldGFkYXRhKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGxvZ2dlci5lcnJvcih7IHBhY2thZ2VOYW1lIH0sICdlcnJvciBvbiBwdWJsaXNoLCBiYWQgcGFja2FnZSBkYXRhIGZvciBAe3BhY2thZ2VOYW1lfScpO1xuICAgICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldEJhZERhdGEoQVBJX0VSUk9SLkJBRF9QQUNLQUdFX0RBVEEpKTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogdW4tcHVibGlzaCBhIHBhY2thZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuUHVibGlzaFBhY2thZ2Uoc3RvcmFnZTogSVN0b3JhZ2VIYW5kbGVyKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMucGFja2FnZTtcbiAgICBkZWJ1ZygndW5wdWJsaXNoaW5nICVvJywgcGFja2FnZU5hbWUpO1xuICAgIHN0b3JhZ2UucmVtb3ZlUGFja2FnZShwYWNrYWdlTmFtZSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgfVxuICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgIHJldHVybiBuZXh0KHsgb2s6IEFQSV9NRVNTQUdFLlBLR19SRU1PVkVEIH0pO1xuICAgIH0pO1xuICB9O1xufVxuXG4vKipcbiAqIERlbGV0ZSB0YXJiYWxsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVUYXJiYWxsKHN0b3JhZ2U6IElTdG9yYWdlSGFuZGxlcikge1xuICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSByZXEucGFyYW1zLnBhY2thZ2U7XG4gICAgY29uc3QgeyBmaWxlbmFtZSwgcmV2aXNpb24gfSA9IHJlcS5wYXJhbXM7XG4gICAgZGVidWcoJ3JlbW92aW5nIGEgdGFyYmFsbCBmb3IgJW8tJW8tJW8nLCBwYWNrYWdlTmFtZSwgZmlsZW5hbWUsIHJldmlzaW9uKTtcbiAgICBzdG9yYWdlLnJlbW92ZVRhcmJhbGwocGFja2FnZU5hbWUsIGZpbGVuYW1lLCByZXZpc2lvbiwgZnVuY3Rpb24gKGVycikge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgfVxuICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgIGRlYnVnKCdzdWNjZXNzIHJlbW92ZSB0YXJiYWxsIGZvciAlby0lby0lbycsIHBhY2thZ2VOYW1lLCBmaWxlbmFtZSwgcmV2aXNpb24pO1xuICAgICAgcmV0dXJuIG5leHQoeyBvazogQVBJX01FU1NBR0UuVEFSQkFMTF9SRU1PVkVEIH0pO1xuICAgIH0pO1xuICB9O1xufVxuLyoqXG4gKiBBZGRzIGEgbmV3IHZlcnNpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFZlcnNpb24oc3RvcmFnZTogSVN0b3JhZ2VIYW5kbGVyKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCB7IHZlcnNpb24sIHRhZyB9ID0gcmVxLnBhcmFtcztcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMucGFja2FnZTtcblxuICAgIHN0b3JhZ2UuYWRkVmVyc2lvbihwYWNrYWdlTmFtZSwgdmVyc2lvbiwgcmVxLmJvZHksIHRhZywgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgfVxuXG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgcmV0dXJuIG5leHQoe1xuICAgICAgICBvazogQVBJX01FU1NBR0UuUEtHX1BVQkxJU0hFRCxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xufVxuXG4vKipcbiAqIHVwbG9hZFBhY2thZ2VUYXJiYWxsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGxvYWRQYWNrYWdlVGFyYmFsbChzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgIGNvbnN0IHN0cmVhbSA9IHN0b3JhZ2UuYWRkVGFyYmFsbChwYWNrYWdlTmFtZSwgcmVxLnBhcmFtcy5maWxlbmFtZSk7XG4gICAgcmVxLnBpcGUoc3RyZWFtKTtcblxuICAgIC8vIGNoZWNraW5nIGlmIGVuZCBldmVudCBjYW1lIGJlZm9yZSBjbG9zaW5nXG4gICAgbGV0IGNvbXBsZXRlID0gZmFsc2U7XG4gICAgcmVxLm9uKCdlbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb21wbGV0ZSA9IHRydWU7XG4gICAgICBzdHJlYW0uZG9uZSgpO1xuICAgIH0pO1xuXG4gICAgcmVxLm9uKCdjbG9zZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICghY29tcGxldGUpIHtcbiAgICAgICAgc3RyZWFtLmFib3J0KCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBzdHJlYW0ub24oJ2Vycm9yJywgZnVuY3Rpb24gKGVycikge1xuICAgICAgcmV0dXJuIHJlcy5sb2NhbHMucmVwb3J0X2Vycm9yKGVycik7XG4gICAgfSk7XG5cbiAgICBzdHJlYW0ub24oJ3N1Y2Nlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgcmV0dXJuIG5leHQoe1xuICAgICAgICBvazogQVBJX01FU1NBR0UuVEFSQkFMTF9VUExPQURFRCxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBO0FBRUE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBMEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRTFCLE1BQU1BLEtBQUssR0FBRyxJQUFBQyxjQUFVLEVBQUMsbUJBQW1CLENBQUM7QUFFOUIsU0FBU0MsT0FBTyxDQUFDQyxNQUFjLEVBQUVD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
|
|
358
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZWJ1ZyIsImJ1aWxkRGVidWciLCJwdWJsaXNoIiwicm91dGVyIiwiYXV0aCIsInN0b3JhZ2UiLCJjb25maWciLCJjYW4iLCJhbGxvdyIsImJlZm9yZUFsbCIsInBhcmFtcyIsIm1lc3NhZ2UiLCJsb2dnZXIiLCJ0cmFjZSIsImFmdGVyQWxsIiwicHV0IiwibWVkaWEiLCJtaW1lIiwiZ2V0VHlwZSIsImV4cGVjdEpzb24iLCJwdWJsaXNoUGFja2FnZSIsImRlbGV0ZSIsInVuUHVibGlzaFBhY2thZ2UiLCJyZW1vdmVUYXJiYWxsIiwiSEVBREVSUyIsIk9DVEVUX1NUUkVBTSIsInVwbG9hZFBhY2thZ2VUYXJiYWxsIiwiYWRkVmVyc2lvbiIsInN0YXJBcGkiLCJzdGFyIiwicmVxIiwicmVzIiwibmV4dCIsInBhY2thZ2VOYW1lIiwicGFja2FnZSIsImNyZWF0ZVRhcmJhbGwiLCJmaWxlbmFtZSIsImRhdGEiLCJjYiIsInN0cmVhbSIsImFkZFRhcmJhbGwiLCJvbiIsImVyciIsImVuZCIsIkJ1ZmZlciIsImZyb20iLCJkb25lIiwiY3JlYXRlVmVyc2lvbiIsInZlcnNpb24iLCJtZXRhZGF0YSIsImFkZFRhZ3MiLCJ0YWdzIiwibWVyZ2VUYWdzIiwiYWZ0ZXJDaGFuZ2UiLCJlcnJvciIsIm9rTWVzc2FnZSIsIm1ldGFkYXRhQ29weSIsIl9hdHRhY2htZW50cyIsInZlcnNpb25zIiwiXyIsImlzTmlsIiwiSlNPTiIsInN0cmluZ2lmeSIsInN0YXR1cyIsIkhUVFBfU1RBVFVTIiwiQ1JFQVRFRCIsIm9rIiwic3VjY2VzcyIsImlzSW52YWxpZEJvZHlGb3JtYXQiLCJpc09iamVjdCIsImhhc0RpZmZPbmVLZXkiLCJpbmZvIiwiRXJyb3JDb2RlIiwiZ2V0QmFkUmVxdWVzdCIsIkFQSV9FUlJPUiIsIlVOU1VQT1JURURfUkVHSVNUUllfQ0FMTCIsIkNPTkZMSUNUIiwiZmlyc3RBdHRhY2htZW50S2V5IiwiT2JqZWN0Iiwia2V5cyIsIlBhdGgiLCJiYXNlbmFtZSIsInZlcnNpb25Ub1B1Ymxpc2giLCJ2ZXJzaW9uTWV0YWRhdGFUb1B1Ymxpc2giLCJyZWFkbWUiLCJTdHJpbmciLCJESVNUX1RBR1MiLCJub3RpZnkiLCJyZW1vdGVfdXNlciIsIm5hbWUiLCJpc1B1Ymxpc2hhYmxlUGFja2FnZSIsImJvZHkiLCJ1c2VycyIsInZhbGlkYXRpb1V0aWxzIiwibm9ybWFsaXplTWV0YWRhdGEiLCJfcmV2IiwiaXNSZWxhdGVkVG9EZXByZWNhdGlvbiIsImlzRW1wdHkiLCJyZW1vdGUiLCJhbGxvd191bnB1Ymxpc2giLCJjaGFuZ2VQYWNrYWdlIiwicmV2aXNpb24iLCJBUElfTUVTU0FHRSIsIlBLR19DSEFOR0VEIiwiYWRkUGFja2FnZSIsIlBLR19DUkVBVEVEIiwiZ2V0QmFkRGF0YSIsIkJBRF9QQUNLQUdFX0RBVEEiLCJyZW1vdmVQYWNrYWdlIiwiUEtHX1JFTU9WRUQiLCJUQVJCQUxMX1JFTU9WRUQiLCJ0YWciLCJQS0dfUFVCTElTSEVEIiwicGlwZSIsImNvbXBsZXRlIiwiYWJvcnQiLCJsb2NhbHMiLCJyZXBvcnRfZXJyb3IiLCJUQVJCQUxMX1VQTE9BREVEIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9lbmRwb2ludC9hcGkvcHVibGlzaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYnVpbGREZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbWltZSBmcm9tICdtaW1lJztcbmltcG9ydCBQYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgeyB2YWxpZGF0aW9VdGlscyB9IGZyb20gJ0B2ZXJkYWNjaW8vY29yZSc7XG5pbXBvcnQgeyBhbGxvdywgZXhwZWN0SnNvbiwgbWVkaWEgfSBmcm9tICdAdmVyZGFjY2lvL21pZGRsZXdhcmUnO1xuaW1wb3J0IHsgQ2FsbGJhY2ssIENvbmZpZywgTWVyZ2VUYWdzLCBQYWNrYWdlLCBWZXJzaW9uIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5cbmltcG9ydCB7IEFQSV9FUlJPUiwgQVBJX01FU1NBR0UsIERJU1RfVEFHUywgSEVBREVSUywgSFRUUF9TVEFUVVMgfSBmcm9tICcuLi8uLi8uLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uLy4uL2xpYi9sb2dnZXInO1xuaW1wb3J0IHsgbm90aWZ5IH0gZnJvbSAnLi4vLi4vLi4vbGliL25vdGlmeSc7XG5pbXBvcnQgeyBpc1B1Ymxpc2hhYmxlUGFja2FnZSB9IGZyb20gJy4uLy4uLy4uL2xpYi9zdG9yYWdlLXV0aWxzJztcbmltcG9ydCB7IEVycm9yQ29kZSwgaGFzRGlmZk9uZUtleSwgaXNPYmplY3QsIGlzUmVsYXRlZFRvRGVwcmVjYXRpb24gfSBmcm9tICcuLi8uLi8uLi9saWIvdXRpbHMnO1xuaW1wb3J0IHtcbiAgJE5leHRGdW5jdGlvblZlcixcbiAgJFJlcXVlc3RFeHRlbmQsXG4gICRSZXNwb25zZUV4dGVuZCxcbiAgSUF1dGgsXG4gIElTdG9yYWdlSGFuZGxlcixcbn0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHN0YXIgZnJvbSAnLi9zdGFyJztcblxuY29uc3QgZGVidWcgPSBidWlsZERlYnVnKCd2ZXJkYWNjaW86cHVibGlzaCcpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwdWJsaXNoKFxuICByb3V0ZXI6IFJvdXRlcixcbiAgYXV0aDogSUF1dGgsXG4gIHN0b3JhZ2U6IElTdG9yYWdlSGFuZGxlcixcbiAgY29uZmlnOiBDb25maWdcbik6IHZvaWQge1xuICBjb25zdCBjYW4gPSBhbGxvdyhhdXRoLCB7XG4gICAgYmVmb3JlQWxsOiAocGFyYW1zLCBtZXNzYWdlKSA9PiBsb2dnZXIudHJhY2UocGFyYW1zLCBtZXNzYWdlKSxcbiAgICBhZnRlckFsbDogKHBhcmFtcywgbWVzc2FnZSkgPT4gbG9nZ2VyLnRyYWNlKHBhcmFtcywgbWVzc2FnZSksXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBQdWJsaXNoIGEgcGFja2FnZSAvIHVwZGF0ZSBwYWNrYWdlIC8gdW4vc3RhcnQgYSBwYWNrYWdlXG4gICAqXG4gICAqIFRoZXJlIGFyZSBtdWx0aXBsZXMgc2NlbmFyaW9zIGhlcmUgdG8gYmUgY29uc2lkZXJlZDpcbiAgICpcbiAgICogMS4gUHVibGlzaCBzY2VuYXJpb1xuICAgKlxuICAgKiBQdWJsaXNoIGEgcGFja2FnZSBjb25zaXN0IG9mIGF0IGxlYXN0IDEgc3RlcCAoUFVUKSB3aXRoIGEgbWV0YWRhdGEgcGF5bG9hZC5cbiAgICogV2hlbiBhIHBhY2thZ2UgaXMgcHVibGlzaGVkLCBhbiBfYXR0YWNobWVudCBwcm9wZXJ0eSBpcyBwcmVzZW50IHRoYXQgY29udGFpbnMgdGhlIGRhdGFcbiAgICogb2YgdGhlIHRhcmJhbGwuXG4gICAqXG4gICAqIEV4YW1wbGUgZmxvdyBvZiBwdWJsaXNoLlxuICAgKlxuICAgKiAgbnBtIGh0dHAgZmV0Y2ggUFVUIDIwMSBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDEgOTYyN21zXG4gICAgICBucG0gaW5mbyBsaWZlY3ljbGUgQHNjb3BlL3Rlc3QxQDEuMC4xfnB1Ymxpc2g6IEBzY29wZS90ZXN0MUAxLjAuMVxuICAgICAgbnBtIGluZm8gbGlmZWN5Y2xlIEBzY29wZS90ZXN0MUAxLjAuMX5wb3N0cHVibGlzaDogQHNjb3BlL3Rlc3QxQDEuMC4xXG4gICAgICArIEBzY29wZS90ZXN0MUAxLjAuMVxuICAgICAgbnBtIHZlcmIgZXhpdCBbIDAsIHRydWUgXVxuICAgKlxuICAgKlxuICAgKiAyLiBVbnB1Ymxpc2ggc2NlbmFyaW9cbiAgICpcbiAgICogVW5wdWJsaXNoIGNvbnNpc3QgaW4gMyBzdGVwcy5cbiAgICogIDEuIFRyeSB0byBmZXRjaCAgbWV0YWRhdGEgLT4gaWYgaXQgZmFpbHMsIHJldHVybiA0MDRcbiAgICogIDIuIENvbXB1dGUgbWV0YWRhdGEgbG9jYWxseSAoY2xpZW50IHNpZGUpIGFuZCBzZW5kIGEgbXV0YXRlIHBheWxvYWQgZXhjbHVkaW5nIHRoZSB2ZXJzaW9uIHRvIGJlIHVucHVibGlzaGVkXG4gICAqICAgIGVnOiBpZiBtZXRhZGF0YSByZWZsZWN0cyAxLjAuMSwgMS4wLjIgYW5kIDEuMC4zLCB0aGUgY29tcHV0ZWQgbWV0YWRhdGEgd29uJ3QgaW5jbHVkZSAxLjAuMy5cbiAgICogIDMuIE9uY2UgdGhlIHNlY29uZCBzdGVwIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBmaW5pc2hlZCwgZGVsZXRlIHRoZSB0YXJiYWxsLlxuICAgKlxuICAgKiAgQWxsIHRoZXNlIHN0ZXBzIGFyZSBjb25zZWN1dGl2ZSBhbmQgcmVxdWlyZWQsIHRoZXJlIGlzIG5vIHRyYW5zYWNpb25zIGhlcmUsIGlmIHN0ZXAgMyBmYWlscywgbWV0YWRhdGEgbWlnaHRcbiAgICogIGdldCBjb3JydXB0ZWQuXG4gICAqXG4gICAqICBOb3RlIHRoZSB1bnB1Ymxpc2ggY2FsbCB3aWxsIHN1ZmZpeCBpbiB0aGUgdXJsIGEgLy1yZXYvMTQtNWQ1MDBjZmNlOTJmOTBmZCByZXZpc2lvbiBudW1iZXIsIHRoaXMgbm90XG4gICAqICB1c2VkIGludGVybmFsbHkuXG4gICAqXG4gICAqXG4gICAqIEV4YW1wbGUgZmxvdyBvZiB1bnB1Ymxpc2guXG4gICAqXG4gICAqIG5wbSBodHRwIGZldGNoIEdFVCAyMDAgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxP3dyaXRlPXRydWUgMTY4MG1zXG4gICAgIG5wbSBodHRwIGZldGNoIFBVVCAyMDEgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxLy1yZXYvMTQtNWQ1MDBjZmNlOTJmOTBmZCA5NTY2MDZtcyBhdHRlbXB0ICMyXG4gICAgIG5wbSBodHRwIGZldGNoIEdFVCAyMDAgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxP3dyaXRlPXRydWUgMTYwMW1zXG4gICAgIG5wbSBodHRwIGZldGNoIERFTEVURSAyMDEgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxLy0vdGVzdDEtMS4wLjMudGd6Ly1yZXYvMTYtZTExYzhkYjI4MmIyZDk5MiAxOW1zXG4gICAqXG4gICAqIDMuIFN0YXIgYSBwYWNrYWdlXG4gICAqXG4gICAqIFBlcm1pc3Npb25zOiBzdGFydCBhIHBhY2thZ2UgZGVwZW5kcyBvZiB0aGUgcHVibGlzaCBhbmQgdW5wdWJsaXNoIHBlcm1pc3Npb25zLCB0aGVyZSBpcyBubyBzcGVjaWZpYyBmbGFnIGZvciBzdGFyIG9yIHVuIHN0YXJ0LlxuICAgKiBUaGUgVVJMIGZvciBzdGFyIGlzIHNpbWlsYXIgdG8gdGhlIHVucHVibGlzaCAoY2hhbmdlIHBhY2thZ2UgZm9ybWF0KVxuICAgKlxuICAgKiBucG0gaGFzIG5vIGVucG9pbnQgZm9yIHN0YXIgYSBwYWNrYWdlLCByYXRoZXIgbXV0YXRlIHRoZSBtZXRhZGF0YSBhbmQgYWN0cyBhcywgdGhlIGRpZmZlcmVuY2UgaXMgdGhlXG4gICAqIHVzZXJzIHByb3BlcnR5IHdoaWNoIGlzIHBhcnQgb2YgdGhlIHBheWxvYWQgYW5kIHRoZSBib2R5IG9ubHkgaW5jbHVkZXNcbiAgICpcbiAgICoge1xuXHRcdCAgXCJfaWRcIjogcGtnTmFtZSxcblx0ICBcdFwiX3JldlwiOiBcIjMtYjBjZGFlZmM5YmRiNzdjOFwiLFxuXHRcdCAgXCJ1c2Vyc1wiOiB7XG5cdFx0ICAgIFt1c2VybmFtZV06IGJvb2xlYW4gdmFsdWUgKHRydWUsIGZhbHNlKVxuXHRcdCAgfVxuXHR9XG4gICAqXG4gICAqL1xuICByb3V0ZXIucHV0KFxuICAgICcvOnBhY2thZ2UvOl9yZXY/LzpyZXZpc2lvbj8nLFxuICAgIGNhbigncHVibGlzaCcpLFxuICAgIG1lZGlhKG1pbWUuZ2V0VHlwZSgnanNvbicpKSxcbiAgICBleHBlY3RKc29uLFxuICAgIHB1Ymxpc2hQYWNrYWdlKHN0b3JhZ2UsIGNvbmZpZywgYXV0aClcbiAgKTtcblxuICAvKipcbiAgICogVW4tcHVibGlzaGluZyBhbiBlbnRpcmUgcGFja2FnZS5cbiAgICpcbiAgICogVGhpcyBzY2VuYXJpbyBoYXBwZW5zIHdoZW4gdGhlIGZpcnN0IGNhbGwgZGV0ZWN0IHRoZXJlIGlzIG9ubHkgb25lIHZlcnNpb24gcmVtYWluaW5nXG4gICAqIGluIHRoZSBtZXRhZGF0YSwgdGhlbiB0aGUgY2xpZW50IGRlY2lkZXMgdG8gREVMRVRFIHRoZSByZXNvdXJjZVxuICAgKiBucG0gaHR0cCBmZXRjaCBHRVQgMzA0IGh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9Ac2NvcGUlMmZ0ZXN0MT93cml0ZT10cnVlIDEwNzZtcyAoZnJvbSBjYWNoZSlcbiAgICAgbnBtIGh0dHAgZmV0Y2ggREVMRVRFIDIwMSBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDEvLXJldi8xOC1kOGViZTMwMjBiZDRhYzljIDIybXNcbiAgICovXG4gIHJvdXRlci5kZWxldGUoJy86cGFja2FnZS8tcmV2LyonLCBjYW4oJ3VucHVibGlzaCcpLCB1blB1Ymxpc2hQYWNrYWdlKHN0b3JhZ2UpKTtcblxuICAvLyByZW1vdmluZyBhIHRhcmJhbGxcbiAgcm91dGVyLmRlbGV0ZShcbiAgICAnLzpwYWNrYWdlLy0vOmZpbGVuYW1lLy1yZXYvOnJldmlzaW9uJyxcbiAgICBjYW4oJ3VucHVibGlzaCcpLFxuICAgIGNhbigncHVibGlzaCcpLFxuICAgIHJlbW92ZVRhcmJhbGwoc3RvcmFnZSlcbiAgKTtcblxuICAvLyB1cGxvYWRpbmcgcGFja2FnZSB0YXJiYWxsXG4gIHJvdXRlci5wdXQoXG4gICAgJy86cGFja2FnZS8tLzpmaWxlbmFtZS8qJyxcbiAgICBjYW4oJ3B1Ymxpc2gnKSxcbiAgICBtZWRpYShIRUFERVJTLk9DVEVUX1NUUkVBTSksXG4gICAgdXBsb2FkUGFja2FnZVRhcmJhbGwoc3RvcmFnZSlcbiAgKTtcblxuICAvLyBhZGRpbmcgYSB2ZXJzaW9uXG4gIHJvdXRlci5wdXQoXG4gICAgJy86cGFja2FnZS86dmVyc2lvbi8tdGFnLzp0YWcnLFxuICAgIGNhbigncHVibGlzaCcpLFxuICAgIG1lZGlhKG1pbWUuZ2V0VHlwZSgnanNvbicpKSxcbiAgICBleHBlY3RKc29uLFxuICAgIGFkZFZlcnNpb24oc3RvcmFnZSlcbiAgKTtcbn1cblxuLyoqXG4gKiBQdWJsaXNoIGEgcGFja2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHVibGlzaFBhY2thZ2Uoc3RvcmFnZTogSVN0b3JhZ2VIYW5kbGVyLCBjb25maWc6IENvbmZpZywgYXV0aDogSUF1dGgpOiBhbnkge1xuICBjb25zdCBzdGFyQXBpID0gc3RhcihzdG9yYWdlKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgIGRlYnVnKCdwdWJsaXNoaW5nIG9yIHVwZGF0aW5nIGEgbmV3IHZlcnNpb24gZm9yICVvJywgcGFja2FnZU5hbWUpO1xuICAgIC8qKlxuICAgICAqIFdyaXRlIHRhcmJhbGwgb2Ygc3RyZWFtIGRhdGEgZnJvbSBwYWNrYWdlIGNsaWVudHMuXG4gICAgICovXG4gICAgY29uc3QgY3JlYXRlVGFyYmFsbCA9IGZ1bmN0aW9uIChmaWxlbmFtZTogc3RyaW5nLCBkYXRhLCBjYjogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICAgIGNvbnN0IHN0cmVhbSA9IHN0b3JhZ2UuYWRkVGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUpO1xuICAgICAgc3RyZWFtLm9uKCdlcnJvcicsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgY2IoZXJyKTtcbiAgICAgIH0pO1xuICAgICAgc3RyZWFtLm9uKCdzdWNjZXNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjYigpO1xuICAgICAgfSk7XG4gICAgICAvLyB0aGlzIGlzIGR1bWIgYW5kIG1lbW9yeS1jb25zdW1pbmcsIGJ1dCB3aGF0IGNob2ljZXMgZG8gd2UgaGF2ZT9cbiAgICAgIC8vIGZsb3c6IHdlIG5lZWQgZmlyc3QgcmVmYWN0b3IgdGhpcyBmaWxlIGJlZm9yZSBkZWNpZGVzIHdoaWNoIHR5cGUgdXNlIGhlcmVcbiAgICAgIHN0cmVhbS5lbmQoQnVmZmVyLmZyb20oZGF0YS5kYXRhLCAnYmFzZTY0JykpO1xuICAgICAgc3RyZWFtLmRvbmUoKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQWRkIG5ldyBwYWNrYWdlIHZlcnNpb24gaW4gc3RvcmFnZVxuICAgICAqL1xuICAgIGNvbnN0IGNyZWF0ZVZlcnNpb24gPSBmdW5jdGlvbiAodmVyc2lvbjogc3RyaW5nLCBtZXRhZGF0YTogVmVyc2lvbiwgY2I6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgICBzdG9yYWdlLmFkZFZlcnNpb24ocGFja2FnZU5hbWUsIHZlcnNpb24sIG1ldGFkYXRhLCBudWxsLCBjYik7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEFkZCBuZXcgdGFncyBpbiBzdG9yYWdlXG4gICAgICovXG4gICAgY29uc3QgYWRkVGFncyA9IGZ1bmN0aW9uICh0YWdzOiBNZXJnZVRhZ3MsIGNiOiBDYWxsYmFjayk6IHZvaWQge1xuICAgICAgc3RvcmFnZS5tZXJnZVRhZ3MocGFja2FnZU5hbWUsIHRhZ3MsIGNiKTtcbiAgICB9O1xuXG4gICAgY29uc3QgYWZ0ZXJDaGFuZ2UgPSBmdW5jdGlvbiAoZXJyb3IsIG9rTWVzc2FnZSwgbWV0YWRhdGEpOiB2b2lkIHtcbiAgICAgIGNvbnN0IG1ldGFkYXRhQ29weTogUGFja2FnZSA9IHsgLi4ubWV0YWRhdGEgfTtcblxuICAgICAgY29uc3QgeyBfYXR0YWNobWVudHMsIHZlcnNpb25zIH0gPSBtZXRhZGF0YUNvcHk7XG5cbiAgICAgIC8vIGBucG0gc3RhcmAgd291bGRuJ3QgaGF2ZSBhdHRhY2htZW50c1xuICAgICAgLy8gYW5kIGBucG0gZGVwcmVjYXRlYCB3b3VsZCBoYXZlIGF0dGFjaG1lbnRzIGFzIGEgZW1wdHkgb2JqZWN0LCBpLmUge31cbiAgICAgIGlmIChfLmlzTmlsKF9hdHRhY2htZW50cykgfHwgSlNPTi5zdHJpbmdpZnkoX2F0dGFjaG1lbnRzKSA9PT0gJ3t9Jykge1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgICAgcmV0dXJuIG5leHQoe1xuICAgICAgICAgIG9rOiBva01lc3NhZ2UsXG4gICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIG5wbS1yZWdpc3RyeS1jbGllbnQgMC4zKyBlbWJlZHMgdGFyYmFsbCBpbnRvIHRoZSBqc29uIHVwbG9hZFxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2lzYWFjcy9ucG0tcmVnaXN0cnktY2xpZW50L2NvbW1pdC9lOWZiZWI4YjY3ZjI0OTM5NGY3MzVjNzRlZjExZmU0NzIwZDQ2Y2EwXG4gICAgICAvLyBpc3N1ZSBodHRwczovL2dpdGh1Yi5jb20vcmxpZHdrYS9zaW5vcGlhL2lzc3Vlcy8zMSwgZGVhbGluZyB3aXRoIGl0IGhlcmU6XG4gICAgICBjb25zdCBpc0ludmFsaWRCb2R5Rm9ybWF0ID1cbiAgICAgICAgaXNPYmplY3QoX2F0dGFjaG1lbnRzKSA9PT0gZmFsc2UgfHxcbiAgICAgICAgaGFzRGlmZk9uZUtleShfYXR0YWNobWVudHMpIHx8XG4gICAgICAgIGlzT2JqZWN0KHZlcnNpb25zKSA9PT0gZmFsc2UgfHxcbiAgICAgICAgaGFzRGlmZk9uZUtleSh2ZXJzaW9ucyk7XG5cbiAgICAgIGlmIChpc0ludmFsaWRCb2R5Rm9ybWF0KSB7XG4gICAgICAgIC8vIG5wbSBpcyBkb2luZyBzb21ldGhpbmcgc3RyYW5nZSBhZ2FpblxuICAgICAgICAvLyBpZiB0aGlzIGhhcHBlbnMgaW4gbm9ybWFsIGNpcmN1bXN0YW5jZXMsIHJlcG9ydCBpdCBhcyBhIGJ1Z1xuICAgICAgICBsb2dnZXIuaW5mbyh7IHBhY2thZ2VOYW1lIH0sIGB3cm9uZyBwYWNrYWdlIGZvcm1hdCBvbiBwdWJsaXNoIGEgcGFja2FnZSBAe3BhY2thZ2VOYW1lfWApO1xuICAgICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0QmFkUmVxdWVzdChBUElfRVJST1IuVU5TVVBPUlRFRF9SRUdJU1RSWV9DQUxMKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChlcnJvciAmJiBlcnJvci5zdGF0dXMgIT09IEhUVFBfU1RBVFVTLkNPTkZMSUNUKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgIH1cblxuICAgICAgLy8gYXQgdGhpcyBwb2ludCBkb2N1bWVudCBpcyBlaXRoZXIgY3JlYXRlZCBvciBleGlzdGVkIGJlZm9yZVxuICAgICAgY29uc3QgW2ZpcnN0QXR0YWNobWVudEtleV0gPSBPYmplY3Qua2V5cyhfYXR0YWNobWVudHMpO1xuXG4gICAgICBjcmVhdGVUYXJiYWxsKFxuICAgICAgICBQYXRoLmJhc2VuYW1lKGZpcnN0QXR0YWNobWVudEtleSksXG4gICAgICAgIF9hdHRhY2htZW50c1tmaXJzdEF0dGFjaG1lbnRLZXldLFxuICAgICAgICBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB2ZXJzaW9uVG9QdWJsaXNoID0gT2JqZWN0LmtleXModmVyc2lvbnMpWzBdO1xuICAgICAgICAgIGNvbnN0IHZlcnNpb25NZXRhZGF0YVRvUHVibGlzaCA9IHZlcnNpb25zW3ZlcnNpb25Ub1B1Ymxpc2hdO1xuXG4gICAgICAgICAgdmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoLnJlYWRtZSA9XG4gICAgICAgICAgICBfLmlzTmlsKHZlcnNpb25NZXRhZGF0YVRvUHVibGlzaC5yZWFkbWUpID09PSBmYWxzZVxuICAgICAgICAgICAgICA/IFN0cmluZyh2ZXJzaW9uTWV0YWRhdGFUb1B1Ymxpc2gucmVhZG1lKVxuICAgICAgICAgICAgICA6ICcnO1xuXG4gICAgICAgICAgY3JlYXRlVmVyc2lvbih2ZXJzaW9uVG9QdWJsaXNoLCB2ZXJzaW9uTWV0YWRhdGFUb1B1Ymxpc2gsIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYWRkVGFncyhtZXRhZGF0YUNvcHlbRElTVF9UQUdTXSwgYXN5bmMgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgbm90aWZ5KFxuICAgICAgICAgICAgICAgICAgbWV0YWRhdGFDb3B5LFxuICAgICAgICAgICAgICAgICAgY29uZmlnLFxuICAgICAgICAgICAgICAgICAgcmVxLnJlbW90ZV91c2VyLFxuICAgICAgICAgICAgICAgICAgYCR7bWV0YWRhdGFDb3B5Lm5hbWV9QCR7dmVyc2lvblRvUHVibGlzaH1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoeyBlcnJvciB9LCAnbm90aWZ5IGJhdGNoIHNlcnZpY2UgaGFzIGZhaWxlZDogQHtlcnJvcn0nKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KHsgb2s6IG9rTWVzc2FnZSwgc3VjY2VzczogdHJ1ZSB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH07XG5cbiAgICBpZiAoaXNQdWJsaXNoYWJsZVBhY2thZ2UocmVxLmJvZHkpID09PSBmYWxzZSAmJiBpc09iamVjdChyZXEuYm9keS51c2VycykpIHtcbiAgICAgIHJldHVybiBzdGFyQXBpKHJlcSwgcmVzLCBuZXh0KTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbWV0YWRhdGEgPSB2YWxpZGF0aW9VdGlscy5ub3JtYWxpemVNZXRhZGF0YShyZXEuYm9keSwgcGFja2FnZU5hbWUpO1xuICAgICAgLy8gY2hlY2sgX2F0dGFjaG1lbnRzIHRvIGRpc3Rpbmd1aXNoIHB1Ymxpc2ggYW5kIGRlcHJlY2F0ZVxuICAgICAgaWYgKFxuICAgICAgICByZXEucGFyYW1zLl9yZXYgfHxcbiAgICAgICAgKGlzUmVsYXRlZFRvRGVwcmVjYXRpb24ocmVxLmJvZHkpICYmIF8uaXNFbXB0eShyZXEuYm9keS5fYXR0YWNobWVudHMpKVxuICAgICAgKSB7XG4gICAgICAgIGRlYnVnKCd1cGRhdGluZyBhIG5ldyB2ZXJzaW9uIGZvciAlbycsIHBhY2thZ2VOYW1lKTtcbiAgICAgICAgLy8gd2UgY2hlY2sgdW5wdWJsaXNoIHBlcm1pc3Npb25zLCBhbiB1cGRhdGUgaXMgYmFzaWNhbGx5IHJlbW92ZSB2ZXJzaW9uc1xuICAgICAgICBjb25zdCByZW1vdGUgPSByZXEucmVtb3RlX3VzZXI7XG4gICAgICAgIGF1dGguYWxsb3dfdW5wdWJsaXNoKHsgcGFja2FnZU5hbWUgfSwgcmVtb3RlLCAoZXJyb3IpID0+IHtcbiAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGxvZ2dlci5lcnJvcih7IHBhY2thZ2VOYW1lIH0sIGBub3QgYWxsb3dlZCB0byB1bnB1Ymxpc2ggYSB2ZXJzaW9uIGZvciBAe3BhY2thZ2VOYW1lfWApO1xuICAgICAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdG9yYWdlLmNoYW5nZVBhY2thZ2UocGFja2FnZU5hbWUsIG1ldGFkYXRhLCByZXEucGFyYW1zLnJldmlzaW9uLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGFmdGVyQ2hhbmdlKGVycm9yLCBBUElfTUVTU0FHRS5QS0dfQ0hBTkdFRCwgbWV0YWRhdGEpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlYnVnKCdhZGRpbmcgYSBuZXcgdmVyc2lvbiBmb3IgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgICAgIHN0b3JhZ2UuYWRkUGFja2FnZShwYWNrYWdlTmFtZSwgbWV0YWRhdGEsIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIGFmdGVyQ2hhbmdlKGVycm9yLCBBUElfTUVTU0FHRS5QS0dfQ1JFQVRFRCwgbWV0YWRhdGEpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nZ2VyLmVycm9yKHsgcGFja2FnZU5hbWUgfSwgJ2Vycm9yIG9uIHB1Ymxpc2gsIGJhZCBwYWNrYWdlIGRhdGEgZm9yIEB7cGFja2FnZU5hbWV9Jyk7XG4gICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0QmFkRGF0YShBUElfRVJST1IuQkFEX1BBQ0tBR0VfREFUQSkpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiB1bi1wdWJsaXNoIGEgcGFja2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5QdWJsaXNoUGFja2FnZShzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgIGRlYnVnKCd1bnB1Ymxpc2hpbmcgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgc3RvcmFnZS5yZW1vdmVQYWNrYWdlKHBhY2thZ2VOYW1lLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICB9XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgcmV0dXJuIG5leHQoeyBvazogQVBJX01FU1NBR0UuUEtHX1JFTU9WRUQgfSk7XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogRGVsZXRlIHRhcmJhbGxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVRhcmJhbGwoc3RvcmFnZTogSVN0b3JhZ2VIYW5kbGVyKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMucGFja2FnZTtcbiAgICBjb25zdCB7IGZpbGVuYW1lLCByZXZpc2lvbiB9ID0gcmVxLnBhcmFtcztcbiAgICBkZWJ1ZygncmVtb3ZpbmcgYSB0YXJiYWxsIGZvciAlby0lby0lbycsIHBhY2thZ2VOYW1lLCBmaWxlbmFtZSwgcmV2aXNpb24pO1xuICAgIHN0b3JhZ2UucmVtb3ZlVGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUsIHJldmlzaW9uLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICB9XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgZGVidWcoJ3N1Y2Nlc3MgcmVtb3ZlIHRhcmJhbGwgZm9yICVvLSVvLSVvJywgcGFja2FnZU5hbWUsIGZpbGVuYW1lLCByZXZpc2lvbik7XG4gICAgICByZXR1cm4gbmV4dCh7IG9rOiBBUElfTUVTU0FHRS5UQVJCQUxMX1JFTU9WRUQgfSk7XG4gICAgfSk7XG4gIH07XG59XG4vKipcbiAqIEFkZHMgYSBuZXcgdmVyc2lvblxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkVmVyc2lvbihzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHsgdmVyc2lvbiwgdGFnIH0gPSByZXEucGFyYW1zO1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuXG4gICAgc3RvcmFnZS5hZGRWZXJzaW9uKHBhY2thZ2VOYW1lLCB2ZXJzaW9uLCByZXEuYm9keSwgdGFnLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgIG9rOiBBUElfTUVTU0FHRS5QS0dfUFVCTElTSEVELFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogdXBsb2FkUGFja2FnZVRhcmJhbGxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwbG9hZFBhY2thZ2VUYXJiYWxsKHN0b3JhZ2U6IElTdG9yYWdlSGFuZGxlcikge1xuICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSByZXEucGFyYW1zLnBhY2thZ2U7XG4gICAgY29uc3Qgc3RyZWFtID0gc3RvcmFnZS5hZGRUYXJiYWxsKHBhY2thZ2VOYW1lLCByZXEucGFyYW1zLmZpbGVuYW1lKTtcbiAgICByZXEucGlwZShzdHJlYW0pO1xuXG4gICAgLy8gY2hlY2tpbmcgaWYgZW5kIGV2ZW50IGNhbWUgYmVmb3JlIGNsb3NpbmdcbiAgICBsZXQgY29tcGxldGUgPSBmYWxzZTtcbiAgICByZXEub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbXBsZXRlID0gdHJ1ZTtcbiAgICAgIHN0cmVhbS5kb25lKCk7XG4gICAgfSk7XG5cbiAgICByZXEub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFjb21wbGV0ZSkge1xuICAgICAgICBzdHJlYW0uYWJvcnQoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICByZXR1cm4gcmVzLmxvY2Fscy5yZXBvcnRfZXJyb3IoZXJyKTtcbiAgICB9KTtcblxuICAgIHN0cmVhbS5vbignc3VjY2VzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgIG9rOiBBUElfTUVTU0FHRS5UQVJCQUxMX1VQTE9BREVELFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVFBO0FBQTBCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUUxQixNQUFNQSxLQUFLLEdBQUcsSUFBQUMsY0FBVSxFQUFDLG1CQUFtQixDQUFDO0FBRTlCLFNBQVNDLE9BQU8sQ0FDN0JDLE1BQWMsRUFDZEMsSUFBVyxFQUNYQyxPQUF3QixFQUN4QkMsTUFBYyxFQUNSO0VBQ04sTUFBTUMsR0FBRyxHQUFHLElBQUFDLGlCQUFLLEVBQUNKLElBQUksRUFBRTtJQUN0QkssU0FBUyxFQUFFLENBQUNDLE1BQU0sRUFBRUMsT0FBTyxLQUFLQyxjQUFNLENBQUNDLEtBQUssQ0FBQ0gsTUFBTSxFQUFFQyxPQUFPLENBQUM7SUFDN0RHLFFBQVEsRUFBRSxDQUFDSixNQUFNLEVBQUVDLE9BQU8s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
|
|
@@ -70,4 +70,4 @@ function _default(storage) {
|
|
|
70
70
|
});
|
|
71
71
|
};
|
|
72
72
|
}
|
|
73
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZWJ1ZyIsImJ1aWxkRGVidWciLCJzdG9yYWdlIiwidmFsaWRhdGVJbnB1dHMiLCJuZXdVc2VycyIsImxvY2FsVXNlcnMiLCJ1c2VybmFtZSIsImlzU3RhciIsImlzRXhpc3Rsb2NhbFVzZXJzIiwiXyIsImlzTmlsIiwicmVxIiwicmVzIiwibmV4dCIsIm5hbWUiLCJwYXJhbXMiLCJwYWNrYWdlIiwiYWZ0ZXJDaGFuZ2VQYWNrYWdlIiwiZXJyIiwic3RhdHVzIiwiSFRUUF9TVEFUVVMiLCJPSyIsInN1Y2Nlc3MiLCJnZXRQYWNrYWdlIiwiY2FsbGJhY2siLCJpbmZvIiwibmV3U3RhclVzZXIiLCJib2R5IiwiVVNFUlMiLCJyZW1vdGVVc2VybmFtZSIsInJlbW90ZV91c2VyIiwibG9jYWxTdGFyVXNlcnMiLCJPYmplY3QiLCJrZXlzIiwiaW5jbHVkZXMiLCJ1c2VycyIsInJlZHVjZSIsInZhbHVlIiwia2V5IiwiY2hhbmdlUGFja2FnZSIsIl9yZXYiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL2VuZHBvaW50L2FwaS9zdGFyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEBmbG93XG5pbXBvcnQgYnVpbGREZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBSZXNwb25zZSB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgSFRUUF9TVEFUVVMsIFVTRVJTIH0gZnJvbSAnLi4vLi4vLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi8uLi9saWIvbG9nZ2VyJztcbmltcG9ydCB7ICROZXh0RnVuY3Rpb25WZXIsICRSZXF1ZXN0RXh0ZW5kLCBJU3RvcmFnZUhhbmRsZXIgfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5cbmNvbnN0IGRlYnVnID0gYnVpbGREZWJ1ZygndmVyZGFjY2lvOnN0YXInKTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChcbiAgc3RvcmFnZTogSVN0b3JhZ2VIYW5kbGVyXG4pOiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiBSZXNwb25zZSwgbmV4dDogJE5leHRGdW5jdGlvblZlcikgPT4gdm9pZCB7XG4gIGNvbnN0IHZhbGlkYXRlSW5wdXRzID0gKG5ld1VzZXJzLCBsb2NhbFVzZXJzLCB1c2VybmFtZSwgaXNTdGFyKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgaXNFeGlzdGxvY2FsVXNlcnMgPSBfLmlzTmlsKGxvY2FsVXNlcnNbdXNlcm5hbWVdKSA9PT0gZmFsc2U7XG4gICAgaWYgKGlzU3RhciAmJiBpc0V4aXN0bG9jYWxVc2VycyAmJiBsb2NhbFVzZXJzW3VzZXJuYW1lXSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmICghaXNTdGFyICYmIGlzRXhpc3Rsb2NhbFVzZXJzKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIGlmICghaXNTdGFyICYmICFpc0V4aXN0bG9jYWxVc2Vycykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICByZXR1cm4gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogUmVzcG9uc2UsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkID0+IHtcbiAgICBjb25zdCBuYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgIGRlYnVnKCdzdGFycmluZyBhIHBhY2thZ2UgZm9yICVvJywgbmFtZSk7XG4gICAgY29uc3QgYWZ0ZXJDaGFuZ2VQYWNrYWdlID0gZnVuY3Rpb24gKGVycj86IEVycm9yKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICB9XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLk9LKTtcbiAgICAgIG5leHQoe1xuICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHN0b3JhZ2UuZ2V0UGFja2FnZSh7XG4gICAgICBuYW1lLFxuICAgICAgcmVxLFxuICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uIChlcnIsIGluZm8pIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3U3RhclVzZXIgPSByZXEuYm9keVtVU0VSU107XG4gICAgICAgIGNvbnN0IHJlbW90ZVVzZXJuYW1lID0gcmVxLnJlbW90ZV91c2VyLm5hbWU7XG4gICAgICAgIGNvbnN0IGxvY2FsU3RhclVzZXJzID0gaW5mb1tVU0VSU107XG4gICAgICAgIC8vIENoZWNrIGlzIHN0YXIgb3IgdW5zdGFyXG4gICAgICAgIGNvbnN0IGlzU3RhciA9IE9iamVjdC5rZXlzKG5ld1N0YXJVc2VyKS5pbmNsdWRlcyhyZW1vdGVVc2VybmFtZSk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBfLmlzTmlsKGxvY2FsU3RhclVzZXJzKSA9PT0gZmFsc2UgJiZcbiAgICAgICAgICB2YWxpZGF0ZUlucHV0cyhuZXdTdGFyVXNlciwgbG9jYWxTdGFyVXNlcnMsIHJlbW90ZVVzZXJuYW1lLCBpc1N0YXIpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBhZnRlckNoYW5nZVBhY2thZ2UoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1c2VycyA9IGlzU3RhclxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAuLi5sb2NhbFN0YXJVc2VycyxcbiAgICAgICAgICAgICAgW3JlbW90ZVVzZXJuYW1lXTogdHJ1ZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IF8ucmVkdWNlKFxuICAgICAgICAgICAgICBsb2NhbFN0YXJVc2VycyxcbiAgICAgICAgICAgICAgKHVzZXJzLCB2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGtleSAhPT0gcmVtb3RlVXNlcm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgIHVzZXJzW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVzZXJzO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7fVxuICAgICAgICAgICAgKTtcbiAgICAgICAgc3RvcmFnZS5jaGFuZ2VQYWNrYWdlKG5hbWUsIHsgLi4uaW5mbywgdXNlcnMgfSwgcmVxLmJvZHkuX3JldiwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgIGFmdGVyQ2hhbmdlUGFja2FnZShlcnIpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBO0FBRUE7QUFFQTtBQUE0RDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJNUQsTUFBTUEsS0FBSyxHQUFHLElBQUFDLGNBQVUsRUFBQyxnQkFBZ0IsQ0FBQztBQUMzQixrQkFDYkMsT0FBd0IsRUFDOEM7RUFDdEUsTUFBTUMsY0FBYyxHQUFHLENBQUNDLFFBQVEsRUFBRUMsVUFBVSxFQUFFQyxRQUFRLEVBQUVDLE1BQU0sS0FBYztJQUMxRSxNQUFNQyxpQkFBaUIsR0FBR0MsZUFBQyxDQUFDQyxLQUFLLENBQUNMLFVBQVUsQ0FBQ0MsUUFBUSxDQUFDLENBQUMsS0FBSyxLQUFLO0lBQ2pFLElBQUlDLE1BQU0sSUFBSUMsaUJBQWlCLElBQUlILFVBQVUsQ0FBQ0MsUUFBUSxDQUFDLEVBQUU7TUFDdkQsT0FBTyxJQUFJO0lBQ2IsQ0FBQyxNQUFNLElBQUksQ0FBQ0MsTUFBTSxJQUFJQyxpQkFBaUIsRUFBRTtNQUN2QyxPQUFPLEtBQUs7SUFDZCxDQUFDLE1BQU0sSUFBSSxDQUFDRCxNQUFNLElBQUksQ0FBQ0MsaUJBQWlCLEVBQUU7TUFDeEMsT0FBTyxJQUFJO0lBQ2I7SUFDQSxPQUFPLEtBQUs7RUFDZCxDQUFDO0VBRUQsT0FBTyxDQUFDRyxHQUFtQixFQUFFQyxHQUFhLEVBQUVDLElBQXNCLEtBQVc7SUFDM0UsTUFBTUMsSUFBSSxHQUFHSCxHQUFHLENBQUNJLE1BQU0sQ0FBQ0MsT0FBTztJQUMvQmhCLEtBQUssQ0FBQywyQkFBMkIsRUFBRWMsSUFBSSxDQUFDO0lBQ3hDLE1BQU1HLGtCQUFrQixHQUFHLFVBQVVDLEdBQVcsRUFBRTtNQUNoRCxJQUFJQSxHQUFHLEVBQUU7UUFDUCxPQUFPTCxJQUFJLENBQUNLLEdBQUcsQ0FBQztNQUNsQjtNQUNBTixHQUFHLENBQUNPLE1BQU0sQ0FBQ0Msc0JBQVcsQ0FBQ0MsRUFBRSxDQUFDO01BQzFCUixJQUFJLENBQUM7UUFDSFMsT0FBTyxFQUFFO01BQ1gsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVEcEIsT0FBTyxDQUFDcUIsVUFBVSxDQUFDO01BQ2pCVCxJQUFJO01BQ0pILEdBQUc7TUFDSGEsUUFBUSxFQUFFLFVBQVVOLEdBQUcsRUFBRU8sSUFBSSxFQUFFO1FBQzdCLElBQUlQLEdBQUcsRUFBRTtVQUNQLE9BQU9MLElBQUksQ0FBQ0ssR0FBRyxDQUFDO1FBQ2xCO1FBQ0EsTUFBTVEsV0FBVyxHQUFHZixHQUFHLENBQUNnQixJQUFJLENBQUNDLGdCQUFLLENBQUM7UUFDbkMsTUFBTUMsY0FBYyxHQUFHbEIsR0FBRyxDQUFDbUIsV0FBVyxDQUFDaEIsSUFBSTtRQUMzQyxNQUFNaUIsY0FBYyxHQUFHTixJQUFJLENBQUNHLGdCQUFLLENBQUM7UUFDbEM7UUFDQSxNQUFNckIsTUFBTSxHQUFHeUIsTUFBTSxDQUFDQyxJQUFJLENBQUNQLFdBQVcsQ0FBQyxDQUFDUSxRQUFRLENBQUNMLGNBQWMsQ0FBQztRQUNoRSxJQUNFcEIsZUFBQyxDQUFDQyxLQUFLLENBQUNxQixjQUFjLENBQUMsS0FBSyxLQUFLLElBQ2pDNUIsY0FBYyxDQUFDdUIsV0FBVyxFQUFFSyxjQUFjLEVBQUVGLGNBQWMsRUFBRXRCLE1BQU0sQ0FBQyxFQUNuRTtVQUNBLE9BQU9VLGtCQUFrQixFQUFFO1FBQzdCO1FBQ0EsTUFBTWtCLEtBQUssR0FBRzVCLE1BQU0sbUNBRVh3QixjQUFjO1VBQ2pCLENBQUNGLGNBQWMsR0FBRztRQUFJLEtBRXhCcEIsZUFBQyxDQUFDMkIsTUFBTSxDQUNOTCxjQUFjLEVBQ2QsQ0FBQ0ksS0FBSyxFQUFFRSxLQUFLLEVBQUVDLEdBQUcsS0FBSztVQUNyQixJQUFJQSxHQUFHLEtBQUtULGNBQWMsRUFBRTtZQUMxQk0sS0FBSyxDQUFDRyxHQUFHLENBQUMsR0FBR0QsS0FBSztVQUNwQjtVQUNBLE9BQU9GLEtBQUs7UUFDZCxDQUFDLEVBQ0QsQ0FBQyxDQUFDLENBQ0g7UUFDTGpDLE9BQU8sQ0FBQ3FDLGFBQWEsQ0FBQ3pCLElBQUksa0NBQU9XLElBQUk7VUFBRVU7UUFBSyxJQUFJeEIsR0FBRyxDQUFDZ0IsSUFBSSxDQUFDYSxJQUFJLEVBQUUsVUFBVXRCLEdBQUcsRUFBRTtVQUM1RUQsa0JBQWtCLENBQUNDLEdBQUcsQ0FBQztRQUN6QixDQUFDLENBQUM7TUFDSjtJQUNGLENBQUMsQ0FBQztFQUNKLENBQUM7QUFDSCJ9
|
|
@@ -5,16 +5,23 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = _default;
|
|
7
7
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
8
|
+
var _core = require("@verdaccio/core");
|
|
8
9
|
var _constants = require("../../../lib/constants");
|
|
9
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
11
|
function _default(route, storage) {
|
|
11
12
|
route.get('/-/_view/starredByUser', (req, res, next) => {
|
|
12
|
-
|
|
13
|
+
// @ts-ignore
|
|
14
|
+
const query = req.query;
|
|
15
|
+
if (typeof (query === null || query === void 0 ? void 0 : query.key) !== 'string') {
|
|
16
|
+
return next(_core.errorUtils.getBadRequest('missing query key username'));
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// @ts-ignore
|
|
13
20
|
storage.getLocalDatabase((err, localPackages) => {
|
|
14
21
|
if (err) {
|
|
15
22
|
return next(err);
|
|
16
23
|
}
|
|
17
|
-
const filteredPackages = localPackages.filter(localPackage => _lodash.default.keys(localPackage[_constants.USERS]).includes(
|
|
24
|
+
const filteredPackages = localPackages.filter(localPackage => _lodash.default.keys(localPackage[_constants.USERS]).includes(query === null || query === void 0 ? void 0 : query.key.toString().replace(/['"]+/g, '')));
|
|
18
25
|
res.status(_constants.HTTP_STATUS.OK);
|
|
19
26
|
next({
|
|
20
27
|
rows: filteredPackages.map(filteredPackage => ({
|
|
@@ -24,4 +31,4 @@ function _default(route, storage) {
|
|
|
24
31
|
});
|
|
25
32
|
});
|
|
26
33
|
}
|
|
27
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyb3V0ZSIsInN0b3JhZ2UiLCJnZXQiLCJyZXEiLCJyZXMiLCJuZXh0IiwicXVlcnkiLCJrZXkiLCJlcnJvclV0aWxzIiwiZ2V0QmFkUmVxdWVzdCIsImdldExvY2FsRGF0YWJhc2UiLCJlcnIiLCJsb2NhbFBhY2thZ2VzIiwiZmlsdGVyZWRQYWNrYWdlcyIsImZpbHRlciIsImxvY2FsUGFja2FnZSIsIl8iLCJrZXlzIiwiVVNFUlMiLCJpbmNsdWRlcyIsInRvU3RyaW5nIiwicmVwbGFjZSIsInN0YXR1cyIsIkhUVFBfU1RBVFVTIiwiT0siLCJyb3dzIiwibWFwIiwiZmlsdGVyZWRQYWNrYWdlIiwidmFsdWUiLCJuYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9lbmRwb2ludC9hcGkvc3RhcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVzcG9uc2UsIFJvdXRlciB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgZXJyb3JVdGlscyB9IGZyb20gJ0B2ZXJkYWNjaW8vY29yZSc7XG5pbXBvcnQgeyBNYW5pZmVzdCwgVmVyc2lvbiB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuXG5pbXBvcnQgeyBIVFRQX1NUQVRVUywgVVNFUlMgfSBmcm9tICcuLi8uLi8uLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7ICROZXh0RnVuY3Rpb25WZXIsICRSZXF1ZXN0RXh0ZW5kLCBJU3RvcmFnZUhhbmRsZXIgfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChyb3V0ZTogUm91dGVyLCBzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIpOiB2b2lkIHtcbiAgcm91dGUuZ2V0KFxuICAgICcvLS9fdmlldy9zdGFycmVkQnlVc2VyJyxcbiAgICAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiBSZXNwb25zZSwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQgPT4ge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgcXVlcnk6IHsga2V5OiBzdHJpbmcgfSA9IHJlcS5xdWVyeTtcbiAgICAgIGlmICh0eXBlb2YgcXVlcnk/LmtleSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyb3JVdGlscy5nZXRCYWRSZXF1ZXN0KCdtaXNzaW5nIHF1ZXJ5IGtleSB1c2VybmFtZScpKTtcbiAgICAgIH1cblxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgc3RvcmFnZS5nZXRMb2NhbERhdGFiYXNlKChlcnIsIGxvY2FsUGFja2FnZXM6IFZlcnNpb25bXSkgPT4ge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbHRlcmVkUGFja2FnZXM6IFZlcnNpb25bXSA9IGxvY2FsUGFja2FnZXMuZmlsdGVyKChsb2NhbFBhY2thZ2U6IFZlcnNpb24pID0+XG4gICAgICAgICAgXy5rZXlzKGxvY2FsUGFja2FnZVtVU0VSU10pLmluY2x1ZGVzKHF1ZXJ5Py5rZXkudG9TdHJpbmcoKS5yZXBsYWNlKC9bJ1wiXSsvZywgJycpKVxuICAgICAgICApO1xuXG4gICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuT0spO1xuICAgICAgICBuZXh0KHtcbiAgICAgICAgICByb3dzOiBmaWx0ZXJlZFBhY2thZ2VzLm1hcCgoZmlsdGVyZWRQYWNrYWdlOiBWZXJzaW9uKSA9PiAoe1xuICAgICAgICAgICAgdmFsdWU6IGZpbHRlcmVkUGFja2FnZS5uYW1lLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBO0FBRUE7QUFHQTtBQUE0RDtBQUc3QyxrQkFBVUEsS0FBYSxFQUFFQyxPQUF3QixFQUFRO0VBQ3RFRCxLQUFLLENBQUNFLEdBQUcsQ0FDUCx3QkFBd0IsRUFDeEIsQ0FBQ0MsR0FBbUIsRUFBRUMsR0FBYSxFQUFFQyxJQUFzQixLQUFXO0lBQ3BFO0lBQ0EsTUFBTUMsS0FBc0IsR0FBR0gsR0FBRyxDQUFDRyxLQUFLO0lBQ3hDLElBQUksUUFBT0EsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVDLEdBQUcsTUFBSyxRQUFRLEVBQUU7TUFDbEMsT0FBT0YsSUFBSSxDQUFDRyxnQkFBVSxDQUFDQyxhQUFhLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUNyRTs7SUFFQTtJQUNBUixPQUFPLENBQUNTLGdCQUFnQixDQUFDLENBQUNDLEdBQUcsRUFBRUMsYUFBd0IsS0FBSztNQUMxRCxJQUFJRCxHQUFHLEVBQUU7UUFDUCxPQUFPTixJQUFJLENBQUNNLEdBQUcsQ0FBQztNQUNsQjtNQUVBLE1BQU1FLGdCQUEyQixHQUFHRCxhQUFhLENBQUNFLE1BQU0sQ0FBRUMsWUFBcUIsSUFDN0VDLGVBQUMsQ0FBQ0MsSUFBSSxDQUFDRixZQUFZLENBQUNHLGdCQUFLLENBQUMsQ0FBQyxDQUFDQyxRQUFRLENBQUNiLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFQyxHQUFHLENBQUNhLFFBQVEsRUFBRSxDQUFDQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQ2xGO01BRURqQixHQUFHLENBQUNrQixNQUFNLENBQUNDLHNCQUFXLENBQUNDLEVBQUUsQ0FBQztNQUMxQm5CLElBQUksQ0FBQztRQUNIb0IsSUFBSSxFQUFFWixnQkFBZ0IsQ0FBQ2EsR0FBRyxDQUFFQyxlQUF3QixLQUFNO1VBQ3hEQyxLQUFLLEVBQUVELGVBQWUsQ0FBQ0U7UUFDekIsQ0FBQyxDQUFDO01BQ0osQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0VBQ0osQ0FBQyxDQUNGO0FBQ0gifQ==
|