@verdaccio/local-storage 10.0.1 → 10.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/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"}
@@ -25,9 +25,9 @@ var _pkgUtils = require("./pkg-utils");
25
25
 
26
26
  var _token = _interopRequireDefault(require("./token"));
27
27
 
28
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
28
+ 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
29
 
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; }
30
+ 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
31
 
32
32
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
33
 
@@ -326,8 +326,13 @@ class LocalDatabase extends _token.default {
326
326
  const sinopiadbPath = this._dbGenPath(DEPRECATED_DB_NAME, config);
327
327
 
328
328
  try {
329
- _fs.default.accessSync(sinopiadbPath, _fs.default.constants.F_OK);
329
+ _fs.default.accessSync(sinopiadbPath, _fs.default.constants.F_OK); // @ts-ignore
330
330
 
331
+
332
+ process.emitWarning('Database name deprecated!', {
333
+ code: 'VERCODE01',
334
+ detail: `Please rename database name from ${DEPRECATED_DB_NAME} to ${DB_NAME}`
335
+ });
331
336
  return sinopiadbPath;
332
337
  } catch (err) {
333
338
  if (err.code === _localFs.noSuchFile) {
@@ -369,4 +374,4 @@ class LocalDatabase extends _token.default {
369
374
 
370
375
  var _default = LocalDatabase;
371
376
  exports.default = _default;
372
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2NhbC1kYXRhYmFzZS50cyJdLCJuYW1lcyI6WyJERVBSRUNBVEVEX0RCX05BTUUiLCJEQl9OQU1FIiwiZGVidWciLCJMb2NhbERhdGFiYXNlIiwiVG9rZW5BY3Rpb25zIiwiY29uc3RydWN0b3IiLCJjb25maWciLCJsb2dnZXIiLCJwYXRoIiwiX2J1aWxkU3RvcmFnZVBhdGgiLCJsb2NrZWQiLCJkYXRhIiwiX2ZldGNoTG9jYWxQYWNrYWdlcyIsIl9zeW5jIiwiZ2V0U2VjcmV0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJzZWNyZXQiLCJzZXRTZWNyZXQiLCJhZGQiLCJuYW1lIiwiY2IiLCJsaXN0IiwiaW5kZXhPZiIsInB1c2giLCJzZWFyY2giLCJvblBhY2thZ2UiLCJvbkVuZCIsInZhbGlkYXRlTmFtZSIsInN0b3JhZ2VzIiwiX2dldEN1c3RvbVBhY2thZ2VMb2NhbFN0b3JhZ2VzIiwiSlNPTiIsInN0cmluZ2lmeSIsImJhc2UiLCJQYXRoIiwiZGlybmFtZSIsInNlbGZfcGF0aCIsInNlbGYiLCJzdG9yYWdlS2V5cyIsIk9iamVjdCIsImtleXMiLCJhc3luYyIsImVhY2hTZXJpZXMiLCJzdG9yYWdlIiwicG9zaXRpb24iLCJiYXNlMiIsImpvaW4iLCJzdG9yYWdlUGF0aCIsImZzIiwicmVhZGRpciIsImVyciIsImZpbGVzIiwiZmlsZSIsImluY2x1ZGVzIiwibWF0Y2giLCJmaWxlTG9jYXRpb24iLCJmaWxlMiIsInBhY2thZ2VQYXRoIiwic3RhdCIsInN0YXRzIiwiXyIsImlzTmlsIiwiaXRlbSIsInRpbWUiLCJtdGltZSIsImdldFRpbWUiLCJyZW1vdmUiLCJnZXQiLCJlcnJvciIsInBrZ05hbWUiLCJzcGxpY2UiLCJ0b3RhbEl0ZW1zIiwibGVuZ3RoIiwiZ2V0UGFja2FnZVN0b3JhZ2UiLCJwYWNrYWdlTmFtZSIsInBhY2thZ2VBY2Nlc3MiLCJnZXRNYXRjaGVkUGFja2FnZXNTcGVjIiwiX2dldExvY2FsU3RvcmFnZVBhdGgiLCJ1bmRlZmluZWQiLCJpc1N0cmluZyIsInBhY2thZ2VTdG9yYWdlUGF0aCIsIkxvY2FsRHJpdmVyIiwiY2xlYW4iLCJwYWNrYWdlcyIsImxpc3RQYWNrYWdlc0NvbmYiLCJtYXAiLCJwa2ciLCJFcnJvciIsImZvbGRlck5hbWUiLCJta2RpcnAiLCJzeW5jIiwid3JpdGVGaWxlU3luYyIsImdsb2JhbENvbmZpZ1N0b3JhZ2UiLCJzaW5vcGlhZGJQYXRoIiwiX2RiR2VuUGF0aCIsImFjY2Vzc1N5bmMiLCJjb25zdGFudHMiLCJGX09LIiwiY29kZSIsIm5vU3VjaEZpbGUiLCJlbXB0eURhdGFiYXNlIiwibWVzc2FnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUVBOztBQUNBOztBQUNBOzs7Ozs7Ozs7O0FBRUEsTUFBTUEsa0JBQWtCLEdBQUcsa0JBQTNCO0FBQ0EsTUFBTUMsT0FBTyxHQUFHLG9CQUFoQjtBQUVBLE1BQU1DLEtBQUssR0FBRyxvQkFBVyxnQ0FBWCxDQUFkOztBQUVBLE1BQU1DLGFBQU4sU0FBNEJDLGNBQTVCLENBQXVFO0FBTzlEQyxFQUFBQSxXQUFQLENBQW1CQyxNQUFuQixFQUFtQ0MsTUFBbkMsRUFBbUQ7QUFDakQsVUFBTUQsTUFBTjs7QUFEaUQ7O0FBQUE7O0FBQUE7O0FBQUE7O0FBQUE7O0FBRWpELFNBQUtBLE1BQUwsR0FBY0EsTUFBZDtBQUNBLFNBQUtFLElBQUwsR0FBWSxLQUFLQyxpQkFBTCxDQUF1QkgsTUFBdkIsQ0FBWjtBQUNBLFNBQUtDLE1BQUwsR0FBY0EsTUFBZDtBQUNBLFNBQUtHLE1BQUwsR0FBYyxLQUFkO0FBQ0EsU0FBS0MsSUFBTCxHQUFZLEtBQUtDLG1CQUFMLEVBQVo7O0FBQ0EsU0FBS0MsS0FBTDtBQUNEOztBQUVNQyxFQUFBQSxTQUFQLEdBQW9DO0FBQ2xDLFdBQU9DLE9BQU8sQ0FBQ0MsT0FBUixDQUFnQixLQUFLTCxJQUFMLENBQVVNLE1BQTFCLENBQVA7QUFDRDs7QUFFTUMsRUFBQUEs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QixFQUErQixLQUFLRCxNQUFwQyxDQUFQO0FBQ0QsS0FGRCxDQUVFLE9BQU8yQyxHQUFQLEVBQVk7QUFDWjtBQUNBO0FBQ0EsVUFBSUEsR0FBRyxDQUFDZ0QsSUFBSixLQUFhQyxtQkFBakIsRUFBNkI7QUFDM0IsYUFBS3pGLE1BQUwsR0FBYyxJQUFkO0FBQ0EsYUFBS0gsTUFBTCxDQUFZNkQsS0FBWixDQUNFLCtFQURGLEVBRUcsY0FBYSxLQUFLNUQsSUFBSyxRQUFPMEMsR0FBRyxDQUFDbUQsT0FBUSxFQUY3QztBQUlEOztBQUVELGFBQU9ELGFBQVA7QUFDRDtBQUNGOztBQS9Ub0U7O2VBa1V4RGpHLGEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IFBhdGggZnJvbSAncGF0aCc7XG5cbmltcG9ydCBidWlsZERlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgYXN5bmMgZnJvbSAnYXN5bmMnO1xuaW1wb3J0IG1rZGlycCBmcm9tICdta2RpcnAnO1xuaW1wb3J0IHsgQ2FsbGJhY2ssIENvbmZpZywgSVBhY2thZ2VTdG9yYWdlLCBJUGx1Z2luU3RvcmFnZSwgTG9jYWxTdG9yYWdlLCBMb2dnZXIsIFN0b3JhZ2VMaXN0IH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5pbXBvcnQgeyBnZXRJbnRlcm5hbEVycm9yIH0gZnJvbSAnQHZlcmRhY2Npby9jb21tb25zLWFwaSc7XG5cbmltcG9ydCBMb2NhbERyaXZlciwgeyBub1N1Y2hGaWxlIH0gZnJvbSAnLi9sb2NhbC1mcyc7XG5pbXBvcnQgeyBsb2FkUHJpdmF0ZVBhY2thZ2VzIH0gZnJvbSAnLi9wa2ctdXRpbHMnO1xuaW1wb3J0IFRva2VuQWN0aW9ucyBmcm9tICcuL3Rva2VuJztcblxuY29uc3QgREVQUkVDQVRFRF9EQl9OQU1FID0gJy5zaW5vcGlhLWRiLmpzb24nO1xuY29uc3QgREJfTkFNRSA9ICcudmVyZGFjY2lvLWRiLmpzb24nO1xuXG5jb25zdCBkZWJ1ZyA9IGJ1aWxkRGVidWcoJ3ZlcmRhY2NpbzpwbHVnaW46bG9jYWwtc3RvcmFnZScpO1xuXG5jbGFzcyBMb2NhbERhdGFiYXNlIGV4dGVuZHMgVG9rZW5BY3Rpb25zIGltcGxlbWVudHMgSVBsdWdpblN0b3JhZ2U8e30+IHtcbiAgcHVibGljIHBhdGg6IHN0cmluZztcbiAgcHVibGljIGxvZ2dlcjogTG9nZ2VyO1xuICBwdWJsaWMgZGF0YTogTG9jYWxTdG9yYWdlO1xuICBwdWJsaWMgY29uZmlnOiBDb25maWc7XG4gIHB1YmxpYyBsb2NrZWQ6IGJvb2xlYW47XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvbmZpZzogQ29uZmlnLCBsb2dnZXI6IExvZ2dlcikge1xuICAgIHN1cGVyKGNvbmZpZyk7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5wYXRoID0gdGhpcy5fYnVpbGRTdG9yYWdlUGF0aChjb25maWcpO1xuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyO1xuICAgIHRoaXMubG9ja2VkID0gZmFsc2U7XG4gICAgdGhpcy5kYXRhID0gdGhpcy5fZmV0Y2hMb2NhbFBhY2thZ2VzKCk7XG4gICAgdGhpcy5fc3luYygpO1xuICB9XG5cbiAgcHVibGljIGdldFNlY3JldCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5kYXRhLnNlY3JldCk7XG4gIH1cblxuICBwdWJsaWMgc2V0U2VjcmV0KHNlY3JldDogc3RyaW5nKTogUHJvbWlzZTxFcnJvciB8IG51bGw+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpOiB2b2lkID0+IHtcbiAgICAgIHRoaXMuZGF0YS5zZWNyZXQgPSBzZWNyZXQ7XG5cbiAgICAgIHJlc29sdmUodGhpcy5fc3luYygpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGQobmFtZTogc3RyaW5nLCBjYjogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kYXRhLmxpc3QuaW5kZXhPZihuYW1lKSA9PT0gLTEpIHtcbiAgICAgIHRoaXMuZGF0YS5saXN0LnB1c2gobmFtZSk7XG5cbiAgICAgIGRlYnVnKCd0aGUgcHJpdmF0ZSBwYWNrYWdlICVvIGhhcyBiZWVuIGFkZGVkJywgbmFtZSk7XG4gICAgICBjYih0aGlzLl9zeW5jKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWJ1ZygndGhlIHByaXZhdGUgcGFja2FnZSAlbyB3YXMgbm90IGFkZGVkJywgbmFtZSk7XG4gICAgICBjYihudWxsKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2VhcmNoKG9uUGFja2FnZTogQ2FsbGJhY2ssIG9uRW5kOiBDYWxsYmFjaywgdmFsaWRhdGVOYW1lOiAobmFtZTogc3RyaW5nKSA9PiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3Qgc3RvcmFnZXMgPSB0aGlzLl9nZXRDdXN0b21QYWNrYWdlTG9jYWxTdG9yYWdlcygpO1xuICAgIGRlYnVnKGBzZWFyY2ggY3VzdG9tIGxvY2FsIHBhY2thZ2VzOiAlb2AsIEpTT04uc3RyaW5naWZ5KHN0b3JhZ2VzKSk7XG4gICAgY29uc3QgYmFzZSA9IFBhdGguZGlybmFtZSh0aGlzLmNvbmZpZy5zZWxmX3BhdGgpO1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGNvbnN0IHN0b3JhZ2VLZXlzID0gT2JqZWN0LmtleXMoc3RvcmFnZXMpO1xuICAgIGRlYnVnKGBzZWFyY2ggYmFzZTogJW8ga2V5czogJW9gLCBiYXNlLCBzdG9yYWdlS2V5cyk7XG5cbiAgICBhc3luYy5lYWNoU2VyaWVzKFxuICAgICAgc3RvcmFnZUtleXMsXG4gICAgICBmdW5jdGlvbihzdG9yYWdlLCBjYikge1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHN0b3JhZ2VLZXlzLmluZGV4T2Yoc3RvcmFnZSk7XG4gICAgICAgIGNvbnN0IGJhc2UyID0gUGF0aC5qb2luKHBvc2l0aW9uICE9PSAwID8gc3RvcmFnZUtleXNbMF0gOiAnJyk7XG4gICAgICAgIGNvbnN0IHN0b3JhZ2VQYXRoOiBzdHJpbmcgPSBQYXRoLnJlc29sdmUoYmFzZSwgYmFzZTIsIHN0b3JhZ2UpO1xuICAgICAgICBkZWJ1Zygnc2VhcmNoIHBhdGg6ICVvIDogJW8nLCBzdG9yYWdlUGF0aCwgc3RvcmFnZSk7XG4gICAgICAgIGZzLnJlYWRkaXIoc3RvcmFnZVBhdGgsIChlcnIsIGZpbGVzKSA9PiB7XG4gICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIGNiKGVycik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYXN5bmMuZWFjaFNlcmllcyhcbiAgICAgICAgICAgIGZpbGVzLFxuICAgICAgICAgICAgZnVuY3Rpb24oZmlsZSwgY2IpIHtcbiAgICAgICAgICAgICAgZGVidWcoJ2xvY2FsLXN0b3JhZ2U6IFtzZWFyY2hdIHNlYXJjaCBmaWxlIHBhdGg6ICVvJywgZmlsZSk7XG4gICAgICAgICAgICAgIGlmIChzdG9yYWdlS2V5cy5pbmNsdWRlcyhmaWxlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjYigpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGZpbGUubWF0Y2goL15ALykpIHtcbiAgICAgICAgICAgICAgICAvLyBzY29wZWRcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlTG9jYXRpb24gPSBQYXRoLnJlc29sdmUoYmFzZSwgc3RvcmFnZSwgZmlsZSk7XG4gICAgICAgICAgICAgICAgZGVidWcoJ3NlYXJjaCBzY29wZWQgZmlsZSBsb2NhdGlvbjogJW8nLCBmaWxlTG9jYXRpb24pO1xuICAgICAgICAgICAgICAgIGZzLnJlYWRkaXIoZmlsZUxvY2F0aW9uLCBmdW5jdGlvbihlcnIsIGZpbGVzKSB7XG4gICAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYihlcnIpO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBhc3luYy5lYWNoU2VyaWVzKFxuICAgICAgICAgICAgICAgICAgICBmaWxlcyxcbiAgICAgICAgICAgICAgICAgICAgKGZpbGUyLCBjYikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0ZU5hbWUoZmlsZTIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYWNrYWdlUGF0aCA9IFBhdGgucmVzb2x2ZShiYXNlLCBzdG9yYWdlLCBmaWxlLCBmaWxlMik7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZzLnN0YXQocGFja2FnZVBhdGgsIChlcnIsIHN0YXRzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfLmlzTmlsKGVycikgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNiKGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBgJHtmaWxlfS8ke2ZpbGUyfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogcGFja2FnZVBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZTogc3RhdHMubXRpbWUuZ2V0VGltZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvblBhY2thZ2UoaXRlbSwgY2IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNiKCk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBjYlxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWxpZGF0ZU5hbWUoZmlsZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBiYXNlMiA9IFBhdGguam9pbihwb3NpdGlvbiAhPT0gMCA/IHN0b3JhZ2VLZXlzWzBdIDogJycpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhY2thZ2VQYXRoID0gUGF0aC5yZXNvbHZlKGJhc2UsIGJhc2UyLCBzdG9yYWdlLCBmaWxlKTtcbiAgICAgICAgICAgICAgICBkZWJ1Zygnc2VhcmNoIGZpbGUgbG9jYXRpb246ICVvJywgcGFja2FnZVBhdGgpO1xuICAgICAgICAgICAgICAgIGZzLnN0YXQocGFja2FnZVBhdGgsIChlcnIsIHN0YXRzKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoXy5pc05pbChlcnIpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2IoZXJyKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIG9uUGFja2FnZShcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGZpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgcGF0aDogcGFja2FnZVBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgdGltZTogc2VsZi5nZXRUaW1lKHN0YXRzLm10aW1lLmdldFRpbWUoKSwgc3RhdHMubXRpbWUpLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBjYlxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjYigpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2JcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBvbkVuZFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlKG5hbWU6IHN0cmluZywgY2I6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgdGhpcy5nZXQoKGVyciwgZGF0YSkgPT4ge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICBjYihnZXRJbnRlcm5hbEVycm9yKCdlcnJvciByZW1vdmUgcHJpdmF0ZSBwYWNrYWdlJykpO1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcih7IGVyciB9LCAnW2xvY2FsLXN0b3JhZ2UvcmVtb3ZlXTogcmVtb3ZlIHRoZSBwcml2YXRlIHBhY2thZ2UgaGFzIGZhaWxlZCBAe2Vycn0nKTtcbiAgICAgICAgZGVidWcoJ2Vycm9yIG9uIHJlbW92ZSBwYWNrYWdlICVvJywgbmFtZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBrZ05hbWUgPSBkYXRhLmluZGV4T2YobmFtZSk7XG4gICAgICBpZiAocGtnTmFtZSAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5kYXRhLmxpc3Quc3BsaWNlKHBrZ05hbWUsIDEpO1xuXG4gICAgICAgIGRlYnVnKCdyZW1vdmUgcGFja2FnZSAlbyBoYXMgYmVlbiByZW1vdmVkJywgbmFtZSk7XG4gICAgICB9XG5cbiAgICAgIGNiKHRoaXMuX3N5bmMoKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFsbCBkYXRhYmFzZSBlbGVtZW50cy5cbiAgICogQHJldHVybiB7QXJyYXl9XG4gICAqL1xuICBwdWJsaWMgZ2V0KGNiOiBDYWxsYmFjayk6IHZvaWQge1xuICAgIGNvbnN0IGxpc3QgPSB0aGlzLmRhdGEubGlzdDtcbiAgICBjb25zdCB0b3RhbEl0ZW1zID0gdGhpcy5kYXRhLmxpc3QubGVuZ3RoO1xuXG4gICAgY2IobnVsbCwgbGlzdCk7XG5cbiAgICBkZWJ1ZygnZ2V0IGZ1bGwgbGlzdCBvZiBwYWNrYWdlcyAoJW8pIGhhcyBiZWVuIGZldGNoZWQnLCB0b3RhbEl0ZW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRQYWNrYWdlU3RvcmFnZShwYWNrYWdlTmFtZTogc3RyaW5nKTogSVBhY2thZ2VTdG9yYWdlIHtcbiAgICBjb25zdCBwYWNrYWdlQWNjZXNzID0gdGhpcy5jb25maWcuZ2V0TWF0Y2hlZFBhY2thZ2VzU3BlYyhwYWNrYWdlTmFtZSk7XG5cbiAgICBjb25zdCBwYWNrYWdlUGF0aDogc3RyaW5nID0gdGhpcy5fZ2V0TG9jYWxTdG9yYWdlUGF0aChwYWNrYWdlQWNjZXNzID8gcGFja2FnZUFjY2Vzcy5zdG9yYWdlIDogdW5kZWZpbmVkKTtcbiAgICBkZWJ1Zygnc3RvcmFnZSBwYXRoIHNlbGVjdGVkOiAnLCBwYWNrYWdlUGF0aCk7XG5cbiAgICBpZiAoXy5pc1N0cmluZyhwYWNrYWdlUGF0aCkgPT09IGZhbHNlKSB7XG4gICAgICBkZWJ1ZygndGhlIHBhY2thZ2UgJW8gaGFzIG5vIHN0b3JhZ2UgZGVmaW5lZCAnLCBwYWNrYWdlTmFtZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGFja2FnZVN0b3JhZ2VQYXRoOiBzdHJpbmcgPSBQYXRoLmpvaW4oXG4gICAgICBQYXRoLnJlc29sdmUoUGF0aC5kaXJuYW1lKHRoaXMuY29uZmlnLnNlbGZfcGF0aCB8fCAnJyksIHBhY2thZ2VQYXRoKSxcbiAgICAgIHBhY2thZ2VOYW1lXG4gICAgKTtcblxuICAgIGRlYnVnKCdzdG9yYWdlIGFic29sdXRlIHBhdGg6ICcsIHBhY2thZ2VTdG9yYWdlUGF0aCk7XG5cbiAgICByZXR1cm4gbmV3IExvY2FsRHJpdmVyKHBhY2thZ2VTdG9yYWdlUGF0aCwgdGhpcy5sb2dnZXIpO1xuICB9XG5cbiAgcHVibGljIGNsZWFuKCk6IHZvaWQge1xuICAgIHRoaXMuX3N5bmMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGltZSh0aW1lOiBudW1iZXIsIG10aW1lOiBEYXRlKTogbnVtYmVyIHwgRGF0ZSB7XG4gICAgcmV0dXJuIHRpbWUgPyB0aW1lIDogbXRpbWU7XG4gIH1cblxuICBwcml2YXRlIF9nZXRDdXN0b21QYWNrYWdlTG9jYWxTdG9yYWdlcygpOiBvYmplY3Qge1xuICAgIGNvbnN0IHN0b3JhZ2VzID0ge307XG5cbiAgICAvLyBhZGQgY3VzdG9tIHN0b3JhZ2UgaWYgZXhpc3RcbiAgICBpZiAodGhpcy5jb25maWcuc3RvcmFnZSkge1xuICAgICAgc3RvcmFnZXNbdGhpcy5jb25maWcuc3RvcmFnZV0gPSB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHsgcGFja2FnZXMgfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgaWYgKHBhY2thZ2VzKSB7XG4gICAgICBjb25zdCBsaXN0UGFja2FnZXNDb25mID0gT2JqZWN0LmtleXMocGFja2FnZXMgfHwge30pO1xuXG4gICAgICBsaXN0UGFja2FnZXNDb25mLm1hcChwa2cgPT4ge1xuICAgICAgICBjb25zdCBzdG9yYWdlID0gcGFja2FnZXNbcGtnXS5zdG9yYWdlO1xuICAgICAgICBpZiAoc3RvcmFnZSkge1xuICAgICAgICAgIHN0b3JhZ2VzW3N0b3JhZ2VdID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBzdG9yYWdlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTeW5jcm9uaXplIHtjcmVhdGV9IGRhdGFiYXNlIHdoZXRoZXIgZG9lcyBub3QgZXhpc3QuXG4gICAqIEByZXR1cm4ge0Vycm9yfCp9XG4gICAqL1xuICBwcml2YXRlIF9zeW5jKCk6IEVycm9yIHwgbnVsbCB7XG4gICAgZGVidWcoJ3N5bmMgZGF0YWJhc2Ugc3RhcnRlZCcpO1xuXG4gICAgaWYgKHRoaXMubG9ja2VkKSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgJ0RhdGFiYXNlIGlzIGxvY2tlZCwgcGxlYXNlIGNoZWNrIGVycm9yIG1lc3NhZ2UgcHJpbnRlZCBkdXJpbmcgc3RhcnR1cCB0byAnICsgJ3ByZXZlbnQgZGF0YSBsb3NzLidcbiAgICAgICk7XG4gICAgICByZXR1cm4gbmV3IEVycm9yKFxuICAgICAgICAnVmVyZGFjY2lvIGRhdGFiYXNlIGlzIGxvY2tlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yIHRvIGNoZWNrb3V0ICcgK1xuICAgICAgICAgICdsb2dzIGR1cmluZyB2ZXJkYWNjaW8gc3RhcnR1cC4nXG4gICAgICApO1xuICAgIH1cbiAgICAvLyBVc2VzIHN5bmMgdG8gcHJldmVudCB1Z2x5IHJhY2UgY29uZGl0aW9uXG4gICAgdHJ5IHtcbiAgICAgIC8vIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL21rZGlycCNta2RpcnBzeW5jZGlyLW9wdHNcbiAgICAgIGNvbnN0IGZvbGRlck5hbWUgPSBQYXRoLmRpcm5hbWUodGhpcy5wYXRoKTtcbiAgICAgIG1rZGlycC5zeW5jKGZvbGRlck5hbWUpO1xuICAgICAgZGVidWcoJ3N5bmMgZm9sZGVyICVvIGNyZWF0ZWQgc3VjY2VlZCcsIGZvbGRlck5hbWUpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZGVidWcoJ3N5bmMgY3JlYXRlIGZvbGRlciBoYXMgZmFpbGVkIHdpdGggZXJyb3I6ICVvJywgZXJyKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKHRoaXMucGF0aCwgSlNPTi5zdHJpbmdpZnkodGhpcy5kYXRhKSk7XG4gICAgICBkZWJ1Zygnc3luYyB3cml0ZSBzdWNjZWVkJyk7XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZGVidWcoJ3N5bmMgZmFpbGVkICVvJywgZXJyKTtcblxuICAgICAgcmV0dXJuIGVycjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZ5IHRoZSByaWdodCBsb2NhbCBzdG9yYWdlIGxvY2F0aW9uLlxuICAgKiBAcGFyYW0ge1N0cmluZ30gcGF0aFxuICAgKiBAcmV0dXJuIHtTdHJpbmd9XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9nZXRMb2NhbFN0b3JhZ2VQYXRoKHN0b3JhZ2U6IHN0cmluZyB8IHZvaWQpOiBzdHJpbmcge1xuICAgIGNvbnN0IGdsb2JhbENvbmZpZ1N0b3JhZ2UgPSB0aGlzLmNvbmZpZyA/IHRoaXMuY29uZmlnLnN0b3JhZ2UgOiB1bmRlZmluZWQ7XG4gICAgaWYgKF8uaXNOaWwoZ2xvYmFsQ29uZmlnU3RvcmFnZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZ2xvYmFsIHN0b3JhZ2UgaXMgcmVxdWlyZWQgZm9yIHRoaXMgcGx1Z2luJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChfLmlzTmlsKHN0b3JhZ2UpID09PSBmYWxzZSAmJiBfLmlzU3RyaW5nKHN0b3JhZ2UpKSB7XG4gICAgICAgIHJldHVybiBQYXRoLmpvaW4oZ2xvYmFsQ29uZmlnU3RvcmFnZSBhcyBzdHJpbmcsIHN0b3JhZ2UgYXMgc3RyaW5nKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGdsb2JhbENvbmZpZ1N0b3JhZ2UgYXMgc3RyaW5nO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCB0aGUgbG9jYWwgZGF0YWJhc2UgcGF0aC5cbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZ1xuICAgKiBAcmV0dXJuIHtzdHJpbmd8U3RyaW5nfCp9XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9idWlsZFN0b3JhZ2VQYXRoKGNvbmZpZzogQ29uZmlnKTogc3RyaW5nIHtcbiAgICBjb25zdCBzaW5vcGlhZGJQYXRoOiBzdHJpbmcgPSB0aGlzLl9kYkdlblBhdGgoREVQUkVDQVRFRF9EQl9OQU1FLCBjb25maWcpO1xuICAgIHRyeSB7XG4gICAgICBmcy5hY2Nlc3NTeW5jKHNpbm9waWFkYlBhdGgsIGZzLmNvbnN0YW50cy5GX09LKTtcbiAgICAgIHJldHVybiBzaW5vcGlhZGJQYXRoO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGVyci5jb2RlID09PSBub1N1Y2hGaWxlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYkdlblBhdGgoREJfTkFNRSwgY29uZmlnKTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBsb2NhbCBwYWNrYWdlcy5cbiAgICogQHByaXZhdGVcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgcHJpdmF0ZSBfZmV0Y2hMb2NhbFBhY2thZ2VzKCk6IExvY2FsU3RvcmFnZSB7XG4gICAgY29uc3QgbGlzdDogU3RvcmFnZUxpc3QgPSBbXTtcbiAgICBjb25zdCBlbXB0eURhdGFiYXNlID0geyBsaXN0LCBzZWNyZXQ6ICcnIH07XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGxvYWRQcml2YXRlUGFja2FnZXModGhpcy5wYXRoLCB0aGlzLmxvZ2dlcik7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyByZWFkRmlsZVN5bmMgaXMgcGxhdGZvcm0gc3BlY2lmaWMsIG1hY09TLCBMaW51eCBhbmQgV2luZG93cyB0aHJvd24gYW4gZXJyb3JcbiAgICAgIC8vIE9ubHkgcmVjcmVhdGUgaWYgZmlsZSBub3QgZm91bmQgdG8gcHJldmVudCBkYXRhIGxvc3NcbiAgICAgIGlmIChlcnIuY29kZSAhPT0gbm9TdWNoRmlsZSkge1xuICAgICAgICB0aGlzLmxvY2tlZCA9IHRydWU7XG4gICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICAgICdGYWlsZWQgdG8gcmVhZCBwYWNrYWdlIGRhdGFiYXNlIGZpbGUsIHBsZWFzZSBjaGVjayB0aGUgZXJyb3IgcHJpbnRlZCBiZWxvdzpcXG4nLFxuICAgICAgICAgIGBGaWxlIFBhdGg6ICR7dGhpcy5wYXRofVxcblxcbiAke2Vyci5tZXNzYWdlfWBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVtcHR5RGF0YWJhc2U7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IExvY2FsRGF0YWJhc2U7XG4iXX0=
377
+ //# 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":"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","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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90b2tlbi50cyJdLCJuYW1lcyI6WyJkZWJ1ZyIsIlRPS0VOX0RCX05BTUUiLCJUb2tlbkFjdGlvbnMiLCJjb25zdHJ1Y3RvciIsImNvbmZpZyIsInRva2VuRGIiLCJfZGJHZW5QYXRoIiwiZGJOYW1lIiwiUGF0aCIsImpvaW4iLCJyZXNvbHZlIiwiZGlybmFtZSIsImNvbmZpZ19wYXRoIiwic3RvcmFnZSIsImdldFRva2VuRGIiLCJhZGFwdGVyIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiRmlsZU1lbW9yeSIsInBhdGhEYiIsIkZpbGVBc3luYyIsInNhdmVUb2tlbiIsInRva2VuIiwia2V5IiwiZGIiLCJ1c2VyRGF0YSIsImdldCIsInVzZXIiLCJ2YWx1ZSIsIl8iLCJpc05pbCIsInNldCIsIndyaXRlIiwicHVzaCIsImdldFN0YXRlIiwiZGVsZXRlVG9rZW4iLCJ0b2tlbktleSIsInVzZXJUb2tlbnMiLCJFcnJvciIsImxlbmd0aCIsInJlbWFpbmluZ1Rva2VucyIsImZpbHRlciIsInJlYWRUb2tlbnMiLCJ0b2tlbnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBR0EsTUFBTUEsS0FBSyxHQUFHLG9CQUFXLHNDQUFYLENBQWQ7QUFFQSxNQUFNQyxhQUFhLEdBQUcsZ0JBQXRCOztBQUVlLE1BQU1DLFlBQU4sQ0FBNEM7QUFJbERDLEVBQUFBLFdBQVAsQ0FBbUJDLE1BQW5CLEVBQW1DO0FBQUE7O0FBQUE7O0FBQ2pDLFNBQUtBLE1BQUwsR0FBY0EsTUFBZDtBQUNBLFNBQUtDLE9BQUwsR0FBZSxJQUFmO0FBQ0Q7O0FBRU1DLEVBQUFBLFVBQVAsQ0FBa0JDLE1BQWxCLEVBQWtDSCxNQUFsQyxFQUEwRDtBQUN4RCxXQUFPSSxjQUFLQyxJQUFMLENBQVVELGNBQUtFLE9BQUwsQ0FBYUYsY0FBS0csT0FBTCxDQUFhUCxNQUFNLENBQUNRLFdBQVAsSUFBc0IsRUFBbkMsQ0FB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QUF4QjtBQUlBLFVBQU1aLEVBQUUsQ0FBQ08sR0FBSCxDQUFPSixJQUFQLEVBQWFhLGVBQWIsRUFBOEJSLEtBQTlCLEVBQU47QUFDQWpDLElBQUFBLEtBQUssQ0FBQyx1QkFBRCxFQUEwQnFDLFFBQTFCLENBQUw7QUFDRDs7QUFFRCxRQUFhTSxVQUFiLENBQXdCRCxNQUF4QixFQUErRDtBQUM3RCxVQUFNO0FBQUVkLE1BQUFBO0FBQUYsUUFBV2MsTUFBakI7QUFDQTFDLElBQUFBLEtBQUssQ0FBQyxxQkFBRCxFQUF3QjRCLElBQXhCLENBQUw7QUFDQSxVQUFNSCxFQUFFLEdBQUcsTUFBTSxLQUFLWCxVQUFMLEVBQWpCO0FBQ0EsVUFBTThCLE1BQU0sR0FBRyxNQUFNbkIsRUFBRSxDQUFDRSxHQUFILENBQU9DLElBQVAsRUFBYUMsS0FBYixFQUFyQjtBQUNBLFdBQU9lLE1BQU0sSUFBSSxFQUFqQjtBQUNEOztBQTFFd0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUGF0aCBmcm9tICdwYXRoJztcblxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBsb3cgZnJvbSAnbG93ZGInO1xuaW1wb3J0IEZpbGVBc3luYyBmcm9tICdsb3dkYi9hZGFwdGVycy9GaWxlQXN5bmMnO1xuaW1wb3J0IEZpbGVNZW1vcnkgZnJvbSAnbG93ZGIvYWRhcHRlcnMvTWVtb3J5JztcbmltcG9ydCBidWlsZERlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7IElUb2tlbkFjdGlvbnMsIENvbmZpZywgVG9rZW4sIFRva2VuRmlsdGVyIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5cbmNvbnN0IGRlYnVnID0gYnVpbGREZWJ1ZygndmVyZGFjY2lvOnBsdWdpbjpsb2NhbC1zdG9yYWdlOnRva2VuJyk7XG5cbmNvbnN0IFRPS0VOX0RCX05BTUUgPSAnLnRva2VuLWRiLmpzb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUb2tlbkFjdGlvbnMgaW1wbGVtZW50cyBJVG9rZW5BY3Rpb25zIHtcbiAgcHVibGljIGNvbmZpZzogQ29uZmlnO1xuICBwdWJsaWMgdG9rZW5EYjogbG93Lkxvd2RiQXN5bmM8YW55PiB8IG51bGw7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvbmZpZzogQ29uZmlnKSB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy50b2tlbkRiID0gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBfZGJHZW5QYXRoKGRiTmFtZTogc3RyaW5nLCBjb25maWc6IENvbmZpZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFBhdGguam9pbihQYXRoLnJlc29sdmUoUGF0aC5kaXJuYW1lKGNvbmZpZy5jb25maWdfcGF0aCB8fCAnJyksIGNvbmZpZy5zdG9yYWdlIGFzIHN0cmluZywgZGJOYW1lKSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFRva2VuRGIoKTogUHJvbWlzZTxsb3cuTG93ZGJBc3luYzxhbnk+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":"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","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.1",
3
+ "version": "10.1.0",
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.1.0",
35
+ "@verdaccio/file-locking": "10.1.0",
36
+ "@verdaccio/streams": "10.1.0",
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.1.0",
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": "41f022aeead82174824aa246506ec12ed895e474"
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,508 +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.1](https://github.com/verdaccio/monorepo/compare/v10.0.0...v10.0.1) (2021-03-29)
7
-
8
-
9
- ### Bug Fixes
10
-
11
- * restore self_path variable ([#396](https://github.com/verdaccio/monorepo/issues/396)) ([b369102](https://github.com/verdaccio/monorepo/commit/b369102ab7f54ec4218dcd49c9c7f8a34f3fe9a2))
12
-
13
-
14
-
15
-
16
-
17
- # [10.0.0](https://github.com/verdaccio/monorepo/compare/v9.7.5...v10.0.0) (2021-03-29)
18
-
19
- **Note:** Version bump only for package @verdaccio/local-storage
20
-
21
-
22
-
23
-
24
-
25
- ## [9.7.5](https://github.com/verdaccio/monorepo/compare/v9.7.4...v9.7.5) (2021-03-05)
26
-
27
-
28
- ### Bug Fixes
29
-
30
- * update dependencies ([#393](https://github.com/verdaccio/monorepo/issues/393)) ([51cb3d4](https://github.com/verdaccio/monorepo/commit/51cb3d4a533590054085dca1e5270cf9ebdeacfd))
31
-
32
-
33
-
34
-
35
-
36
- ## [9.7.4](https://github.com/verdaccio/monorepo/compare/v9.7.3...v9.7.4) (2020-10-31)
37
-
38
-
39
- ### Bug Fixes
40
-
41
- * update lodash ([c7fe587](https://github.com/verdaccio/monorepo/commit/c7fe587a6d8be337d7099cbd459320cbda4cfd91))
42
-
43
-
44
-
45
-
46
-
47
- ## [9.7.2](https://github.com/verdaccio/monorepo/compare/v9.7.1...v9.7.2) (2020-07-20)
48
-
49
- **Note:** Version bump only for package @verdaccio/local-storage
50
-
51
-
52
-
53
-
54
-
55
- ## [9.7.1](https://github.com/verdaccio/monorepo/compare/v9.7.0...v9.7.1) (2020-07-10)
56
-
57
-
58
- ### Bug Fixes
59
-
60
- * update dependencies ([#375](https://github.com/verdaccio/monorepo/issues/375)) ([1e7aeec](https://github.com/verdaccio/monorepo/commit/1e7aeec31b056979285e272793a95b8c75d57c77))
61
-
62
-
63
-
64
-
65
-
66
- # [9.7.0](https://github.com/verdaccio/monorepo/compare/v9.6.1...v9.7.0) (2020-06-24)
67
-
68
- **Note:** Version bump only for package @verdaccio/local-storage
69
-
70
-
71
-
72
-
73
-
74
- ## [9.6.1](https://github.com/verdaccio/monorepo/compare/v9.6.0...v9.6.1) (2020-06-07)
75
-
76
- **Note:** Version bump only for package @verdaccio/local-storage
77
-
78
-
79
-
80
-
81
-
82
- ## [9.5.1](https://github.com/verdaccio/monorepo/compare/v9.5.0...v9.5.1) (2020-06-03)
83
-
84
-
85
- ### Bug Fixes
86
-
87
- * restore Node v8 support ([#361](https://github.com/verdaccio/monorepo/issues/361)) ([9be55a1](https://github.com/verdaccio/monorepo/commit/9be55a1deebe954e8eef9edc59af9fd16e29daed))
88
-
89
-
90
-
91
-
92
-
93
- # [9.5.0](https://github.com/verdaccio/monorepo/compare/v9.4.1...v9.5.0) (2020-05-02)
94
-
95
- **Note:** Version bump only for package @verdaccio/local-storage
96
-
97
-
98
-
99
-
100
-
101
- # [9.4.0](https://github.com/verdaccio/monorepo/compare/v9.3.4...v9.4.0) (2020-03-21)
102
-
103
- **Note:** Version bump only for package @verdaccio/local-storage
104
-
105
-
106
-
107
-
108
-
109
- ## [9.3.4](https://github.com/verdaccio/monorepo/compare/v9.3.3...v9.3.4) (2020-03-11)
110
-
111
-
112
- ### Bug Fixes
113
-
114
- * update mkdirp@1.0.3 ([#341](https://github.com/verdaccio/monorepo/issues/341)) ([96db337](https://github.com/verdaccio/monorepo/commit/96db3378a4f2334ec89cfb113af95e9a3a6eb050))
115
-
116
-
117
-
118
-
119
-
120
- ## [9.3.2](https://github.com/verdaccio/monorepo/compare/v9.3.1...v9.3.2) (2020-03-08)
121
-
122
-
123
- ### Bug Fixes
124
-
125
- * update dependencies ([#332](https://github.com/verdaccio/monorepo/issues/332)) ([b6165ae](https://github.com/verdaccio/monorepo/commit/b6165aea9b7e4012477081eae68bfa7159c58f56))
126
-
127
-
128
-
129
-
130
-
131
- ## [9.3.1](https://github.com/verdaccio/monorepo/compare/v9.3.0...v9.3.1) (2020-02-23)
132
-
133
- **Note:** Version bump only for package @verdaccio/local-storage
134
-
135
-
136
-
137
-
138
-
139
- # [9.3.0](https://github.com/verdaccio/monorepo/compare/v9.2.0...v9.3.0) (2020-01-29)
140
-
141
- **Note:** Version bump only for package @verdaccio/local-storage
142
-
143
-
144
-
145
-
146
-
147
- # [9.0.0](https://github.com/verdaccio/monorepo/compare/v8.5.3...v9.0.0) (2020-01-07)
148
-
149
-
150
- ### Bug Fixes
151
-
152
- * prevent circular structure exception ([#312](https://github.com/verdaccio/monorepo/issues/312)) ([f565461](https://github.com/verdaccio/monorepo/commit/f565461f5bb2873467eeb4372a12fbf4a4974d17))
153
-
154
-
155
-
156
-
157
-
158
- ## [8.5.2](https://github.com/verdaccio/monorepo/compare/v8.5.1...v8.5.2) (2019-12-25)
159
-
160
- **Note:** Version bump only for package @verdaccio/local-storage
161
-
162
-
163
-
164
-
165
-
166
- ## [8.5.1](https://github.com/verdaccio/monorepo/compare/v8.5.0...v8.5.1) (2019-12-24)
167
-
168
- **Note:** Version bump only for package @verdaccio/local-storage
169
-
170
-
171
-
172
-
173
-
174
- # [8.5.0](https://github.com/verdaccio/monorepo/compare/v8.4.2...v8.5.0) (2019-12-22)
175
-
176
- **Note:** Version bump only for package @verdaccio/local-storage
177
-
178
-
179
-
180
-
181
-
182
- ## [8.4.2](https://github.com/verdaccio/monorepo/compare/v8.4.1...v8.4.2) (2019-11-23)
183
-
184
- **Note:** Version bump only for package @verdaccio/local-storage
185
-
186
-
187
-
188
-
189
-
190
- ## [8.4.1](https://github.com/verdaccio/monorepo/compare/v8.4.0...v8.4.1) (2019-11-22)
191
-
192
- **Note:** Version bump only for package @verdaccio/local-storage
193
-
194
-
195
-
196
-
197
-
198
- # [8.4.0](https://github.com/verdaccio/monorepo/compare/v8.3.0...v8.4.0) (2019-11-22)
199
-
200
- **Note:** Version bump only for package @verdaccio/local-storage
201
-
202
-
203
-
204
-
205
-
206
- # [8.3.0](https://github.com/verdaccio/monorepo/compare/v8.2.0...v8.3.0) (2019-10-27)
207
-
208
- **Note:** Version bump only for package @verdaccio/local-storage
209
-
210
-
211
-
212
-
213
-
214
- # [8.2.0](https://github.com/verdaccio/monorepo/compare/v8.2.0-next.0...v8.2.0) (2019-10-23)
215
-
216
- **Note:** Version bump only for package @verdaccio/local-storage
217
-
218
-
219
-
220
-
221
-
222
- # [8.2.0-next.0](https://github.com/verdaccio/monorepo/compare/v8.1.4...v8.2.0-next.0) (2019-10-08)
223
-
224
-
225
- ### Bug Fixes
226
-
227
- * fixed lint errors ([5e677f7](https://github.com/verdaccio/monorepo/commit/5e677f7))
228
-
229
-
230
-
231
-
232
-
233
- ## [8.1.2](https://github.com/verdaccio/monorepo/compare/v8.1.1...v8.1.2) (2019-09-29)
234
-
235
- **Note:** Version bump only for package @verdaccio/local-storage
236
-
237
-
238
-
239
-
240
-
241
- ## [8.1.1](https://github.com/verdaccio/monorepo/compare/v8.1.0...v8.1.1) (2019-09-26)
242
-
243
- **Note:** Version bump only for package @verdaccio/local-storage
244
-
245
-
246
-
247
-
248
-
249
- # [8.1.0](https://github.com/verdaccio/monorepo/compare/v8.0.1-next.1...v8.1.0) (2019-09-07)
250
-
251
- **Note:** Version bump only for package @verdaccio/local-storage
252
-
253
-
254
-
255
-
256
-
257
- ## [8.0.1-next.1](https://github.com/verdaccio/monorepo/compare/v8.0.1-next.0...v8.0.1-next.1) (2019-08-29)
258
-
259
- **Note:** Version bump only for package @verdaccio/local-storage
260
-
261
-
262
-
263
-
264
-
265
- ## [8.0.1-next.0](https://github.com/verdaccio/monorepo/compare/v8.0.0...v8.0.1-next.0) (2019-08-29)
266
-
267
- **Note:** Version bump only for package @verdaccio/local-storage
268
-
269
-
270
-
271
-
272
-
273
- # [8.0.0](https://github.com/verdaccio/monorepo/compare/v8.0.0-next.4...v8.0.0) (2019-08-22)
274
-
275
- **Note:** Version bump only for package @verdaccio/local-storage
276
-
277
-
278
-
279
-
280
-
281
- # [8.0.0-next.4](https://github.com/verdaccio/monorepo/compare/v8.0.0-next.3...v8.0.0-next.4) (2019-08-18)
282
-
283
- **Note:** Version bump only for package @verdaccio/local-storage
284
-
285
-
286
-
287
-
288
-
289
- # [8.0.0-next.3](https://github.com/verdaccio/monorepo/compare/v8.0.0-next.2...v8.0.0-next.3) (2019-08-16)
290
-
291
-
292
- ### Bug Fixes
293
-
294
- * restore closure ([32b9d7e](https://github.com/verdaccio/monorepo/commit/32b9d7e))
295
- * **build:** error on types for fs callback ([cc35acb](https://github.com/verdaccio/monorepo/commit/cc35acb))
296
- * Add DATE and VERSION in search result ([e352b75](https://github.com/verdaccio/monorepo/commit/e352b75))
297
- * avoid open write stream if resource exist [#1191](https://github.com/verdaccio/monorepo/issues/1191) ([f041d3f](https://github.com/verdaccio/monorepo/commit/f041d3f))
298
- * bug fixing integration ([6c75ac8](https://github.com/verdaccio/monorepo/commit/6c75ac8))
299
- * build before publish ([cd6c7ff](https://github.com/verdaccio/monorepo/commit/cd6c7ff))
300
- * check whether path exist before return result ([a4d2af1](https://github.com/verdaccio/monorepo/commit/a4d2af1))
301
- * flow issues ([f42a284](https://github.com/verdaccio/monorepo/commit/f42a284))
302
- * ignore flow on this one, we need it ([c8e0b2b](https://github.com/verdaccio/monorepo/commit/c8e0b2b))
303
- * local storage requires package.json file for read, save and create all the time ([33c847b](https://github.com/verdaccio/monorepo/commit/33c847b))
304
- * migration from main repository merge [#306](https://github.com/verdaccio/monorepo/issues/306) ([8fbe86e](https://github.com/verdaccio/monorepo/commit/8fbe86e))
305
- * missing callback ([abfc422](https://github.com/verdaccio/monorepo/commit/abfc422))
306
- * missing error code ([7121939](https://github.com/verdaccio/monorepo/commit/7121939))
307
- * move to local storage the fs location handler ([3b12083](https://github.com/verdaccio/monorepo/commit/3b12083))
308
- * mtimeMs is not backward compatible ([c6f74eb](https://github.com/verdaccio/monorepo/commit/c6f74eb))
309
- * remove temp file whether is emtpy and fails ([655102f](https://github.com/verdaccio/monorepo/commit/655102f))
310
- * remove uncessary async ([3e3e3a6](https://github.com/verdaccio/monorepo/commit/3e3e3a6))
311
- * remove unused parameters ([554e301](https://github.com/verdaccio/monorepo/commit/554e301))
312
- * restore build path ([4902042](https://github.com/verdaccio/monorepo/commit/4902042))
313
- * return time as milliseconds ([15467ba](https://github.com/verdaccio/monorepo/commit/15467ba))
314
- * sync after set secret ([2abae4f](https://github.com/verdaccio/monorepo/commit/2abae4f))
315
- * temp files are written into the storage ([89a1dc8](https://github.com/verdaccio/monorepo/commit/89a1dc8))
316
- * unit test ([995a27c](https://github.com/verdaccio/monorepo/commit/995a27c))
317
- * update @verdaccio/file-locking@1.0.0 ([9bd36f0](https://github.com/verdaccio/monorepo/commit/9bd36f0))
318
- * update lodash types ([184466c](https://github.com/verdaccio/monorepo/commit/184466c))
319
-
320
-
321
- ### Features
322
-
323
- * token support with level.js ([#168](https://github.com/verdaccio/monorepo/issues/168)) ([ca877ff](https://github.com/verdaccio/monorepo/commit/ca877ff))
324
- * **build:** standardize build ([33fe090](https://github.com/verdaccio/monorepo/commit/33fe090))
325
- * change new db name to verdaccio ([#83](https://github.com/verdaccio/monorepo/issues/83)) ([edfca9f](https://github.com/verdaccio/monorepo/commit/edfca9f))
326
- * drop node v6 support ([664f288](https://github.com/verdaccio/monorepo/commit/664f288))
327
- * implement search ([2e2bb32](https://github.com/verdaccio/monorepo/commit/2e2bb32))
328
- * migrate to typescript ([c439d25](https://github.com/verdaccio/monorepo/commit/c439d25))
329
- * update database method with callbacks ([ef202a9](https://github.com/verdaccio/monorepo/commit/ef202a9))
330
- * update minor dependencies ([007b026](https://github.com/verdaccio/monorepo/commit/007b026))
331
-
332
-
333
-
334
-
335
-
336
- # Changelog
337
-
338
- 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.
339
-
340
- ## [2.3.0](https://github.com/verdaccio/local-storage/compare/v2.2.1...v2.3.0) (2019-08-13)
341
-
342
-
343
- ### Bug Fixes
344
-
345
- * restore closure ([8ec27f2](https://github.com/verdaccio/local-storage/commit/8ec27f2))
346
-
347
-
348
- ### Features
349
-
350
- * add logging for each method ([3c915c7](https://github.com/verdaccio/local-storage/commit/3c915c7))
351
- * token support with level.js ([#168](https://github.com/verdaccio/local-storage/issues/168)) ([16727bd](https://github.com/verdaccio/local-storage/commit/16727bd))
352
-
353
- ### [2.2.1](https://github.com/verdaccio/local-storage/compare/v2.2.0...v2.2.1) (2019-06-30)
354
-
355
-
356
- ### Bug Fixes
357
-
358
- * **build:** error on types for fs callback ([774d808](https://github.com/verdaccio/local-storage/commit/774d808))
359
-
360
-
361
-
362
- ## [2.2.0](https://github.com/verdaccio/local-storage/compare/v2.1.0...v2.2.0) (2019-06-30)
363
-
364
-
365
- ### Features
366
-
367
- * **build:** standardize build ([eba832e](https://github.com/verdaccio/local-storage/commit/eba832e))
368
-
369
-
370
-
371
- # [2.1.0](https://github.com/verdaccio/local-storage/compare/v2.0.0...v2.1.0) (2019-03-29)
372
-
373
-
374
- ### Bug Fixes
375
-
376
- * remove uncessary async ([23a09f3](https://github.com/verdaccio/local-storage/commit/23a09f3))
377
-
378
-
379
- ### Features
380
-
381
- * drop node v6 support ([ef548e0](https://github.com/verdaccio/local-storage/commit/ef548e0))
382
-
383
-
384
-
385
- # [2.0.0](https://github.com/verdaccio/local-storage/compare/v2.0.0-beta.3...v2.0.0) (2019-03-29)
386
-
387
-
388
-
389
- <a name="2.0.0-beta.3"></a>
390
- # [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)
391
-
392
-
393
- ### Bug Fixes
394
-
395
- * update [@verdaccio](https://github.com/verdaccio)/file-locking@1.0.0 ([587245d](https://github.com/verdaccio/local-storage/commit/587245d))
396
-
397
-
398
-
399
- <a name="2.0.0-beta.2"></a>
400
- # [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)
401
-
402
-
403
- ### Bug Fixes
404
-
405
- * 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))
406
- * package.json to reduce vulnerabilities ([97e9dc3](https://github.com/verdaccio/local-storage/commit/97e9dc3))
407
-
408
-
409
-
410
- <a name="2.0.0-beta.1"></a>
411
- # [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)
412
-
413
-
414
-
415
- <a name="2.0.0-beta.0"></a>
416
- # [2.0.0-beta.0](https://github.com/verdaccio/local-storage/compare/v1.2.0...v2.0.0-beta.0) (2019-02-01)
417
-
418
-
419
- ### Bug Fixes
420
-
421
- * **deps:** update dependency lodash to v4.17.11 ([682616a](https://github.com/verdaccio/local-storage/commit/682616a))
422
-
423
-
424
- ### Features
425
-
426
- * custom storage location ([b1423cd](https://github.com/verdaccio/local-storage/commit/b1423cd))
427
- * migrate to typescript ([fe8344b](https://github.com/verdaccio/local-storage/commit/fe8344b))
428
-
429
-
430
- ### BREAKING CHANGES
431
-
432
- * we change from boolean value to string within the config file
433
-
434
-
435
-
436
- <a name="1.2.0"></a>
437
- # [1.2.0](https://github.com/verdaccio/local-storage/compare/v1.1.3...v1.2.0) (2018-08-25)
438
-
439
-
440
- ### Features
441
-
442
- * change new db name to verdaccio ([#83](https://github.com/verdaccio/local-storage/issues/83)) ([143977d](https://github.com/verdaccio/local-storage/commit/143977d))
443
-
444
-
445
-
446
- <a name="1.1.3"></a>
447
- ## [1.1.3](https://github.com/verdaccio/local-storage/compare/v1.1.2...v1.1.3) (2018-07-15)
448
-
449
-
450
- ### Bug Fixes
451
-
452
- * remove unused parameters ([3ce374a](https://github.com/verdaccio/local-storage/commit/3ce374a))
453
-
454
-
455
-
456
- <a name="1.1.2"></a>
457
- ## [1.1.2](https://github.com/verdaccio/local-storage/compare/v1.1.1...v1.1.2) (2018-06-09)
458
-
459
-
460
- ### Bug Fixes
461
-
462
- * return time as milliseconds ([c98be85](https://github.com/verdaccio/local-storage/commit/c98be85))
463
-
464
-
465
-
466
- <a name="1.1.1"></a>
467
- ## [1.1.1](https://github.com/verdaccio/local-storage/compare/v1.1.0...v1.1.1) (2018-06-08)
468
-
469
-
470
- ### Bug Fixes
471
-
472
- * check whether path exist before return result ([cb5d4ef](https://github.com/verdaccio/local-storage/commit/cb5d4ef))
473
-
474
-
475
-
476
- <a name="1.1.0"></a>
477
- # [1.1.0](https://github.com/verdaccio/local-storage/compare/v1.0.3...v1.1.0) (2018-06-08)
478
-
479
-
480
- ### Bug Fixes
481
-
482
- * **deps:** update dependency async to v2.6.1 ([487b095](https://github.com/verdaccio/local-storage/commit/487b095))
483
-
484
-
485
- ### Features
486
-
487
- * implement search ([f884a24](https://github.com/verdaccio/local-storage/commit/f884a24))
488
-
489
-
490
-
491
- <a name="0.2.0"></a>
492
- # [0.2.0](https://github.com/verdaccio/local-storage/compare/v0.1.4...v0.2.0) (2018-01-17)
493
-
494
-
495
- ### Features
496
-
497
- * update minor dependencies ([92daa81](https://github.com/verdaccio/local-storage/commit/92daa81))
498
-
499
-
500
-
501
- <a name="0.1.4"></a>
502
- ## [0.1.4](https://github.com/verdaccio/local-storage/compare/v0.1.3...v0.1.4) (2018-01-17)
503
-
504
-
505
- ### Bug Fixes
506
-
507
- * remove temp file whether is emtpy and fails ([593e162](https://github.com/verdaccio/local-storage/commit/593e162))
508
- * unit test ([2573f30](https://github.com/verdaccio/local-storage/commit/2573f30))