@verdaccio/local-storage 10.0.0 → 10.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -17,4 +17,4 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
17
17
 
18
18
  var _default = _localDatabase.default;
19
19
  exports.default = _default;
20
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6WyJMb2NhbERhdGFiYXNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7ZUFJZUEsc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9jYWxEYXRhYmFzZSBmcm9tICcuL2xvY2FsLWRhdGFiYXNlJztcblxuZXhwb3J0IHsgTG9jYWxEYXRhYmFzZSB9O1xuXG5leHBvcnQgZGVmYXVsdCBMb2NhbERhdGFiYXNlO1xuIl19
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"names":["LocalDatabase"],"mappings":";;;;;;;;;;;;;AAAA;;;;eAIeA,sB","sourcesContent":["import LocalDatabase from './local-database';\n\nexport { LocalDatabase };\n\nexport default LocalDatabase;\n"],"file":"index.js"}
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ require("core-js/modules/esnext.weak-map.delete-all.js");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
@@ -25,9 +27,9 @@ var _pkgUtils = require("./pkg-utils");
25
27
 
26
28
  var _token = _interopRequireDefault(require("./token"));
27
29
 
28
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
30
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
29
31
 
30
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
32
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
31
33
 
32
34
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
35
 
@@ -87,7 +89,7 @@ class LocalDatabase extends _token.default {
87
89
 
88
90
  debug(`search custom local packages: %o`, JSON.stringify(storages));
89
91
 
90
- const base = _path.default.dirname(this.config.config_path);
92
+ const base = _path.default.dirname(this.config.self_path);
91
93
 
92
94
  const self = this;
93
95
  const storageKeys = Object.keys(storages);
@@ -218,7 +220,7 @@ class LocalDatabase extends _token.default {
218
220
  return;
219
221
  }
220
222
 
221
- const packageStoragePath = _path.default.join(_path.default.resolve(_path.default.dirname(this.config.config_path || ''), packagePath), packageName);
223
+ const packageStoragePath = _path.default.join(_path.default.resolve(_path.default.dirname(this.config.self_path || ''), packagePath), packageName);
222
224
 
223
225
  debug('storage absolute path: ', packageStoragePath);
224
226
  return new _localFs.default(packageStoragePath, this.logger);
@@ -326,8 +328,13 @@ class LocalDatabase extends _token.default {
326
328
  const sinopiadbPath = this._dbGenPath(DEPRECATED_DB_NAME, config);
327
329
 
328
330
  try {
329
- _fs.default.accessSync(sinopiadbPath, _fs.default.constants.F_OK);
331
+ _fs.default.accessSync(sinopiadbPath, _fs.default.constants.F_OK); // @ts-ignore
332
+
330
333
 
334
+ process.emitWarning('Database name deprecated!', {
335
+ code: 'VERCODE01',
336
+ detail: `Please rename database name from ${DEPRECATED_DB_NAME} to ${DB_NAME}`
337
+ });
331
338
  return sinopiadbPath;
332
339
  } catch (err) {
333
340
  if (err.code === _localFs.noSuchFile) {
@@ -369,4 +376,4 @@ class LocalDatabase extends _token.default {
369
376
 
370
377
  var _default = LocalDatabase;
371
378
  exports.default = _default;
372
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2NhbC1kYXRhYmFzZS50cyJdLCJuYW1lcyI6WyJERVBSRUNBVEVEX0RCX05BTUUiLCJEQl9OQU1FIiwiZGVidWciLCJMb2NhbERhdGFiYXNlIiwiVG9rZW5BY3Rpb25zIiwiY29uc3RydWN0b3IiLCJjb25maWciLCJsb2dnZXIiLCJwYXRoIiwiX2J1aWxkU3RvcmFnZVBhdGgiLCJsb2NrZWQiLCJkYXRhIiwiX2ZldGNoTG9jYWxQYWNrYWdlcyIsIl9zeW5jIiwiZ2V0U2VjcmV0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJzZWNyZXQiLCJzZXRTZWNyZXQiLCJhZGQiLCJuYW1lIiwiY2IiLCJsaXN0IiwiaW5kZXhPZiIsInB1c2giLCJzZWFyY2giLCJvblBhY2thZ2UiLCJvbkVuZCIsInZhbGlkYXRlTmFtZSIsInN0b3JhZ2VzIiwiX2dldEN1c3RvbVBhY2thZ2VMb2NhbFN0b3JhZ2VzIiwiSlNPTiIsInN0cmluZ2lmeSIsImJhc2UiLCJQYXRoIiwiZGlybmFtZSIsImNvbmZpZ19wYXRoIiwic2VsZiIsInN0b3JhZ2VLZXlzIiwiT2JqZWN0Iiwia2V5cyIsImFzeW5jIiwiZWFjaFNlcmllcyIsInN0b3JhZ2UiLCJwb3NpdGlvbiIsImJhc2UyIiwiam9pbiIsInN0b3JhZ2VQYXRoIiwiZnMiLCJyZWFkZGlyIiwiZXJyIiwiZmlsZXMiLCJmaWxlIiwiaW5jbHVkZXMiLCJtYXRjaCIsImZpbGVMb2NhdGlvbiIsImZpbGUyIiwicGFja2FnZVBhdGgiLCJzdGF0Iiwic3RhdHMiLCJfIiwiaXNOaWwiLCJpdGVtIiwidGltZSIsIm10aW1lIiwiZ2V0VGltZSIsInJlbW92ZSIsImdldCIsImVycm9yIiwicGtnTmFtZSIsInNwbGljZSIsInRvdGFsSXRlbXMiLCJsZW5ndGgiLCJnZXRQYWNrYWdlU3RvcmFnZSIsInBhY2thZ2VOYW1lIiwicGFja2FnZUFjY2VzcyIsImdldE1hdGNoZWRQYWNrYWdlc1NwZWMiLCJfZ2V0TG9jYWxTdG9yYWdlUGF0aCIsInVuZGVmaW5lZCIsImlzU3RyaW5nIiwicGFja2FnZVN0b3JhZ2VQYXRoIiwiTG9jYWxEcml2ZXIiLCJjbGVhbiIsInBhY2thZ2VzIiwibGlzdFBhY2thZ2VzQ29uZiIsIm1hcCIsInBrZyIsIkVycm9yIiwiZm9sZGVyTmFtZSIsIm1rZGlycCIsInN5bmMiLCJ3cml0ZUZpbGVTeW5jIiwiZ2xvYmFsQ29uZmlnU3RvcmFnZSIsInNpbm9waWFkYlBhdGgiLCJfZGJHZW5QYXRoIiwiYWNjZXNzU3luYyIsImNvbnN0YW50cyIsIkZfT0siLCJjb2RlIiwibm9TdWNoRmlsZSIsImVtcHR5RGF0YWJhc2UiLCJtZXNzYWdlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBRUE7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7QUFFQSxNQUFNQSxrQkFBa0IsR0FBRyxrQkFBM0I7QUFDQSxNQUFNQyxPQUFPLEdBQUcsb0JBQWhCO0FBRUEsTUFBTUMsS0FBSyxHQUFHLG9CQUFXLGdDQUFYLENBQWQ7O0FBRUEsTUFBTUMsYUFBTixTQUE0QkMsY0FBNUIsQ0FBdUU7QUFPOURDLEVBQUFBLFdBQVAsQ0FBbUJDLE1BQW5CLEVBQW1DQyxNQUFuQyxFQUFtRDtBQUNqRCxVQUFNRCxNQUFOOztBQURpRDs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFFakQsU0FBS0EsTUFBTCxHQUFjQSxNQUFkO0FBQ0EsU0FBS0UsSUFBTCxHQUFZLEtBQUtDLGlCQUFMLENBQXVCSCxNQUF2QixDQUFaO0FBQ0EsU0FBS0MsTUFBTCxHQUFjQSxNQUFkO0FBQ0EsU0FBS0csTUFBTCxHQUFjLEtBQWQ7QUFDQSxTQUFLQyxJQUFMLEdBQVksS0FBS0MsbUJBQUwsRUFBWjs7QUFDQSxTQUFLQyxLQUFMO0FBQ0Q7O0FBRU1DLEVBQUFBLFNBQVAsR0FBb0M7QUFDbEMsV0FBT0MsT0FBTyxDQUFDQyxPQUFSLENBQWdCLEtBQUtMLElBQUwsQ0FBVU0sTUFBMUIsQ0FBUDtBQUNEOztBQUVNQyxFQUFB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QXpCLEVBQStCLEtBQUtELE1BQXBDLENBQVA7QUFDRCxLQUZELENBRUUsT0FBTzJDLEdBQVAsRUFBWTtBQUNaO0FBQ0E7QUFDQSxVQUFJQSxHQUFHLENBQUNnRCxJQUFKLEtBQWFDLG1CQUFqQixFQUE2QjtBQUMzQixhQUFLekYsTUFBTCxHQUFjLElBQWQ7QUFDQSxhQUFLSCxNQUFMLENBQVk2RCxLQUFaLENBQ0UsK0VBREYsRUFFRyxjQUFhLEtBQUs1RCxJQUFLLFFBQU8wQyxHQUFHLENBQUNtRCxPQUFRLEVBRjdDO0FBSUQ7O0FBRUQsYUFBT0QsYUFBUDtBQUNEO0FBQ0Y7O0FBL1RvRTs7ZUFrVXhEakcsYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgUGF0aCBmcm9tICdwYXRoJztcblxuaW1wb3J0IGJ1aWxkRGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBhc3luYyBmcm9tICdhc3luYyc7XG5pbXBvcnQgbWtkaXJwIGZyb20gJ21rZGlycCc7XG5pbXBvcnQgeyBDYWxsYmFjaywgQ29uZmlnLCBJUGFja2FnZVN0b3JhZ2UsIElQbHVnaW5TdG9yYWdlLCBMb2NhbFN0b3JhZ2UsIExvZ2dlciwgU3RvcmFnZUxpc3QgfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcbmltcG9ydCB7IGdldEludGVybmFsRXJyb3IgfSBmcm9tICdAdmVyZGFjY2lvL2NvbW1vbnMtYXBpJztcblxuaW1wb3J0IExvY2FsRHJpdmVyLCB7IG5vU3VjaEZpbGUgfSBmcm9tICcuL2xvY2FsLWZzJztcbmltcG9ydCB7IGxvYWRQcml2YXRlUGFja2FnZXMgfSBmcm9tICcuL3BrZy11dGlscyc7XG5pbXBvcnQgVG9rZW5BY3Rpb25zIGZyb20gJy4vdG9rZW4nO1xuXG5jb25zdCBERVBSRUNBVEVEX0RCX05BTUUgPSAnLnNpbm9waWEtZGIuanNvbic7XG5jb25zdCBEQl9OQU1FID0gJy52ZXJkYWNjaW8tZGIuanNvbic7XG5cbmNvbnN0IGRlYnVnID0gYnVpbGREZWJ1ZygndmVyZGFjY2lvOnBsdWdpbjpsb2NhbC1zdG9yYWdlJyk7XG5cbmNsYXNzIExvY2FsRGF0YWJhc2UgZXh0ZW5kcyBUb2tlbkFjdGlvbnMgaW1wbGVtZW50cyBJUGx1Z2luU3RvcmFnZTx7fT4ge1xuICBwdWJsaWMgcGF0aDogc3RyaW5nO1xuICBwdWJsaWMgbG9nZ2VyOiBMb2dnZXI7XG4gIHB1YmxpYyBkYXRhOiBMb2NhbFN0b3JhZ2U7XG4gIHB1YmxpYyBjb25maWc6IENvbmZpZztcbiAgcHVibGljIGxvY2tlZDogYm9vbGVhbjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoY29uZmlnOiBDb25maWcsIGxvZ2dlcjogTG9nZ2VyKSB7XG4gICAgc3VwZXIoY29uZmlnKTtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLnBhdGggPSB0aGlzLl9idWlsZFN0b3JhZ2VQYXRoKGNvbmZpZyk7XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XG4gICAgdGhpcy5sb2NrZWQgPSBmYWxzZTtcbiAgICB0aGlzLmRhdGEgPSB0aGlzLl9mZXRjaExvY2FsUGFja2FnZXMoKTtcbiAgICB0aGlzLl9zeW5jKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2VjcmV0KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmRhdGEuc2VjcmV0KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRTZWNyZXQoc2VjcmV0OiBzdHJpbmcpOiBQcm9taXNlPEVycm9yIHwgbnVsbD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSk6IHZvaWQgPT4ge1xuICAgICAgdGhpcy5kYXRhLnNlY3JldCA9IHNlY3JldDtcblxuICAgICAgcmVzb2x2ZSh0aGlzLl9zeW5jKCkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZChuYW1lOiBzdHJpbmcsIGNiOiBDYWxsYmFjayk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGEubGlzdC5pbmRleE9mKG5hbWUpID09PSAtMSkge1xuICAgICAgdGhpcy5kYXRhLmxpc3QucHVzaChuYW1lKTtcblxuICAgICAgZGVidWcoJ3RoZSBwcml2YXRlIHBhY2thZ2UgJW8gaGFzIGJlZW4gYWRkZWQnLCBuYW1lKTtcbiAgICAgIGNiKHRoaXMuX3N5bmMoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlYnVnKCd0aGUgcHJpdmF0ZSBwYWNrYWdlICVvIHdhcyBub3QgYWRkZWQnLCBuYW1lKTtcbiAgICAgIGNiKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZWFyY2gob25QYWNrYWdlOiBDYWxsYmFjaywgb25FbmQ6IENhbGxiYWNrLCB2YWxpZGF0ZU5hbWU6IChuYW1lOiBzdHJpbmcpID0+IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBzdG9yYWdlcyA9IHRoaXMuX2dldEN1c3RvbVBhY2thZ2VMb2NhbFN0b3JhZ2VzKCk7XG4gICAgZGVidWcoYHNlYXJjaCBjdXN0b20gbG9jYWwgcGFja2FnZXM6ICVvYCwgSlNPTi5zdHJpbmdpZnkoc3RvcmFnZXMpKTtcbiAgICBjb25zdCBiYXNlID0gUGF0aC5kaXJuYW1lKHRoaXMuY29uZmlnLmNvbmZpZ19wYXRoKTtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBjb25zdCBzdG9yYWdlS2V5cyA9IE9iamVjdC5rZXlzKHN0b3JhZ2VzKTtcbiAgICBkZWJ1Zyhgc2VhcmNoIGJhc2U6ICVvIGtleXM6ICVvYCwgYmFzZSwgc3RvcmFnZUtleXMpO1xuXG4gICAgYXN5bmMuZWFjaFNlcmllcyhcbiAgICAgIHN0b3JhZ2VLZXlzLFxuICAgICAgZnVuY3Rpb24oc3RvcmFnZSwgY2IpIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSBzdG9yYWdlS2V5cy5pbmRleE9mKHN0b3JhZ2UpO1xuICAgICAgICBjb25zdCBiYXNlMiA9IFBhdGguam9pbihwb3NpdGlvbiAhPT0gMCA/IHN0b3JhZ2VLZXlzWzBdIDogJycpO1xuICAgICAgICBjb25zdCBzdG9yYWdlUGF0aDogc3RyaW5nID0gUGF0aC5yZXNvbHZlKGJhc2UsIGJhc2UyLCBzdG9yYWdlKTtcbiAgICAgICAgZGVidWcoJ3NlYXJjaCBwYXRoOiAlbyA6ICVvJywgc3RvcmFnZVBhdGgsIHN0b3JhZ2UpO1xuICAgICAgICBmcy5yZWFkZGlyKHN0b3JhZ2VQYXRoLCAoZXJyLCBmaWxlcykgPT4ge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiBjYihlcnIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGFzeW5jLmVhY2hTZXJpZXMoXG4gICAgICAgICAgICBmaWxlcyxcbiAgICAgICAgICAgIGZ1bmN0aW9uKGZpbGUsIGNiKSB7XG4gICAgICAgICAgICAgIGRlYnVnKCdsb2NhbC1zdG9yYWdlOiBbc2VhcmNoXSBzZWFyY2ggZmlsZSBwYXRoOiAlbycsIGZpbGUpO1xuICAgICAgICAgICAgICBpZiAoc3RvcmFnZUtleXMuaW5jbHVkZXMoZmlsZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2IoKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChmaWxlLm1hdGNoKC9eQC8pKSB7XG4gICAgICAgICAgICAgICAgLy8gc2NvcGVkXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZUxvY2F0aW9uID0gUGF0aC5yZXNvbHZlKGJhc2UsIHN0b3JhZ2UsIGZpbGUpO1xuICAgICAgICAgICAgICAgIGRlYnVnKCdzZWFyY2ggc2NvcGVkIGZpbGUgbG9jYXRpb246ICVvJywgZmlsZUxvY2F0aW9uKTtcbiAgICAgICAgICAgICAgICBmcy5yZWFkZGlyKGZpbGVMb2NhdGlvbiwgZnVuY3Rpb24oZXJyLCBmaWxlcykge1xuICAgICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2IoZXJyKTtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgYXN5bmMuZWFjaFNlcmllcyhcbiAgICAgICAgICAgICAgICAgICAgZmlsZXMsXG4gICAgICAgICAgICAgICAgICAgIChmaWxlMiwgY2IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGVOYW1lKGZpbGUyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFja2FnZVBhdGggPSBQYXRoLnJlc29sdmUoYmFzZSwgc3RvcmFnZSwgZmlsZSwgZmlsZTIpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBmcy5zdGF0KHBhY2thZ2VQYXRoLCAoZXJyLCBzdGF0cykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXy5pc05pbChlcnIpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYihlcnIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYCR7ZmlsZX0vJHtmaWxlMn1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IHBhY2thZ2VQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWU6IHN0YXRzLm10aW1lLmdldFRpbWUoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25QYWNrYWdlKGl0ZW0sIGNiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYigpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY2JcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsaWRhdGVOYW1lKGZpbGUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmFzZTIgPSBQYXRoLmpvaW4ocG9zaXRpb24gIT09IDAgPyBzdG9yYWdlS2V5c1swXSA6ICcnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYWNrYWdlUGF0aCA9IFBhdGgucmVzb2x2ZShiYXNlLCBiYXNlMiwgc3RvcmFnZSwgZmlsZSk7XG4gICAgICAgICAgICAgICAgZGVidWcoJ3NlYXJjaCBmaWxlIGxvY2F0aW9uOiAlbycsIHBhY2thZ2VQYXRoKTtcbiAgICAgICAgICAgICAgICBmcy5zdGF0KHBhY2thZ2VQYXRoLCAoZXJyLCBzdGF0cykgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKF8uaXNOaWwoZXJyKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNiKGVycik7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBvblBhY2thZ2UoXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBmaWxlLFxuICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IHBhY2thZ2VQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgIHRpbWU6IHNlbGYuZ2V0VGltZShzdGF0cy5tdGltZS5nZXRUaW1lKCksIHN0YXRzLm10aW1lKSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY2JcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2IoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNiXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgb25FbmRcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZShuYW1lOiBzdHJpbmcsIGNiOiBDYWxsYmFjayk6IHZvaWQge1xuICAgIHRoaXMuZ2V0KChlcnIsIGRhdGEpID0+IHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgY2IoZ2V0SW50ZXJuYWxFcnJvcignZXJyb3IgcmVtb3ZlIHByaXZhdGUgcGFja2FnZScpKTtcbiAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoeyBlcnIgfSwgJ1tsb2NhbC1zdG9yYWdlL3JlbW92ZV06IHJlbW92ZSB0aGUgcHJpdmF0ZSBwYWNrYWdlIGhhcyBmYWlsZWQgQHtlcnJ9Jyk7XG4gICAgICAgIGRlYnVnKCdlcnJvciBvbiByZW1vdmUgcGFja2FnZSAlbycsIG5hbWUpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwa2dOYW1lID0gZGF0YS5pbmRleE9mKG5hbWUpO1xuICAgICAgaWYgKHBrZ05hbWUgIT09IC0xKSB7XG4gICAgICAgIHRoaXMuZGF0YS5saXN0LnNwbGljZShwa2dOYW1lLCAxKTtcblxuICAgICAgICBkZWJ1ZygncmVtb3ZlIHBhY2thZ2UgJW8gaGFzIGJlZW4gcmVtb3ZlZCcsIG5hbWUpO1xuICAgICAgfVxuXG4gICAgICBjYih0aGlzLl9zeW5jKCkpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbGwgZGF0YWJhc2UgZWxlbWVudHMuXG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cbiAgcHVibGljIGdldChjYjogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5kYXRhLmxpc3Q7XG4gICAgY29uc3QgdG90YWxJdGVtcyA9IHRoaXMuZGF0YS5saXN0Lmxlbmd0aDtcblxuICAgIGNiKG51bGwsIGxpc3QpO1xuXG4gICAgZGVidWcoJ2dldCBmdWxsIGxpc3Qgb2YgcGFja2FnZXMgKCVvKSBoYXMgYmVlbiBmZXRjaGVkJywgdG90YWxJdGVtcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UGFja2FnZVN0b3JhZ2UocGFja2FnZU5hbWU6IHN0cmluZyk6IElQYWNrYWdlU3RvcmFnZSB7XG4gICAgY29uc3QgcGFja2FnZUFjY2VzcyA9IHRoaXMuY29uZmlnLmdldE1hdGNoZWRQYWNrYWdlc1NwZWMocGFja2FnZU5hbWUpO1xuXG4gICAgY29uc3QgcGFja2FnZVBhdGg6IHN0cmluZyA9IHRoaXMuX2dldExvY2FsU3RvcmFnZVBhdGgocGFja2FnZUFjY2VzcyA/IHBhY2thZ2VBY2Nlc3Muc3RvcmFnZSA6IHVuZGVmaW5lZCk7XG4gICAgZGVidWcoJ3N0b3JhZ2UgcGF0aCBzZWxlY3RlZDogJywgcGFja2FnZVBhdGgpO1xuXG4gICAgaWYgKF8uaXNTdHJpbmcocGFja2FnZVBhdGgpID09PSBmYWxzZSkge1xuICAgICAgZGVidWcoJ3RoZSBwYWNrYWdlICVvIGhhcyBubyBzdG9yYWdlIGRlZmluZWQgJywgcGFja2FnZU5hbWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBhY2thZ2VTdG9yYWdlUGF0aDogc3RyaW5nID0gUGF0aC5qb2luKFxuICAgICAgUGF0aC5yZXNvbHZlKFBhdGguZGlybmFtZSh0aGlzLmNvbmZpZy5jb25maWdfcGF0aCB8fCAnJyksIHBhY2thZ2VQYXRoKSxcbiAgICAgIHBhY2thZ2VOYW1lXG4gICAgKTtcblxuICAgIGRlYnVnKCdzdG9yYWdlIGFic29sdXRlIHBhdGg6ICcsIHBhY2thZ2VTdG9yYWdlUGF0aCk7XG5cbiAgICByZXR1cm4gbmV3IExvY2FsRHJpdmVyKHBhY2thZ2VTdG9yYWdlUGF0aCwgdGhpcy5sb2dnZXIpO1xuICB9XG5cbiAgcHVibGljIGNsZWFuKCk6IHZvaWQge1xuICAgIHRoaXMuX3N5bmMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGltZSh0aW1lOiBudW1iZXIsIG10aW1lOiBEYXRlKTogbnVtYmVyIHwgRGF0ZSB7XG4gICAgcmV0dXJuIHRpbWUgPyB0aW1lIDogbXRpbWU7XG4gIH1cblxuICBwcml2YXRlIF9nZXRDdXN0b21QYWNrYWdlTG9jYWxTdG9yYWdlcygpOiBvYmplY3Qge1xuICAgIGNvbnN0IHN0b3JhZ2VzID0ge307XG5cbiAgICAvLyBhZGQgY3VzdG9tIHN0b3JhZ2UgaWYgZXhpc3RcbiAgICBpZiAodGhpcy5jb25maWcuc3RvcmFnZSkge1xuICAgICAgc3RvcmFnZXNbdGhpcy5jb25maWcuc3RvcmFnZV0gPSB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHsgcGFja2FnZXMgfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgaWYgKHBhY2thZ2VzKSB7XG4gICAgICBjb25zdCBsaXN0UGFja2FnZXNDb25mID0gT2JqZWN0LmtleXMocGFja2FnZXMgfHwge30pO1xuXG4gICAgICBsaXN0UGFja2FnZXNDb25mLm1hcChwa2cgPT4ge1xuICAgICAgICBjb25zdCBzdG9yYWdlID0gcGFja2FnZXNbcGtnXS5zdG9yYWdlO1xuICAgICAgICBpZiAoc3RvcmFnZSkge1xuICAgICAgICAgIHN0b3JhZ2VzW3N0b3JhZ2VdID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBzdG9yYWdlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTeW5jcm9uaXplIHtjcmVhdGV9IGRhdGFiYXNlIHdoZXRoZXIgZG9lcyBub3QgZXhpc3QuXG4gICAqIEByZXR1cm4ge0Vycm9yfCp9XG4gICAqL1xuICBwcml2YXRlIF9zeW5jKCk6IEVycm9yIHwgbnVsbCB7XG4gICAgZGVidWcoJ3N5bmMgZGF0YWJhc2Ugc3RhcnRlZCcpO1xuXG4gICAgaWYgKHRoaXMubG9ja2VkKSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgJ0RhdGFiYXNlIGlzIGxvY2tlZCwgcGxlYXNlIGNoZWNrIGVycm9yIG1lc3NhZ2UgcHJpbnRlZCBkdXJpbmcgc3RhcnR1cCB0byAnICsgJ3ByZXZlbnQgZGF0YSBsb3NzLidcbiAgICAgICk7XG4gICAgICByZXR1cm4gbmV3IEVycm9yKFxuICAgICAgICAnVmVyZGFjY2lvIGRhdGFiYXNlIGlzIGxvY2tlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yIHRvIGNoZWNrb3V0ICcgK1xuICAgICAgICAgICdsb2dzIGR1cmluZyB2ZXJkYWNjaW8gc3RhcnR1cC4nXG4gICAgICApO1xuICAgIH1cbiAgICAvLyBVc2VzIHN5bmMgdG8gcHJldmVudCB1Z2x5IHJhY2UgY29uZGl0aW9uXG4gICAgdHJ5IHtcbiAgICAgIC8vIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL21rZGlycCNta2RpcnBzeW5jZGlyLW9wdHNcbiAgICAgIGNvbnN0IGZvbGRlck5hbWUgPSBQYXRoLmRpcm5hbWUodGhpcy5wYXRoKTtcbiAgICAgIG1rZGlycC5zeW5jKGZvbGRlck5hbWUpO1xuICAgICAgZGVidWcoJ3N5bmMgZm9sZGVyICVvIGNyZWF0ZWQgc3VjY2VlZCcsIGZvbGRlck5hbWUpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZGVidWcoJ3N5bmMgY3JlYXRlIGZvbGRlciBoYXMgZmFpbGVkIHdpdGggZXJyb3I6ICVvJywgZXJyKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKHRoaXMucGF0aCwgSlNPTi5zdHJpbmdpZnkodGhpcy5kYXRhKSk7XG4gICAgICBkZWJ1Zygnc3luYyB3cml0ZSBzdWNjZWVkJyk7XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZGVidWcoJ3N5bmMgZmFpbGVkICVvJywgZXJyKTtcblxuICAgICAgcmV0dXJuIGVycjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZ5IHRoZSByaWdodCBsb2NhbCBzdG9yYWdlIGxvY2F0aW9uLlxuICAgKiBAcGFyYW0ge1N0cmluZ30gcGF0aFxuICAgKiBAcmV0dXJuIHtTdHJpbmd9XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9nZXRMb2NhbFN0b3JhZ2VQYXRoKHN0b3JhZ2U6IHN0cmluZyB8IHZvaWQpOiBzdHJpbmcge1xuICAgIGNvbnN0IGdsb2JhbENvbmZpZ1N0b3JhZ2UgPSB0aGlzLmNvbmZpZyA/IHRoaXMuY29uZmlnLnN0b3JhZ2UgOiB1bmRlZmluZWQ7XG4gICAgaWYgKF8uaXNOaWwoZ2xvYmFsQ29uZmlnU3RvcmFnZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZ2xvYmFsIHN0b3JhZ2UgaXMgcmVxdWlyZWQgZm9yIHRoaXMgcGx1Z2luJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChfLmlzTmlsKHN0b3JhZ2UpID09PSBmYWxzZSAmJiBfLmlzU3RyaW5nKHN0b3JhZ2UpKSB7XG4gICAgICAgIHJldHVybiBQYXRoLmpvaW4oZ2xvYmFsQ29uZmlnU3RvcmFnZSBhcyBzdHJpbmcsIHN0b3JhZ2UgYXMgc3RyaW5nKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGdsb2JhbENvbmZpZ1N0b3JhZ2UgYXMgc3RyaW5nO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCB0aGUgbG9jYWwgZGF0YWJhc2UgcGF0aC5cbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZ1xuICAgKiBAcmV0dXJuIHtzdHJpbmd8U3RyaW5nfCp9XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9idWlsZFN0b3JhZ2VQYXRoKGNvbmZpZzogQ29uZmlnKTogc3RyaW5nIHtcbiAgICBjb25zdCBzaW5vcGlhZGJQYXRoOiBzdHJpbmcgPSB0aGlzLl9kYkdlblBhdGgoREVQUkVDQVRFRF9EQl9OQU1FLCBjb25maWcpO1xuICAgIHRyeSB7XG4gICAgICBmcy5hY2Nlc3NTeW5jKHNpbm9waWFkYlBhdGgsIGZzLmNvbnN0YW50cy5GX09LKTtcbiAgICAgIHJldHVybiBzaW5vcGlhZGJQYXRoO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGVyci5jb2RlID09PSBub1N1Y2hGaWxlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYkdlblBhdGgoREJfTkFNRSwgY29uZmlnKTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBsb2NhbCBwYWNrYWdlcy5cbiAgICogQHByaXZhdGVcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgcHJpdmF0ZSBfZmV0Y2hMb2NhbFBhY2thZ2VzKCk6IExvY2FsU3RvcmFnZSB7XG4gICAgY29uc3QgbGlzdDogU3RvcmFnZUxpc3QgPSBbXTtcbiAgICBjb25zdCBlbXB0eURhdGFiYXNlID0geyBsaXN0LCBzZWNyZXQ6ICcnIH07XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGxvYWRQcml2YXRlUGFja2FnZXModGhpcy5wYXRoLCB0aGlzLmxvZ2dlcik7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyByZWFkRmlsZVN5bmMgaXMgcGxhdGZvcm0gc3BlY2lmaWMsIG1hY09TLCBMaW51eCBhbmQgV2luZG93cyB0aHJvd24gYW4gZXJyb3JcbiAgICAgIC8vIE9ubHkgcmVjcmVhdGUgaWYgZmlsZSBub3QgZm91bmQgdG8gcHJldmVudCBkYXRhIGxvc3NcbiAgICAgIGlmIChlcnIuY29kZSAhPT0gbm9TdWNoRmlsZSkge1xuICAgICAgICB0aGlzLmxvY2tlZCA9IHRydWU7XG4gICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICAgICdGYWlsZWQgdG8gcmVhZCBwYWNrYWdlIGRhdGFiYXNlIGZpbGUsIHBsZWFzZSBjaGVjayB0aGUgZXJyb3IgcHJpbnRlZCBiZWxvdzpcXG4nLFxuICAgICAgICAgIGBGaWxlIFBhdGg6ICR7dGhpcy5wYXRofVxcblxcbiAke2Vyci5tZXNzYWdlfWBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVtcHR5RGF0YWJhc2U7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IExvY2FsRGF0YWJhc2U7XG4iXX0=
379
+ //# sourceMappingURL=local-database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/local-database.ts"],"names":["DEPRECATED_DB_NAME","DB_NAME","debug","LocalDatabase","TokenActions","constructor","config","logger","path","_buildStoragePath","locked","data","_fetchLocalPackages","_sync","getSecret","Promise","resolve","secret","setSecret","add","name","cb","list","indexOf","push","search","onPackage","onEnd","validateName","storages","_getCustomPackageLocalStorages","JSON","stringify","base","Path","dirname","self_path","self","storageKeys","Object","keys","async","eachSeries","storage","position","base2","join","storagePath","fs","readdir","err","files","file","includes","match","fileLocation","file2","packagePath","stat","stats","_","isNil","item","time","mtime","getTime","remove","get","error","pkgName","splice","totalItems","length","getPackageStorage","packageName","packageAccess","getMatchedPackagesSpec","_getLocalStoragePath","undefined","isString","packageStoragePath","LocalDriver","clean","packages","listPackagesConf","map","pkg","Error","folderName","mkdirp","sync","writeFileSync","globalConfigStorage","sinopiadbPath","_dbGenPath","accessSync","constants","F_OK","process","emitWarning","code","detail","noSuchFile","emptyDatabase","message"],"mappings":";;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AAEA;;AAEA;;AACA;;AACA;;;;;;;;;;AAEA,MAAMA,kBAAkB,GAAG,kBAA3B;AACA,MAAMC,OAAO,GAAG,oBAAhB;AAEA,MAAMC,KAAK,GAAG,oBAAW,gCAAX,CAAd;;AAEA,MAAMC,aAAN,SAA4BC,cAA5B,CAAuE;AAO9DC,EAAAA,WAAW,CAACC,MAAD,EAAiBC,MAAjB,EAAiC;AACjD,UAAMD,MAAN;;AADiD;;AAAA;;AAAA;;AAAA;;AAAA;;AAEjD,SAAKA,MAAL,GAAcA,MAAd;AACA,SAAKE,IAAL,GAAY,KAAKC,iBAAL,CAAuBH,MAAvB,CAAZ;AACA,SAAKC,MAAL,GAAcA,MAAd;AACA,SAAKG,MAAL,GAAc,KAAd;AACA,SAAKC,IAAL,GAAY,KAAKC,mBAAL,EAAZ;;AACA,SAAKC,KAAL;AACD;;AAEMC,EAAAA,SAAS,GAAoB;AAClC,WAAOC,OAAO,CAACC,OAAR,CAAgB,KAAKL,IAAL,CAAUM,MAA1B,CAAP;AACD;;AAEMC,EAAAA,SAAS,CAACD,MAAD,EAAwC;AACtD,WAAO,IAAIF,OAAJ,CAAaC,OAAD,IAAmB;AACpC,WAAKL,IAAL,CAAUM,MAAV,GAAmBA,MAAnB;AAEAD,MAAAA,OAAO,CAAC,KAAKH,KAAL,EAAD,CAAP;AACD,KAJM,CAAP;AAKD;;AAEMM,EAAAA,GAAG,CAACC,IAAD,EAAeC,EAAf,EAAmC;AAC3C,QAAI,KAAKV,IAAL,CAAUW,IAAV,CAAeC,OAAf,CAAuBH,IAAvB,MAAiC,CAAC,CAAtC,EAAyC;AACvC,WAAKT,IAAL,CAAUW,IAAV,CAAeE,IAAf,CAAoBJ,IAApB;AAEAlB,MAAAA,KAAK,CAAC,uCAAD,EAA0CkB,IAA1C,CAAL;AACAC,MAAAA,EAAE,CAAC,KAAKR,KAAL,EAAD,CAAF;AACD,KALD,MAKO;AACLX,MAAAA,KAAK,CAAC,sCAAD,EAAyCkB,IAAzC,CAAL;AACAC,MAAAA,EAAE,CAAC,IAAD,CAAF;AACD;AACF;;AAEMI,EAAAA,MAAM,CAACC,SAAD,EAAsBC,KAAtB,EAAuCC,YAAvC,EAAsF;AACjG,UAAMC,QAAQ,GAAG,KAAKC,8BAAL,EAAjB;;AACA5B,IAAAA,KAAK,CAAE,kCAAF,EAAqC6B,IAAI,CAACC,SAAL,CAAeH,QAAf,CAArC,CAAL;;AACA,UAAMI,IAAI,GAAGC,cAAKC,OAAL,CAAa,KAAK7B,MAAL,CAAY8B,SAAzB,CAAb;;AACA,UAAMC,IAAI,GAAG,IAAb;AACA,UAAMC,WAAW,GAAGC,MAAM,CAACC,IAAP,CAAYX,QAAZ,CAApB;AACA3B,IAAAA,KAAK,CAAE,0BAAF,EAA6B+B,IAA7B,EAAmCK,WAAnC,CAAL;;AAEAG,mBAAMC,UAAN,CACEJ,WADF,EAEE,UAASK,OAAT,EAAkBtB,EAAlB,EAAsB;AACpB,YAAMuB,QAAQ,GAAGN,WAAW,CAACf,OAAZ,CAAoBoB,OAApB,CAAjB;;AACA,YAAME,KAAK,GAAGX,cAAKY,IAAL,CAAUF,QAAQ,KAAK,CAAb,GAAiBN,WAAW,CAAC,CAAD,CAA5B,GAAkC,EAA5C,CAAd;;AACA,YAAMS,WAAmB,GAAGb,cAAKlB,OAAL,CAAaiB,IAAb,EAAmBY,KAAnB,EAA0BF,OAA1B,CAA5B;;AACAzC,MAAAA,KAAK,CAAC,sBAAD,EAAyB6C,WAAzB,EAAsCJ,OAAtC,CAAL;;AACAK,kBAAGC,OAAH,CAAWF,WAAX,EAAwB,CAACG,GAAD,EAAMC,KAAN,KAAgB;AACtC,YAAID,GAAJ,EAAS;AACP,iBAAO7B,EAAE,CAAC6B,GAAD,CAAT;AACD;;AAEDT,uBAAMC,UAAN,CACES,KADF,EAEE,UAASC,IAAT,EAAe/B,EAAf,EAAmB;AACjBnB,UAAAA,KAAK,CAAC,8CAAD,EAAiDkD,IAAjD,CAAL;;AACA,cAAId,WAAW,CAACe,QAAZ,CAAqBD,IAArB,CAAJ,EAAgC;AAC9B,mBAAO/B,EAAE,EAAT;AACD;;AAED,cAAI+B,IAAI,CAACE,KAAL,CAAW,IAAX,CAAJ,EAAsB;AACpB;AACA,kBAAMC,YAAY,GAAGrB,cAAKlB,OAAL,CAAaiB,IAAb,EAAmBU,OAAnB,EAA4BS,IAA5B,CAArB;;AACAlD,YAAAA,KAAK,CAAC,iCAAD,EAAoCqD,YAApC,CAAL;;AACAP,wBAAGC,OAAH,CAAWM,YAAX,EAAyB,UAASL,GAAT,EAAcC,KAAd,EAAqB;AAC5C,kBAAID,GAAJ,EAAS;AACP,uBAAO7B,EAAE,CAAC6B,GAAD,CAAT;AACD;;AAEDT,6BAAMC,UAAN,CACES,KADF,EAEE,CAACK,KAAD,EAAQnC,EAAR,KAAe;AACb,oBAAIO,YAAY,CAAC4B,KAAD,CAAhB,EAAyB;AACvB,wBAAMC,WAAW,GAAGvB,cAAKlB,OAAL,CAAaiB,IAAb,EAAmBU,OAAnB,EAA4BS,IAA5B,EAAkCI,KAAlC,CAApB;;AAEAR,8BAAGU,IAAH,CAAQD,WAAR,EAAqB,CAACP,GAAD,EAAMS,KAAN,KAAgB;AACnC,wBAAIC,gBAAEC,KAAF,CAAQX,GAAR,MAAiB,KAArB,EAA4B;AAC1B,6BAAO7B,EAAE,CAAC6B,GAAD,CAAT;AACD;;AACD,0BAAMY,IAAI,GAAG;AACX1C,sBAAAA,IAAI,EAAG,GAAEgC,IAAK,IAAGI,KAAM,EADZ;AAEXhD,sBAAAA,IAAI,EAAEiD,WAFK;AAGXM,sBAAAA,IAAI,EAAEJ,KAAK,CAACK,KAAN,CAAYC,OAAZ;AAHK,qBAAb;AAKAvC,oBAAAA,SAAS,CAACoC,IAAD,EAAOzC,EAAP,CAAT;AACD,mBAVD;AAWD,iBAdD,MAcO;AACLA,kBAAAA,EAAE;AACH;AACF,eApBH,EAqBEA,EArBF;AAuBD,aA5BD;AA6BD,WAjCD,MAiCO,IAAIO,YAAY,CAACwB,IAAD,CAAhB,EAAwB;AAC7B,kBAAMP,KAAK,GAAGX,cAAKY,IAAL,CAAUF,QAAQ,KAAK,CAAb,GAAiBN,WAAW,CAAC,CAAD,CAA5B,GAAkC,EAA5C,CAAd;;AACA,kBAAMmB,WAAW,GAAGvB,cAAKlB,OAAL,CAAaiB,IAAb,EAAmBY,KAAnB,EAA0BF,OAA1B,EAAmCS,IAAnC,CAApB;;AACAlD,YAAAA,KAAK,CAAC,0BAAD,EAA6BuD,WAA7B,CAAL;;AACAT,wBAAGU,IAAH,CAAQD,WAAR,EAAqB,CAACP,GAAD,EAAMS,KAAN,KAAgB;AACnC,kBAAIC,gBAAEC,KAAF,CAAQX,GAAR,MAAiB,KAArB,EAA4B;AAC1B,uBAAO7B,EAAE,CAAC6B,GAAD,CAAT;AACD;;AACDxB,cAAAA,SAAS,CACP;AACEN,gBAAAA,IAAI,EAAEgC,IADR;AAEE5C,gBAAAA,IAAI,EAAEiD,WAFR;AAGEM,gBAAAA,IAAI,EAAE1B,IAAI,CAAC4B,OAAL,CAAaN,KAAK,CAACK,KAAN,CAAYC,OAAZ,EAAb,EAAoCN,KAAK,CAACK,KAA1C;AAHR,eADO,EAMP3C,EANO,CAAT;AAQD,aAZD;AAaD,WAjBM,MAiBA;AACLA,YAAAA,EAAE;AACH;AACF,SA7DH,EA8DEA,EA9DF;AAgED,OArED;AAsED,KA7EH,EA8EE;AACAM,IAAAA,KA/EF;AAiFD;;AAEMuC,EAAAA,MAAM,CAAC9C,IAAD,EAAeC,EAAf,EAAmC;AAC9C,SAAK8C,GAAL,CAAS,CAACjB,GAAD,EAAMvC,IAAN,KAAe;AACtB,UAAIuC,GAAJ,EAAS;AACP7B,QAAAA,EAAE,CAAC,kCAAiB,8BAAjB,CAAD,CAAF;AACA,aAAKd,MAAL,CAAY6D,KAAZ,CAAkB;AAAElB,UAAAA;AAAF,SAAlB,EAA2B,sEAA3B;AACAhD,QAAAA,KAAK,CAAC,4BAAD,EAA+BkB,IAA/B,CAAL;AACD;;AAED,YAAMiD,OAAO,GAAG1D,IAAI,CAACY,OAAL,CAAaH,IAAb,CAAhB;;AACA,UAAIiD,OAAO,KAAK,CAAC,CAAjB,EAAoB;AAClB,aAAK1D,IAAL,CAAUW,IAAV,CAAegD,MAAf,CAAsBD,OAAtB,EAA+B,CAA/B;AAEAnE,QAAAA,KAAK,CAAC,oCAAD,EAAuCkB,IAAvC,CAAL;AACD;;AAEDC,MAAAA,EAAE,CAAC,KAAKR,KAAL,EAAD,CAAF;AACD,KAfD;AAgBD;AAED;AACF;AACA;AACA;;;AACSsD,EAAAA,GAAG,CAAC9C,EAAD,EAAqB;AAC7B,UAAMC,IAAI,GAAG,KAAKX,IAAL,CAAUW,IAAvB;AACA,UAAMiD,UAAU,GAAG,KAAK5D,IAAL,CAAUW,IAAV,CAAekD,MAAlC;AAEAnD,IAAAA,EAAE,CAAC,IAAD,EAAOC,IAAP,CAAF;AAEApB,IAAAA,KAAK,CAAC,iDAAD,EAAoDqE,UAApD,CAAL;AACD;;AAEME,EAAAA,iBAAiB,CAACC,WAAD,EAAuC;AAC7D,UAAMC,aAAa,GAAG,KAAKrE,MAAL,CAAYsE,sBAAZ,CAAmCF,WAAnC,CAAtB;;AAEA,UAAMjB,WAAmB,GAAG,KAAKoB,oBAAL,CAA0BF,aAAa,GAAGA,aAAa,CAAChC,OAAjB,GAA2BmC,SAAlE,CAA5B;;AACA5E,IAAAA,KAAK,CAAC,yBAAD,EAA4BuD,WAA5B,CAAL;;AAEA,QAAIG,gBAAEmB,QAAF,CAAWtB,WAAX,MAA4B,KAAhC,EAAuC;AACrCvD,MAAAA,KAAK,CAAC,wCAAD,EAA2CwE,WAA3C,CAAL;AACA;AACD;;AAED,UAAMM,kBAA0B,GAAG9C,cAAKY,IAAL,CACjCZ,cAAKlB,OAAL,CAAakB,cAAKC,OAAL,CAAa,KAAK7B,MAAL,CAAY8B,SAAZ,IAAyB,EAAtC,CAAb,EAAwDqB,WAAxD,CADiC,EAEjCiB,WAFiC,CAAnC;;AAKAxE,IAAAA,KAAK,CAAC,yBAAD,EAA4B8E,kBAA5B,CAAL;AAEA,WAAO,IAAIC,gBAAJ,CAAgBD,kBAAhB,EAAoC,KAAKzE,MAAzC,CAAP;AACD;;AAEM2E,EAAAA,KAAK,GAAS;AACnB,SAAKrE,KAAL;AACD;;AAEOoD,EAAAA,OAAO,CAACF,IAAD,EAAeC,KAAf,EAA2C;AACxD,WAAOD,IAAI,GAAGA,IAAH,GAAUC,KAArB;AACD;;AAEOlC,EAAAA,8BAA8B,GAAW;AAC/C,UAAMD,QAAQ,GAAG,EAAjB,CAD+C,CAG/C;;AACA,QAAI,KAAKvB,MAAL,CAAYqC,OAAhB,EAAyB;AACvBd,MAAAA,QAAQ,CAAC,KAAKvB,MAAL,CAAYqC,OAAb,CAAR,GAAgC,IAAhC;AACD;;AAED,UAAM;AAAEwC,MAAAA;AAAF,QAAe,KAAK7E,MAA1B;;AAEA,QAAI6E,QAAJ,EAAc;AACZ,YAAMC,gBAAgB,GAAG7C,MAAM,CAACC,IAAP,CAAY2C,QAAQ,IAAI,EAAxB,CAAzB;AAEAC,MAAAA,gBAAgB,CAACC,GAAjB,CAAqBC,GAAG,IAAI;AAC1B,cAAM3C,OAAO,GAAGwC,QAAQ,CAACG,GAAD,CAAR,CAAc3C,OAA9B;;AACA,YAAIA,OAAJ,EAAa;AACXd,UAAAA,QAAQ,CAACc,OAAD,CAAR,GAAoB,KAApB;AACD;AACF,OALD;AAMD;;AAED,WAAOd,QAAP;AACD;AAED;AACF;AACA;AACA;;;AACUhB,EAAAA,KAAK,GAAiB;AAC5BX,IAAAA,KAAK,CAAC,uBAAD,CAAL;;AAEA,QAAI,KAAKQ,MAAT,EAAiB;AACf,WAAKH,MAAL,CAAY6D,KAAZ,CACE,8EAA8E,oBADhF;AAGA,aAAO,IAAImB,KAAJ,CACL,iFACE,gCAFG,CAAP;AAID,KAX2B,CAY5B;;;AACA,QAAI;AACF;AACA,YAAMC,UAAU,GAAGtD,cAAKC,OAAL,CAAa,KAAK3B,IAAlB,CAAnB;;AACAiF,sBAAOC,IAAP,CAAYF,UAAZ;;AACAtF,MAAAA,KAAK,CAAC,gCAAD,EAAmCsF,UAAnC,CAAL;AACD,KALD,CAKE,OAAOtC,GAAP,EAAY;AACZhD,MAAAA,KAAK,CAAC,8CAAD,EAAiDgD,GAAjD,CAAL;AACA,aAAO,IAAP;AACD;;AAED,QAAI;AACFF,kBAAG2C,aAAH,CAAiB,KAAKnF,IAAtB,EAA4BuB,IAAI,CAACC,SAAL,CAAe,KAAKrB,IAApB,CAA5B;;AACAT,MAAAA,KAAK,CAAC,oBAAD,CAAL;AAEA,aAAO,IAAP;AACD,KALD,CAKE,OAAOgD,GAAP,EAAY;AACZhD,MAAAA,KAAK,CAAC,gBAAD,EAAmBgD,GAAnB,CAAL;AAEA,aAAOA,GAAP;AACD;AACF;AAED;AACF;AACA;AACA;AACA;AACA;;;AACU2B,EAAAA,oBAAoB,CAAClC,OAAD,EAAiC;AAC3D,UAAMiD,mBAAmB,GAAG,KAAKtF,MAAL,GAAc,KAAKA,MAAL,CAAYqC,OAA1B,GAAoCmC,SAAhE;;AACA,QAAIlB,gBAAEC,KAAF,CAAQ+B,mBAAR,CAAJ,EAAkC;AAChC,YAAM,IAAIL,KAAJ,CAAU,4CAAV,CAAN;AACD,KAFD,MAEO;AACL,UAAI3B,gBAAEC,KAAF,CAAQlB,OAAR,MAAqB,KAArB,IAA8BiB,gBAAEmB,QAAF,CAAWpC,OAAX,CAAlC,EAAuD;AACrD,eAAOT,cAAKY,IAAL,CAAU8C,mBAAV,EAAyCjD,OAAzC,CAAP;AACD;;AAED,aAAOiD,mBAAP;AACD;AACF;AAED;AACF;AACA;AACA;AACA;AACA;;;AACUnF,EAAAA,iBAAiB,CAACH,MAAD,EAAyB;AAChD,UAAMuF,aAAqB,GAAG,KAAKC,UAAL,CAAgB9F,kBAAhB,EAAoCM,MAApC,CAA9B;;AACA,QAAI;AACF0C,kBAAG+C,UAAH,CAAcF,aAAd,EAA6B7C,YAAGgD,SAAH,CAAaC,IAA1C,EADE,CAEF;;;AACAC,MAAAA,OAAO,CAACC,WAAR,CAAoB,2BAApB,EAAiD;AAC/CC,QAAAA,IAAI,EAAE,WADyC;AAE/CC,QAAAA,MAAM,EAAG,oCAAmCrG,kBAAmB,OAAMC,OAAQ;AAF9B,OAAjD;AAIA,aAAO4F,aAAP;AACD,KARD,CAQE,OAAO3C,GAAP,EAAY;AACZ,UAAIA,GAAG,CAACkD,IAAJ,KAAaE,mBAAjB,EAA6B;AAC3B,eAAO,KAAKR,UAAL,CAAgB7F,OAAhB,EAAyBK,MAAzB,CAAP;AACD;;AAED,YAAM4C,GAAN;AACD;AACF;AAED;AACF;AACA;AACA;AACA;;;AACUtC,EAAAA,mBAAmB,GAAiB;AAC1C,UAAMU,IAAiB,GAAG,EAA1B;AACA,UAAMiF,aAAa,GAAG;AAAEjF,MAAAA,IAAF;AAAQL,MAAAA,MAAM,EAAE;AAAhB,KAAtB;;AAEA,QAAI;AACF,aAAO,mCAAoB,KAAKT,IAAzB,EAA+B,KAAKD,MAApC,CAAP;AACD,KAFD,CAEE,OAAO2C,GAAP,EAAY;AACZ;AACA;AACA,UAAIA,GAAG,CAACkD,IAAJ,KAAaE,mBAAjB,EAA6B;AAC3B,aAAK5F,MAAL,GAAc,IAAd;AACA,aAAKH,MAAL,CAAY6D,KAAZ,CACE,+EADF,EAEG,cAAa,KAAK5D,IAAK,QAAO0C,GAAG,CAACsD,OAAQ,EAF7C;AAID;;AAED,aAAOD,aAAP;AACD;AACF;;AApUoE;;eAuUxDpG,a","sourcesContent":["import fs from 'fs';\nimport Path from 'path';\n\nimport buildDebug from 'debug';\nimport _ from 'lodash';\nimport async from 'async';\nimport mkdirp from 'mkdirp';\nimport { Callback, Config, IPackageStorage, IPluginStorage, LocalStorage, Logger, StorageList } from '@verdaccio/types';\nimport { getInternalError } from '@verdaccio/commons-api';\n\nimport LocalDriver, { noSuchFile } from './local-fs';\nimport { loadPrivatePackages } from './pkg-utils';\nimport TokenActions from './token';\n\nconst DEPRECATED_DB_NAME = '.sinopia-db.json';\nconst DB_NAME = '.verdaccio-db.json';\n\nconst debug = buildDebug('verdaccio:plugin:local-storage');\n\nclass LocalDatabase extends TokenActions implements IPluginStorage<{}> {\n public path: string;\n public logger: Logger;\n public data: LocalStorage;\n public config: Config;\n public locked: boolean;\n\n public constructor(config: Config, logger: Logger) {\n super(config);\n this.config = config;\n this.path = this._buildStoragePath(config);\n this.logger = logger;\n this.locked = false;\n this.data = this._fetchLocalPackages();\n this._sync();\n }\n\n public getSecret(): Promise<string> {\n return Promise.resolve(this.data.secret);\n }\n\n public setSecret(secret: string): Promise<Error | null> {\n return new Promise((resolve): void => {\n this.data.secret = secret;\n\n resolve(this._sync());\n });\n }\n\n public add(name: string, cb: Callback): void {\n if (this.data.list.indexOf(name) === -1) {\n this.data.list.push(name);\n\n debug('the private package %o has been added', name);\n cb(this._sync());\n } else {\n debug('the private package %o was not added', name);\n cb(null);\n }\n }\n\n public search(onPackage: Callback, onEnd: Callback, validateName: (name: string) => boolean): void {\n const storages = this._getCustomPackageLocalStorages();\n debug(`search custom local packages: %o`, JSON.stringify(storages));\n const base = Path.dirname(this.config.self_path);\n const self = this;\n const storageKeys = Object.keys(storages);\n debug(`search base: %o keys: %o`, base, storageKeys);\n\n async.eachSeries(\n storageKeys,\n function(storage, cb) {\n const position = storageKeys.indexOf(storage);\n const base2 = Path.join(position !== 0 ? storageKeys[0] : '');\n const storagePath: string = Path.resolve(base, base2, storage);\n debug('search path: %o : %o', storagePath, storage);\n fs.readdir(storagePath, (err, files) => {\n if (err) {\n return cb(err);\n }\n\n async.eachSeries(\n files,\n function(file, cb) {\n debug('local-storage: [search] search file path: %o', file);\n if (storageKeys.includes(file)) {\n return cb();\n }\n\n if (file.match(/^@/)) {\n // scoped\n const fileLocation = Path.resolve(base, storage, file);\n debug('search scoped file location: %o', fileLocation);\n fs.readdir(fileLocation, function(err, files) {\n if (err) {\n return cb(err);\n }\n\n async.eachSeries(\n files,\n (file2, cb) => {\n if (validateName(file2)) {\n const packagePath = Path.resolve(base, storage, file, file2);\n\n fs.stat(packagePath, (err, stats) => {\n if (_.isNil(err) === false) {\n return cb(err);\n }\n const item = {\n name: `${file}/${file2}`,\n path: packagePath,\n time: stats.mtime.getTime(),\n };\n onPackage(item, cb);\n });\n } else {\n cb();\n }\n },\n cb\n );\n });\n } else if (validateName(file)) {\n const base2 = Path.join(position !== 0 ? storageKeys[0] : '');\n const packagePath = Path.resolve(base, base2, storage, file);\n debug('search file location: %o', packagePath);\n fs.stat(packagePath, (err, stats) => {\n if (_.isNil(err) === false) {\n return cb(err);\n }\n onPackage(\n {\n name: file,\n path: packagePath,\n time: self.getTime(stats.mtime.getTime(), stats.mtime),\n },\n cb\n );\n });\n } else {\n cb();\n }\n },\n cb\n );\n });\n },\n // @ts-ignore\n onEnd\n );\n }\n\n public remove(name: string, cb: Callback): void {\n this.get((err, data) => {\n if (err) {\n cb(getInternalError('error remove private package'));\n this.logger.error({ err }, '[local-storage/remove]: remove the private package has failed @{err}');\n debug('error on remove package %o', name);\n }\n\n const pkgName = data.indexOf(name);\n if (pkgName !== -1) {\n this.data.list.splice(pkgName, 1);\n\n debug('remove package %o has been removed', name);\n }\n\n cb(this._sync());\n });\n }\n\n /**\n * Return all database elements.\n * @return {Array}\n */\n public get(cb: Callback): void {\n const list = this.data.list;\n const totalItems = this.data.list.length;\n\n cb(null, list);\n\n debug('get full list of packages (%o) has been fetched', totalItems);\n }\n\n public getPackageStorage(packageName: string): IPackageStorage {\n const packageAccess = this.config.getMatchedPackagesSpec(packageName);\n\n const packagePath: string = this._getLocalStoragePath(packageAccess ? packageAccess.storage : undefined);\n debug('storage path selected: ', packagePath);\n\n if (_.isString(packagePath) === false) {\n debug('the package %o has no storage defined ', packageName);\n return;\n }\n\n const packageStoragePath: string = Path.join(\n Path.resolve(Path.dirname(this.config.self_path || ''), packagePath),\n packageName\n );\n\n debug('storage absolute path: ', packageStoragePath);\n\n return new LocalDriver(packageStoragePath, this.logger);\n }\n\n public clean(): void {\n this._sync();\n }\n\n private getTime(time: number, mtime: Date): number | Date {\n return time ? time : mtime;\n }\n\n private _getCustomPackageLocalStorages(): object {\n const storages = {};\n\n // add custom storage if exist\n if (this.config.storage) {\n storages[this.config.storage] = true;\n }\n\n const { packages } = this.config;\n\n if (packages) {\n const listPackagesConf = Object.keys(packages || {});\n\n listPackagesConf.map(pkg => {\n const storage = packages[pkg].storage;\n if (storage) {\n storages[storage] = false;\n }\n });\n }\n\n return storages;\n }\n\n /**\n * Syncronize {create} database whether does not exist.\n * @return {Error|*}\n */\n private _sync(): Error | null {\n debug('sync database started');\n\n if (this.locked) {\n this.logger.error(\n 'Database is locked, please check error message printed during startup to ' + 'prevent data loss.'\n );\n return new Error(\n 'Verdaccio database is locked, please contact your administrator to checkout ' +\n 'logs during verdaccio startup.'\n );\n }\n // Uses sync to prevent ugly race condition\n try {\n // https://www.npmjs.com/package/mkdirp#mkdirpsyncdir-opts\n const folderName = Path.dirname(this.path);\n mkdirp.sync(folderName);\n debug('sync folder %o created succeed', folderName);\n } catch (err) {\n debug('sync create folder has failed with error: %o', err);\n return null;\n }\n\n try {\n fs.writeFileSync(this.path, JSON.stringify(this.data));\n debug('sync write succeed');\n\n return null;\n } catch (err) {\n debug('sync failed %o', err);\n\n return err;\n }\n }\n\n /**\n * Verify the right local storage location.\n * @param {String} path\n * @return {String}\n * @private\n */\n private _getLocalStoragePath(storage: string | void): string {\n const globalConfigStorage = this.config ? this.config.storage : undefined;\n if (_.isNil(globalConfigStorage)) {\n throw new Error('global storage is required for this plugin');\n } else {\n if (_.isNil(storage) === false && _.isString(storage)) {\n return Path.join(globalConfigStorage as string, storage as string);\n }\n\n return globalConfigStorage as string;\n }\n }\n\n /**\n * Build the local database path.\n * @param {Object} config\n * @return {string|String|*}\n * @private\n */\n private _buildStoragePath(config: Config): string {\n const sinopiadbPath: string = this._dbGenPath(DEPRECATED_DB_NAME, config);\n try {\n fs.accessSync(sinopiadbPath, fs.constants.F_OK);\n // @ts-ignore\n process.emitWarning('Database name deprecated!', {\n code: 'VERCODE01',\n detail: `Please rename database name from ${DEPRECATED_DB_NAME} to ${DB_NAME}`,\n });\n return sinopiadbPath;\n } catch (err) {\n if (err.code === noSuchFile) {\n return this._dbGenPath(DB_NAME, config);\n }\n\n throw err;\n }\n }\n\n /**\n * Fetch local packages.\n * @private\n * @return {Object}\n */\n private _fetchLocalPackages(): LocalStorage {\n const list: StorageList = [];\n const emptyDatabase = { list, secret: '' };\n\n try {\n return loadPrivatePackages(this.path, this.logger);\n } catch (err) {\n // readFileSync is platform specific, macOS, Linux and Windows thrown an error\n // Only recreate if file not found to prevent data loss\n if (err.code !== noSuchFile) {\n this.locked = true;\n this.logger.error(\n 'Failed to read package database file, please check the error printed below:\\n',\n `File Path: ${this.path}\\n\\n ${err.message}`\n );\n }\n\n return emptyDatabase;\n }\n }\n}\n\nexport default LocalDatabase;\n"],"file":"local-database.js"}
package/lib/local-fs.js CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = exports.fSError = exports.pkgFileName = exports.resourceNotAvailable = exports.noSuchFile = exports.fileExist = void 0;
6
+ exports.resourceNotAvailable = exports.pkgFileName = exports.noSuchFile = exports.fileExist = exports.fSError = exports.default = void 0;
7
7
 
8
8
  var _fs = _interopRequireDefault(require("fs"));
9
9
 
@@ -395,4 +395,4 @@ class LocalFS {
395
395
  }
396
396
 
397
397
  exports.default = LocalFS;
398
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2NhbC1mcy50cyJdLCJuYW1lcyI6WyJmaWxlRXhpc3QiLCJub1N1Y2hGaWxlIiwicmVzb3VyY2VOb3RBdmFpbGFibGUiLCJwa2dGaWxlTmFtZSIsImRlYnVnIiwiZlNFcnJvciIsIm1lc3NhZ2UiLCJjb2RlIiwiZXJyIiwidGVtcEZpbGUiLCJzdHIiLCJTdHJpbmciLCJNYXRoIiwicmFuZG9tIiwic3Vic3RyIiwicmVuYW1lVG1wIiwic3JjIiwiZHN0IiwiX2NiIiwiY2IiLCJmcyIsInVubGluayIsInByb2Nlc3MiLCJwbGF0Zm9ybSIsInJlbmFtZSIsInRtcCIsIkxvY2FsRlMiLCJjb25zdHJ1Y3RvciIsInBhdGgiLCJsb2dnZXIiLCJ1cGRhdGVQYWNrYWdlIiwibmFtZSIsInVwZGF0ZUhhbmRsZXIiLCJvbldyaXRlIiwidHJhbnNmb3JtUGFja2FnZSIsIm9uRW5kIiwiX2xvY2tBbmRSZWFkSlNPTiIsImpzb24iLCJsb2NrZWQiLCJzZWxmIiwidW5Mb2NrQ2FsbGJhY2siLCJsb2NrRXJyb3IiLCJfYXJncyIsImFyZ3VtZW50cyIsIl91bmxvY2tKU09OIiwiYXBwbHkiLCJfIiwiaXNOaWwiLCJkZWxldGVQYWNrYWdlIiwicGFja2FnZU5hbWUiLCJjYWxsYmFjayIsIl9nZXRTdG9yYWdlIiwicmVtb3ZlUGFja2FnZSIsInJtZGlyIiwiY3JlYXRlUGFja2FnZSIsInZhbHVlIiwiX2NyZWF0ZUZpbGUiLCJfY29udmVydFRvU3RyaW5nIiwic2F2ZVBhY2thZ2UiLCJfd3JpdGVGaWxlIiwicmVhZFBhY2thZ2UiLCJfcmVhZFN0b3JhZ2VGaWxlIiwidGhlbiIsInJlcyIsImRhdGEiLCJKU09OIiwicGFyc2UiLCJ0b1N0cmluZyIsIndyaXRlVGFyYmFsbCIsInVwbG9hZFN0cmVhbSIsIlVwbG9hZFRhcmJhbGwiLCJfZW5kZWQiLCJvbiIsInBhdGhOYW1lIiwiYWNjZXNzIiwiZmlsZU5vdEZvdW5kIiwiZXhpc3RzIiwiZW1pdCIsInRlbXBvcmFsTmFtZSIsImpvaW4iLCJyZXBsYWNlIiwiZmlsZSIsImNyZWF0ZVdyaXRlU3RyZWFtIiwicmVtb3ZlVGVtcEZpbGUiLCJvcGVuZWQiLCJwaXBlIiwiZG9uZSIsIm9uZW5kIiwiZW5kIiwiYWJvcnQiLCJyZWFkVGFyYmFsbCIsInJlYWRUYXJiYWxsU3RyZWFtIiwiUmVhZFRhcmJhbGwiLCJyZWFkU3RyZWFtIiwiY3JlYXRlUmVhZFN0cmVhbSIsImZkIiwiZnN0YXQiLCJzdGF0cyIsInNpemUiLCJjbG9zZSIsImNvbnRlbnRzIiwib3BlbiIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicmVhZEZpbGUiLCJzdHJpbmdpZnkiLCJmaWxlTmFtZSIsInN0b3JhZ2VQYXRoIiwiZGVzdCIsImNyZWF0ZVRlbXBGaWxlIiwidGVtcEZpbGVQYXRoIiwid3JpdGVGaWxlIiwiZGlybmFtZSIsImNhdGNoIiwibG9jayJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUVBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOzs7Ozs7QUFFTyxNQUFNQSxTQUFTLEdBQUcsU0FBbEI7O0FBQ0EsTUFBTUMsVUFBVSxHQUFHLFFBQW5COztBQUNBLE1BQU1DLG9CQUFvQixHQUFHLFFBQTdCOztBQUNBLE1BQU1DLFdBQVcsR0FBRyxjQUFwQjs7QUFFUCxNQUFNQyxLQUFLLEdBQUcsb0JBQVcsbUNBQVgsQ0FBZDs7QUFFTyxNQUFNQyxPQUFPLEdBQUcsVUFBU0MsT0FBVCxFQUEwQkMsSUFBSSxHQUFHLEdBQWpDLEVBQXNEO0FBQzNFLFFBQU1DLEdBQW1CLEdBQUcseUJBQVFELElBQVIsRUFBY0QsT0FBZCxDQUE1QixDQUQyRSxDQUUzRTtBQUNBOztBQUNBRSxFQUFBQSxHQUFHLENBQUNELElBQUosR0FBV0QsT0FBWDtBQUVBLFNBQU9FLEdBQVA7QUFDRCxDQVBNOzs7O0FBU1AsTUFBTUMsUUFBUSxHQUFHLFVBQVNDLEdBQVQsRUFBc0I7QUFDckMsU0FBUSxHQUFFQSxHQUFJLE9BQU1DLE1BQU0sQ0FBQ0MsSUFB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LE1BQUFBLEtBQUssQ0FBQyxpQ0FBRCxFQUFvQzJCLElBQXBDLENBQUw7QUFFQSxhQUFPWixFQUFFLENBQUMsSUFBRCxFQUFPNEMsR0FBUCxDQUFUO0FBQ0QsS0FmSDtBQWlCRDs7QUFFT25CLEVBQUFBLFdBQVIsQ0FBb0JiLElBQXBCLEVBQWtDWixFQUFsQyxFQUFzRDtBQUNwRCxpQ0FBVyxLQUFLZ0MsV0FBTCxDQUFpQnBCLElBQWpCLENBQVgsRUFBbUNaLEVBQW5DO0FBQ0Q7O0FBeFU0RCIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmICovXG5cbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcblxuaW1wb3J0IGJ1aWxkRGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBta2RpcnAgZnJvbSAnbWtkaXJwJztcbmltcG9ydCB7IFVwbG9hZFRhcmJhbGwsIFJlYWRUYXJiYWxsIH0gZnJvbSAnQHZlcmRhY2Npby9zdHJlYW1zJztcbmltcG9ydCB7IHVubG9ja0ZpbGUsIHJlYWRGaWxlIH0gZnJvbSAnQHZlcmRhY2Npby9maWxlLWxvY2tpbmcnO1xuaW1wb3J0IHsgQ2FsbGJhY2ssIExvZ2dlciwgUGFja2FnZSwgSUxvY2FsUGFja2FnZU1hbmFnZXIsIElVcGxvYWRUYXJiYWxsIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5pbXBvcnQgeyBnZXRDb2RlLCBnZXRJbnRlcm5hbEVycm9yLCBnZXROb3RGb3VuZCwgVmVyZGFjY2lvRXJyb3IgfSBmcm9tICdAdmVyZGFjY2lvL2NvbW1vbnMtYXBpJztcblxuZXhwb3J0IGNvbnN0IGZpbGVFeGlzdCA9ICdFRVhJU1RTJztcbmV4cG9ydCBjb25zdCBub1N1Y2hGaWxlID0gJ0VOT0VOVCc7XG5leHBvcnQgY29uc3QgcmVzb3VyY2VOb3RBdmFpbGFibGUgPSAnRUFHQUlOJztcbmV4cG9ydCBjb25zdCBwa2dGaWxlTmFtZSA9ICdwYWNrYWdlLmpzb24nO1xuXG5jb25zdCBkZWJ1ZyA9IGJ1aWxkRGVidWcoJ3ZlcmRhY2NpbzpwbHVnaW46bG9jYWwtc3RvcmFnZTpmcycpO1xuXG5leHBvcnQgY29uc3QgZlNFcnJvciA9IGZ1bmN0aW9uKG1lc3NhZ2U6IHN0cmluZywgY29kZSA9IDQwOSk6IFZlcmRhY2Npb0Vycm9yIHtcbiAgY29uc3QgZXJyOiBWZXJkYWNjaW9FcnJvciA9IGdldENvZGUoY29kZSwgbWVzc2FnZSk7XG4gIC8vIEZJWE1FOiB3ZSBzaG91bGQgcmV0dXJuIGh0dHAtc3RhdHVzIGNvZGVzIGhlcmUgaW5zdGVhZCwgZnV0dXJlIGltcHJvdmVtZW50XG4gIC8vIEB0cy1pZ25vcmVcbiAgZXJyLmNvZGUgPSBtZXNzYWdlO1xuXG4gIHJldHVybiBlcnI7XG59O1xuXG5jb25zdCB0ZW1wRmlsZSA9IGZ1bmN0aW9uKHN0cik6IHN0cmluZyB7XG4gIHJldHVybiBgJHtzdHJ9LnRtcCR7U3RyaW5nKE1hdGgucmFuZG9tKCkpLnN1YnN0cigyKX1gO1xufTtcblxuY29uc3QgcmVuYW1lVG1wID0gZnVuY3Rpb24oc3JjLCBkc3QsIF9jYik6IHZvaWQge1xuICBjb25zdCBjYiA9IChlcnIpOiB2b2lkID0+IHtcbiAgICBpZiAoZXJyKSB7XG4gICAgICBmcy51bmxpbmsoc3JjLCAoKSA9PiB7fSk7XG4gICAgfVxuICAgIF9jYihlcnIpO1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtICE9PSAnd2luMzInKSB7XG4gICAgcmV0dXJuIGZzLnJlbmFtZShzcmMsIGRzdCwgY2IpO1xuICB9XG5cbiAgLy8gd2luZG93cyBjYW4ndCByZW1vdmUgb3BlbmVkIGZpbGUsXG4gIC8vIGJ1dCBpdCBzZWVtIHRvIGJlIGFibGUgdG8gcmVuYW1lIGl0XG4gIGNvbnN0IHRtcCA9IHRlbXBGaWxlKGRzdCk7XG4gIGZzLnJlbmFtZShkc3QsIHRtcCwgZnVuY3Rpb24oZXJyKSB7XG4gICAgZnMucmVuYW1lKHNyYywgZHN0LCBjYik7XG4gICAgaWYgKCFlcnIpIHtcbiAgICAgIGZzLnVubGluayh0bXAsICgpID0+IHt9KTtcbiAgICB9XG4gIH0pO1xufTtcblxuZXhwb3J0IHR5cGUgSUxvY2FsRlNQYWNrYWdlTWFuYWdlciA9IElMb2NhbFBhY2thZ2VNYW5hZ2VyICYgeyBwYXRoOiBzdHJpbmcgfTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9jYWxGUyBpbXBsZW1lbnRzIElMb2NhbEZTUGFja2FnZU1hbmFnZXIge1xuICBwdWJsaWMgcGF0aDogc3RyaW5nO1xuICBwdWJsaWMgbG9nZ2VyOiBMb2dnZXI7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhdGg6IHN0cmluZywgbG9nZ2VyOiBMb2dnZXIpIHtcbiAgICB0aGlzLnBhdGggPSBwYXRoO1xuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyO1xuICB9XG5cbiAgLyoqXG4gICAgKiAgVGhpcyBmdW5jdGlvbiBhbGxvd3MgdG8gdXBkYXRlIHRoZSBwYWNrYWdlIHRocmVhZC1zYWZlbHlcbiAgICAgIEFsZ29yaXRobTpcbiAgICAgIDEuIGxvY2sgcGFja2FnZS5qc29uIGZvciB3cml0aW5nXG4gICAgICAyLiByZWFkIHBhY2thZ2UuanNvblxuICAgICAgMy4gdXBkYXRlRm4ocGtnLCBjYiksIGFuZCB3YWl0IGZvciBjYlxuICAgICAgNC4gd3JpdGUgcGFja2FnZS5qc29uLnRtcFxuICAgICAgNS4gbW92ZSBwYWNrYWdlLmpzb24udG1wIHBhY2thZ2UuanNvblxuICAgICAgNi4gY2FsbGJhY2soZXJyPylcbiAgICAqIEBwYXJhbSB7Kn0gbmFtZVxuICAgICogQHBhcmFtIHsqfSB1cGRhdGVIYW5kbGVyXG4gICAgKiBAcGFyYW0geyp9IG9uV3JpdGVcbiAgICAqIEBwYXJhbSB7Kn0gdHJhbnNmb3JtUGFja2FnZVxuICAgICogQHBhcmFtIHsqfSBvbkVuZFxuICAgICovXG4gIHB1YmxpYyB1cGRhdGVQYWNrYWdlKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICB1cGRhdGVIYW5kbGVyOiBDYWxsYmFjayxcbiAgICBvbldyaXRlOiBDYWxsYmFjayxcbiAgICB0cmFuc2Zvcm1QYWNrYWdlOiBGdW5jdGlvbixcbiAgICBvbkVuZDogQ2FsbGJhY2tcbiAgKTogdm9pZCB7XG4gICAgdGhpcy5fbG9ja0FuZFJlYWRKU09OKHBrZ0ZpbGVOYW1lLCAoZXJyLCBqc29uKSA9PiB7XG4gICAgICBsZXQgbG9ja2VkID0gZmFsc2U7XG4gICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgIC8vIGNhbGxiYWNrIHRoYXQgY2xlYW5zIHVwIGxvY2sgZmlyc3RcbiAgICAgIGNvbnN0IHVuTG9ja0NhbGxiYWNrID0gZnVuY3Rpb24obG9ja0Vycm9yOiBFcnJvcik6IHZvaWQge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLXJlc3QtcGFyYW1zXG4gICAgICAgIGNvbnN0IF9hcmdzID0gYXJndW1lbnRzO1xuXG4gICAgICAgIGlmIChsb2NrZWQpIHtcbiAgICAgICAgICBzZWxmLl91bmxvY2tKU09OKHBrZ0ZpbGVOYW1lLCAoKSA9PiB7XG4gICAgICAgICAgICAvLyBpZ25vcmUgYW55IGVycm9yIGZyb20gdGhlIHVubG9ja1xuICAgICAgICAgICAgaWYgKGxvY2tFcnJvciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICBkZWJ1ZygnbG9jayBmaWxlOiAlbyBoYXMgZmFpbGVkIHdpdGggZXJyb3IgJW8nLCBuYW1lLCBsb2NrRXJyb3IpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBvbkVuZC5hcHBseShsb2NrRXJyb3IsIF9hcmdzKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZWJ1ZygnZmlsZTogJW8gaGFzIGJlZW4gdXBkYXRlZCcsIG5hbWUpO1xuICAgICAgICAgIG9uRW5kKC4uLl9hcmdzKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgaWYgKCFlcnIpIHtcbiAgICAgICAgbG9ja2VkID0gdHJ1ZTtcbiAgICAgICAgZGVidWcoJ2ZpbGU6ICVvIGhhcyBiZWVuIGxvY2tlZCcsIG5hbWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAoXy5pc05pbChlcnIpID09PSBmYWxzZSkge1xuICAgICAgICBpZiAoZXJyLmNvZGUgPT09IHJlc291cmNlTm90QXZhaWxhYmxlKSB7XG4gICAgICAgICAgcmV0dXJuIHVuTG9ja0NhbGxiYWNrKGdldEludGVybmFsRXJyb3IoJ3Jlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlJykpO1xuICAgICAgICB9IGVsc2UgaWYgKGVyci5jb2RlID09PSBub1N1Y2hGaWxlKSB7XG4gICAgICAgICAgcmV0dXJuIHVuTG9ja0NhbGxiYWNrKGdldE5vdEZvdW5kKCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB1bkxvY2tDYWxsYmFjayhlcnIpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZUhhbmRsZXIoanNvbiwgZXJyID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiB1bkxvY2tDYWxsYmFjayhlcnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgb25Xcml0ZShuYW1lLCB0cmFuc2Zvcm1QYWNrYWdlKGpzb24pLCB1bkxvY2tDYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGVQYWNrYWdlKHBhY2thZ2VOYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAoZXJyOiBOb2RlSlMuRXJybm9FeGNlcHRpb24gfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgZGVidWcoJ2RlbGV0ZSBhIHBhY2thZ2UgJW8nLCBwYWNrYWdlTmFtZSk7XG5cbiAgICByZXR1cm4gZnMudW5saW5rKHRoaXMuX2dldFN0b3JhZ2UocGFja2FnZU5hbWUpLCBjYWxsYmFjayk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlUGFja2FnZShjYWxsYmFjazogKGVycjogTm9kZUpTLkVycm5vRXhjZXB0aW9uIHwgbnVsbCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGRlYnVnKCdyZW1vdmUgYSBwYWNrYWdlICVvJywgdGhpcy5wYXRoKTtcblxuICAgIGZzLnJtZGlyKHRoaXMuX2dldFN0b3JhZ2UoJy4nKSwgY2FsbGJhY2spO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZVBhY2thZ2UobmFtZTogc3RyaW5nLCB2YWx1ZTogUGFja2FnZSwgY2I6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgZGVidWcoJ2NyZWF0ZSBhIHBhY2thZ2UgJW8nLCBuYW1lKTtcblxuICAgIHRoaXMuX2NyZWF0ZUZpbGUodGhpcy5fZ2V0U3RvcmFnZShwa2dGaWxlTmFtZSksIHRoaXMuX2NvbnZlcnRUb1N0cmluZyh2YWx1ZSksIGNiKTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlUGFja2FnZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBQYWNrYWdlLCBjYjogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICBkZWJ1Zygnc2F2ZSBhIHBhY2thZ2UgJW8nLCBuYW1lKTtcblxuICAgIHRoaXMuX3dyaXRlRmlsZSh0aGlzLl9nZXRTdG9yYWdlKHBrZ0ZpbGVOYW1lKSwgdGhpcy5fY29udmVydFRvU3RyaW5nKHZhbHVlKSwgY2IpO1xuICB9XG5cbiAgcHVibGljIHJlYWRQYWNrYWdlKG5hbWU6IHN0cmluZywgY2I6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgZGVidWcoJ3JlYWQgYSBwYWNrYWdlICVvJywgbmFtZSk7XG5cbiAgICB0aGlzLl9yZWFkU3RvcmFnZUZpbGUodGhpcy5fZ2V0U3RvcmFnZShwa2dGaWxlTmFtZSkpLnRoZW4oXG4gICAgICByZXMgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGRhdGE6IGFueSA9IEpTT04ucGFyc2UocmVzLnRvU3RyaW5nKCd1dGY4JykpO1xuXG4gICAgICAgICAgZGVidWcoJ3JlYWQgc3RvcmFnZSBmaWxlICVvIGhhcyBzdWNjZWVkJywgbmFtZSk7XG4gICAgICAgICAgY2IobnVsbCwgZGF0YSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGRlYnVnKCdwYXJzZSBzdG9yYWdlIGZpbGUgJW8gaGFzIGZhaWxlZCB3aXRoIGVycm9yICVvJywgbmFtZSwgZXJyKTtcbiAgICAgICAgICBjYihlcnIpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyID0+IHtcbiAgICAgICAgZGVidWcoJ3JlYWQgc3RvcmFnZSBmaWxlICVvIGhhcyBmYWlsZWQgd2l0aCBlcnJvciAlbycsIG5hbWUsIGVycik7XG5cbiAgICAgICAgcmV0dXJuIGNiKGVycik7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVRhcmJhbGwobmFtZTogc3RyaW5nKTogSVVwbG9hZFRhcmJhbGwge1xuICAgIGNvbnN0IHVwbG9hZFN0cmVhbSA9IG5ldyBVcGxvYWRUYXJiYWxsKHt9KTtcbiAgICBkZWJ1Zygnd3JpdGUgYSB0YXJiYWxsIGZvciBhIHBhY2thZ2UgJW8nLCBuYW1lKTtcblxuICAgIGxldCBfZW5kZWQgPSAwO1xuICAgIHVwbG9hZFN0cmVhbS5vbignZW5kJywgZnVuY3Rpb24oKSB7XG4gICAgICBfZW5kZWQgPSAxO1xuICAgIH0pO1xuXG4gICAgY29uc3QgcGF0aE5hbWU6IHN0cmluZyA9IHRoaXMuX2dldFN0b3JhZ2UobmFtZSk7XG5cbiAgICBmcy5hY2Nlc3MocGF0aE5hbWUsIGZpbGVOb3RGb3VuZCA9PiB7XG4gICAgICBjb25zdCBleGlzdHMgPSAhZmlsZU5vdEZvdW5kO1xuICAgICAgaWYgKGV4aXN0cykge1xuICAgICAgICB1cGxvYWRTdHJlYW0uZW1pdCgnZXJyb3InLCBmU0Vycm9yKGZpbGVFeGlzdCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdGVtcG9yYWxOYW1lID0gcGF0aC5qb2luKHRoaXMucGF0aCwgYCR7bmFtZX0udG1wLSR7U3RyaW5nKE1hdGgucmFuZG9tKCkpLnJlcGxhY2UoL14wXFwuLywgJycpfWApO1xuICAgICAgICBkZWJ1Zygnd3JpdGUgYSB0ZW1wb3JhbCBuYW1lICVvJywgdGVtcG9yYWxOYW1lKTtcbiAgICAgICAgY29uc3QgZmlsZSA9IGZzLmNyZWF0ZVdyaXRlU3RyZWFtKHRlbXBvcmFsTmFtZSk7XG4gICAgICAgIGNvbnN0IHJlbW92ZVRlbXBGaWxlID0gKCk6IHZvaWQgPT4gZnMudW5saW5rKHRlbXBvcmFsTmFtZSwgKCkgPT4ge30pO1xuICAgICAgICBsZXQgb3BlbmVkID0gZmFsc2U7XG4gICAgICAgIHVwbG9hZFN0cmVhbS5waXBlKGZpbGUpO1xuXG4gICAgICAgIHVwbG9hZFN0cmVhbS5kb25lID0gZnVuY3Rpb24oKTogdm9pZCB7XG4gICAgICAgICAgY29uc3Qgb25lbmQgPSBmdW5jdGlvbigpOiB2b2lkIHtcbiAgICAgICAgICAgIGZpbGUub24oJ2Nsb3NlJywgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgIHJlbmFtZVRtcCh0ZW1wb3JhbE5hbWUsIHBhdGhOYW1lLCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICB1cGxvYWRTdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICB1cGxvYWRTdHJlYW0uZW1pdCgnc3VjY2VzcycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZpbGUuZW5kKCk7XG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAoX2VuZGVkKSB7XG4gICAgICAgICAgICBvbmVuZCgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1cGxvYWRTdHJlYW0ub24oJ2VuZCcsIG9uZW5kKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgdXBsb2FkU3RyZWFtLmFib3J0ID0gZnVuY3Rpb24oKTogdm9pZCB7XG4gICAgICAgICAgaWYgKG9wZW5lZCkge1xuICAgICAgICAgICAgb3BlbmVkID0gZmFsc2U7XG4gICAgICAgICAgICBmaWxlLm9uKCdjbG9zZScsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICByZW1vdmVUZW1wRmlsZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGlmIHRoZSBmaWxlIGRvZXMgbm90IHJlY2lldmUgYW55IGJ5dGUgbmV2ZXIgaXMgb3BlbmVkIGFuZCBoYXMgdG8gYmUgcmVtb3ZlZCBhbnl3YXkuXG4gICAgICAgICAgICByZW1vdmVUZW1wRmlsZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmaWxlLmVuZCgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGZpbGUub24oJ29wZW4nLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICBvcGVuZWQgPSB0cnVlO1xuICAgICAgICAgIC8vIHJlLWVtaXR0aW5nIG9wZW4gYmVjYXVzZSBpdCdzIGhhbmRsZWQgaW4gc3RvcmFnZS5qc1xuICAgICAgICAgIHVwbG9hZFN0cmVhbS5lbWl0KCdvcGVuJyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGZpbGUub24oJ2Vycm9yJywgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgdXBsb2FkU3RyZWFtLmVtaXQoJ2Vycm9yJywgZXJyKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdXBsb2FkU3RyZWFtO1xuICB9XG5cbiAgcHVibGljIHJlYWRUYXJiYWxsKG5hbWU6IHN0cmluZyk6IFJlYWRUYXJiYWxsIHtcbiAgICBjb25zdCBwYXRoTmFtZTogc3RyaW5nID0gdGhpcy5fZ2V0U3RvcmFnZShuYW1lKTtcbiAgICBkZWJ1ZygncmVhZCBhIGEgdGFyYmFsbCAlbyBvbiBwYXRoICVvJywgbmFtZSwgcGF0aE5hbWUpO1xuXG4gICAgY29uc3QgcmVhZFRhcmJhbGxTdHJlYW0gPSBuZXcgUmVhZFRhcmJhbGwoe30pO1xuXG4gICAgY29uc3QgcmVhZFN0cmVhbSA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0ocGF0aE5hbWUpO1xuXG4gICAgcmVhZFN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbihlcnIpIHtcbiAgICAgIGRlYnVnKCdlcnJvciBvbiByZWFkIGEgdGFyYmFsbCAlbyB3aXRoIGVycm9yICVvJywgbmFtZSwgZXJyKTtcbiAgICAgIHJlYWRUYXJiYWxsU3RyZWFtLmVtaXQoJ2Vycm9yJywgZXJyKTtcbiAgICB9KTtcblxuICAgIHJlYWRTdHJlYW0ub24oJ29wZW4nLCBmdW5jdGlvbihmZCkge1xuICAgICAgZnMuZnN0YXQoZmQsIGZ1bmN0aW9uKGVyciwgc3RhdHMpIHtcbiAgICAgICAgaWYgKF8uaXNOaWwoZXJyKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBkZWJ1ZygnZXJyb3Igb24gcmVhZCBhIHRhcmJhbGwgJW8gd2l0aCBlcnJvciAlbycsIG5hbWUsIGVycik7XG4gICAgICAgICAgcmV0dXJuIHJlYWRUYXJiYWxsU3RyZWFtLmVtaXQoJ2Vycm9yJywgZXJyKTtcbiAgICAgICAgfVxuICAgICAgICByZWFkVGFyYmFsbFN0cmVhbS5lbWl0KCdjb250ZW50LWxlbmd0aCcsIHN0YXRzLnNpemUpO1xuICAgICAgICByZWFkVGFyYmFsbFN0cmVhbS5lbWl0KCdvcGVuJyk7XG4gICAgICAgIGRlYnVnKCdvcGVuIG9uIHJlYWQgYSB0YXJiYWxsICVvJywgbmFtZSk7XG4gICAgICAgIHJlYWRTdHJlYW0ucGlwZShyZWFkVGFyYmFsbFN0cmVhbSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJlYWRUYXJiYWxsU3RyZWFtLmFib3J0ID0gZnVuY3Rpb24oKTogdm9pZCB7XG4gICAgICBkZWJ1ZygnYWJvcnQgb24gcmVhZCBhIHRhcmJhbGwgJW8nLCBuYW1lKTtcbiAgICAgIHJlYWRTdHJlYW0uY2xvc2UoKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlYWRUYXJiYWxsU3RyZWFtO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlRmlsZShuYW1lOiBzdHJpbmcsIGNvbnRlbnRzOiBhbnksIGNhbGxiYWNrOiBGdW5jdGlvbik6IHZvaWQge1xuICAgIGRlYnVnKCcgY3JlYXRlIGEgbmV3IGZpbGU6ICVvJywgbmFtZSk7XG5cbiAgICBmcy5vcGVuKG5hbWUsICd3eCcsIGVyciA9PiB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIC8vIG5hdGl2ZSBFRVhJU1QgdXNlZCBoZXJlIHRvIGNoZWNrIGV4Y2VwdGlvbiBvbiBmcy5vcGVuXG4gICAgICAgIGlmIChlcnIuY29kZSA9PT0gJ0VFWElTVCcpIHtcbiAgICAgICAgICBkZWJ1ZygnZmlsZSAlbyBjYW5ub3QgYmUgY3JlYXRlZCwgaXQgYWxyZWFkeSBleGlzdHM6ICVvJywgbmFtZSk7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGZTRXJyb3IoZmlsZUV4aXN0KSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5fd3JpdGVGaWxlKG5hbWUsIGNvbnRlbnRzLCBjYWxsYmFjayk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9yZWFkU3RvcmFnZUZpbGUobmFtZTogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk6IHZvaWQgPT4ge1xuICAgICAgZGVidWcoJ3JlYWRpbmcgdGhlIGZpbGU6ICVvJywgbmFtZSk7XG5cbiAgICAgIGZzLnJlYWRGaWxlKG5hbWUsIChlcnIsIGRhdGEpID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIGRlYnVnKCdlcnJvciByZWFkaW5nIHRoZSBmaWxlOiAlbyB3aXRoIGVycm9yICVvJywgbmFtZSwgZXJyKTtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZWJ1ZygncmVhZCBmaWxlICVvIHN1Y2NlZWQnLCBuYW1lKTtcblxuICAgICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29udmVydFRvU3RyaW5nKHZhbHVlOiBQYWNrYWdlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUsIG51bGwsICdcXHQnKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFN0b3JhZ2UoZmlsZU5hbWUgPSAnJyk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RvcmFnZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbih0aGlzLnBhdGgsIGZpbGVOYW1lKTtcblxuICAgIHJldHVybiBzdG9yYWdlUGF0aDtcbiAgfVxuXG4gIHByaXZhdGUgX3dyaXRlRmlsZShkZXN0OiBzdHJpbmcsIGRhdGE6IHN0cmluZywgY2I6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgY29uc3QgY3JlYXRlVGVtcEZpbGUgPSAoY2IpOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IHRlbXBGaWxlUGF0aCA9IHRlbXBGaWxlKGRlc3QpO1xuXG4gICAgICBmcy53cml0ZUZpbGUodGVtcEZpbGVQYXRoLCBkYXRhLCBlcnIgPT4ge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgZGVidWcoJ2Vycm9yIG9uIHdyaXRlIHRoZSBmaWxlOiAlbycsIGRlc3QpO1xuICAgICAgICAgIHJldHVybiBjYihlcnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVidWcoJ2NyZWF0aW5nIGEgbmV3IGZpbGU6OiAlbycsIGRlc3QpO1xuICAgICAgICByZW5hbWVUbXAodGVtcEZpbGVQYXRoLCBkZXN0LCBjYik7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgY3JlYXRlVGVtcEZpbGUoZXJyID0+IHtcbiAgICAgIGlmIChlcnIgJiYgZXJyLmNvZGUgPT09IG5vU3VjaEZpbGUpIHtcbiAgICAgICAgbWtkaXJwKHBhdGguZGlybmFtZShkZXN0KSlcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBjcmVhdGVUZW1wRmlsZShjYik7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjYihlcnIpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2IoZXJyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2xvY2tBbmRSZWFkSlNPTihuYW1lOiBzdHJpbmcsIGNiOiBGdW5jdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IGZpbGVOYW1lOiBzdHJpbmcgPSB0aGlzLl9nZXRTdG9yYWdlKG5hbWUpO1xuXG4gICAgcmVhZEZpbGUoXG4gICAgICBmaWxlTmFtZSxcbiAgICAgIHtcbiAgICAgICAgbG9jazogdHJ1ZSxcbiAgICAgICAgcGFyc2U6IHRydWUsXG4gICAgICB9LFxuICAgICAgKGVyciwgcmVzKSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICBkZWJ1ZygnZXJyb3Igb24gbG9jayBhbmQgcmVhZCBqc29uIGZvciBmaWxlOiAlbycsIG5hbWUpO1xuXG4gICAgICAgICAgcmV0dXJuIGNiKGVycik7XG4gICAgICAgIH1cbiAgICAgICAgZGVidWcoJ2xvY2sgYW5kIHJlYWQganNvbiBmb3IgZmlsZTogJW8nLCBuYW1lKTtcblxuICAgICAgICByZXR1cm4gY2IobnVsbCwgcmVzKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfdW5sb2NrSlNPTihuYW1lOiBzdHJpbmcsIGNiOiBGdW5jdGlvbik6IHZvaWQge1xuICAgIHVubG9ja0ZpbGUodGhpcy5fZ2V0U3RvcmFnZShuYW1lKSwgY2IpO1xuICB9XG59XG4iXX0=
398
+ //# sourceMappingURL=local-fs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/local-fs.ts"],"names":["fileExist","noSuchFile","resourceNotAvailable","pkgFileName","debug","fSError","message","code","err","tempFile","str","String","Math","random","substr","renameTmp","src","dst","_cb","cb","fs","unlink","process","platform","rename","tmp","LocalFS","constructor","path","logger","updatePackage","name","updateHandler","onWrite","transformPackage","onEnd","_lockAndReadJSON","json","locked","self","unLockCallback","lockError","_args","arguments","_unlockJSON","apply","_","isNil","deletePackage","packageName","callback","_getStorage","removePackage","rmdir","createPackage","value","_createFile","_convertToString","savePackage","_writeFile","readPackage","_readStorageFile","then","res","data","JSON","parse","toString","writeTarball","uploadStream","UploadTarball","_ended","on","pathName","access","fileNotFound","exists","emit","temporalName","join","replace","file","createWriteStream","removeTempFile","opened","pipe","done","onend","end","abort","readTarball","readTarballStream","ReadTarball","readStream","createReadStream","fd","fstat","stats","size","close","contents","open","Promise","resolve","reject","readFile","stringify","fileName","storagePath","dest","createTempFile","tempFilePath","writeFile","dirname","catch","lock"],"mappings":"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","sourcesContent":["/* eslint-disable no-undef */\n\nimport fs from 'fs';\nimport path from 'path';\n\nimport buildDebug from 'debug';\nimport _ from 'lodash';\nimport mkdirp from 'mkdirp';\nimport { UploadTarball, ReadTarball } from '@verdaccio/streams';\nimport { unlockFile, readFile } from '@verdaccio/file-locking';\nimport { Callback, Logger, Package, ILocalPackageManager, IUploadTarball } from '@verdaccio/types';\nimport { getCode, getInternalError, getNotFound, VerdaccioError } from '@verdaccio/commons-api';\n\nexport const fileExist = 'EEXISTS';\nexport const noSuchFile = 'ENOENT';\nexport const resourceNotAvailable = 'EAGAIN';\nexport const pkgFileName = 'package.json';\n\nconst debug = buildDebug('verdaccio:plugin:local-storage:fs');\n\nexport const fSError = function(message: string, code = 409): VerdaccioError {\n const err: VerdaccioError = getCode(code, message);\n // FIXME: we should return http-status codes here instead, future improvement\n // @ts-ignore\n err.code = message;\n\n return err;\n};\n\nconst tempFile = function(str): string {\n return `${str}.tmp${String(Math.random()).substr(2)}`;\n};\n\nconst renameTmp = function(src, dst, _cb): void {\n const cb = (err): void => {\n if (err) {\n fs.unlink(src, () => {});\n }\n _cb(err);\n };\n\n if (process.platform !== 'win32') {\n return fs.rename(src, dst, cb);\n }\n\n // windows can't remove opened file,\n // but it seem to be able to rename it\n const tmp = tempFile(dst);\n fs.rename(dst, tmp, function(err) {\n fs.rename(src, dst, cb);\n if (!err) {\n fs.unlink(tmp, () => {});\n }\n });\n};\n\nexport type ILocalFSPackageManager = ILocalPackageManager & { path: string };\n\nexport default class LocalFS implements ILocalFSPackageManager {\n public path: string;\n public logger: Logger;\n\n public constructor(path: string, logger: Logger) {\n this.path = path;\n this.logger = logger;\n }\n\n /**\n * This function allows to update the package thread-safely\n Algorithm:\n 1. lock package.json for writing\n 2. read package.json\n 3. updateFn(pkg, cb), and wait for cb\n 4. write package.json.tmp\n 5. move package.json.tmp package.json\n 6. callback(err?)\n * @param {*} name\n * @param {*} updateHandler\n * @param {*} onWrite\n * @param {*} transformPackage\n * @param {*} onEnd\n */\n public updatePackage(\n name: string,\n updateHandler: Callback,\n onWrite: Callback,\n transformPackage: Function,\n onEnd: Callback\n ): void {\n this._lockAndReadJSON(pkgFileName, (err, json) => {\n let locked = false;\n const self = this;\n // callback that cleans up lock first\n const unLockCallback = function(lockError: Error): void {\n // eslint-disable-next-line prefer-rest-params\n const _args = arguments;\n\n if (locked) {\n self._unlockJSON(pkgFileName, () => {\n // ignore any error from the unlock\n if (lockError !== null) {\n debug('lock file: %o has failed with error %o', name, lockError);\n }\n\n onEnd.apply(lockError, _args);\n });\n } else {\n debug('file: %o has been updated', name);\n onEnd(..._args);\n }\n };\n\n if (!err) {\n locked = true;\n debug('file: %o has been locked', name);\n }\n\n if (_.isNil(err) === false) {\n if (err.code === resourceNotAvailable) {\n return unLockCallback(getInternalError('resource temporarily unavailable'));\n } else if (err.code === noSuchFile) {\n return unLockCallback(getNotFound());\n } else {\n return unLockCallback(err);\n }\n }\n\n updateHandler(json, err => {\n if (err) {\n return unLockCallback(err);\n }\n\n onWrite(name, transformPackage(json), unLockCallback);\n });\n });\n }\n\n public deletePackage(packageName: string, callback: (err: NodeJS.ErrnoException | null) => void): void {\n debug('delete a package %o', packageName);\n\n return fs.unlink(this._getStorage(packageName), callback);\n }\n\n public removePackage(callback: (err: NodeJS.ErrnoException | null) => void): void {\n debug('remove a package %o', this.path);\n\n fs.rmdir(this._getStorage('.'), callback);\n }\n\n public createPackage(name: string, value: Package, cb: Callback): void {\n debug('create a package %o', name);\n\n this._createFile(this._getStorage(pkgFileName), this._convertToString(value), cb);\n }\n\n public savePackage(name: string, value: Package, cb: Callback): void {\n debug('save a package %o', name);\n\n this._writeFile(this._getStorage(pkgFileName), this._convertToString(value), cb);\n }\n\n public readPackage(name: string, cb: Callback): void {\n debug('read a package %o', name);\n\n this._readStorageFile(this._getStorage(pkgFileName)).then(\n res => {\n try {\n const data: any = JSON.parse(res.toString('utf8'));\n\n debug('read storage file %o has succeed', name);\n cb(null, data);\n } catch (err) {\n debug('parse storage file %o has failed with error %o', name, err);\n cb(err);\n }\n },\n err => {\n debug('read storage file %o has failed with error %o', name, err);\n\n return cb(err);\n }\n );\n }\n\n public writeTarball(name: string): IUploadTarball {\n const uploadStream = new UploadTarball({});\n debug('write a tarball for a package %o', name);\n\n let _ended = 0;\n uploadStream.on('end', function() {\n _ended = 1;\n });\n\n const pathName: string = this._getStorage(name);\n\n fs.access(pathName, fileNotFound => {\n const exists = !fileNotFound;\n if (exists) {\n uploadStream.emit('error', fSError(fileExist));\n } else {\n const temporalName = path.join(this.path, `${name}.tmp-${String(Math.random()).replace(/^0\\./, '')}`);\n debug('write a temporal name %o', temporalName);\n const file = fs.createWriteStream(temporalName);\n const removeTempFile = (): void => fs.unlink(temporalName, () => {});\n let opened = false;\n uploadStream.pipe(file);\n\n uploadStream.done = function(): void {\n const onend = function(): void {\n file.on('close', function() {\n renameTmp(temporalName, pathName, function(err) {\n if (err) {\n uploadStream.emit('error', err);\n } else {\n uploadStream.emit('success');\n }\n });\n });\n file.end();\n };\n if (_ended) {\n onend();\n } else {\n uploadStream.on('end', onend);\n }\n };\n\n uploadStream.abort = function(): void {\n if (opened) {\n opened = false;\n file.on('close', function() {\n removeTempFile();\n });\n } else {\n // if the file does not recieve any byte never is opened and has to be removed anyway.\n removeTempFile();\n }\n file.end();\n };\n\n file.on('open', function() {\n opened = true;\n // re-emitting open because it's handled in storage.js\n uploadStream.emit('open');\n });\n\n file.on('error', function(err) {\n uploadStream.emit('error', err);\n });\n }\n });\n\n return uploadStream;\n }\n\n public readTarball(name: string): ReadTarball {\n const pathName: string = this._getStorage(name);\n debug('read a a tarball %o on path %o', name, pathName);\n\n const readTarballStream = new ReadTarball({});\n\n const readStream = fs.createReadStream(pathName);\n\n readStream.on('error', function(err) {\n debug('error on read a tarball %o with error %o', name, err);\n readTarballStream.emit('error', err);\n });\n\n readStream.on('open', function(fd) {\n fs.fstat(fd, function(err, stats) {\n if (_.isNil(err) === false) {\n debug('error on read a tarball %o with error %o', name, err);\n return readTarballStream.emit('error', err);\n }\n readTarballStream.emit('content-length', stats.size);\n readTarballStream.emit('open');\n debug('open on read a tarball %o', name);\n readStream.pipe(readTarballStream);\n });\n });\n\n readTarballStream.abort = function(): void {\n debug('abort on read a tarball %o', name);\n readStream.close();\n };\n\n return readTarballStream;\n }\n\n private _createFile(name: string, contents: any, callback: Function): void {\n debug(' create a new file: %o', name);\n\n fs.open(name, 'wx', err => {\n if (err) {\n // native EEXIST used here to check exception on fs.open\n if (err.code === 'EEXIST') {\n debug('file %o cannot be created, it already exists: %o', name);\n return callback(fSError(fileExist));\n }\n }\n\n this._writeFile(name, contents, callback);\n });\n }\n\n private _readStorageFile(name: string): Promise<any> {\n return new Promise((resolve, reject): void => {\n debug('reading the file: %o', name);\n\n fs.readFile(name, (err, data) => {\n if (err) {\n debug('error reading the file: %o with error %o', name, err);\n reject(err);\n } else {\n debug('read file %o succeed', name);\n\n resolve(data);\n }\n });\n });\n }\n\n private _convertToString(value: Package): string {\n return JSON.stringify(value, null, '\\t');\n }\n\n private _getStorage(fileName = ''): string {\n const storagePath: string = path.join(this.path, fileName);\n\n return storagePath;\n }\n\n private _writeFile(dest: string, data: string, cb: Callback): void {\n const createTempFile = (cb): void => {\n const tempFilePath = tempFile(dest);\n\n fs.writeFile(tempFilePath, data, err => {\n if (err) {\n debug('error on write the file: %o', dest);\n return cb(err);\n }\n\n debug('creating a new file:: %o', dest);\n renameTmp(tempFilePath, dest, cb);\n });\n };\n\n createTempFile(err => {\n if (err && err.code === noSuchFile) {\n mkdirp(path.dirname(dest))\n .then(() => {\n createTempFile(cb);\n })\n .catch(err => {\n return cb(err);\n });\n } else {\n cb(err);\n }\n });\n }\n\n private _lockAndReadJSON(name: string, cb: Function): void {\n const fileName: string = this._getStorage(name);\n\n readFile(\n fileName,\n {\n lock: true,\n parse: true,\n },\n (err, res) => {\n if (err) {\n debug('error on lock and read json for file: %o', name);\n\n return cb(err);\n }\n debug('lock and read json for file: %o', name);\n\n return cb(null, res);\n }\n );\n }\n\n private _unlockJSON(name: string, cb: Function): void {\n unlockFile(this._getStorage(name), cb);\n }\n}\n"],"file":"local-fs.js"}
package/lib/pkg-utils.js CHANGED
@@ -40,4 +40,4 @@ function loadPrivatePackages(path, logger) {
40
40
 
41
41
  return db;
42
42
  }
43
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wa2ctdXRpbHMudHMiXSwibmFtZXMiOlsibG9hZFByaXZhdGVQYWNrYWdlcyIsInBhdGgiLCJsb2dnZXIiLCJsaXN0IiwiZW1wdHlEYXRhYmFzZSIsInNlY3JldCIsImRhdGEiLCJmcyIsInJlYWRGaWxlU3luYyIsIl8iLCJpc05pbCIsImRiIiwiSlNPTiIsInBhcnNlIiwiZXJyIiwiZXJyb3IiLCJFcnJvciIsImlzRW1wdHkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFQTs7OztBQUdPLFNBQVNBLG1CQUFULENBQTZCQyxJQUE3QixFQUEyQ0MsTUFBM0MsRUFBeUU7QUFDOUUsUUFBTUMsSUFBaUIsR0FBRyxFQUExQjtBQUNBLFFBQU1DLGFBQWEsR0FBRztBQUFFRCxJQUFBQSxJQUFGO0FBQVFFLElBQUFBLE1BQU0sRUFBRTtBQUFoQixHQUF0Qjs7QUFDQSxRQUFNQyxJQUFJLEdBQUdDLFlBQUdDLFlBQUgsQ0FBZ0JQLElBQWhCLEVBQXNCLE1BQXRCLENBQWI7O0FBRUEsTUFBSVEsZ0JBQUVDLEtBQUYsQ0FBUUosSUFBUixDQUFKLEVBQW1CO0FBQ2pCO0FBQ0EsV0FBT0YsYUFBUDtBQUNEOztBQUVELE1BQUlPLEVBQUo7O0FBQ0EsTUFBSTtBQUNGQSxJQUFBQSxFQUFFLEdBQUdDLElBQUksQ0FBQ0MsS0FBTCxDQUFXUCxJQUFYLENBQUw7QUFDRCxHQUZELENBRUUsT0FBT1EsR0FBUCxFQUFZO0FBQ1paLElBQUFBLE1BQU0sQ0FBQ2EsS0FBUCxDQUNHLHdFQUFELEdBQTRFLCtCQUE4QmQsSUFBSyxFQURqSCxFQUVFYSxHQUZGO0FBSUEsVUFBTUUsS0FBSyxDQUFDLGdEQUFELENBQVg7QUFDRDs7QUFFRCxNQUFJUCxnQkFBRVEsT0FBRixDQUFVTixFQUFWLENBQUosRUFBbUI7QUFDakIsV0FBT1AsYUFBUDtBQUNEOztBQUVELFNBQU9PLEVBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcyc7XG5cbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2UsIFN0b3JhZ2VMaXN0LCBMb2dnZXIgfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRQcml2YXRlUGFja2FnZXMocGF0aDogc3RyaW5nLCBsb2dnZXI6IExvZ2dlcik6IExvY2FsU3RvcmFnZSB7XG4gIGNvbnN0IGxpc3Q6IFN0b3JhZ2VMaXN0ID0gW107XG4gIGNvbnN0IGVtcHR5RGF0YWJhc2UgPSB7IGxpc3QsIHNlY3JldDogJycgfTtcbiAgY29uc3QgZGF0YSA9IGZzLnJlYWRGaWxlU3luYyhwYXRoLCAndXRmOCcpO1xuXG4gIGlmIChfLmlzTmlsKGRhdGEpKSB7XG4gICAgLy8gcmVhZEZpbGVTeW5jIGlzIHBsYXRmb3JtIHNwZWNpZmljLCBGcmVlQlNEIG1pZ2h0IHJldHVybiBudWxsXG4gICAgcmV0dXJuIGVtcHR5RGF0YWJhc2U7XG4gIH1cblxuICBsZXQgZGI7XG4gIHRyeSB7XG4gICAgZGIgPSBKU09OLnBhcnNlKGRhdGEpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2dnZXIuZXJyb3IoXG4gICAgICBgUGFja2FnZSBkYXRhYmFzZSBmaWxlIGNvcnJ1cHRlZCAoaW52YWxpZCBKU09OKSwgcGxlYXNlIGNoZWNrIHRoZSBlcnJvcmAgKyBgIHByaW50ZWQgYmVsb3cuXFxuRmlsZSBQYXRoOiAke3BhdGh9YCxcbiAgICAgIGVyclxuICAgICk7XG4gICAgdGhyb3cgRXJyb3IoJ1BhY2thZ2UgZGF0YWJhc2UgZmlsZSBjb3JydXB0ZWQgKGludmFsaWQgSlNPTiknKTtcbiAgfVxuXG4gIGlmIChfLmlzRW1wdHkoZGIpKSB7XG4gICAgcmV0dXJuIGVtcHR5RGF0YWJhc2U7XG4gIH1cblxuICByZXR1cm4gZGI7XG59XG4iXX0=
43
+ //# sourceMappingURL=pkg-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/pkg-utils.ts"],"names":["loadPrivatePackages","path","logger","list","emptyDatabase","secret","data","fs","readFileSync","_","isNil","db","JSON","parse","err","error","Error","isEmpty"],"mappings":";;;;;;;AAAA;;AAEA;;;;AAGO,SAASA,mBAAT,CAA6BC,IAA7B,EAA2CC,MAA3C,EAAyE;AAC9E,QAAMC,IAAiB,GAAG,EAA1B;AACA,QAAMC,aAAa,GAAG;AAAED,IAAAA,IAAF;AAAQE,IAAAA,MAAM,EAAE;AAAhB,GAAtB;;AACA,QAAMC,IAAI,GAAGC,YAAGC,YAAH,CAAgBP,IAAhB,EAAsB,MAAtB,CAAb;;AAEA,MAAIQ,gBAAEC,KAAF,CAAQJ,IAAR,CAAJ,EAAmB;AACjB;AACA,WAAOF,aAAP;AACD;;AAED,MAAIO,EAAJ;;AACA,MAAI;AACFA,IAAAA,EAAE,GAAGC,IAAI,CAACC,KAAL,CAAWP,IAAX,CAAL;AACD,GAFD,CAEE,OAAOQ,GAAP,EAAY;AACZZ,IAAAA,MAAM,CAACa,KAAP,CACG,wEAAD,GAA4E,+BAA8Bd,IAAK,EADjH,EAEEa,GAFF;AAIA,UAAME,KAAK,CAAC,gDAAD,CAAX;AACD;;AAED,MAAIP,gBAAEQ,OAAF,CAAUN,EAAV,CAAJ,EAAmB;AACjB,WAAOP,aAAP;AACD;;AAED,SAAOO,EAAP;AACD","sourcesContent":["import fs from 'fs';\n\nimport _ from 'lodash';\nimport { LocalStorage, StorageList, Logger } from '@verdaccio/types';\n\nexport function loadPrivatePackages(path: string, logger: Logger): LocalStorage {\n const list: StorageList = [];\n const emptyDatabase = { list, secret: '' };\n const data = fs.readFileSync(path, 'utf8');\n\n if (_.isNil(data)) {\n // readFileSync is platform specific, FreeBSD might return null\n return emptyDatabase;\n }\n\n let db;\n try {\n db = JSON.parse(data);\n } catch (err) {\n logger.error(\n `Package database file corrupted (invalid JSON), please check the error` + ` printed below.\\nFile Path: ${path}`,\n err\n );\n throw Error('Package database file corrupted (invalid JSON)');\n }\n\n if (_.isEmpty(db)) {\n return emptyDatabase;\n }\n\n return db;\n}\n"],"file":"pkg-utils.js"}
package/lib/token.js CHANGED
@@ -113,4 +113,4 @@ class TokenActions {
113
113
  }
114
114
 
115
115
  exports.default = TokenActions;
116
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90b2tlbi50cyJdLCJuYW1lcyI6WyJkZWJ1ZyIsIlRPS0VOX0RCX05BTUUiLCJUb2tlbkFjdGlvbnMiLCJjb25zdHJ1Y3RvciIsImNvbmZpZyIsInRva2VuRGIiLCJfZGJHZW5QYXRoIiwiZGJOYW1lIiwiUGF0aCIsImpvaW4iLCJyZXNvbHZlIiwiZGlybmFtZSIsImNvbmZpZ19wYXRoIiwic3RvcmFnZSIsImdldFRva2VuRGIiLCJhZGFwdGVyIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiRmlsZU1lbW9yeSIsInBhdGhEYiIsIkZpbGVBc3luYyIsInNhdmVUb2tlbiIsInRva2VuIiwia2V5IiwiZGIiLCJ1c2VyRGF0YSIsImdldCIsInVzZXIiLCJ2YWx1ZSIsIl8iLCJpc05pbCIsInNldCIsIndyaXRlIiwicHVzaCIsImdldFN0YXRlIiwiZGVsZXRlVG9rZW4iLCJ0b2tlbktleSIsInVzZXJUb2tlbnMiLCJFcnJvciIsImxlbmd0aCIsInJlbWFpbmluZ1Rva2VucyIsImZpbHRlciIsInJlYWRUb2tlbnMiLCJ0b2tlbnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBR0EsTUFBTUEsS0FBSyxHQUFHLG9CQUFXLHNDQUFYLENBQWQ7QUFFQSxNQUFNQyxhQUFhLEdBQUcsZ0JBQXRCOztBQUVlLE1BQU1DLFlBQU4sQ0FBNEM7QUFJbERDLEVBQUFBLFdBQVAsQ0FBbUJDLE1BQW5CLEVBQW1DO0FBQUE7O0FBQUE7O0FBQ2pDLFNBQUtBLE1BQUwsR0FBY0EsTUFBZDtBQUNBLFNBQUtDLE9BQUwsR0FBZSxJQUFmO0FBQ0Q7O0FBRU1DLEVBQUFBLFVBQVAsQ0FBa0JDLE1BQWxCLEVBQWtDSCxNQUFsQyxFQUEwRDtBQUN4RCxXQUFPSSxjQUFLQyxJQUFMLENBQVVELGNBQUtFLE9BQUwsQ0FBYUYsY0FBS0csT0FBTCxDQUFhUCxNQUFNLENBQUNRLFdBQVAsSUFBc0IsRUFBbkMsQ0FBYixFQUFxRFIsTUFBTSxDQUFDUyxPQUE1RCxFQUErRU4sTUFBL0UsQ0FBVixDQUFQO0FBQ0Q7O0FBRUQsUUFBY08sVUFBZCxHQUF5RDtBQUN2RCxRQUFJLENBQUMsS0FBS1QsT0FBVixFQUFtQjtBQUNqQkwsTUFBQUEsS0FBSyxDQUFDLCtCQUFELENBQUw7QUFDQSxVQUFJZSxPQUFKOztBQUNBLFVBQUlDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxRQUFaLEtBQXlCLE1BQTdCLEVBQXFDO0FBQ25DbEIsUUFBQUEsS0FBSyxDQUFDLHNCQUFELENBQUw7QUFDQWUsUUFBQUEsT0FBTyxHQUFHLElBQUlJLGVBQUosQ0FBZSxFQUFmLENBQVY7QUFDRCxPQUhELE1BR087QUFDTG5CLFFBQUFBLEtBQUssQ0FBQyxxQkFBRCxDQUFMOztBQUNBLGNBQU1vQixNQUFNLEdBQUcsS0FBS2QsVUFBTCxDQUFnQkwsYUFBaEIsRUFBK0IsS0FBS0csTUFBcEMsQ0FBZjs7QUFDQVcsUUFBQUEsT0FBTyxHQUFHLElBQUlNLGtCQUFKLENBQWNELE1BQWQsQ0FBVjtBQUNEOztBQUNEcEIsTUFBQUEsS0FBSyxDQUFDLG9CQUFELENBQUw7QUFDQSxXQUFLSyxPQUFMLEdBQWUsTUFBTSxvQkFBSVUsT0FBSixDQUFyQjtBQUNEOztBQUVELFdBQU8sS0FBS1YsT0FBWjtBQUNEOztBQUVELFFBQWFpQixTQUFiLENBQXVCQyxLQUF2QixFQUFvRDtBQUNsRHZCLElBQUFBLEtBQUssQ0FBQyxjQUFELEVBQWlCdUIsS0FBSyxDQUFDQyxHQUF2QixDQUFMO0FBQ0EsVUFBTUMsRUFBRSxHQUFHLE1BQU0sS0FBS1gsVUFBTCxFQUFqQjtBQUNBLFVBQU1ZLFFBQVEsR0FBRyxNQUFNRCxFQUFFLENBQUNFLEdBQUgsQ0FBT0osS0FBSyxDQUFDSyxJQUFiLEVBQW1CQyxLQUFuQixFQUF2QjtBQUNBN0IsSUFBQUEsS0FBSyxDQUFDLGNBQUQsRUFBaUIwQixRQUFqQixDQUFMOztBQUNBLFFBQUlJLGdCQUFFQyxLQUFGLENBQVFMLFFBQVIsQ0FBSixFQUF1QjtBQUNyQixZQUFNRCxFQUFFLENBQUNPLEdBQUgsQ0FBT1QsS0FBSyxDQUFDSyxJQUFiLEVBQW1CLENBQUNMLEtBQUQsQ0FBbkIsRUFBNEJVLEtBQTVCLEVBQU47QUFDQWpDLE1BQUFBLEtBQUssQ0FBQyw0QkFBRCxFQUErQnVCLEtBQUssQ0FBQ0ssSUFBckMsQ0FBTDtBQUNELEtBSEQsTUFHTztBQUNMO0FBQ0E7QUFDQSxZQUFNSCxFQUFFLENBQ0xFLEdBREcsQ0FDQ0osS0FBSyxDQUFDSyxJQURQLEVBRUo7QUFGSSxPQUdITSxJQUhHLENBR0VYLEtBSEYsRUFJSFUsS0FKRyxFQUFOO0FBS0Q7O0FBQ0RqQyxJQUFBQSxLQUFLLENBQUMsU0FBRCxFQUFZLE1BQU15QixFQUFFLENBQUNVLFFBQUgsRUFBbEIsQ0FBTDtBQUNBbkMsSUFBQUEsS0FBSyxDQUFDLGdCQUFELEVBQW1CdUIsS0FBSyxDQUFDSyxJQUF6QixDQUFMO0FBQ0Q7O0FBRUQsUUFBYVEsV0FBYixDQUF5QlIsSUFBekIsRUFBdUNTLFFBQXZDLEVBQXdFO0FBQ3RFLFVBQU1aLEVBQUUsR0FBRyxNQUFNLEtBQUtYLFVBQUwsRUFBakI7QUFDQSxVQUFNd0IsVUFBVSxHQUFHLE1BQU1iLEVBQUUsQ0FBQ0UsR0FBSCxDQUFPQyxJQUFQLEVBQWFDLEtBQWIsRUFBekI7O0FBQ0EsUUFBSUMsZ0JBQUVDLEtBQUYsQ0FBUU8sVUFBUixDQUFKLEVBQXlCO0FBQ3ZCLFlBQU0sSUFBSUMsS0FBSixDQUFVLGdCQUFWLENBQU47QUFDRDs7QUFDRHZDLElBQUFBLEtBQUssQ0FBQyxnQkFBRCxFQUFtQnNDLFVBQW5CLEVBQStCQSxVQUFVLENBQUNFLE1BQTFDLENBQUw7QUFDQSxVQUFNQyxlQUFlLEdBQUdILFVBQVUsQ0FBQ0ksTUFBWCxDQUFrQixDQUFDO0FBQUVsQixNQUFBQTtBQUFGLEtBQUQsS0FBYTtBQUNyRHhCLE1BQUFBLEtBQUssQ0FBQyxRQUFELEVBQVd3QixHQUFYLENBQUw7QUFDQSxhQUFPQSxHQUFHLEtBQUthLFFBQWY7QUFDRCxLQUh1QixDQUF4QjtBQUlBLFVBQU1aLEVBQUUsQ0FBQ08sR0FBSCxDQUFPSixJQUFQLEVBQWFhLGVBQWIsRUFBOEJSLEtBQTlCLEVBQU47QUFDQWpDLElBQUFBLEtBQUssQ0FBQyx1QkFBRCxFQUEwQnFDLFFBQTFCLENBQUw7QUFDRDs7QUFFRCxRQUFhTSxVQUFiLENBQXdCRCxNQUF4QixFQUErRDtBQUM3RCxVQUFNO0FBQUVkLE1BQUFBO0FBQUYsUUFBV2MsTUFBakI7QUFDQTFDLElBQUFBLEtBQUssQ0FBQyxxQkFBRCxFQUF3QjRCLElBQXhCLENBQUw7QUFDQSxVQUFNSCxFQUFFLEdBQUcsTUFBTSxLQUFLWCxVQUFMLEVBQWpCO0FBQ0EsVUFBTThCLE1BQU0sR0FBRyxNQUFNbkIsRUFBRSxDQUFDRSxHQUFILENBQU9DLElBQVAsRUFBYUMsS0FBYixFQUFyQjtBQUNBLFdBQU9lLE1BQU0sSUFBSSxFQUFqQjtBQUNEOztBQTFFd0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUGF0aCBmcm9tICdwYXRoJztcblxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBsb3cgZnJvbSAnbG93ZGInO1xuaW1wb3J0IEZpbGVBc3luYyBmcm9tICdsb3dkYi9hZGFwdGVycy9GaWxlQXN5bmMnO1xuaW1wb3J0IEZpbGVNZW1vcnkgZnJvbSAnbG93ZGIvYWRhcHRlcnMvTWVtb3J5JztcbmltcG9ydCBidWlsZERlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7IElUb2tlbkFjdGlvbnMsIENvbmZpZywgVG9rZW4sIFRva2VuRmlsdGVyIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5cbmNvbnN0IGRlYnVnID0gYnVpbGREZWJ1ZygndmVyZGFjY2lvOnBsdWdpbjpsb2NhbC1zdG9yYWdlOnRva2VuJyk7XG5cbmNvbnN0IFRPS0VOX0RCX05BTUUgPSAnLnRva2VuLWRiLmpzb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUb2tlbkFjdGlvbnMgaW1wbGVtZW50cyBJVG9rZW5BY3Rpb25zIHtcbiAgcHVibGljIGNvbmZpZzogQ29uZmlnO1xuICBwdWJsaWMgdG9rZW5EYjogbG93Lkxvd2RiQXN5bmM8YW55PiB8IG51bGw7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvbmZpZzogQ29uZmlnKSB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy50b2tlbkRiID0gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBfZGJHZW5QYXRoKGRiTmFtZTogc3RyaW5nLCBjb25maWc6IENvbmZpZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFBhdGguam9pbihQYXRoLnJlc29sdmUoUGF0aC5kaXJuYW1lKGNvbmZpZy5jb25maWdfcGF0aCB8fCAnJyksIGNvbmZpZy5zdG9yYWdlIGFzIHN0cmluZywgZGJOYW1lKSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFRva2VuRGIoKTogUHJvbWlzZTxsb3cuTG93ZGJBc3luYzxhbnk+PiB7XG4gICAgaWYgKCF0aGlzLnRva2VuRGIpIHtcbiAgICAgIGRlYnVnKCd0b2tlbiBkYXRhYmFzZSBpcyBub3QgZGVmaW5lZCcpO1xuICAgICAgbGV0IGFkYXB0ZXI7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICd0ZXN0Jykge1xuICAgICAgICBkZWJ1ZygndG9rZW4gbWVtb3J5IGFkYXB0ZXInKTtcbiAgICAgICAgYWRhcHRlciA9IG5ldyBGaWxlTWVtb3J5KCcnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlYnVnKCd0b2tlbiBhc3luYyBhZGFwdGVyJyk7XG4gICAgICAgIGNvbnN0IHBhdGhEYiA9IHRoaXMuX2RiR2VuUGF0aChUT0tFTl9EQl9OQU1FLCB0aGlzLmNvbmZpZyk7XG4gICAgICAgIGFkYXB0ZXIgPSBuZXcgRmlsZUFzeW5jKHBhdGhEYik7XG4gICAgICB9XG4gICAgICBkZWJ1ZygndG9rZW4gYmQgZ2VuZXJhdGVkJyk7XG4gICAgICB0aGlzLnRva2VuRGIgPSBhd2FpdCBsb3coYWRhcHRlcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudG9rZW5EYjtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzYXZlVG9rZW4odG9rZW46IFRva2VuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZGVidWcoJ3Rva2VuIGtleSAlbycsIHRva2VuLmtleSk7XG4gICAgY29uc3QgZGIgPSBhd2FpdCB0aGlzLmdldFRva2VuRGIoKTtcbiAgICBjb25zdCB1c2VyRGF0YSA9IGF3YWl0IGRiLmdldCh0b2tlbi51c2VyKS52YWx1ZSgpO1xuICAgIGRlYnVnKCd1c2VyIGRhdGEgJW8nLCB1c2VyRGF0YSk7XG4gICAgaWYgKF8uaXNOaWwodXNlckRhdGEpKSB7XG4gICAgICBhd2FpdCBkYi5zZXQodG9rZW4udXNlciwgW3Rva2VuXSkud3JpdGUoKTtcbiAgICAgIGRlYnVnKCd0b2tlbiB1c2VyICVvIG5ldyBkYXRhYmFzZScsIHRva2VuLnVzZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB0eXBlcyBkb2VzIG5vdCBtYXRjaCB3aXRoIHZhbGlkIGltcGxlbWVudGF0aW9uXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBhd2FpdCBkYlxuICAgICAgICAuZ2V0KHRva2VuLnVzZXIpXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgLnB1c2godG9rZW4pXG4gICAgICAgIC53cml0ZSgpO1xuICAgIH1cbiAgICBkZWJ1ZygnZGF0YSAlbycsIGF3YWl0IGRiLmdldFN0YXRlKCkpO1xuICAgIGRlYnVnKCd0b2tlbiBzYXZlZCAlbycsIHRva2VuLnVzZXIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlbGV0ZVRva2VuKHVzZXI6IHN0cmluZywgdG9rZW5LZXk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGRiID0gYXdhaXQgdGhpcy5nZXRUb2tlbkRiKCk7XG4gICAgY29uc3QgdXNlclRva2VucyA9IGF3YWl0IGRiLmdldCh1c2VyKS52YWx1ZSgpO1xuICAgIGlmIChfLmlzTmlsKHVzZXJUb2tlbnMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VzZXIgbm90IGZvdW5kJyk7XG4gICAgfVxuICAgIGRlYnVnKCd0b2tlbnMgJW8gLSAlbycsIHVzZXJUb2tlbnMsIHVzZXJUb2tlbnMubGVuZ3RoKTtcbiAgICBjb25zdCByZW1haW5pbmdUb2tlbnMgPSB1c2VyVG9rZW5zLmZpbHRlcigoeyBrZXkgfSkgPT4ge1xuICAgICAgZGVidWcoJ2tleSAlbycsIGtleSk7XG4gICAgICByZXR1cm4ga2V5ICE9PSB0b2tlbktleTtcbiAgICB9KTtcbiAgICBhd2FpdCBkYi5zZXQodXNlciwgcmVtYWluaW5nVG9rZW5zKS53cml0ZSgpO1xuICAgIGRlYnVnKCdyZW1vdmVkIHRva2VucyBrZXkgJW8nLCB0b2tlbktleSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVhZFRva2VucyhmaWx0ZXI6IFRva2VuRmlsdGVyKTogUHJvbWlzZTxUb2tlbltdPiB7XG4gICAgY29uc3QgeyB1c2VyIH0gPSBmaWx0ZXI7XG4gICAgZGVidWcoJ3JlYWQgdG9rZW5zIHdpdGggJW8nLCB1c2VyKTtcbiAgICBjb25zdCBkYiA9IGF3YWl0IHRoaXMuZ2V0VG9rZW5EYigpO1xuICAgIGNvbnN0IHRva2VucyA9IGF3YWl0IGRiLmdldCh1c2VyKS52YWx1ZSgpO1xuICAgIHJldHVybiB0b2tlbnMgfHwgW107XG4gIH1cbn1cbiJdfQ==
116
+ //# sourceMappingURL=token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/token.ts"],"names":["debug","TOKEN_DB_NAME","TokenActions","constructor","config","tokenDb","_dbGenPath","dbName","Path","join","resolve","dirname","config_path","storage","getTokenDb","adapter","process","env","NODE_ENV","FileMemory","pathDb","FileAsync","saveToken","token","key","db","userData","get","user","value","_","isNil","set","write","push","getState","deleteToken","tokenKey","userTokens","Error","length","remainingTokens","filter","readTokens","tokens"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;AACA;;;;;;AAGA,MAAMA,KAAK,GAAG,oBAAW,sCAAX,CAAd;AAEA,MAAMC,aAAa,GAAG,gBAAtB;;AAEe,MAAMC,YAAN,CAA4C;AAIlDC,EAAAA,WAAW,CAACC,MAAD,EAAiB;AAAA;;AAAA;;AACjC,SAAKA,MAAL,GAAcA,MAAd;AACA,SAAKC,OAAL,GAAe,IAAf;AACD;;AAEMC,EAAAA,UAAU,CAACC,MAAD,EAAiBH,MAAjB,EAAyC;AACxD,WAAOI,cAAKC,IAAL,CAAUD,cAAKE,OAAL,CAAaF,cAAKG,OAAL,CAAaP,MAAM,CAACQ,WAAP,IAAsB,EAAnC,CAAb,EAAqDR,MAAM,CAACS,OAA5D,EAA+EN,MAA/E,CAAV,CAAP;AACD;;AAEuB,QAAVO,UAAU,GAAiC;AACvD,QAAI,CAAC,KAAKT,OAAV,EAAmB;AACjBL,MAAAA,KAAK,CAAC,+BAAD,CAAL;AACA,UAAIe,OAAJ;;AACA,UAAIC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,MAA7B,EAAqC;AACnClB,QAAAA,KAAK,CAAC,sBAAD,CAAL;AACAe,QAAAA,OAAO,GAAG,IAAII,eAAJ,CAAe,EAAf,CAAV;AACD,OAHD,MAGO;AACLnB,QAAAA,KAAK,CAAC,qBAAD,CAAL;;AACA,cAAMoB,MAAM,GAAG,KAAKd,UAAL,CAAgBL,aAAhB,EAA+B,KAAKG,MAApC,CAAf;;AACAW,QAAAA,OAAO,GAAG,IAAIM,kBAAJ,CAAcD,MAAd,CAAV;AACD;;AACDpB,MAAAA,KAAK,CAAC,oBAAD,CAAL;AACA,WAAKK,OAAL,GAAe,MAAM,oBAAIU,OAAJ,CAArB;AACD;;AAED,WAAO,KAAKV,OAAZ;AACD;;AAEqB,QAATiB,SAAS,CAACC,KAAD,EAA8B;AAClDvB,IAAAA,KAAK,CAAC,cAAD,EAAiBuB,KAAK,CAACC,GAAvB,CAAL;AACA,UAAMC,EAAE,GAAG,MAAM,KAAKX,UAAL,EAAjB;AACA,UAAMY,QAAQ,GAAG,MAAMD,EAAE,CAACE,GAAH,CAAOJ,KAAK,CAACK,IAAb,EAAmBC,KAAnB,EAAvB;AACA7B,IAAAA,KAAK,CAAC,cAAD,EAAiB0B,QAAjB,CAAL;;AACA,QAAII,gBAAEC,KAAF,CAAQL,QAAR,CAAJ,EAAuB;AACrB,YAAMD,EAAE,CAACO,GAAH,CAAOT,KAAK,CAACK,IAAb,EAAmB,CAACL,KAAD,CAAnB,EAA4BU,KAA5B,EAAN;AACAjC,MAAAA,KAAK,CAAC,4BAAD,EAA+BuB,KAAK,CAACK,IAArC,CAAL;AACD,KAHD,MAGO;AACL;AACA;AACA,YAAMH,EAAE,CACLE,GADG,CACCJ,KAAK,CAACK,IADP,EAEJ;AAFI,OAGHM,IAHG,CAGEX,KAHF,EAIHU,KAJG,EAAN;AAKD;;AACDjC,IAAAA,KAAK,CAAC,SAAD,EAAY,MAAMyB,EAAE,CAACU,QAAH,EAAlB,CAAL;AACAnC,IAAAA,KAAK,CAAC,gBAAD,EAAmBuB,KAAK,CAACK,IAAzB,CAAL;AACD;;AAEuB,QAAXQ,WAAW,CAACR,IAAD,EAAeS,QAAf,EAAgD;AACtE,UAAMZ,EAAE,GAAG,MAAM,KAAKX,UAAL,EAAjB;AACA,UAAMwB,UAAU,GAAG,MAAMb,EAAE,CAACE,GAAH,CAAOC,IAAP,EAAaC,KAAb,EAAzB;;AACA,QAAIC,gBAAEC,KAAF,CAAQO,UAAR,CAAJ,EAAyB;AACvB,YAAM,IAAIC,KAAJ,CAAU,gBAAV,CAAN;AACD;;AACDvC,IAAAA,KAAK,CAAC,gBAAD,EAAmBsC,UAAnB,EAA+BA,UAAU,CAACE,MAA1C,CAAL;AACA,UAAMC,eAAe,GAAGH,UAAU,CAACI,MAAX,CAAkB,CAAC;AAAElB,MAAAA;AAAF,KAAD,KAAa;AACrDxB,MAAAA,KAAK,CAAC,QAAD,EAAWwB,GAAX,CAAL;AACA,aAAOA,GAAG,KAAKa,QAAf;AACD,KAHuB,CAAxB;AAIA,UAAMZ,EAAE,CAACO,GAAH,CAAOJ,IAAP,EAAaa,eAAb,EAA8BR,KAA9B,EAAN;AACAjC,IAAAA,KAAK,CAAC,uBAAD,EAA0BqC,QAA1B,CAAL;AACD;;AAEsB,QAAVM,UAAU,CAACD,MAAD,EAAwC;AAC7D,UAAM;AAAEd,MAAAA;AAAF,QAAWc,MAAjB;AACA1C,IAAAA,KAAK,CAAC,qBAAD,EAAwB4B,IAAxB,CAAL;AACA,UAAMH,EAAE,GAAG,MAAM,KAAKX,UAAL,EAAjB;AACA,UAAM8B,MAAM,GAAG,MAAMnB,EAAE,CAACE,GAAH,CAAOC,IAAP,EAAaC,KAAb,EAArB;AACA,WAAOe,MAAM,IAAI,EAAjB;AACD;;AA1EwD","sourcesContent":["import Path from 'path';\n\nimport _ from 'lodash';\nimport low from 'lowdb';\nimport FileAsync from 'lowdb/adapters/FileAsync';\nimport FileMemory from 'lowdb/adapters/Memory';\nimport buildDebug from 'debug';\nimport { ITokenActions, Config, Token, TokenFilter } from '@verdaccio/types';\n\nconst debug = buildDebug('verdaccio:plugin:local-storage:token');\n\nconst TOKEN_DB_NAME = '.token-db.json';\n\nexport default class TokenActions implements ITokenActions {\n public config: Config;\n public tokenDb: low.LowdbAsync<any> | null;\n\n public constructor(config: Config) {\n this.config = config;\n this.tokenDb = null;\n }\n\n public _dbGenPath(dbName: string, config: Config): string {\n return Path.join(Path.resolve(Path.dirname(config.config_path || ''), config.storage as string, dbName));\n }\n\n private async getTokenDb(): Promise<low.LowdbAsync<any>> {\n if (!this.tokenDb) {\n debug('token database is not defined');\n let adapter;\n if (process.env.NODE_ENV === 'test') {\n debug('token memory adapter');\n adapter = new FileMemory('');\n } else {\n debug('token async adapter');\n const pathDb = this._dbGenPath(TOKEN_DB_NAME, this.config);\n adapter = new FileAsync(pathDb);\n }\n debug('token bd generated');\n this.tokenDb = await low(adapter);\n }\n\n return this.tokenDb;\n }\n\n public async saveToken(token: Token): Promise<void> {\n debug('token key %o', token.key);\n const db = await this.getTokenDb();\n const userData = await db.get(token.user).value();\n debug('user data %o', userData);\n if (_.isNil(userData)) {\n await db.set(token.user, [token]).write();\n debug('token user %o new database', token.user);\n } else {\n // types does not match with valid implementation\n // @ts-ignore\n await db\n .get(token.user)\n // @ts-ignore\n .push(token)\n .write();\n }\n debug('data %o', await db.getState());\n debug('token saved %o', token.user);\n }\n\n public async deleteToken(user: string, tokenKey: string): Promise<void> {\n const db = await this.getTokenDb();\n const userTokens = await db.get(user).value();\n if (_.isNil(userTokens)) {\n throw new Error('user not found');\n }\n debug('tokens %o - %o', userTokens, userTokens.length);\n const remainingTokens = userTokens.filter(({ key }) => {\n debug('key %o', key);\n return key !== tokenKey;\n });\n await db.set(user, remainingTokens).write();\n debug('removed tokens key %o', tokenKey);\n }\n\n public async readTokens(filter: TokenFilter): Promise<Token[]> {\n const { user } = filter;\n debug('read tokens with %o', user);\n const db = await this.getTokenDb();\n const tokens = await db.get(user).value();\n return tokens || [];\n }\n}\n"],"file":"token.js"}
package/lib/utils.js CHANGED
@@ -3,9 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.findPackages = findPackages;
6
7
  exports.getFileStats = getFileStats;
7
8
  exports.readDirectory = readDirectory;
8
- exports.findPackages = findPackages;
9
9
 
10
10
  var _fs = _interopRequireDefault(require("fs"));
11
11
 
@@ -93,4 +93,4 @@ async function findPackages(storagePath, validationHandler) {
93
93
  });
94
94
  }
95
95
  /* eslint-enable no-async-promise-executor */
96
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy50cyJdLCJuYW1lcyI6WyJnZXRGaWxlU3RhdHMiLCJwYWNrYWdlUGF0aCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiZnMiLCJzdGF0IiwiZXJyIiwic3RhdHMiLCJfIiwiaXNOaWwiLCJyZWFkRGlyZWN0b3J5IiwicmVhZGRpciIsInNjb3BlZFBhY2thZ2VzIiwiaGFzU2NvcGUiLCJmaWxlIiwibWF0Y2giLCJmaW5kUGFja2FnZXMiLCJzdG9yYWdlUGF0aCIsInZhbGlkYXRpb25IYW5kbGVyIiwibGlzdFBhY2thZ2VzIiwic2NvcGVQYXRoIiwicGF0aCIsInN0b3JhZ2VEaXJzIiwiZGlyZWN0b3J5Iiwic2NvcGVEaXJlY3RvcnkiLCJzY29wZWREaXJOYW1lIiwicHVzaCIsIm5hbWUiLCJlcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7Ozs7QUFFTyxTQUFTQSxZQUFULENBQXNCQyxXQUF0QixFQUE4RDtBQUNuRSxTQUFPLElBQUlDLE9BQUosQ0FBWSxDQUFDQyxPQUFELEVBQVVDLE1BQVYsS0FBMkI7QUFDNUNDLGdCQUFHQyxJQUFILENBQVFMLFdBQVIsRUFBcUIsQ0FBQ00sR0FBRCxFQUFNQyxLQUFOLEtBQWdCO0FBQ25DLFVBQUlDLGdCQUFFQyxLQUFGLENBQVFILEdBQVIsTUFBaUIsS0FBckIsRUFBNEI7QUFDMUIsZUFBT0gsTUFBTSxDQUFDRyxHQUFELENBQWI7QUFDRDs7QUFDREosTUFBQUEsT0FBTyxDQUFDSyxLQUFELENBQVA7QUFDRCxLQUxEO0FBTUQsR0FQTSxDQUFQO0FBUUQ7O0FBRU0sU0FBU0csYUFBVCxDQUF1QlYsV0FBdkIsRUFBK0Q7QUFDcEUsU0FBTyxJQUFJQyxPQUFKLENBQVksQ0FBQ0MsT0FBRCxFQUFVQyxNQUFWLEtBQTJCO0FBQzVDQyxnQkFBR08sT0FBSCxDQUFXWCxXQUFYLEVBQXdCLENBQUNNLEdBQUQsRUFBTU0sY0FBTixLQUF5QjtBQUMvQyxVQUFJSixnQkFBRUMsS0FBRixDQUFRSCxHQUFSLE1BQWlCLEtBQXJCLEVBQTRCO0FBQzFCLGVBQU9ILE1BQU0sQ0FBQ0csR0FBRCxDQUFiO0FBQ0Q7O0FBRURKLE1BQUFBLE9BQU8sQ0FBQ1UsY0FBRCxDQUFQO0FBQ0QsS0FORDtBQU9ELEdBUk0sQ0FBUDtBQVNEOztBQUVELFNBQVNDLFFBQVQsQ0FBa0JDLElBQWxCLEVBQXlDO0FBQ3ZDLFNBQU9BLElBQUksQ0FBQ0MsS0FBTCxDQUFXLElBQVgsTUFBcUIsSUFBNUI7QUFDRDtBQUVEOzs7QUFDTyxlQUFlQyxZQUFmLENBQ0xDLFdBREssRUFFTEMsaUJBRkssRUFHc0M7QUFDM0MsUUFBTUMsWUFBOEMsR0FBRyxFQUF2RDtBQUNBLFNBQU8sSUFBSWxCLE9BQUosQ0FBWSxPQUFPQyxPQUFQLEVBQWdCQyxNQUFoQixLQUEyQjtBQUM1QyxRQUFJO0FBQ0YsWUFBTWlCLFNBQVMsR0FBR0MsY0FBS25CLE9BQUwsQ0FBYWUsV0FBYixDQUFsQjs7QUFDQSxZQUFNSyxXQUFXLEdBQUcsTUFBTVosYUFBYSxDQUFDVSxTQUFELENBQXZDOztBQUNBLFdBQUssTUFBTUcsU0FBWCxJQUF3QkQsV0FBeEIsRUFBcUM7QUFDbkM7QUFDQSxZQUFJVCxRQUFRLENBQUNVLFNBQUQsQ0FBWixFQUF5QjtBQUN2QjtBQUNBLGdCQUFNQyxjQUFjLEdBQUdILGNBQUtuQixPQUFMLENBQWFlLFdBQWIsRUFBMEJNLFNBQTFCLENBQXZCOztBQUNBLGdCQUFNWCxjQUFjLEdBQUcsTUFBTUYsYUFBYSxDQUFDYyxjQUFELENBQTFDOztBQUNBLGVBQUssTUFBTUMsYUFBWCxJQUE0QmIsY0FBNUIsRUFBNEM7QUFDMUMsZ0JBQUlNLGlCQUFpQixDQUFDTyxhQUFELENBQXJCLEVBQXNDO0FBQ3BDO0FBQ0Esb0JBQU1MLFNBQVMsR0FBR0MsY0FBS25CLE9BQUwsQ0FBYWUsV0FBYixFQUEwQk0sU0FBMUIsRUFBcUNFLGFBQXJDLENBQWxCLENBRm9DLENBR3BDOzs7QUFDQU4sY0FBQUEsWUFBWSxDQUFDTyxJQUFiLENBQWtCO0FBQ2hCQyxnQkFBQUEsSUFBSSxFQUFHLEdBQUVKLFNBQVUsSUFBR0UsYUFBYyxFQURwQjtBQUVoQkosZ0JBQUFBLElBQUksRUFBRUQ7QUFGVSxlQUFsQjtBQUlEO0FBQ0Y7QUFDRixTQWZELE1BZU87QUFDTDtBQUNBLGNBQUlGLGlCQUFpQixDQUFDSyxTQUFELENBQXJCLEVBQWtDO0FBQ2hDLGtCQUFNSCxTQUFTLEdBQUdDLGNBQUtuQixPQUFMLENBQWFlLFdBQWIsRUFBMEJNLFNBQTFCLENBQWxCOztBQUNBSixZQUFBQSxZQUFZLENBQUNPLElBQWIsQ0FBa0I7QUFDaEJDLGNBQUFBLElBQUksRUFBRUosU0FEVTtBQUVoQkYsY0FBQUEsSUFBSSxFQUFFRDtBQUZVLGFBQWxCO0FBSUQ7QUFDRjtBQUNGO0FBQ0YsS0EvQkQsQ0ErQkUsT0FBT1EsS0FBUCxFQUFjO0FBQ2R6QixNQUFBQSxNQUFNLENBQUN5QixLQUFELENBQU47QUFDRDs7QUFFRDFCLElBQUFBLE9BQU8sQ0FBQ2lCLFlBQUQsQ0FBUDtBQUNELEdBckNNLENBQVA7QUFzQ0Q7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcblxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbGVTdGF0cyhwYWNrYWdlUGF0aDogc3RyaW5nKTogUHJvbWlzZTxmcy5TdGF0cz4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk6IHZvaWQgPT4ge1xuICAgIGZzLnN0YXQocGFja2FnZVBhdGgsIChlcnIsIHN0YXRzKSA9PiB7XG4gICAgICBpZiAoXy5pc05pbChlcnIpID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICB9XG4gICAgICByZXNvbHZlKHN0YXRzKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkRGlyZWN0b3J5KHBhY2thZ2VQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KTogdm9pZCA9PiB7XG4gICAgZnMucmVhZGRpcihwYWNrYWdlUGF0aCwgKGVyciwgc2NvcGVkUGFja2FnZXMpID0+IHtcbiAgICAgIGlmIChfLmlzTmlsKGVycikgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgIH1cblxuICAgICAgcmVzb2x2ZShzY29wZWRQYWNrYWdlcyk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBoYXNTY29wZShmaWxlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGZpbGUubWF0Y2goL15ALykgIT09IG51bGw7XG59XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLWFzeW5jLXByb21pc2UtZXhlY3V0b3IgKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaW5kUGFja2FnZXMoXG4gIHN0b3JhZ2VQYXRoOiBzdHJpbmcsXG4gIHZhbGlkYXRpb25IYW5kbGVyOiBGdW5jdGlvblxuKTogUHJvbWlzZTx7IG5hbWU6IHN0cmluZzsgcGF0aDogc3RyaW5nIH1bXT4ge1xuICBjb25zdCBsaXN0UGFja2FnZXM6IHsgbmFtZTogc3RyaW5nOyBwYXRoOiBzdHJpbmcgfVtdID0gW107XG4gIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHNjb3BlUGF0aCA9IHBhdGgucmVzb2x2ZShzdG9yYWdlUGF0aCk7XG4gICAgICBjb25zdCBzdG9yYWdlRGlycyA9IGF3YWl0IHJlYWREaXJlY3Rvcnkoc2NvcGVQYXRoKTtcbiAgICAgIGZvciAoY29uc3QgZGlyZWN0b3J5IG9mIHN0b3JhZ2VEaXJzKSB7XG4gICAgICAgIC8vIHdlIGNoZWNrIHdoZXRoZXIgaGFzIDJuZCBsZXZlbFxuICAgICAgICBpZiAoaGFzU2NvcGUoZGlyZWN0b3J5KSkge1xuICAgICAgICAgIC8vIHdlIHJlYWQgZGlyZWN0b3J5IG11bHRpcGxlXG4gICAgICAgICAgY29uc3Qgc2NvcGVEaXJlY3RvcnkgPSBwYXRoLnJlc29sdmUoc3RvcmFnZVBhdGgsIGRpcmVjdG9yeSk7XG4gICAgICAgICAgY29uc3Qgc2NvcGVkUGFja2FnZXMgPSBhd2FpdCByZWFkRGlyZWN0b3J5KHNjb3BlRGlyZWN0b3J5KTtcbiAgICAgICAgICBmb3IgKGNvbnN0IHNjb3BlZERpck5hbWUgb2Ygc2NvcGVkUGFja2FnZXMpIHtcbiAgICAgICAgICAgIGlmICh2YWxpZGF0aW9uSGFuZGxlcihzY29wZWREaXJOYW1lKSkge1xuICAgICAgICAgICAgICAvLyB3ZSBidWlsZCB0aGUgY29tcGxldGUgc2NvcGUgcGF0aFxuICAgICAgICAgICAgICBjb25zdCBzY29wZVBhdGggPSBwYXRoLnJlc29sdmUoc3RvcmFnZVBhdGgsIGRpcmVjdG9yeSwgc2NvcGVkRGlyTmFtZSk7XG4gICAgICAgICAgICAgIC8vIGxpc3QgY29udGVudCBvZiBzdWNoIGRpcmVjdG9yeVxuICAgICAgICAgICAgICBsaXN0UGFja2FnZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgbmFtZTogYCR7ZGlyZWN0b3J5fS8ke3Njb3BlZERpck5hbWV9YCxcbiAgICAgICAgICAgICAgICBwYXRoOiBzY29wZVBhdGgsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBvdGhlcndpc2Ugd2UgcmVhZCBhcyBzaW5nbGUgbGV2ZWxcbiAgICAgICAgICBpZiAodmFsaWRhdGlvbkhhbmRsZXIoZGlyZWN0b3J5KSkge1xuICAgICAgICAgICAgY29uc3Qgc2NvcGVQYXRoID0gcGF0aC5yZXNvbHZlKHN0b3JhZ2VQYXRoLCBkaXJlY3RvcnkpO1xuICAgICAgICAgICAgbGlzdFBhY2thZ2VzLnB1c2goe1xuICAgICAgICAgICAgICBuYW1lOiBkaXJlY3RvcnksXG4gICAgICAgICAgICAgIHBhdGg6IHNjb3BlUGF0aCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZWplY3QoZXJyb3IpO1xuICAgIH1cblxuICAgIHJlc29sdmUobGlzdFBhY2thZ2VzKTtcbiAgfSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG5vLWFzeW5jLXByb21pc2UtZXhlY3V0b3IgKi9cbiJdfQ==
96
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils.ts"],"names":["getFileStats","packagePath","Promise","resolve","reject","fs","stat","err","stats","_","isNil","readDirectory","readdir","scopedPackages","hasScope","file","match","findPackages","storagePath","validationHandler","listPackages","scopePath","path","storageDirs","directory","scopeDirectory","scopedDirName","push","name","error"],"mappings":";;;;;;;;;AAAA;;AACA;;AAEA;;;;AAEO,SAASA,YAAT,CAAsBC,WAAtB,EAA8D;AACnE,SAAO,IAAIC,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAA2B;AAC5CC,gBAAGC,IAAH,CAAQL,WAAR,EAAqB,CAACM,GAAD,EAAMC,KAAN,KAAgB;AACnC,UAAIC,gBAAEC,KAAF,CAAQH,GAAR,MAAiB,KAArB,EAA4B;AAC1B,eAAOH,MAAM,CAACG,GAAD,CAAb;AACD;;AACDJ,MAAAA,OAAO,CAACK,KAAD,CAAP;AACD,KALD;AAMD,GAPM,CAAP;AAQD;;AAEM,SAASG,aAAT,CAAuBV,WAAvB,EAA+D;AACpE,SAAO,IAAIC,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAA2B;AAC5CC,gBAAGO,OAAH,CAAWX,WAAX,EAAwB,CAACM,GAAD,EAAMM,cAAN,KAAyB;AAC/C,UAAIJ,gBAAEC,KAAF,CAAQH,GAAR,MAAiB,KAArB,EAA4B;AAC1B,eAAOH,MAAM,CAACG,GAAD,CAAb;AACD;;AAEDJ,MAAAA,OAAO,CAACU,cAAD,CAAP;AACD,KAND;AAOD,GARM,CAAP;AASD;;AAED,SAASC,QAAT,CAAkBC,IAAlB,EAAyC;AACvC,SAAOA,IAAI,CAACC,KAAL,CAAW,IAAX,MAAqB,IAA5B;AACD;AAED;;;AACO,eAAeC,YAAf,CACLC,WADK,EAELC,iBAFK,EAGsC;AAC3C,QAAMC,YAA8C,GAAG,EAAvD;AACA,SAAO,IAAIlB,OAAJ,CAAY,OAAOC,OAAP,EAAgBC,MAAhB,KAA2B;AAC5C,QAAI;AACF,YAAMiB,SAAS,GAAGC,cAAKnB,OAAL,CAAae,WAAb,CAAlB;;AACA,YAAMK,WAAW,GAAG,MAAMZ,aAAa,CAACU,SAAD,CAAvC;;AACA,WAAK,MAAMG,SAAX,IAAwBD,WAAxB,EAAqC;AACnC;AACA,YAAIT,QAAQ,CAACU,SAAD,CAAZ,EAAyB;AACvB;AACA,gBAAMC,cAAc,GAAGH,cAAKnB,OAAL,CAAae,WAAb,EAA0BM,SAA1B,CAAvB;;AACA,gBAAMX,cAAc,GAAG,MAAMF,aAAa,CAACc,cAAD,CAA1C;;AACA,eAAK,MAAMC,aAAX,IAA4Bb,cAA5B,EAA4C;AAC1C,gBAAIM,iBAAiB,CAACO,aAAD,CAArB,EAAsC;AACpC;AACA,oBAAML,SAAS,GAAGC,cAAKnB,OAAL,CAAae,WAAb,EAA0BM,SAA1B,EAAqCE,aAArC,CAAlB,CAFoC,CAGpC;;;AACAN,cAAAA,YAAY,CAACO,IAAb,CAAkB;AAChBC,gBAAAA,IAAI,EAAG,GAAEJ,SAAU,IAAGE,aAAc,EADpB;AAEhBJ,gBAAAA,IAAI,EAAED;AAFU,eAAlB;AAID;AACF;AACF,SAfD,MAeO;AACL;AACA,cAAIF,iBAAiB,CAACK,SAAD,CAArB,EAAkC;AAChC,kBAAMH,SAAS,GAAGC,cAAKnB,OAAL,CAAae,WAAb,EAA0BM,SAA1B,CAAlB;;AACAJ,YAAAA,YAAY,CAACO,IAAb,CAAkB;AAChBC,cAAAA,IAAI,EAAEJ,SADU;AAEhBF,cAAAA,IAAI,EAAED;AAFU,aAAlB;AAID;AACF;AACF;AACF,KA/BD,CA+BE,OAAOQ,KAAP,EAAc;AACdzB,MAAAA,MAAM,CAACyB,KAAD,CAAN;AACD;;AAED1B,IAAAA,OAAO,CAACiB,YAAD,CAAP;AACD,GArCM,CAAP;AAsCD;AACD","sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nimport _ from 'lodash';\n\nexport function getFileStats(packagePath: string): Promise<fs.Stats> {\n return new Promise((resolve, reject): void => {\n fs.stat(packagePath, (err, stats) => {\n if (_.isNil(err) === false) {\n return reject(err);\n }\n resolve(stats);\n });\n });\n}\n\nexport function readDirectory(packagePath: string): Promise<string[]> {\n return new Promise((resolve, reject): void => {\n fs.readdir(packagePath, (err, scopedPackages) => {\n if (_.isNil(err) === false) {\n return reject(err);\n }\n\n resolve(scopedPackages);\n });\n });\n}\n\nfunction hasScope(file: string): boolean {\n return file.match(/^@/) !== null;\n}\n\n/* eslint-disable no-async-promise-executor */\nexport async function findPackages(\n storagePath: string,\n validationHandler: Function\n): Promise<{ name: string; path: string }[]> {\n const listPackages: { name: string; path: string }[] = [];\n return new Promise(async (resolve, reject) => {\n try {\n const scopePath = path.resolve(storagePath);\n const storageDirs = await readDirectory(scopePath);\n for (const directory of storageDirs) {\n // we check whether has 2nd level\n if (hasScope(directory)) {\n // we read directory multiple\n const scopeDirectory = path.resolve(storagePath, directory);\n const scopedPackages = await readDirectory(scopeDirectory);\n for (const scopedDirName of scopedPackages) {\n if (validationHandler(scopedDirName)) {\n // we build the complete scope path\n const scopePath = path.resolve(storagePath, directory, scopedDirName);\n // list content of such directory\n listPackages.push({\n name: `${directory}/${scopedDirName}`,\n path: scopePath,\n });\n }\n }\n } else {\n // otherwise we read as single level\n if (validationHandler(directory)) {\n const scopePath = path.resolve(storagePath, directory);\n listPackages.push({\n name: directory,\n path: scopePath,\n });\n }\n }\n }\n } catch (error) {\n reject(error);\n }\n\n resolve(listPackages);\n });\n}\n/* eslint-enable no-async-promise-executor */\n"],"file":"utils.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verdaccio/local-storage",
3
- "version": "10.0.0",
3
+ "version": "10.0.8",
4
4
  "description": "Local storage implementation",
5
5
  "keywords": [
6
6
  "plugin",
@@ -31,37 +31,33 @@
31
31
  "node": ">=8"
32
32
  },
33
33
  "dependencies": {
34
- "@verdaccio/commons-api": "^10.0.0",
35
- "@verdaccio/file-locking": "^10.0.0",
36
- "@verdaccio/streams": "^10.0.0",
37
- "async": "3.2.0",
38
- "debug": "4.3.1",
34
+ "@verdaccio/commons-api": "10.0.2",
35
+ "@verdaccio/file-locking": "10.0.1",
36
+ "@verdaccio/streams": "10.0.1",
37
+ "async": "3.2.2",
38
+ "debug": "4.3.3",
39
39
  "lodash": "4.17.21",
40
40
  "lowdb": "1.0.0",
41
41
  "mkdirp": "1.0.4"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@types/minimatch": "^3.0.3",
45
- "@verdaccio/babel-preset": "^10.0.0",
46
- "@verdaccio/eslint-config": "^10.0.0",
47
- "@verdaccio/types": "^10.0.0",
45
+ "@types/node": "^14.0.0",
46
+ "@verdaccio/types": "10.0.1",
48
47
  "minimatch": "^3.0.4",
49
48
  "rmdir-sync": "^1.0.1"
50
49
  },
51
- "scripts": {
52
- "coverage:publish": "codecov --root=../../ -F plugins",
53
- "build": "npm run build:types && npm run build:js",
54
- "build:js": "babel src/ --out-dir lib --extensions \".ts,.tsx\" --source-maps inline",
55
- "build:types": "tsc --emitDeclarationOnly",
56
- "lint": "eslint \"**/*.{js,ts}\"",
57
- "lint:stage": "lint-staged",
58
- "test": "jest",
59
- "type-check": "tsc --noEmit",
60
- "type-check:watch": "npm run type-check -- --watch"
61
- },
62
50
  "funding": {
63
51
  "type": "opencollective",
64
52
  "url": "https://opencollective.com/verdaccio"
65
53
  },
66
- "gitHead": "e33b0509f6dcb10c9b893fdcd3846ca69eca0bd9"
67
- }
54
+ "scripts": {
55
+ "clean": "rimraf ./build",
56
+ "test": "cross-env NODE_ENV=test BABEL_ENV=test jest",
57
+ "type-check": "tsc --noEmit -p tsconfig.build.json",
58
+ "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json",
59
+ "build:js": "babel src/ --out-dir lib/ --copy-files --extensions \".ts,.tsx\" --source-maps",
60
+ "watch": "pnpm build:js -- --watch",
61
+ "build": "pnpm run build:js && pnpm run build:types"
62
+ }
63
+ }
package/CHANGELOG.md DELETED
@@ -1,497 +0,0 @@
1
- # Change Log
2
-
3
- All notable changes to this project will be documented in this file.
4
- See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
-
6
- # [10.0.0](https://github.com/verdaccio/monorepo/compare/v9.7.5...v10.0.0) (2021-03-29)
7
-
8
- **Note:** Version bump only for package @verdaccio/local-storage
9
-
10
-
11
-
12
-
13
-
14
- ## [9.7.5](https://github.com/verdaccio/monorepo/compare/v9.7.4...v9.7.5) (2021-03-05)
15
-
16
-
17
- ### Bug Fixes
18
-
19
- * update dependencies ([#393](https://github.com/verdaccio/monorepo/issues/393)) ([51cb3d4](https://github.com/verdaccio/monorepo/commit/51cb3d4a533590054085dca1e5270cf9ebdeacfd))
20
-
21
-
22
-
23
-
24
-
25
- ## [9.7.4](https://github.com/verdaccio/monorepo/compare/v9.7.3...v9.7.4) (2020-10-31)
26
-
27
-
28
- ### Bug Fixes
29
-
30
- * update lodash ([c7fe587](https://github.com/verdaccio/monorepo/commit/c7fe587a6d8be337d7099cbd459320cbda4cfd91))
31
-
32
-
33
-
34
-
35
-
36
- ## [9.7.2](https://github.com/verdaccio/monorepo/compare/v9.7.1...v9.7.2) (2020-07-20)
37
-
38
- **Note:** Version bump only for package @verdaccio/local-storage
39
-
40
-
41
-
42
-
43
-
44
- ## [9.7.1](https://github.com/verdaccio/monorepo/compare/v9.7.0...v9.7.1) (2020-07-10)
45
-
46
-
47
- ### Bug Fixes
48
-
49
- * update dependencies ([#375](https://github.com/verdaccio/monorepo/issues/375)) ([1e7aeec](https://github.com/verdaccio/monorepo/commit/1e7aeec31b056979285e272793a95b8c75d57c77))
50
-
51
-
52
-
53
-
54
-
55
- # [9.7.0](https://github.com/verdaccio/monorepo/compare/v9.6.1...v9.7.0) (2020-06-24)
56
-
57
- **Note:** Version bump only for package @verdaccio/local-storage
58
-
59
-
60
-
61
-
62
-
63
- ## [9.6.1](https://github.com/verdaccio/monorepo/compare/v9.6.0...v9.6.1) (2020-06-07)
64
-
65
- **Note:** Version bump only for package @verdaccio/local-storage
66
-
67
-
68
-
69
-
70
-
71
- ## [9.5.1](https://github.com/verdaccio/monorepo/compare/v9.5.0...v9.5.1) (2020-06-03)
72
-
73
-
74
- ### Bug Fixes
75
-
76
- * restore Node v8 support ([#361](https://github.com/verdaccio/monorepo/issues/361)) ([9be55a1](https://github.com/verdaccio/monorepo/commit/9be55a1deebe954e8eef9edc59af9fd16e29daed))
77
-
78
-
79
-
80
-
81
-
82
- # [9.5.0](https://github.com/verdaccio/monorepo/compare/v9.4.1...v9.5.0) (2020-05-02)
83
-
84
- **Note:** Version bump only for package @verdaccio/local-storage
85
-
86
-
87
-
88
-
89
-
90
- # [9.4.0](https://github.com/verdaccio/monorepo/compare/v9.3.4...v9.4.0) (2020-03-21)
91
-
92
- **Note:** Version bump only for package @verdaccio/local-storage
93
-
94
-
95
-
96
-
97
-
98
- ## [9.3.4](https://github.com/verdaccio/monorepo/compare/v9.3.3...v9.3.4) (2020-03-11)
99
-
100
-
101
- ### Bug Fixes
102
-
103
- * update mkdirp@1.0.3 ([#341](https://github.com/verdaccio/monorepo/issues/341)) ([96db337](https://github.com/verdaccio/monorepo/commit/96db3378a4f2334ec89cfb113af95e9a3a6eb050))
104
-
105
-
106
-
107
-
108
-
109
- ## [9.3.2](https://github.com/verdaccio/monorepo/compare/v9.3.1...v9.3.2) (2020-03-08)
110
-
111
-
112
- ### Bug Fixes
113
-
114
- * update dependencies ([#332](https://github.com/verdaccio/monorepo/issues/332)) ([b6165ae](https://github.com/verdaccio/monorepo/commit/b6165aea9b7e4012477081eae68bfa7159c58f56))
115
-
116
-
117
-
118
-
119
-
120
- ## [9.3.1](https://github.com/verdaccio/monorepo/compare/v9.3.0...v9.3.1) (2020-02-23)
121
-
122
- **Note:** Version bump only for package @verdaccio/local-storage
123
-
124
-
125
-
126
-
127
-
128
- # [9.3.0](https://github.com/verdaccio/monorepo/compare/v9.2.0...v9.3.0) (2020-01-29)
129
-
130
- **Note:** Version bump only for package @verdaccio/local-storage
131
-
132
-
133
-
134
-
135
-
136
- # [9.0.0](https://github.com/verdaccio/monorepo/compare/v8.5.3...v9.0.0) (2020-01-07)
137
-
138
-
139
- ### Bug Fixes
140
-
141
- * prevent circular structure exception ([#312](https://github.com/verdaccio/monorepo/issues/312)) ([f565461](https://github.com/verdaccio/monorepo/commit/f565461f5bb2873467eeb4372a12fbf4a4974d17))
142
-
143
-
144
-
145
-
146
-
147
- ## [8.5.2](https://github.com/verdaccio/monorepo/compare/v8.5.1...v8.5.2) (2019-12-25)
148
-
149
- **Note:** Version bump only for package @verdaccio/local-storage
150
-
151
-
152
-
153
-
154
-
155
- ## [8.5.1](https://github.com/verdaccio/monorepo/compare/v8.5.0...v8.5.1) (2019-12-24)
156
-
157
- **Note:** Version bump only for package @verdaccio/local-storage
158
-
159
-
160
-
161
-
162
-
163
- # [8.5.0](https://github.com/verdaccio/monorepo/compare/v8.4.2...v8.5.0) (2019-12-22)
164
-
165
- **Note:** Version bump only for package @verdaccio/local-storage
166
-
167
-
168
-
169
-
170
-
171
- ## [8.4.2](https://github.com/verdaccio/monorepo/compare/v8.4.1...v8.4.2) (2019-11-23)
172
-
173
- **Note:** Version bump only for package @verdaccio/local-storage
174
-
175
-
176
-
177
-
178
-
179
- ## [8.4.1](https://github.com/verdaccio/monorepo/compare/v8.4.0...v8.4.1) (2019-11-22)
180
-
181
- **Note:** Version bump only for package @verdaccio/local-storage
182
-
183
-
184
-
185
-
186
-
187
- # [8.4.0](https://github.com/verdaccio/monorepo/compare/v8.3.0...v8.4.0) (2019-11-22)
188
-
189
- **Note:** Version bump only for package @verdaccio/local-storage
190
-
191
-
192
-
193
-
194
-
195
- # [8.3.0](https://github.com/verdaccio/monorepo/compare/v8.2.0...v8.3.0) (2019-10-27)
196
-
197
- **Note:** Version bump only for package @verdaccio/local-storage
198
-
199
-
200
-
201
-
202
-
203
- # [8.2.0](https://github.com/verdaccio/monorepo/compare/v8.2.0-next.0...v8.2.0) (2019-10-23)
204
-
205
- **Note:** Version bump only for package @verdaccio/local-storage
206
-
207
-
208
-
209
-
210
-
211
- # [8.2.0-next.0](https://github.com/verdaccio/monorepo/compare/v8.1.4...v8.2.0-next.0) (2019-10-08)
212
-
213
-
214
- ### Bug Fixes
215
-
216
- * fixed lint errors ([5e677f7](https://github.com/verdaccio/monorepo/commit/5e677f7))
217
-
218
-
219
-
220
-
221
-
222
- ## [8.1.2](https://github.com/verdaccio/monorepo/compare/v8.1.1...v8.1.2) (2019-09-29)
223
-
224
- **Note:** Version bump only for package @verdaccio/local-storage
225
-
226
-
227
-
228
-
229
-
230
- ## [8.1.1](https://github.com/verdaccio/monorepo/compare/v8.1.0...v8.1.1) (2019-09-26)
231
-
232
- **Note:** Version bump only for package @verdaccio/local-storage
233
-
234
-
235
-
236
-
237
-
238
- # [8.1.0](https://github.com/verdaccio/monorepo/compare/v8.0.1-next.1...v8.1.0) (2019-09-07)
239
-
240
- **Note:** Version bump only for package @verdaccio/local-storage
241
-
242
-
243
-
244
-
245
-
246
- ## [8.0.1-next.1](https://github.com/verdaccio/monorepo/compare/v8.0.1-next.0...v8.0.1-next.1) (2019-08-29)
247
-
248
- **Note:** Version bump only for package @verdaccio/local-storage
249
-
250
-
251
-
252
-
253
-
254
- ## [8.0.1-next.0](https://github.com/verdaccio/monorepo/compare/v8.0.0...v8.0.1-next.0) (2019-08-29)
255
-
256
- **Note:** Version bump only for package @verdaccio/local-storage
257
-
258
-
259
-
260
-
261
-
262
- # [8.0.0](https://github.com/verdaccio/monorepo/compare/v8.0.0-next.4...v8.0.0) (2019-08-22)
263
-
264
- **Note:** Version bump only for package @verdaccio/local-storage
265
-
266
-
267
-
268
-
269
-
270
- # [8.0.0-next.4](https://github.com/verdaccio/monorepo/compare/v8.0.0-next.3...v8.0.0-next.4) (2019-08-18)
271
-
272
- **Note:** Version bump only for package @verdaccio/local-storage
273
-
274
-
275
-
276
-
277
-
278
- # [8.0.0-next.3](https://github.com/verdaccio/monorepo/compare/v8.0.0-next.2...v8.0.0-next.3) (2019-08-16)
279
-
280
-
281
- ### Bug Fixes
282
-
283
- * restore closure ([32b9d7e](https://github.com/verdaccio/monorepo/commit/32b9d7e))
284
- * **build:** error on types for fs callback ([cc35acb](https://github.com/verdaccio/monorepo/commit/cc35acb))
285
- * Add DATE and VERSION in search result ([e352b75](https://github.com/verdaccio/monorepo/commit/e352b75))
286
- * avoid open write stream if resource exist [#1191](https://github.com/verdaccio/monorepo/issues/1191) ([f041d3f](https://github.com/verdaccio/monorepo/commit/f041d3f))
287
- * bug fixing integration ([6c75ac8](https://github.com/verdaccio/monorepo/commit/6c75ac8))
288
- * build before publish ([cd6c7ff](https://github.com/verdaccio/monorepo/commit/cd6c7ff))
289
- * check whether path exist before return result ([a4d2af1](https://github.com/verdaccio/monorepo/commit/a4d2af1))
290
- * flow issues ([f42a284](https://github.com/verdaccio/monorepo/commit/f42a284))
291
- * ignore flow on this one, we need it ([c8e0b2b](https://github.com/verdaccio/monorepo/commit/c8e0b2b))
292
- * local storage requires package.json file for read, save and create all the time ([33c847b](https://github.com/verdaccio/monorepo/commit/33c847b))
293
- * migration from main repository merge [#306](https://github.com/verdaccio/monorepo/issues/306) ([8fbe86e](https://github.com/verdaccio/monorepo/commit/8fbe86e))
294
- * missing callback ([abfc422](https://github.com/verdaccio/monorepo/commit/abfc422))
295
- * missing error code ([7121939](https://github.com/verdaccio/monorepo/commit/7121939))
296
- * move to local storage the fs location handler ([3b12083](https://github.com/verdaccio/monorepo/commit/3b12083))
297
- * mtimeMs is not backward compatible ([c6f74eb](https://github.com/verdaccio/monorepo/commit/c6f74eb))
298
- * remove temp file whether is emtpy and fails ([655102f](https://github.com/verdaccio/monorepo/commit/655102f))
299
- * remove uncessary async ([3e3e3a6](https://github.com/verdaccio/monorepo/commit/3e3e3a6))
300
- * remove unused parameters ([554e301](https://github.com/verdaccio/monorepo/commit/554e301))
301
- * restore build path ([4902042](https://github.com/verdaccio/monorepo/commit/4902042))
302
- * return time as milliseconds ([15467ba](https://github.com/verdaccio/monorepo/commit/15467ba))
303
- * sync after set secret ([2abae4f](https://github.com/verdaccio/monorepo/commit/2abae4f))
304
- * temp files are written into the storage ([89a1dc8](https://github.com/verdaccio/monorepo/commit/89a1dc8))
305
- * unit test ([995a27c](https://github.com/verdaccio/monorepo/commit/995a27c))
306
- * update @verdaccio/file-locking@1.0.0 ([9bd36f0](https://github.com/verdaccio/monorepo/commit/9bd36f0))
307
- * update lodash types ([184466c](https://github.com/verdaccio/monorepo/commit/184466c))
308
-
309
-
310
- ### Features
311
-
312
- * token support with level.js ([#168](https://github.com/verdaccio/monorepo/issues/168)) ([ca877ff](https://github.com/verdaccio/monorepo/commit/ca877ff))
313
- * **build:** standardize build ([33fe090](https://github.com/verdaccio/monorepo/commit/33fe090))
314
- * change new db name to verdaccio ([#83](https://github.com/verdaccio/monorepo/issues/83)) ([edfca9f](https://github.com/verdaccio/monorepo/commit/edfca9f))
315
- * drop node v6 support ([664f288](https://github.com/verdaccio/monorepo/commit/664f288))
316
- * implement search ([2e2bb32](https://github.com/verdaccio/monorepo/commit/2e2bb32))
317
- * migrate to typescript ([c439d25](https://github.com/verdaccio/monorepo/commit/c439d25))
318
- * update database method with callbacks ([ef202a9](https://github.com/verdaccio/monorepo/commit/ef202a9))
319
- * update minor dependencies ([007b026](https://github.com/verdaccio/monorepo/commit/007b026))
320
-
321
-
322
-
323
-
324
-
325
- # Changelog
326
-
327
- All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
328
-
329
- ## [2.3.0](https://github.com/verdaccio/local-storage/compare/v2.2.1...v2.3.0) (2019-08-13)
330
-
331
-
332
- ### Bug Fixes
333
-
334
- * restore closure ([8ec27f2](https://github.com/verdaccio/local-storage/commit/8ec27f2))
335
-
336
-
337
- ### Features
338
-
339
- * add logging for each method ([3c915c7](https://github.com/verdaccio/local-storage/commit/3c915c7))
340
- * token support with level.js ([#168](https://github.com/verdaccio/local-storage/issues/168)) ([16727bd](https://github.com/verdaccio/local-storage/commit/16727bd))
341
-
342
- ### [2.2.1](https://github.com/verdaccio/local-storage/compare/v2.2.0...v2.2.1) (2019-06-30)
343
-
344
-
345
- ### Bug Fixes
346
-
347
- * **build:** error on types for fs callback ([774d808](https://github.com/verdaccio/local-storage/commit/774d808))
348
-
349
-
350
-
351
- ## [2.2.0](https://github.com/verdaccio/local-storage/compare/v2.1.0...v2.2.0) (2019-06-30)
352
-
353
-
354
- ### Features
355
-
356
- * **build:** standardize build ([eba832e](https://github.com/verdaccio/local-storage/commit/eba832e))
357
-
358
-
359
-
360
- # [2.1.0](https://github.com/verdaccio/local-storage/compare/v2.0.0...v2.1.0) (2019-03-29)
361
-
362
-
363
- ### Bug Fixes
364
-
365
- * remove uncessary async ([23a09f3](https://github.com/verdaccio/local-storage/commit/23a09f3))
366
-
367
-
368
- ### Features
369
-
370
- * drop node v6 support ([ef548e0](https://github.com/verdaccio/local-storage/commit/ef548e0))
371
-
372
-
373
-
374
- # [2.0.0](https://github.com/verdaccio/local-storage/compare/v2.0.0-beta.3...v2.0.0) (2019-03-29)
375
-
376
-
377
-
378
- <a name="2.0.0-beta.3"></a>
379
- # [2.0.0-beta.3](https://github.com/verdaccio/local-storage/compare/v2.0.0-beta.2...v2.0.0-beta.3) (2019-02-24)
380
-
381
-
382
- ### Bug Fixes
383
-
384
- * update [@verdaccio](https://github.com/verdaccio)/file-locking@1.0.0 ([587245d](https://github.com/verdaccio/local-storage/commit/587245d))
385
-
386
-
387
-
388
- <a name="2.0.0-beta.2"></a>
389
- # [2.0.0-beta.2](https://github.com/verdaccio/local-storage/compare/v2.0.0-beta.1...v2.0.0-beta.2) (2019-02-24)
390
-
391
-
392
- ### Bug Fixes
393
-
394
- * avoid open write stream if resource exist [#1191](https://github.com/verdaccio/local-storage/issues/1191) ([b13904a](https://github.com/verdaccio/local-storage/commit/b13904a))
395
- * package.json to reduce vulnerabilities ([97e9dc3](https://github.com/verdaccio/local-storage/commit/97e9dc3))
396
-
397
-
398
-
399
- <a name="2.0.0-beta.1"></a>
400
- # [2.0.0-beta.1](https://github.com/verdaccio/local-storage/compare/v2.0.0-beta.0...v2.0.0-beta.1) (2019-02-03)
401
-
402
-
403
-
404
- <a name="2.0.0-beta.0"></a>
405
- # [2.0.0-beta.0](https://github.com/verdaccio/local-storage/compare/v1.2.0...v2.0.0-beta.0) (2019-02-01)
406
-
407
-
408
- ### Bug Fixes
409
-
410
- * **deps:** update dependency lodash to v4.17.11 ([682616a](https://github.com/verdaccio/local-storage/commit/682616a))
411
-
412
-
413
- ### Features
414
-
415
- * custom storage location ([b1423cd](https://github.com/verdaccio/local-storage/commit/b1423cd))
416
- * migrate to typescript ([fe8344b](https://github.com/verdaccio/local-storage/commit/fe8344b))
417
-
418
-
419
- ### BREAKING CHANGES
420
-
421
- * we change from boolean value to string within the config file
422
-
423
-
424
-
425
- <a name="1.2.0"></a>
426
- # [1.2.0](https://github.com/verdaccio/local-storage/compare/v1.1.3...v1.2.0) (2018-08-25)
427
-
428
-
429
- ### Features
430
-
431
- * change new db name to verdaccio ([#83](https://github.com/verdaccio/local-storage/issues/83)) ([143977d](https://github.com/verdaccio/local-storage/commit/143977d))
432
-
433
-
434
-
435
- <a name="1.1.3"></a>
436
- ## [1.1.3](https://github.com/verdaccio/local-storage/compare/v1.1.2...v1.1.3) (2018-07-15)
437
-
438
-
439
- ### Bug Fixes
440
-
441
- * remove unused parameters ([3ce374a](https://github.com/verdaccio/local-storage/commit/3ce374a))
442
-
443
-
444
-
445
- <a name="1.1.2"></a>
446
- ## [1.1.2](https://github.com/verdaccio/local-storage/compare/v1.1.1...v1.1.2) (2018-06-09)
447
-
448
-
449
- ### Bug Fixes
450
-
451
- * return time as milliseconds ([c98be85](https://github.com/verdaccio/local-storage/commit/c98be85))
452
-
453
-
454
-
455
- <a name="1.1.1"></a>
456
- ## [1.1.1](https://github.com/verdaccio/local-storage/compare/v1.1.0...v1.1.1) (2018-06-08)
457
-
458
-
459
- ### Bug Fixes
460
-
461
- * check whether path exist before return result ([cb5d4ef](https://github.com/verdaccio/local-storage/commit/cb5d4ef))
462
-
463
-
464
-
465
- <a name="1.1.0"></a>
466
- # [1.1.0](https://github.com/verdaccio/local-storage/compare/v1.0.3...v1.1.0) (2018-06-08)
467
-
468
-
469
- ### Bug Fixes
470
-
471
- * **deps:** update dependency async to v2.6.1 ([487b095](https://github.com/verdaccio/local-storage/commit/487b095))
472
-
473
-
474
- ### Features
475
-
476
- * implement search ([f884a24](https://github.com/verdaccio/local-storage/commit/f884a24))
477
-
478
-
479
-
480
- <a name="0.2.0"></a>
481
- # [0.2.0](https://github.com/verdaccio/local-storage/compare/v0.1.4...v0.2.0) (2018-01-17)
482
-
483
-
484
- ### Features
485
-
486
- * update minor dependencies ([92daa81](https://github.com/verdaccio/local-storage/commit/92daa81))
487
-
488
-
489
-
490
- <a name="0.1.4"></a>
491
- ## [0.1.4](https://github.com/verdaccio/local-storage/compare/v0.1.3...v0.1.4) (2018-01-17)
492
-
493
-
494
- ### Bug Fixes
495
-
496
- * remove temp file whether is emtpy and fails ([593e162](https://github.com/verdaccio/local-storage/commit/593e162))
497
- * unit test ([2573f30](https://github.com/verdaccio/local-storage/commit/2573f30))