Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@verdaccio/local-storage

Package Overview
Dependencies
Maintainers
5
Versions
156
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@verdaccio/local-storage - npm Package Compare versions

Comparing version 2.0.0 to 2.1.0

14

CHANGELOG.md

@@ -5,2 +5,16 @@ # Change Log

# [2.1.0](https://github.com/verdaccio/local-storage/compare/v2.0.0...v2.1.0) (2019-03-29)
### Bug Fixes
* remove uncessary async ([23a09f3](https://github.com/verdaccio/local-storage/commit/23a09f3))
### Features
* drop node v6 support ([ef548e0](https://github.com/verdaccio/local-storage/commit/ef548e0))
# [2.0.0](https://github.com/verdaccio/local-storage/compare/v2.0.0-beta.3...v2.0.0) (2019-03-29)

@@ -7,0 +21,0 @@

4

lib/local-database.js

@@ -96,3 +96,3 @@ "use strict";

_async.default.eachSeries(storageKeys, async function (storage, cb) {
_async.default.eachSeries(storageKeys, function (storage, cb) {
const position = storageKeys.indexOf(storage);

@@ -364,2 +364,2 @@

exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2NhbC1kYXRhYmFzZS50cyJdLCJuYW1lcyI6WyJERVBSRUNBVEVEX0RCX05BTUUiLCJEQl9OQU1FIiwiTG9jYWxEYXRhYmFzZSIsImNvbnN0cnVjdG9yIiwiY29uZmlnIiwibG9nZ2VyIiwicGF0aCIsIl9idWlsZFN0b3JhZ2VQYXRoIiwibG9ja2VkIiwiZGF0YSIsIl9mZXRjaExvY2FsUGFja2FnZXMiLCJfc3luYyIsImdldFNlY3JldCIsIlByb21pc2UiLCJyZXNvbHZlIiwic2VjcmV0Iiwic2V0U2VjcmV0IiwicmVqZWN0IiwiYWRkIiwibmFtZSIsImNiIiwibGlzdCIsImluZGV4T2YiLCJwdXNoIiwic2VhcmNoIiwib25QYWNrYWdlIiwib25FbmQiLCJ2YWxpZGF0ZU5hbWUiLCJzdG9yYWdlcyIsIl9nZXRDdXN0b21QYWNrYWdlTG9jYWxTdG9yYWdlcyIsInRyYWNlIiwiSlNPTiIsInN0cmluZ2lmeSIsImJhc2UiLCJQYXRoIiwiZGlybmFtZSIsInNlbGZfcGF0aCIsInNlbGYiLCJzdG9yYWdlS2V5cyIsIk9iamVjdCIsImtleXMiLCJhc3luYyIsImVhY2hTZXJpZXMiLCJzdG9yYWdlIiwicG9zaXRpb24iLCJiYXNlMiIsImpvaW4iLCJzdG9yYWdlUGF0aCIsImZzIiwicmVhZGRpciIsImVyciIsImZpbGVzIiwiZmlsZSIsImluY2x1ZGVzIiwibWF0Y2giLCJmaWxlTG9jYXRpb24iLCJmaWxlMiIsInBhY2thZ2VQYXRoIiwic3RhdCIsInN0YXRzIiwiXyIsImlzTmlsIiwiaXRlbSIsInRpbWUiLCJtdGltZSIsImdldFRpbWUiLCJfZ2V0VGltZSIsInBhY2thZ2VzIiwibGlzdFBhY2thZ2VzQ29uZiIsIm1hcCIsInBrZyIsInJlbW92ZSIsImdldCIsIkVycm9yIiwicGtnTmFtZSIsInNwbGljZSIsImVycm9yIiwibWtkaXJwIiwic3luYyIsIndyaXRlRmlsZVN5bmMiLCJnZXRQYWNrYWdlU3RvcmFnZSIsInBhY2thZ2VOYW1lIiwicGFja2FnZUFjY2VzcyIsImdldE1hdGNoZWRQYWNrYWdlc1NwZWMiLCJfZ2V0TG9jYWxTdG9yYWdlUGF0aCIsInVuZGVmaW5lZCIsImlzU3RyaW5nIiwiZGVidWciLCJwYWNrYWdlU3RvcmFnZVBhdGgiLCJMb2NhbERyaXZlciIsImdsb2JhbENvbmZpZ1N0b3JhZ2UiLCJkYkdlblBhdGgiLCJkYk5hbWUiLCJzaW5vcGlhZGJQYXRoIiwiZXhpc3RzU3luYyIsImVtcHR5RGF0YWJhc2UiLCJkYiIsImNvZGUiLCJub1N1Y2hGaWxlIiwibWVzc2FnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUVBOztBQUNBOzs7Ozs7OztBQUlBLE1BQU1BLGtCQUEwQixHQUFHLGtCQUFuQztBQUNBLE1BQU1DLE9BQWUsR0FBRyxvQkFBeEI7QUFFQTs7OztBQUdBLE1BQU1DLGFBQU4sQ0FBa0Q7QUFPaEQ7Ozs7QUFJQUMsRUFBQUEsV0FBVyxDQUFDQyxNQUFELEVBQWlCQyxNQUFqQixFQUFpQztBQUFBOztBQUFBOztBQUFBOztBQUFBOztBQUFBOztBQUMxQyxTQUFLRCxNQUFMLEdBQWNBLE1BQWQ7QUFDQSxTQUFLRSxJQUFMLEdBQVksS0FBS0MsaUJBQUwsQ0FBdUJILE1BQXZCLENBQVo7QUFDQSxTQUFLQyxNQUFMLEdBQWNBLE1BQWQ7QUFDQSxTQUFLRyxNQUFMLEdBQWMsS0FBZDtBQUNBLFNBQUtDLElBQUwsR0FBWSxLQUFLQyxtQkFBTCxFQUFaOztBQUNBLFNBQUtDLEtBQUw7QUFDRDs7QUFFREMsRUFBQUEsU0FBUyxHQUFpQjtBQUN4QixXQUFPQyxPQUFPLENBQUNDLE9BQVIsQ0FBZ0IsS0FBS0wsSUFBTCxDQUFVTSxNQUExQixDQUFQO0FBQ0Q7O0FBRURDLEVBQUFBLFNBQVMsQ0FBQ0QsTUFBRCxFQUErQjtBQUN0QyxXQUFPLElBQUlGLE9BQUosQ0FBWSxDQUFDQyxPQUFELEVBQVVHLE1BQVYsS0FBcUI7QUFDdEMsV0FBS1IsSUFBTCxDQUFVTSxNQUFWLEdBQW1CQSxN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LGFBQU9BLGFBQVA7QUFDRDs7QUFFRCxXQUFPRixTQUFTLENBQUMxRixPQUFELENBQWhCO0FBQ0Q7QUFFRDs7Ozs7OztBQUtBUyxFQUFBQSxtQkFBbUIsR0FBaUI7QUFDbEMsVUFBTVcsSUFBaUIsR0FBRyxFQUExQjtBQUNBLFVBQU0wRSxhQUFhLEdBQUc7QUFBRTFFLE1BQUFBLElBQUY7QUFBUU4sTUFBQUEsTUFBTSxFQUFFO0FBQWhCLEtBQXRCOztBQUVBLFFBQUk7QUFDRixZQUFNaUYsRUFBRSxHQUFHLG1DQUFvQixLQUFLMUYsSUFBekIsRUFBK0IsS0FBS0QsTUFBcEMsQ0FBWDtBQUVBLGFBQU8yRixFQUFQO0FBQ0QsS0FKRCxDQUlFLE9BQU85QyxHQUFQLEVBQVk7QUFDWjtBQUNBO0FBQ0EsVUFBSUEsR0FBRyxDQUFDK0MsSUFBSixLQUFhQyxtQkFBakIsRUFBNkI7QUFDM0IsYUFBSzFGLE1BQUwsR0FBYyxJQUFkO0FBQ0EsYUFBS0gsTUFBTCxDQUFZdUUsS0FBWixDQUFrQiwrRUFBbEIsRUFBb0csY0FBYSxLQUFLdEUsSUFBSyxRQUFPNEMsR0FBRyxDQUFDaUQsT0FBUSxFQUE5STtBQUNEOztBQUVELGFBQU9KLGFBQVA7QUFDRDtBQUNGOztBQW5TK0M7O2VBc1NuQzdGLGEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBQYXRoIGZyb20gJ3BhdGgnO1xuLy8gJEZsb3dGaXhNZVxuaW1wb3J0IGFzeW5jIGZyb20gJ2FzeW5jJztcbmltcG9ydCBta2RpcnAgZnJvbSAnbWtkaXJwJztcblxuaW1wb3J0IExvY2FsRHJpdmVyLCB7IG5vU3VjaEZpbGUgfSBmcm9tICcuL2xvY2FsLWZzJztcbmltcG9ydCB7IGxvYWRQcml2YXRlUGFja2FnZXMgfSBmcm9tICcuL3BrZy11dGlscyc7XG5cbmltcG9ydCB7IElQYWNrYWdlU3RvcmFnZSwgSVBsdWdpblN0b3JhZ2UsIFN0b3JhZ2VMaXN0LCBMb2NhbFN0b3JhZ2UsIExvZ2dlciwgQ29uZmlnLCBDYWxsYmFjaywgUGFja2FnZUFjY2VzcyB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuXG5jb25zdCBERVBSRUNBVEVEX0RCX05BTUU6IHN0cmluZyA9ICcuc2lub3BpYS1kYi5qc29uJztcbmNvbnN0IERCX05BTUU6IHN0cmluZyA9ICcudmVyZGFjY2lvLWRiLmpzb24nO1xuXG4vKipcbiAqIEhhbmRsZSBsb2NhbCBkYXRhYmFzZS5cbiAqL1xuY2xhc3MgTG9jYWxEYXRhYmFzZSBpbXBsZW1lbnRzIElQbHVnaW5TdG9yYWdlPHt9PiB7XG4gIHBhdGg6IHN0cmluZztcbiAgbG9nZ2VyOiBMb2dnZXI7XG4gIGRhdGE6IExvY2FsU3RvcmFnZTtcbiAgY29uZmlnOiBDb25maWc7XG4gIGxvY2tlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogTG9hZCBhbiBwYXJzZSB0aGUgbG9jYWwganNvbiBkYXRhYmFzZS5cbiAgICogQHBhcmFtIHsqfSBwYXRoIHRoZSBkYXRhYmFzZSBwYXRoXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb25maWc6IENvbmZpZywgbG9nZ2VyOiBMb2dnZXIpIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLnBhdGggPSB0aGlzLl9idWlsZFN0b3JhZ2VQYXRoKGNvbmZpZyk7XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XG4gICAgdGhpcy5sb2NrZWQgPSBmYWxzZTtcbiAgICB0aGlzLmRhdGEgPSB0aGlzLl9mZXRjaExvY2FsUGFja2FnZXMoKTtcbiAgICB0aGlzLl9zeW5jKCk7XG4gIH1cblxuICBnZXRTZWNyZXQoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuZGF0YS5zZWNyZXQpO1xuICB9XG5cbiAgc2V0U2VjcmV0KHNlY3JldDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5kYXRhLnNlY3JldCA9IHNlY3JldDtcbiAgICAgIHJlc29sdmUodGhpcy5fc3luYygpKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgZWxlbWVudC5cbiAgICogQHBhcmFtIHsqfSBuYW1lXG4gICAqIEByZXR1cm4ge0Vycm9yfCp9XG4gICAqL1xuICBhZGQobmFtZTogc3RyaW5nLCBjYjogQ2FsbGJhY2spIHtcbiAgICBpZiAodGhpcy5kYXRhLmxpc3QuaW5kZXhPZihuYW1lKSA9PT0gLTEpIHtcbiAgICAgIHRoaXMuZGF0YS5saXN0LnB1c2gobmFtZSk7XG4gICAgICBjYih0aGlzLl9zeW5jKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYihudWxsKTtcbiAgICB9XG4gIH1cblxuICBzZWFyY2gob25QYWNrYWdlOiBDYWxsYmFjaywgb25FbmQ6IENhbGxiYWNrLCB2YWxpZGF0ZU5hbWU6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHN0b3JhZ2VzID0gdGhpcy5fZ2V0Q3VzdG9tUGFja2FnZUxvY2FsU3RvcmFnZXMoKTtcbiAgICB0aGlzLmxvZ2dlci50cmFjZShgbG9jYWwtc3RvcmFnZTogW3NlYXJjaF06ICR7SlNPTi5zdHJpbmdpZnkoc3RvcmFnZXMpfWApO1xuICAgIGNvbnN0IGJhc2UgPSBQYXRoLmRpcm5hbWUodGhpcy5jb25maWcuc2VsZl9wYXRoKTtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBjb25zdCBzdG9yYWdlS2V5cyA9IE9iamVjdC5rZXlzKHN0b3JhZ2VzKTtcbiAgICB0aGlzLmxvZ2dlci50cmFjZShgbG9jYWwtc3RvcmFnZTogW3NlYXJjaF0gYmFzZTogJHtiYXNlfSBrZXlzICR7c3RvcmFnZUtleXN9YCk7XG5cbiAgICBhc3luYy5lYWNoU2VyaWVzKFxuICAgICAgc3RvcmFnZUtleXMsXG4gICAgICBhc3luYyBmdW5jdGlvbihzdG9yYWdlLCBjYikge1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHN0b3JhZ2VLZXlzLmluZGV4T2Yoc3RvcmFnZSk7XG4gICAgICAgIGNvbnN0IGJhc2UyID0gUGF0aC5qb2luKHBvc2l0aW9uICE9PSAwID8gc3RvcmFnZUtleXNbMF0gOiAnJyk7XG4gICAgICAgIGNvbnN0IHN0b3JhZ2VQYXRoOiBzdHJpbmcgPSBQYXRoLnJlc29sdmUoYmFzZSwgYmFzZTIsIHN0b3JhZ2UpO1xuICAgICAgICBzZWxmLmxvZ2dlci50cmFjZSh7IHN0b3JhZ2VQYXRoLCBzdG9yYWdlIH0sICdsb2NhbC1zdG9yYWdlOiBbc2VhcmNoXSBzZWFyY2ggcGF0aDogQHtzdG9yYWdlUGF0aH0gOiBAe3N0b3JhZ2V9Jyk7XG4gICAgICAgIGZzLnJlYWRkaXIoc3RvcmFnZVBhdGgsIChlcnIsIGZpbGVzKSA9PiB7XG4gICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIGNiKGVycik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYXN5bmMuZWFjaFNlcmllcyhcbiAgICAgICAgICAgIGZpbGVzLFxuICAgICAgICAgICAgZnVuY3Rpb24oZmlsZSwgY2IpIHtcbiAgICAgICAgICAgICAgc2VsZi5sb2dnZXIudHJhY2UoeyBmaWxlIH0sICdsb2NhbC1zdG9yYWdlOiBbc2VhcmNoXSBzZWFyY2ggZmlsZSBwYXRoOiBAe2ZpbGV9Jyk7XG4gICAgICAgICAgICAgIGlmIChzdG9yYWdlS2V5cy5pbmNsdWRlcyhmaWxlICkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2IoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgaWYgKGZpbGUubWF0Y2goL15ALykpIHtcbiAgICAgICAgICAgICAgICAvLyBzY29wZWRcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlTG9jYXRpb24gPSBQYXRoLnJlc29sdmUoYmFzZSwgc3RvcmFnZSwgZmlsZSk7XG4gICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIudHJhY2UoeyBmaWxlTG9jYXRpb24gfSwgJ2xvY2FsLXN0b3JhZ2U6IFtzZWFyY2hdIHNlYXJjaCBzY29wZWQgZmlsZSBsb2NhdGlvbjogQHtmaWxlTG9jYXRpb259Jyk7XG4gICAgICAgICAgICAgICAgZnMucmVhZGRpcihmaWxlTG9jYXRpb24sIGZ1bmN0aW9uKGVyciwgZmlsZXMpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNiKGVycik7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGFzeW5jLmVhY2hTZXJpZXMoXG4gICAgICAgICAgICAgICAgICAgIGZpbGVzLCAoZmlsZTIsIGNiKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRlTmFtZShmaWxlMikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhY2thZ2VQYXRoID0gUGF0aC5yZXNvbHZlKGJhc2UsIHN0b3JhZ2UsIGZpbGUsIGZpbGUyKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgZnMuc3RhdChwYWNrYWdlUGF0aCwgKGVyciwgc3RhdHMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF8uaXNOaWwoZXJyKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2IoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGAke2ZpbGV9LyR7ZmlsZTJ9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBwYWNrYWdlUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lOiBzdGF0cy5tdGltZS5nZXRUaW1lKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25QYWNrYWdlKGl0ZW0sIGNiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYigpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY2JcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsaWRhdGVOYW1lKGZpbGUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmFzZTIgPSBQYXRoLmpvaW4ocG9zaXRpb24gIT09IDAgPyBzdG9yYWdlS2V5c1swXSA6ICcnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYWNrYWdlUGF0aCA9IFBhdGgucmVzb2x2ZShiYXNlLCBiYXNlMiwgc3RvcmFnZSwgZmlsZSk7XG4gICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIudHJhY2UoeyBwYWNrYWdlUGF0aCB9LCAnbG9jYWwtc3RvcmFnZTogW3NlYXJjaF0gc2VhcmNoIGZpbGUgbG9jYXRpb246IEB7cGFja2FnZVBhdGh9Jyk7XG4gICAgICAgICAgICAgICAgZnMuc3RhdChwYWNrYWdlUGF0aCwgKGVyciwgc3RhdHMpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChfLmlzTmlsKGVycikgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYihlcnIpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgb25QYWNrYWdlKFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgbmFtZTogZmlsZSxcbiAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBwYWNrYWdlUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICB0aW1lOiBzZWxmLl9nZXRUaW1lKHN0YXRzLm10aW1lLmdldFRpbWUoKSwgc3RhdHMubXRpbWUpXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGNiXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNiKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjYlxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIG9uRW5kXG4gICAgKTtcbiAgfVxuXG4gIF9nZXRUaW1lKHRpbWU6IG51bWJlciwgbXRpbWU6IERhdGUpIHtcbiAgICByZXR1cm4gdGltZSA/IHRpbWUgOiBtdGltZTtcbiAgfVxuXG4gIF9nZXRDdXN0b21QYWNrYWdlTG9jYWxTdG9yYWdlcygpIHtcbiAgICBjb25zdCBzdG9yYWdlcyA9IHt9O1xuXG4gICAgLy8gYWRkIGN1c3RvbSBzdG9yYWdlIGlmIGV4aXN0XG4gICAgaWYgKHRoaXMuY29uZmlnLnN0b3JhZ2UpIHtcbiAgICAgIHN0b3JhZ2VzW3RoaXMuY29uZmlnLnN0b3JhZ2VdID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCB7IHBhY2thZ2VzIH0gPSB0aGlzLmNvbmZpZztcblxuICAgIGlmIChwYWNrYWdlcykge1xuICAgICAgY29uc3QgbGlzdFBhY2thZ2VzQ29uZiA9IE9iamVjdC5rZXlzKHBhY2thZ2VzIHx8IHt9KTtcblxuICAgICAgbGlzdFBhY2thZ2VzQ29uZi5tYXAocGtnID0+IHtcbiAgICAgICAgY29uc3Qgc3RvcmFnZSA9IHBhY2thZ2VzW3BrZ10uc3RvcmFnZTtcbiAgICAgICAgaWYgKHN0b3JhZ2UpIHtcbiAgICAgICAgICBzdG9yYWdlc1tzdG9yYWdlXSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RvcmFnZXM7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGFuIGVsZW1lbnQgZnJvbSB0aGUgZGF0YWJhc2UuXG4gICAqIEBwYXJhbSB7Kn0gbmFtZVxuICAgKiBAcmV0dXJuIHtFcnJvcnwqfVxuICAgKi9cbiAgcmVtb3ZlKG5hbWU6IHN0cmluZywgY2I6IENhbGxiYWNrKSB7XG4gICAgdGhpcy5nZXQoKGVyciwgZGF0YSkgPT4ge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICBjYihuZXcgRXJyb3IoJ2Vycm9yIG9uIGdldCcpKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcGtnTmFtZSA9IGRhdGEuaW5kZXhPZihuYW1lKTtcbiAgICAgIGlmIChwa2dOYW1lICE9PSAtMSkge1xuICAgICAgICB0aGlzLmRhdGEubGlzdC5zcGxpY2UocGtnTmFtZSwgMSk7XG4gICAgICB9XG5cbiAgICAgIGNiKHRoaXMuX3N5bmMoKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFsbCBkYXRhYmFzZSBlbGVtZW50cy5cbiAgICogQHJldHVybiB7QXJyYXl9XG4gICAqL1xuICBnZXQoY2I6IENhbGxiYWNrKSB7XG4gICAgY2IobnVsbCwgdGhpcy5kYXRhLmxpc3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN5bmNyb25pemUge2NyZWF0ZX0gZGF0YWJhc2Ugd2hldGhlciBkb2VzIG5vdCBleGlzdC5cbiAgICogQHJldHVybiB7RXJyb3J8Kn1cbiAgICovXG4gIF9zeW5jKCkge1xuICAgIGlmICh0aGlzLmxvY2tlZCkge1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0RhdGFiYXNlIGlzIGxvY2tlZCwgcGxlYXNlIGNoZWNrIGVycm9yIG1lc3NhZ2UgcHJpbnRlZCBkdXJpbmcgc3RhcnR1cCB0byBwcmV2ZW50IGRhdGEgbG9zcy4nKTtcbiAgICAgIHJldHVybiBuZXcgRXJyb3IoJ1ZlcmRhY2NpbyBkYXRhYmFzZSBpcyBsb2NrZWQsIHBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvciB0byBjaGVja291dCBsb2dzIGR1cmluZyB2ZXJkYWNjaW8gc3RhcnR1cC4nKTtcbiAgICB9XG4gICAgLy8gVXNlcyBzeW5jIHRvIHByZXZlbnQgdWdseSByYWNlIGNvbmRpdGlvblxuICAgIHRyeSB7XG4gICAgICBta2RpcnAuc3luYyhQYXRoLmRpcm5hbWUodGhpcy5wYXRoKSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBwZXJoYXBzIGEgbG9nZ2VyIGluc3RhbmNlP1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGZzLndyaXRlRmlsZVN5bmModGhpcy5wYXRoLCBKU09OLnN0cmluZ2lmeSh0aGlzLmRhdGEpKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIGVycjtcbiAgICB9XG4gIH1cblxuICBnZXRQYWNrYWdlU3RvcmFnZShwYWNrYWdlTmFtZTogc3RyaW5nKTogSVBhY2thZ2VTdG9yYWdlIHtcbiAgICBjb25zdCBwYWNrYWdlQWNjZXNzID0gdGhpcy5jb25maWcuZ2V0TWF0Y2hlZFBhY2thZ2VzU3BlYyhwYWNrYWdlTmFtZSk7XG5cbiAgICBjb25zdCBwYWNrYWdlUGF0aDogc3RyaW5nID0gdGhpcy5fZ2V0TG9jYWxTdG9yYWdlUGF0aChwYWNrYWdlQWNjZXNzID8gcGFja2FnZUFjY2Vzcy5zdG9yYWdlOiAgdW5kZWZpbmVkKTtcblxuICAgIGlmIChfLmlzU3RyaW5nKHBhY2thZ2VQYXRoKSA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKHsgbmFtZTogcGFja2FnZU5hbWUgfSwgJ3RoaXMgcGFja2FnZSBoYXMgbm8gc3RvcmFnZSBkZWZpbmVkOiBAe25hbWV9Jyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGFja2FnZVN0b3JhZ2VQYXRoOiBzdHJpbmcgPSBQYXRoLmpvaW4oUGF0aC5yZXNvbHZlKFBhdGguZGlybmFtZSh0aGlzLmNvbmZpZy5zZWxmX3BhdGggfHwgJycpLCBwYWNrYWdlUGF0aCksIHBhY2thZ2VOYW1lKTtcblxuICAgIHJldHVybiBuZXcgTG9jYWxEcml2ZXIocGFja2FnZVN0b3JhZ2VQYXRoLCB0aGlzLmxvZ2dlcik7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZ5IHRoZSByaWdodCBsb2NhbCBzdG9yYWdlIGxvY2F0aW9uLlxuICAgKiBAcGFyYW0ge1N0cmluZ30gcGF0aFxuICAgKiBAcmV0dXJuIHtTdHJpbmd9XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfZ2V0TG9jYWxTdG9yYWdlUGF0aChzdG9yYWdlOiBzdHJpbmcgfCB2b2lkKTogc3RyaW5nIHtcbiAgICBjb25zdCBnbG9iYWxDb25maWdTdG9yYWdlID0gdGhpcy5jb25maWcgPyB0aGlzLmNvbmZpZy5zdG9yYWdlIDogdW5kZWZpbmVkO1xuICAgIGlmIChfLmlzTmlsKGdsb2JhbENvbmZpZ1N0b3JhZ2UpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dsb2JhbCBzdG9yYWdlIGlzIHJlcXVpcmVkIGZvciB0aGlzIHBsdWdpbicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoXy5pc05pbChzdG9yYWdlKSA9PT0gZmFsc2UgJiYgXy5pc1N0cmluZyhzdG9yYWdlKSkge1xuICAgICAgICByZXR1cm4gUGF0aC5qb2luKGdsb2JhbENvbmZpZ1N0b3JhZ2UgYXMgc3RyaW5nICwgc3RvcmFnZSBhcyBzdHJpbmcpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZ2xvYmFsQ29uZmlnU3RvcmFnZSBhcyBzdHJpbmc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIHRoZSBsb2NhbCBkYXRhYmFzZSBwYXRoLlxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZmlnXG4gICAqIEByZXR1cm4ge3N0cmluZ3xTdHJpbmd8Kn1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9idWlsZFN0b3JhZ2VQYXRoKGNvbmZpZzogQ29uZmlnKSB7XG4gICAgY29uc3QgZGJHZW5QYXRoID0gZnVuY3Rpb24oZGJOYW1lOiBzdHJpbmcpIHtcbiAgICAgIHJldHVybiBQYXRoLmpvaW4oUGF0aC5yZXNvbHZlKFBhdGguZGlybmFtZShjb25maWcuc2VsZl9wYXRoIHx8ICcnKSwgY29uZmlnLnN0b3JhZ2UgYXMgc3RyaW5nLCBkYk5hbWUpKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgc2lub3BpYWRiUGF0aDogc3RyaW5nID0gZGJHZW5QYXRoKERFUFJFQ0FURURfREJfTkFNRSk7XG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoc2lub3BpYWRiUGF0aCkpIHtcbiAgICAgIHJldHVybiBzaW5vcGlhZGJQYXRoO1xuICAgIH1cblxuICAgIHJldHVybiBkYkdlblBhdGgoREJfTkFNRSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggbG9jYWwgcGFja2FnZXMuXG4gICAqIEBwcml2YXRlXG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIF9mZXRjaExvY2FsUGFja2FnZXMoKTogTG9jYWxTdG9yYWdlIHtcbiAgICBjb25zdCBsaXN0OiBTdG9yYWdlTGlzdCA9IFtdO1xuICAgIGNvbnN0IGVtcHR5RGF0YWJhc2UgPSB7IGxpc3QsIHNlY3JldDogJycgfTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYiA9IGxvYWRQcml2YXRlUGFja2FnZXModGhpcy5wYXRoLCB0aGlzLmxvZ2dlcik7XG5cbiAgICAgIHJldHVybiBkYjtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIHJlYWRGaWxlU3luYyBpcyBwbGF0Zm9ybSBzcGVjaWZpYywgbWFjT1MsIExpbnV4IGFuZCBXaW5kb3dzIHRocm93biBhbiBlcnJvclxuICAgICAgLy8gT25seSByZWNyZWF0ZSBpZiBmaWxlIG5vdCBmb3VuZCB0byBwcmV2ZW50IGRhdGEgbG9zc1xuICAgICAgaWYgKGVyci5jb2RlICE9PSBub1N1Y2hGaWxlKSB7XG4gICAgICAgIHRoaXMubG9ja2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byByZWFkIHBhY2thZ2UgZGF0YWJhc2UgZmlsZSwgcGxlYXNlIGNoZWNrIHRoZSBlcnJvciBwcmludGVkIGJlbG93OlxcbicsIGBGaWxlIFBhdGg6ICR7dGhpcy5wYXRofVxcblxcbiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZW1wdHlEYXRhYmFzZTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTG9jYWxEYXRhYmFzZTtcbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2NhbC1kYXRhYmFzZS50cyJdLCJuYW1lcyI6WyJERVBSRUNBVEVEX0RCX05BTUUiLCJEQl9OQU1FIiwiTG9jYWxEYXRhYmFzZSIsImNvbnN0cnVjdG9yIiwiY29uZmlnIiwibG9nZ2VyIiwicGF0aCIsIl9idWlsZFN0b3JhZ2VQYXRoIiwibG9ja2VkIiwiZGF0YSIsIl9mZXRjaExvY2FsUGFja2FnZXMiLCJfc3luYyIsImdldFNlY3JldCIsIlByb21pc2UiLCJyZXNvbHZlIiwic2VjcmV0Iiwic2V0U2VjcmV0IiwicmVqZWN0IiwiYWRkIiwibmFtZSIsImNiIiwibGlzdCIsImluZGV4T2YiLCJwdXNoIiwic2VhcmNoIiwib25QYWNrYWdlIiwib25FbmQiLCJ2YWxpZGF0ZU5hbWUiLCJzdG9yYWdlcyIsIl9nZXRDdXN0b21QYWNrYWdlTG9jYWxTdG9yYWdlcyIsInRyYWNlIiwiSlNPTiIsInN0cmluZ2lmeSIsImJhc2UiLCJQYXRoIiwiZGlybmFtZSIsInNlbGZfcGF0aCIsInNlbGYiLCJzdG9yYWdlS2V5cyIsIk9iamVjdCIsImtleXMiLCJhc3luYyIsImVhY2hTZXJpZXMiLCJzdG9yYWdlIiwicG9zaXRpb24iLCJiYXNlMiIsImpvaW4iLCJzdG9yYWdlUGF0aCIsImZzIiwicmVhZGRpciIsImVyciIsImZpbGVzIiwiZmlsZSIsImluY2x1ZGVzIiwibWF0Y2giLCJmaWxlTG9jYXRpb24iLCJmaWxlMiIsInBhY2thZ2VQYXRoIiwic3RhdCIsInN0YXRzIiwiXyIsImlzTmlsIiwiaXRlbSIsInRpbWUiLCJtdGltZSIsImdldFRpbWUiLCJfZ2V0VGltZSIsInBhY2thZ2VzIiwibGlzdFBhY2thZ2VzQ29uZiIsIm1hcCIsInBrZyIsInJlbW92ZSIsImdldCIsIkVycm9yIiwicGtnTmFtZSIsInNwbGljZSIsImVycm9yIiwibWtkaXJwIiwic3luYyIsIndyaXRlRmlsZVN5bmMiLCJnZXRQYWNrYWdlU3RvcmFnZSIsInBhY2thZ2VOYW1lIiwicGFja2FnZUFjY2VzcyIsImdldE1hdGNoZWRQYWNrYWdlc1NwZWMiLCJfZ2V0TG9jYWxTdG9yYWdlUGF0aCIsInVuZGVmaW5lZCIsImlzU3RyaW5nIiwiZGVidWciLCJwYWNrYWdlU3RvcmFnZVBhdGgiLCJMb2NhbERyaXZlciIsImdsb2JhbENvbmZpZ1N0b3JhZ2UiLCJkYkdlblBhdGgiLCJkYk5hbWUiLCJzaW5vcGlhZGJQYXRoIiwiZXhpc3RzU3luYyIsImVtcHR5RGF0YWJhc2UiLCJkYiIsImNvZGUiLCJub1N1Y2hGaWxlIiwibWVzc2FnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUVBOztBQUNBOzs7Ozs7OztBQUlBLE1BQU1BLGtCQUEwQixHQUFHLGtCQUFuQztBQUNBLE1BQU1DLE9BQWUsR0FBRyxvQkFBeEI7QUFFQTs7OztBQUdBLE1BQU1DLGFBQU4sQ0FBa0Q7QUFPaEQ7Ozs7QUFJQUMsRUFBQUEsV0FBVyxDQUFDQyxNQUFELEVBQWlCQyxNQUFqQixFQUFpQztBQUFBOztBQUFBOztBQUFBOztBQUFBOztBQUFBOztBQUMxQyxTQUFLRCxNQUFMLEdBQWNBLE1BQWQ7QUFDQSxTQUFLRSxJQUFMLEdBQVksS0FBS0MsaUJBQUwsQ0FBdUJILE1BQXZCLENBQVo7QUFDQSxTQUFLQyxNQUFMLEdBQWNBLE1BQWQ7QUFDQSxTQUFLRyxNQUFMLEdBQWMsS0FBZDtBQUNBLFNBQUtDLElBQUwsR0FBWSxLQUFLQyxtQkFBTCxFQUFaOztBQUNBLFNBQUtDLEtBQUw7QUFDRDs7QUFFREMsRUFBQUEsU0FBUyxHQUFpQjtBQUN4QixXQUFPQyxPQUFPLENBQUNDLE9BQVIsQ0FBZ0IsS0FBS0wsSUFBTCxDQUFVTSxNQUExQixDQUFQO0FBQ0Q7O0FBRURDLEVBQUFBLFNBQVMsQ0FBQ0QsTUFBRCxFQUErQjtBQUN0QyxXQUFPLElBQUlGLE9BQUosQ0FBWSxDQUFDQyxPQUFELEVBQVVHLE1BQVYsS0FBcUI7QUFDdEMsV0FBS1IsSUFBTCxDQUFVTSxNQUFWLEdBQW1CQSxN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YUFBT0EsYUFBUDtBQUNEOztBQUVELFdBQU9GLFNBQVMsQ0FBQzFGLE9BQUQsQ0FBaEI7QUFDRDtBQUVEOzs7Ozs7O0FBS0FTLEVBQUFBLG1CQUFtQixHQUFpQjtBQUNsQyxVQUFNVyxJQUFpQixHQUFHLEVBQTFCO0FBQ0EsVUFBTTBFLGFBQWEsR0FBRztBQUFFMUUsTUFBQUEsSUFBRjtBQUFRTixNQUFBQSxNQUFNLEVBQUU7QUFBaEIsS0FBdEI7O0FBRUEsUUFBSTtBQUNGLFlBQU1pRixFQUFFLEdBQUcsbUNBQW9CLEtBQUsxRixJQUF6QixFQUErQixLQUFLRCxNQUFwQyxDQUFYO0FBRUEsYUFBTzJGLEVBQVA7QUFDRCxLQUpELENBSUUsT0FBTzlDLEdBQVAsRUFBWTtBQUNaO0FBQ0E7QUFDQSxVQUFJQSxHQUFHLENBQUMrQyxJQUFKLEtBQWFDLG1CQUFqQixFQUE2QjtBQUMzQixhQUFLMUYsTUFBTCxHQUFjLElBQWQ7QUFDQSxhQUFLSCxNQUFMLENBQVl1RSxLQUFaLENBQWtCLCtFQUFsQixFQUFvRyxjQUFhLEtBQUt0RSxJQUFLLFFBQU80QyxHQUFHLENBQUNpRCxPQUFRLEVBQTlJO0FBQ0Q7O0FBRUQsYUFBT0osYUFBUDtBQUNEO0FBQ0Y7O0FBbFMrQzs7ZUFxU25DN0YsYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IFBhdGggZnJvbSAncGF0aCc7XG4vLyAkRmxvd0ZpeE1lXG5pbXBvcnQgYXN5bmMgZnJvbSAnYXN5bmMnO1xuaW1wb3J0IG1rZGlycCBmcm9tICdta2RpcnAnO1xuXG5pbXBvcnQgTG9jYWxEcml2ZXIsIHsgbm9TdWNoRmlsZSB9IGZyb20gJy4vbG9jYWwtZnMnO1xuaW1wb3J0IHsgbG9hZFByaXZhdGVQYWNrYWdlcyB9IGZyb20gJy4vcGtnLXV0aWxzJztcblxuaW1wb3J0IHsgSVBhY2thZ2VTdG9yYWdlLCBJUGx1Z2luU3RvcmFnZSwgU3RvcmFnZUxpc3QsIExvY2FsU3RvcmFnZSwgTG9nZ2VyLCBDb25maWcsIENhbGxiYWNrLCBQYWNrYWdlQWNjZXNzIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5cbmNvbnN0IERFUFJFQ0FURURfREJfTkFNRTogc3RyaW5nID0gJy5zaW5vcGlhLWRiLmpzb24nO1xuY29uc3QgREJfTkFNRTogc3RyaW5nID0gJy52ZXJkYWNjaW8tZGIuanNvbic7XG5cbi8qKlxuICogSGFuZGxlIGxvY2FsIGRhdGFiYXNlLlxuICovXG5jbGFzcyBMb2NhbERhdGFiYXNlIGltcGxlbWVudHMgSVBsdWdpblN0b3JhZ2U8e30+IHtcbiAgcGF0aDogc3RyaW5nO1xuICBsb2dnZXI6IExvZ2dlcjtcbiAgZGF0YTogTG9jYWxTdG9yYWdlO1xuICBjb25maWc6IENvbmZpZztcbiAgbG9ja2VkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBMb2FkIGFuIHBhcnNlIHRoZSBsb2NhbCBqc29uIGRhdGFiYXNlLlxuICAgKiBAcGFyYW0geyp9IHBhdGggdGhlIGRhdGFiYXNlIHBhdGhcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogQ29uZmlnLCBsb2dnZXI6IExvZ2dlcikge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMucGF0aCA9IHRoaXMuX2J1aWxkU3RvcmFnZVBhdGgoY29uZmlnKTtcbiAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlcjtcbiAgICB0aGlzLmxvY2tlZCA9IGZhbHNlO1xuICAgIHRoaXMuZGF0YSA9IHRoaXMuX2ZldGNoTG9jYWxQYWNrYWdlcygpO1xuICAgIHRoaXMuX3N5bmMoKTtcbiAgfVxuXG4gIGdldFNlY3JldCgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5kYXRhLnNlY3JldCk7XG4gIH1cblxuICBzZXRTZWNyZXQoc2VjcmV0OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmRhdGEuc2VjcmV0ID0gc2VjcmV0O1xuICAgICAgcmVzb2x2ZSh0aGlzLl9zeW5jKCkpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIG5ldyBlbGVtZW50LlxuICAgKiBAcGFyYW0geyp9IG5hbWVcbiAgICogQHJldHVybiB7RXJyb3J8Kn1cbiAgICovXG4gIGFkZChuYW1lOiBzdHJpbmcsIGNiOiBDYWxsYmFjaykge1xuICAgIGlmICh0aGlzLmRhdGEubGlzdC5pbmRleE9mKG5hbWUpID09PSAtMSkge1xuICAgICAgdGhpcy5kYXRhLmxpc3QucHVzaChuYW1lKTtcbiAgICAgIGNiKHRoaXMuX3N5bmMoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNiKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHNlYXJjaChvblBhY2thZ2U6IENhbGxiYWNrLCBvbkVuZDogQ2FsbGJhY2ssIHZhbGlkYXRlTmFtZTogYW55KTogdm9pZCB7XG4gICAgY29uc3Qgc3RvcmFnZXMgPSB0aGlzLl9nZXRDdXN0b21QYWNrYWdlTG9jYWxTdG9yYWdlcygpO1xuICAgIHRoaXMubG9nZ2VyLnRyYWNlKGBsb2NhbC1zdG9yYWdlOiBbc2VhcmNoXTogJHtKU09OLnN0cmluZ2lmeShzdG9yYWdlcyl9YCk7XG4gICAgY29uc3QgYmFzZSA9IFBhdGguZGlybmFtZSh0aGlzLmNvbmZpZy5zZWxmX3BhdGgpO1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGNvbnN0IHN0b3JhZ2VLZXlzID0gT2JqZWN0LmtleXMoc3RvcmFnZXMpO1xuICAgIHRoaXMubG9nZ2VyLnRyYWNlKGBsb2NhbC1zdG9yYWdlOiBbc2VhcmNoXSBiYXNlOiAke2Jhc2V9IGtleXMgJHtzdG9yYWdlS2V5c31gKTtcblxuICAgIGFzeW5jLmVhY2hTZXJpZXMoXG4gICAgICBzdG9yYWdlS2V5cywgZnVuY3Rpb24oc3RvcmFnZSwgY2IpIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSBzdG9yYWdlS2V5cy5pbmRleE9mKHN0b3JhZ2UpO1xuICAgICAgICBjb25zdCBiYXNlMiA9IFBhdGguam9pbihwb3NpdGlvbiAhPT0gMCA/IHN0b3JhZ2VLZXlzWzBdIDogJycpO1xuICAgICAgICBjb25zdCBzdG9yYWdlUGF0aDogc3RyaW5nID0gUGF0aC5yZXNvbHZlKGJhc2UsIGJhc2UyLCBzdG9yYWdlKTtcbiAgICAgICAgc2VsZi5sb2dnZXIudHJhY2UoeyBzdG9yYWdlUGF0aCwgc3RvcmFnZSB9LCAnbG9jYWwtc3RvcmFnZTogW3NlYXJjaF0gc2VhcmNoIHBhdGg6IEB7c3RvcmFnZVBhdGh9IDogQHtzdG9yYWdlfScpO1xuICAgICAgICBmcy5yZWFkZGlyKHN0b3JhZ2VQYXRoLCAoZXJyLCBmaWxlcykgPT4ge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiBjYihlcnIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGFzeW5jLmVhY2hTZXJpZXMoXG4gICAgICAgICAgICBmaWxlcyxcbiAgICAgICAgICAgIGZ1bmN0aW9uKGZpbGUsIGNiKSB7XG4gICAgICAgICAgICAgIHNlbGYubG9nZ2VyLnRyYWNlKHsgZmlsZSB9LCAnbG9jYWwtc3RvcmFnZTogW3NlYXJjaF0gc2VhcmNoIGZpbGUgcGF0aDogQHtmaWxlfScpO1xuICAgICAgICAgICAgICBpZiAoc3RvcmFnZUtleXMuaW5jbHVkZXMoZmlsZSApKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNiKCk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoZmlsZS5tYXRjaCgvXkAvKSkge1xuICAgICAgICAgICAgICAgIC8vIHNjb3BlZFxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVMb2NhdGlvbiA9IFBhdGgucmVzb2x2ZShiYXNlLCBzdG9yYWdlLCBmaWxlKTtcbiAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci50cmFjZSh7IGZpbGVMb2NhdGlvbiB9LCAnbG9jYWwtc3RvcmFnZTogW3NlYXJjaF0gc2VhcmNoIHNjb3BlZCBmaWxlIGxvY2F0aW9uOiBAe2ZpbGVMb2NhdGlvbn0nKTtcbiAgICAgICAgICAgICAgICBmcy5yZWFkZGlyKGZpbGVMb2NhdGlvbiwgZnVuY3Rpb24oZXJyLCBmaWxlcykge1xuICAgICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2IoZXJyKTtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgYXN5bmMuZWFjaFNlcmllcyhcbiAgICAgICAgICAgICAgICAgICAgZmlsZXMsIChmaWxlMiwgY2IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGVOYW1lKGZpbGUyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFja2FnZVBhdGggPSBQYXRoLnJlc29sdmUoYmFzZSwgc3RvcmFnZSwgZmlsZSwgZmlsZTIpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBmcy5zdGF0KHBhY2thZ2VQYXRoLCAoZXJyLCBzdGF0cykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXy5pc05pbChlcnIpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYihlcnIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYCR7ZmlsZX0vJHtmaWxlMn1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IHBhY2thZ2VQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWU6IHN0YXRzLm10aW1lLmdldFRpbWUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvblBhY2thZ2UoaXRlbSwgY2IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNiKCk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBjYlxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWxpZGF0ZU5hbWUoZmlsZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBiYXNlMiA9IFBhdGguam9pbihwb3NpdGlvbiAhPT0gMCA/IHN0b3JhZ2VLZXlzWzBdIDogJycpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhY2thZ2VQYXRoID0gUGF0aC5yZXNvbHZlKGJhc2UsIGJhc2UyLCBzdG9yYWdlLCBmaWxlKTtcbiAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci50cmFjZSh7IHBhY2thZ2VQYXRoIH0sICdsb2NhbC1zdG9yYWdlOiBbc2VhcmNoXSBzZWFyY2ggZmlsZSBsb2NhdGlvbjogQHtwYWNrYWdlUGF0aH0nKTtcbiAgICAgICAgICAgICAgICBmcy5zdGF0KHBhY2thZ2VQYXRoLCAoZXJyLCBzdGF0cykgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKF8uaXNOaWwoZXJyKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNiKGVycik7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBvblBhY2thZ2UoXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBmaWxlLFxuICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IHBhY2thZ2VQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgIHRpbWU6IHNlbGYuX2dldFRpbWUoc3RhdHMubXRpbWUuZ2V0VGltZSgpLCBzdGF0cy5tdGltZSlcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY2JcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2IoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNiXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgb25FbmRcbiAgICApO1xuICB9XG5cbiAgX2dldFRpbWUodGltZTogbnVtYmVyLCBtdGltZTogRGF0ZSkge1xuICAgIHJldHVybiB0aW1lID8gdGltZSA6IG10aW1lO1xuICB9XG5cbiAgX2dldEN1c3RvbVBhY2thZ2VMb2NhbFN0b3JhZ2VzKCkge1xuICAgIGNvbnN0IHN0b3JhZ2VzID0ge307XG5cbiAgICAvLyBhZGQgY3VzdG9tIHN0b3JhZ2UgaWYgZXhpc3RcbiAgICBpZiAodGhpcy5jb25maWcuc3RvcmFnZSkge1xuICAgICAgc3RvcmFnZXNbdGhpcy5jb25maWcuc3RvcmFnZV0gPSB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHsgcGFja2FnZXMgfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgaWYgKHBhY2thZ2VzKSB7XG4gICAgICBjb25zdCBsaXN0UGFja2FnZXNDb25mID0gT2JqZWN0LmtleXMocGFja2FnZXMgfHwge30pO1xuXG4gICAgICBsaXN0UGFja2FnZXNDb25mLm1hcChwa2cgPT4ge1xuICAgICAgICBjb25zdCBzdG9yYWdlID0gcGFja2FnZXNbcGtnXS5zdG9yYWdlO1xuICAgICAgICBpZiAoc3RvcmFnZSkge1xuICAgICAgICAgIHN0b3JhZ2VzW3N0b3JhZ2VdID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBzdG9yYWdlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYW4gZWxlbWVudCBmcm9tIHRoZSBkYXRhYmFzZS5cbiAgICogQHBhcmFtIHsqfSBuYW1lXG4gICAqIEByZXR1cm4ge0Vycm9yfCp9XG4gICAqL1xuICByZW1vdmUobmFtZTogc3RyaW5nLCBjYjogQ2FsbGJhY2spIHtcbiAgICB0aGlzLmdldCgoZXJyLCBkYXRhKSA9PiB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIGNiKG5ldyBFcnJvcignZXJyb3Igb24gZ2V0JykpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwa2dOYW1lID0gZGF0YS5pbmRleE9mKG5hbWUpO1xuICAgICAgaWYgKHBrZ05hbWUgIT09IC0xKSB7XG4gICAgICAgIHRoaXMuZGF0YS5saXN0LnNwbGljZShwa2dOYW1lLCAxKTtcbiAgICAgIH1cblxuICAgICAgY2IodGhpcy5fc3luYygpKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYWxsIGRhdGFiYXNlIGVsZW1lbnRzLlxuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIGdldChjYjogQ2FsbGJhY2spIHtcbiAgICBjYihudWxsLCB0aGlzLmRhdGEubGlzdCk7XG4gIH1cblxuICAvKipcbiAgICogU3luY3Jvbml6ZSB7Y3JlYXRlfSBkYXRhYmFzZSB3aGV0aGVyIGRvZXMgbm90IGV4aXN0LlxuICAgKiBAcmV0dXJuIHtFcnJvcnwqfVxuICAgKi9cbiAgX3N5bmMoKSB7XG4gICAgaWYgKHRoaXMubG9ja2VkKSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcignRGF0YWJhc2UgaXMgbG9ja2VkLCBwbGVhc2UgY2hlY2sgZXJyb3IgbWVzc2FnZSBwcmludGVkIGR1cmluZyBzdGFydHVwIHRvIHByZXZlbnQgZGF0YSBsb3NzLicpO1xuICAgICAgcmV0dXJuIG5ldyBFcnJvcignVmVyZGFjY2lvIGRhdGFiYXNlIGlzIGxvY2tlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yIHRvIGNoZWNrb3V0IGxvZ3MgZHVyaW5nIHZlcmRhY2NpbyBzdGFydHVwLicpO1xuICAgIH1cbiAgICAvLyBVc2VzIHN5bmMgdG8gcHJldmVudCB1Z2x5IHJhY2UgY29uZGl0aW9uXG4gICAgdHJ5IHtcbiAgICAgIG1rZGlycC5zeW5jKFBhdGguZGlybmFtZSh0aGlzLnBhdGgpKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIHBlcmhhcHMgYSBsb2dnZXIgaW5zdGFuY2U/XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgZnMud3JpdGVGaWxlU3luYyh0aGlzLnBhdGgsIEpTT04uc3RyaW5naWZ5KHRoaXMuZGF0YSkpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gZXJyO1xuICAgIH1cbiAgfVxuXG4gIGdldFBhY2thZ2VTdG9yYWdlKHBhY2thZ2VOYW1lOiBzdHJpbmcpOiBJUGFja2FnZVN0b3JhZ2Uge1xuICAgIGNvbnN0IHBhY2thZ2VBY2Nlc3MgPSB0aGlzLmNvbmZpZy5nZXRNYXRjaGVkUGFja2FnZXNTcGVjKHBhY2thZ2VOYW1lKTtcblxuICAgIGNvbnN0IHBhY2thZ2VQYXRoOiBzdHJpbmcgPSB0aGlzLl9nZXRMb2NhbFN0b3JhZ2VQYXRoKHBhY2thZ2VBY2Nlc3MgPyBwYWNrYWdlQWNjZXNzLnN0b3JhZ2U6ICB1bmRlZmluZWQpO1xuXG4gICAgaWYgKF8uaXNTdHJpbmcocGFja2FnZVBhdGgpID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoeyBuYW1lOiBwYWNrYWdlTmFtZSB9LCAndGhpcyBwYWNrYWdlIGhhcyBubyBzdG9yYWdlIGRlZmluZWQ6IEB7bmFtZX0nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYWNrYWdlU3RvcmFnZVBhdGg6IHN0cmluZyA9IFBhdGguam9pbihQYXRoLnJlc29sdmUoUGF0aC5kaXJuYW1lKHRoaXMuY29uZmlnLnNlbGZfcGF0aCB8fCAnJyksIHBhY2thZ2VQYXRoKSwgcGFja2FnZU5hbWUpO1xuXG4gICAgcmV0dXJuIG5ldyBMb2NhbERyaXZlcihwYWNrYWdlU3RvcmFnZVBhdGgsIHRoaXMubG9nZ2VyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZnkgdGhlIHJpZ2h0IGxvY2FsIHN0b3JhZ2UgbG9jYXRpb24uXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoXG4gICAqIEByZXR1cm4ge1N0cmluZ31cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9nZXRMb2NhbFN0b3JhZ2VQYXRoKHN0b3JhZ2U6IHN0cmluZyB8IHZvaWQpOiBzdHJpbmcge1xuICAgIGNvbnN0IGdsb2JhbENvbmZpZ1N0b3JhZ2UgPSB0aGlzLmNvbmZpZyA/IHRoaXMuY29uZmlnLnN0b3JhZ2UgOiB1bmRlZmluZWQ7XG4gICAgaWYgKF8uaXNOaWwoZ2xvYmFsQ29uZmlnU3RvcmFnZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZ2xvYmFsIHN0b3JhZ2UgaXMgcmVxdWlyZWQgZm9yIHRoaXMgcGx1Z2luJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChfLmlzTmlsKHN0b3JhZ2UpID09PSBmYWxzZSAmJiBfLmlzU3RyaW5nKHN0b3JhZ2UpKSB7XG4gICAgICAgIHJldHVybiBQYXRoLmpvaW4oZ2xvYmFsQ29uZmlnU3RvcmFnZSBhcyBzdHJpbmcgLCBzdG9yYWdlIGFzIHN0cmluZyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBnbG9iYWxDb25maWdTdG9yYWdlIGFzIHN0cmluZztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgdGhlIGxvY2FsIGRhdGFiYXNlIHBhdGguXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWdcbiAgICogQHJldHVybiB7c3RyaW5nfFN0cmluZ3wqfVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2J1aWxkU3RvcmFnZVBhdGgoY29uZmlnOiBDb25maWcpIHtcbiAgICBjb25zdCBkYkdlblBhdGggPSBmdW5jdGlvbihkYk5hbWU6IHN0cmluZykge1xuICAgICAgcmV0dXJuIFBhdGguam9pbihQYXRoLnJlc29sdmUoUGF0aC5kaXJuYW1lKGNvbmZpZy5zZWxmX3BhdGggfHwgJycpLCBjb25maWcuc3RvcmFnZSBhcyBzdHJpbmcsIGRiTmFtZSkpO1xuICAgIH07XG5cbiAgICBjb25zdCBzaW5vcGlhZGJQYXRoOiBzdHJpbmcgPSBkYkdlblBhdGgoREVQUkVDQVRFRF9EQl9OQU1FKTtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhzaW5vcGlhZGJQYXRoKSkge1xuICAgICAgcmV0dXJuIHNpbm9waWFkYlBhdGg7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRiR2VuUGF0aChEQl9OQU1FKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBsb2NhbCBwYWNrYWdlcy5cbiAgICogQHByaXZhdGVcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgX2ZldGNoTG9jYWxQYWNrYWdlcygpOiBMb2NhbFN0b3JhZ2Uge1xuICAgIGNvbnN0IGxpc3Q6IFN0b3JhZ2VMaXN0ID0gW107XG4gICAgY29uc3QgZW1wdHlEYXRhYmFzZSA9IHsgbGlzdCwgc2VjcmV0OiAnJyB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRiID0gbG9hZFByaXZhdGVQYWNrYWdlcyh0aGlzLnBhdGgsIHRoaXMubG9nZ2VyKTtcblxuICAgICAgcmV0dXJuIGRiO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gcmVhZEZpbGVTeW5jIGlzIHBsYXRmb3JtIHNwZWNpZmljLCBtYWNPUywgTGludXggYW5kIFdpbmRvd3MgdGhyb3duIGFuIGVycm9yXG4gICAgICAvLyBPbmx5IHJlY3JlYXRlIGlmIGZpbGUgbm90IGZvdW5kIHRvIHByZXZlbnQgZGF0YSBsb3NzXG4gICAgICBpZiAoZXJyLmNvZGUgIT09IG5vU3VjaEZpbGUpIHtcbiAgICAgICAgdGhpcy5sb2NrZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignRmFpbGVkIHRvIHJlYWQgcGFja2FnZSBkYXRhYmFzZSBmaWxlLCBwbGVhc2UgY2hlY2sgdGhlIGVycm9yIHByaW50ZWQgYmVsb3c6XFxuJywgYEZpbGUgUGF0aDogJHt0aGlzLnBhdGh9XFxuXFxuICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlbXB0eURhdGFiYXNlO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBMb2NhbERhdGFiYXNlO1xuIl19
{
"name": "@verdaccio/local-storage",
"version": "2.0.0",
"version": "2.1.0",
"description": "local storage implementation",

@@ -68,3 +68,3 @@ "main": "lib/index.js",

"engines": {
"node": ">=6.12.0"
"node": ">=8"
},

@@ -71,0 +71,0 @@ "author": "Juan Picado <juanpicado19@gmail.com>",

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc