@verdaccio/local-storage 10.3.1 → 10.3.3

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
@@ -10,11 +10,8 @@ Object.defineProperty(exports, "LocalDatabase", {
10
10
  }
11
11
  });
12
12
  exports.default = void 0;
13
-
14
13
  var _localDatabase = _interopRequireDefault(require("./local-database"));
15
-
16
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
15
  var _default = _localDatabase.default;
19
16
  exports.default = _default;
20
17
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["LocalDatabase"],"sources":["../src/index.ts"],"sourcesContent":["import LocalDatabase from './local-database';\n\nexport { LocalDatabase };\n\nexport default LocalDatabase;\n"],"mappings":";;;;;;;;;;;;;AAAA;;;;eAIeA,sB"}
1
+ {"version":3,"file":"index.js","names":["_localDatabase","_interopRequireDefault","require","obj","__esModule","default","_default","LocalDatabase","exports"],"sources":["../src/index.ts"],"sourcesContent":["import LocalDatabase from './local-database';\n\nexport { LocalDatabase };\n\nexport default LocalDatabase;\n"],"mappings":";;;;;;;;;;;;AAAA,IAAAA,cAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA6C,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAI9BC,sBAAa;AAAAC,OAAA,CAAAH,OAAA,GAAAC,QAAA"}
@@ -1,4 +1,4 @@
1
- import { Callback, Config, IPackageStorage, IPluginStorage, LocalStorage, Logger } from '@verdaccio/types';
1
+ import { Callback, Config, IPackageStorage, IPluginStorage, LocalStorage, Logger } from '@verdaccio/legacy-types';
2
2
  import TokenActions from './token';
3
3
  declare class LocalDatabase extends TokenActions implements IPluginStorage<{}> {
4
4
  path: string;
@@ -4,73 +4,41 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _fs = _interopRequireDefault(require("fs"));
9
-
10
8
  var _path = _interopRequireDefault(require("path"));
11
-
12
9
  var _debug = _interopRequireDefault(require("debug"));
13
-
14
10
  var _lodash = _interopRequireDefault(require("lodash"));
15
-
16
11
  var _async = _interopRequireDefault(require("async"));
17
-
18
12
  var _mkdirp = _interopRequireDefault(require("mkdirp"));
19
-
20
13
  var _commonsApi = require("@verdaccio/commons-api");
21
-
22
14
  var _localFs = _interopRequireWildcard(require("./local-fs"));
23
-
24
15
  var _pkgUtils = require("./pkg-utils");
25
-
26
16
  var _token = _interopRequireDefault(require("./token"));
27
-
28
17
  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
-
30
18
  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
-
32
19
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
-
34
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
35
-
36
20
  const DEPRECATED_DB_NAME = '.sinopia-db.json';
37
21
  const DB_NAME = '.verdaccio-db.json';
38
22
  const debug = (0, _debug.default)('verdaccio:plugin:local-storage');
39
-
40
23
  class LocalDatabase extends _token.default {
41
24
  constructor(config, logger) {
42
25
  super(config);
43
-
44
- _defineProperty(this, "path", void 0);
45
-
46
- _defineProperty(this, "logger", void 0);
47
-
48
- _defineProperty(this, "data", void 0);
49
-
50
- _defineProperty(this, "config", void 0);
51
-
52
- _defineProperty(this, "locked", void 0);
53
-
54
26
  this.config = config;
55
27
  this.path = this._buildStoragePath(config);
56
28
  this.logger = logger;
57
29
  this.locked = false;
58
30
  this.data = this._fetchLocalPackages();
59
-
60
31
  this._sync();
61
32
  }
62
-
63
33
  getSecret() {
64
34
  return Promise.resolve(this.data.secret);
65
35
  }
66
-
67
36
  setSecret(secret) {
68
37
  return new Promise(resolve => {
69
38
  this.data.secret = secret;
70
39
  resolve(this._sync());
71
40
  });
72
41
  }
73
-
74
42
  add(name, cb) {
75
43
  if (this.data.list.indexOf(name) === -1) {
76
44
  this.data.list.push(name);
@@ -81,59 +49,42 @@ class LocalDatabase extends _token.default {
81
49
  cb(null);
82
50
  }
83
51
  }
84
-
85
52
  search(onPackage, onEnd, validateName) {
86
53
  const storages = this._getCustomPackageLocalStorages();
87
-
88
54
  debug(`search custom local packages: %o`, JSON.stringify(storages));
89
-
90
55
  const base = _path.default.dirname(this.config.self_path);
91
-
92
56
  const self = this;
93
57
  const storageKeys = Object.keys(storages);
94
58
  debug(`search base: %o keys: %o`, base, storageKeys);
95
-
96
59
  _async.default.eachSeries(storageKeys, function (storage, cb) {
97
60
  const position = storageKeys.indexOf(storage);
98
-
99
61
  const base2 = _path.default.join(position !== 0 ? storageKeys[0] : '');
100
-
101
62
  const storagePath = _path.default.resolve(base, base2, storage);
102
-
103
63
  debug('search path: %o : %o', storagePath, storage);
104
-
105
64
  _fs.default.readdir(storagePath, (err, files) => {
106
65
  if (err) {
107
66
  return cb(err);
108
67
  }
109
-
110
68
  _async.default.eachSeries(files, function (file, cb) {
111
69
  debug('local-storage: [search] search file path: %o', file);
112
-
113
70
  if (storageKeys.includes(file)) {
114
71
  return cb();
115
72
  }
116
-
117
73
  if (file.match(/^@/)) {
118
74
  // scoped
119
75
  const fileLocation = _path.default.resolve(base, storage, file);
120
-
121
76
  debug('search scoped file location: %o', fileLocation);
122
-
123
77
  _fs.default.readdir(fileLocation, function (err, files) {
124
78
  if (err) {
125
79
  return cb(err);
126
80
  }
127
-
128
81
  _async.default.eachSeries(files, (file2, cb) => {
129
82
  if (validateName(file2)) {
130
83
  const packagePath = _path.default.resolve(base, storage, file, file2);
131
-
132
84
  _fs.default.stat(packagePath, (err, stats) => {
133
85
  if (_lodash.default.isNil(err) === false) {
134
86
  return cb(err);
135
87
  }
136
-
137
88
  const item = {
138
89
  name: `${file}/${file2}`,
139
90
  path: packagePath,
@@ -148,16 +99,12 @@ class LocalDatabase extends _token.default {
148
99
  });
149
100
  } else if (validateName(file)) {
150
101
  const base2 = _path.default.join(position !== 0 ? storageKeys[0] : '');
151
-
152
102
  const packagePath = _path.default.resolve(base, base2, storage, file);
153
-
154
103
  debug('search file location: %o', packagePath);
155
-
156
104
  _fs.default.stat(packagePath, (err, stats) => {
157
105
  if (_lodash.default.isNil(err) === false) {
158
106
  return cb(err);
159
107
  }
160
-
161
108
  onPackage({
162
109
  name: file,
163
110
  path: packagePath,
@@ -169,10 +116,10 @@ class LocalDatabase extends _token.default {
169
116
  }
170
117
  }, cb);
171
118
  });
172
- }, // @ts-ignore
119
+ },
120
+ // @ts-ignore
173
121
  onEnd);
174
122
  }
175
-
176
123
  remove(name, cb) {
177
124
  this.get((err, data) => {
178
125
  if (err) {
@@ -182,110 +129,87 @@ class LocalDatabase extends _token.default {
182
129
  }, '[local-storage/remove]: remove the private package has failed @{err}');
183
130
  debug('error on remove package %o', name);
184
131
  }
185
-
186
132
  const pkgName = data.indexOf(name);
187
-
188
133
  if (pkgName !== -1) {
189
134
  this.data.list.splice(pkgName, 1);
190
135
  debug('remove package %o has been removed', name);
191
136
  }
192
-
193
137
  cb(this._sync());
194
138
  });
195
139
  }
140
+
196
141
  /**
197
142
  * Return all database elements.
198
143
  * @return {Array}
199
144
  */
200
-
201
-
202
145
  get(cb) {
203
146
  const list = this.data.list;
204
147
  const totalItems = this.data.list.length;
205
148
  cb(null, list);
206
149
  debug('get full list of packages (%o) has been fetched', totalItems);
207
150
  }
208
-
209
151
  getPackageStorage(packageName) {
210
152
  const packageAccess = this.config.getMatchedPackagesSpec(packageName);
211
-
212
153
  const packagePath = this._getLocalStoragePath(packageAccess ? packageAccess.storage : undefined);
213
-
214
154
  debug('storage path selected: ', packagePath);
215
-
216
155
  if (_lodash.default.isString(packagePath) === false) {
217
156
  debug('the package %o has no storage defined ', packageName);
218
157
  return;
219
158
  }
220
-
221
159
  const packageStoragePath = _path.default.join(_path.default.resolve(_path.default.dirname(this.config.self_path || ''), packagePath), packageName);
222
-
223
160
  debug('storage absolute path: ', packageStoragePath);
224
161
  return new _localFs.default(packageStoragePath, this.logger);
225
162
  }
226
-
227
163
  clean() {
228
164
  this._sync();
229
165
  }
230
-
231
166
  getTime(time, mtime) {
232
167
  return time ? time : mtime;
233
168
  }
234
-
235
169
  _getCustomPackageLocalStorages() {
236
- const storages = {}; // add custom storage if exist
170
+ const storages = {};
237
171
 
172
+ // add custom storage if exist
238
173
  if (this.config.storage) {
239
174
  storages[this.config.storage] = true;
240
175
  }
241
-
242
176
  const {
243
177
  packages
244
178
  } = this.config;
245
-
246
179
  if (packages) {
247
180
  const listPackagesConf = Object.keys(packages || {});
248
181
  listPackagesConf.map(pkg => {
249
182
  const storage = packages[pkg].storage;
250
-
251
183
  if (storage) {
252
184
  storages[storage] = false;
253
185
  }
254
186
  });
255
187
  }
256
-
257
188
  return storages;
258
189
  }
190
+
259
191
  /**
260
192
  * Syncronize {create} database whether does not exist.
261
193
  * @return {Error|*}
262
194
  */
263
-
264
-
265
195
  _sync() {
266
196
  debug('sync database started');
267
-
268
197
  if (this.locked) {
269
198
  this.logger.error('Database is locked, please check error message printed during startup to ' + 'prevent data loss.');
270
199
  return new Error('Verdaccio database is locked, please contact your administrator to checkout ' + 'logs during verdaccio startup.');
271
- } // Uses sync to prevent ugly race condition
272
-
273
-
200
+ }
201
+ // Uses sync to prevent ugly race condition
274
202
  try {
275
203
  // https://www.npmjs.com/package/mkdirp#mkdirpsyncdir-opts
276
204
  const folderName = _path.default.dirname(this.path);
277
-
278
205
  _mkdirp.default.sync(folderName);
279
-
280
206
  debug('sync folder %o created succeed', folderName);
281
207
  } catch (err) {
282
208
  debug('sync create folder has failed with error: %o', err);
283
209
  return null;
284
210
  }
285
-
286
211
  try {
287
212
  _fs.default.writeFileSync(this.path, JSON.stringify(this.data));
288
-
289
213
  debug('sync write succeed');
290
214
  return null;
291
215
  } catch (err) {
@@ -293,42 +217,36 @@ class LocalDatabase extends _token.default {
293
217
  return err;
294
218
  }
295
219
  }
220
+
296
221
  /**
297
222
  * Verify the right local storage location.
298
223
  * @param {String} path
299
224
  * @return {String}
300
225
  * @private
301
226
  */
302
-
303
-
304
227
  _getLocalStoragePath(storage) {
305
228
  const globalConfigStorage = this.config ? this.config.storage : undefined;
306
-
307
229
  if (_lodash.default.isNil(globalConfigStorage)) {
308
230
  throw new Error('global storage is required for this plugin');
309
231
  } else {
310
232
  if (_lodash.default.isNil(storage) === false && _lodash.default.isString(storage)) {
311
233
  return _path.default.join(globalConfigStorage, storage);
312
234
  }
313
-
314
235
  return globalConfigStorage;
315
236
  }
316
237
  }
238
+
317
239
  /**
318
240
  * Build the local database path.
319
241
  * @param {Object} config
320
242
  * @return {string|String|*}
321
243
  * @private
322
244
  */
323
-
324
-
325
245
  _buildStoragePath(config) {
326
246
  const sinopiadbPath = this._dbGenPath(DEPRECATED_DB_NAME, config);
327
-
328
247
  try {
329
- _fs.default.accessSync(sinopiadbPath, _fs.default.constants.F_OK); // @ts-ignore
330
-
331
-
248
+ _fs.default.accessSync(sinopiadbPath, _fs.default.constants.F_OK);
249
+ // @ts-ignore
332
250
  process.emitWarning('Database name deprecated!', {
333
251
  code: 'VERCODE01',
334
252
  detail: `Please rename database name from ${DEPRECATED_DB_NAME} to ${DB_NAME}`
@@ -338,24 +256,21 @@ class LocalDatabase extends _token.default {
338
256
  if (err.code === _localFs.noSuchFile) {
339
257
  return this._dbGenPath(DB_NAME, config);
340
258
  }
341
-
342
259
  throw err;
343
260
  }
344
261
  }
262
+
345
263
  /**
346
264
  * Fetch local packages.
347
265
  * @private
348
266
  * @return {Object}
349
267
  */
350
-
351
-
352
268
  _fetchLocalPackages() {
353
269
  const list = [];
354
270
  const emptyDatabase = {
355
271
  list,
356
272
  secret: ''
357
273
  };
358
-
359
274
  try {
360
275
  return (0, _pkgUtils.loadPrivatePackages)(this.path, this.logger);
361
276
  } catch (err) {
@@ -365,13 +280,10 @@ class LocalDatabase extends _token.default {
365
280
  this.locked = true;
366
281
  this.logger.error('Failed to read package database file, please check the error printed below:\n', `File Path: ${this.path}\n\n ${err.message}`);
367
282
  }
368
-
369
283
  return emptyDatabase;
370
284
  }
371
285
  }
372
-
373
286
  }
374
-
375
287
  var _default = LocalDatabase;
376
288
  exports.default = _default;
377
289
  //# sourceMappingURL=local-database.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"local-database.js","names":["DEPRECATED_DB_NAME","DB_NAME","debug","buildDebug","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","getInternalError","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","loadPrivatePackages","message"],"sources":["../src/local-database.ts"],"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 {\n Callback,\n Config,\n IPackageStorage,\n IPluginStorage,\n LocalStorage,\n Logger,\n StorageList,\n} 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(\n onPackage: Callback,\n onEnd: Callback,\n validateName: (name: string) => boolean\n ): 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(\n { err },\n '[local-storage/remove]: remove the private package has failed @{err}'\n );\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(\n packageAccess ? packageAccess.storage : undefined\n );\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 ' +\n '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: any) {\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: any) {\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: any) {\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"],"mappings":"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"}
1
+ {"version":3,"file":"local-database.js","names":["_fs","_interopRequireDefault","require","_path","_debug","_lodash","_async","_mkdirp","_commonsApi","_localFs","_interopRequireWildcard","_pkgUtils","_token","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","DEPRECATED_DB_NAME","DB_NAME","debug","buildDebug","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","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","getInternalError","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","loadPrivatePackages","message","_default","exports"],"sources":["../src/local-database.ts"],"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 {\n Callback,\n Config,\n IPackageStorage,\n IPluginStorage,\n LocalStorage,\n Logger,\n StorageList,\n} from '@verdaccio/legacy-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(\n onPackage: Callback,\n onEnd: Callback,\n validateName: (name: string) => boolean\n ): 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(\n { err },\n '[local-storage/remove]: remove the private package has failed @{err}'\n );\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(\n packageAccess ? packageAccess.storage : undefined\n );\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 ' +\n '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: any) {\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: any) {\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: any) {\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"],"mappings":";;;;;;AAAA,IAAAA,GAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,MAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,OAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,MAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,OAAA,GAAAN,sBAAA,CAAAC,OAAA;AAUA,IAAAM,WAAA,GAAAN,OAAA;AAEA,IAAAO,QAAA,GAAAC,uBAAA,CAAAR,OAAA;AACA,IAAAS,SAAA,GAAAT,OAAA;AACA,IAAAU,MAAA,GAAAX,sBAAA,CAAAC,OAAA;AAAmC,SAAAW,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAJ,wBAAAQ,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,CAAAJ,OAAA,GAAAF,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AAAA,SAAAvB,uBAAAiB,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEnC,MAAMiB,kBAAkB,GAAG,kBAAkB;AAC7C,MAAMC,OAAO,GAAG,oBAAoB;AAEpC,MAAMC,KAAK,GAAG,IAAAC,cAAU,EAAC,gCAAgC,CAAC;AAE1D,MAAMC,aAAa,SAASC,cAAY,CAA+B;EAO9DC,WAAWA,CAACC,MAAc,EAAEC,MAAc,EAAE;IACjD,KAAK,CAACD,MAAM,CAAC;IACb,IAAI,CAACA,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACE,IAAI,GAAG,IAAI,CAACC,iBAAiB,CAACH,MAAM,CAAC;IAC1C,IAAI,CAACC,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACG,MAAM,GAAG,KAAK;IACnB,IAAI,CAACC,IAAI,GAAG,IAAI,CAACC,mBAAmB,EAAE;IACtC,IAAI,CAACC,KAAK,EAAE;EACd;EAEOC,SAASA,CAAA,EAAoB;IAClC,OAAOC,OAAO,CAACC,OAAO,CAAC,IAAI,CAACL,IAAI,CAACM,MAAM,CAAC;EAC1C;EAEOC,SAASA,CAACD,MAAc,EAAyB;IACtD,OAAO,IAAIF,OAAO,CAAEC,OAAO,IAAW;MACpC,IAAI,CAACL,IAAI,CAACM,MAAM,GAAGA,MAAM;MAEzBD,OAAO,CAAC,IAAI,CAACH,KAAK,EAAE,CAAC;IACvB,CAAC,CAAC;EACJ;EAEOM,GAAGA,CAACC,IAAY,EAAEC,EAAY,EAAQ;IAC3C,IAAI,IAAI,CAACV,IAAI,CAACW,IAAI,CAACC,OAAO,CAACH,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;MACvC,IAAI,CAACT,IAAI,CAACW,IAAI,CAACE,IAAI,CAACJ,IAAI,CAAC;MAEzBnB,KAAK,CAAC,uCAAuC,EAAEmB,IAAI,CAAC;MACpDC,EAAE,CAAC,IAAI,CAACR,KAAK,EAAE,CAAC;IAClB,CAAC,MAAM;MACLZ,KAAK,CAAC,sCAAsC,EAAEmB,IAAI,CAAC;MACnDC,EAAE,CAAC,IAAI,CAAC;IACV;EACF;EAEOI,MAAMA,CACXC,SAAmB,EACnBC,KAAe,EACfC,YAAuC,EACjC;IACN,MAAMC,QAAQ,GAAG,IAAI,CAACC,8BAA8B,EAAE;IACtD7B,KAAK,CAAE,kCAAiC,EAAE8B,IAAI,CAACC,SAAS,CAACH,QAAQ,CAAC,CAAC;IACnE,MAAMI,IAAI,GAAGC,aAAI,CAACC,OAAO,CAAC,IAAI,CAAC7B,MAAM,CAAC8B,SAAS,CAAC;IAChD,MAAMC,IAAI,GAAG,IAAI;IACjB,MAAMC,WAAW,GAAGhD,MAAM,CAACiD,IAAI,CAACV,QAAQ,CAAC;IACzC5B,KAAK,CAAE,0BAAyB,EAAEgC,IAAI,EAAEK,WAAW,CAAC;IAEpDE,cAAK,CAACC,UAAU,CACdH,WAAW,EACX,UAAUI,OAAO,EAAErB,EAAE,EAAE;MACrB,MAAMsB,QAAQ,GAAGL,WAAW,CAACf,OAAO,CAACmB,OAAO,CAAC;MAC7C,MAAME,KAAK,GAAGV,aAAI,CAACW,IAAI,CAACF,QAAQ,KAAK,CAAC,GAAGL,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;MAC7D,MAAMQ,WAAmB,GAAGZ,aAAI,CAAClB,OAAO,CAACiB,IAAI,EAAEW,KAAK,EAAEF,OAAO,CAAC;MAC9DzC,KAAK,CAAC,sBAAsB,EAAE6C,WAAW,EAAEJ,OAAO,CAAC;MACnDK,WAAE,CAACC,OAAO,CAACF,WAAW,EAAE,CAACG,GAAG,EAAEC,KAAK,KAAK;QACtC,IAAID,GAAG,EAAE;UACP,OAAO5B,EAAE,CAAC4B,GAAG,CAAC;QAChB;QAEAT,cAAK,CAACC,UAAU,CACdS,KAAK,EACL,UAAUC,IAAI,EAAE9B,EAAE,EAAE;UAClBpB,KAAK,CAAC,8CAA8C,EAAEkD,IAAI,CAAC;UAC3D,IAAIb,WAAW,CAACc,QAAQ,CAACD,IAAI,CAAC,EAAE;YAC9B,OAAO9B,EAAE,EAAE;UACb;UAEA,IAAI8B,IAAI,CAACE,KAAK,CAAC,IAAI,CAAC,EAAE;YACpB;YACA,MAAMC,YAAY,GAAGpB,aAAI,CAAClB,OAAO,CAACiB,IAAI,EAAES,OAAO,EAAES,IAAI,CAAC;YACtDlD,KAAK,CAAC,iCAAiC,EAAEqD,YAAY,CAAC;YACtDP,WAAE,CAACC,OAAO,CAACM,YAAY,EAAE,UAAUL,GAAG,EAAEC,KAAK,EAAE;cAC7C,IAAID,GAAG,EAAE;gBACP,OAAO5B,EAAE,CAAC4B,GAAG,CAAC;cAChB;cAEAT,cAAK,CAACC,UAAU,CACdS,KAAK,EACL,CAACK,KAAK,EAAElC,EAAE,KAAK;gBACb,IAAIO,YAAY,CAAC2B,KAAK,CAAC,EAAE;kBACvB,MAAMC,WAAW,GAAGtB,aAAI,CAAClB,OAAO,CAACiB,IAAI,EAAES,OAAO,EAAES,IAAI,EAAEI,KAAK,CAAC;kBAE5DR,WAAE,CAACU,IAAI,CAACD,WAAW,EAAE,CAACP,GAAG,EAAES,KAAK,KAAK;oBACnC,IAAIC,eAAC,CAACC,KAAK,CAACX,GAAG,CAAC,KAAK,KAAK,EAAE;sBAC1B,OAAO5B,EAAE,CAAC4B,GAAG,CAAC;oBAChB;oBACA,MAAMY,IAAI,GAAG;sBACXzC,IAAI,EAAG,GAAE+B,IAAK,IAAGI,KAAM,EAAC;sBACxB/C,IAAI,EAAEgD,WAAW;sBACjBM,IAAI,EAAEJ,KAAK,CAACK,KAAK,CAACC,OAAO;oBAC3B,CAAC;oBACDtC,SAAS,CAACmC,IAAI,EAAExC,EAAE,CAAC;kBACrB,CAAC,CAAC;gBACJ,CAAC,MAAM;kBACLA,EAAE,EAAE;gBACN;cACF,CAAC,EACDA,EAAE,CACH;YACH,CAAC,CAAC;UACJ,CAAC,MAAM,IAAIO,YAAY,CAACuB,IAAI,CAAC,EAAE;YAC7B,MAAMP,KAAK,GAAGV,aAAI,CAACW,IAAI,CAACF,QAAQ,KAAK,CAAC,GAAGL,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YAC7D,MAAMkB,WAAW,GAAGtB,aAAI,CAAClB,OAAO,CAACiB,IAAI,EAAEW,KAAK,EAAEF,OAAO,EAAES,IAAI,CAAC;YAC5DlD,KAAK,CAAC,0BAA0B,EAAEuD,WAAW,CAAC;YAC9CT,WAAE,CAACU,IAAI,CAACD,WAAW,EAAE,CAACP,GAAG,EAAES,KAAK,KAAK;cACnC,IAAIC,eAAC,CAACC,KAAK,CAACX,GAAG,CAAC,KAAK,KAAK,EAAE;gBAC1B,OAAO5B,EAAE,CAAC4B,GAAG,CAAC;cAChB;cACAvB,SAAS,CACP;gBACEN,IAAI,EAAE+B,IAAI;gBACV3C,IAAI,EAAEgD,WAAW;gBACjBM,IAAI,EAAEzB,IAAI,CAAC2B,OAAO,CAACN,KAAK,CAACK,KAAK,CAACC,OAAO,EAAE,EAAEN,KAAK,CAACK,KAAK;cACvD,CAAC,EACD1C,EAAE,CACH;YACH,CAAC,CAAC;UACJ,CAAC,MAAM;YACLA,EAAE,EAAE;UACN;QACF,CAAC,EACDA,EAAE,CACH;MACH,CAAC,CAAC;IACJ,CAAC;IACD;IACAM,KAAK,CACN;EACH;EAEOsC,MAAMA,CAAC7C,IAAY,EAAEC,EAAY,EAAQ;IAC9C,IAAI,CAAClC,GAAG,CAAC,CAAC8D,GAAG,EAAEtC,IAAI,KAAK;MACtB,IAAIsC,GAAG,EAAE;QACP5B,EAAE,CAAC,IAAA6C,4BAAgB,EAAC,8BAA8B,CAAC,CAAC;QACpD,IAAI,CAAC3D,MAAM,CAAC4D,KAAK,CACf;UAAElB;QAAI,CAAC,EACP,sEAAsE,CACvE;QACDhD,KAAK,CAAC,4BAA4B,EAAEmB,IAAI,CAAC;MAC3C;MAEA,MAAMgD,OAAO,GAAGzD,IAAI,CAACY,OAAO,CAACH,IAAI,CAAC;MAClC,IAAIgD,OAAO,KAAK,CAAC,CAAC,EAAE;QAClB,IAAI,CAACzD,IAAI,CAACW,IAAI,CAAC+C,MAAM,CAACD,OAAO,EAAE,CAAC,CAAC;QAEjCnE,KAAK,CAAC,oCAAoC,EAAEmB,IAAI,CAAC;MACnD;MAEAC,EAAE,CAAC,IAAI,CAACR,KAAK,EAAE,CAAC;IAClB,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;AACA;EACS1B,GAAGA,CAACkC,EAAY,EAAQ;IAC7B,MAAMC,IAAI,GAAG,IAAI,CAACX,IAAI,CAACW,IAAI;IAC3B,MAAMgD,UAAU,GAAG,IAAI,CAAC3D,IAAI,CAACW,IAAI,CAACiD,MAAM;IAExClD,EAAE,CAAC,IAAI,EAAEC,IAAI,CAAC;IAEdrB,KAAK,CAAC,iDAAiD,EAAEqE,UAAU,CAAC;EACtE;EAEOE,iBAAiBA,CAACC,WAAmB,EAAmB;IAC7D,MAAMC,aAAa,GAAG,IAAI,CAACpE,MAAM,CAACqE,sBAAsB,CAACF,WAAW,CAAC;IAErE,MAAMjB,WAAmB,GAAG,IAAI,CAACoB,oBAAoB,CACnDF,aAAa,GAAGA,aAAa,CAAChC,OAAO,GAAGmC,SAAS,CAClD;IACD5E,KAAK,CAAC,yBAAyB,EAAEuD,WAAW,CAAC;IAE7C,IAAIG,eAAC,CAACmB,QAAQ,CAACtB,WAAW,CAAC,KAAK,KAAK,EAAE;MACrCvD,KAAK,CAAC,wCAAwC,EAAEwE,WAAW,CAAC;MAC5D;IACF;IAEA,MAAMM,kBAA0B,GAAG7C,aAAI,CAACW,IAAI,CAC1CX,aAAI,CAAClB,OAAO,CAACkB,aAAI,CAACC,OAAO,CAAC,IAAI,CAAC7B,MAAM,CAAC8B,SAAS,IAAI,EAAE,CAAC,EAAEoB,WAAW,CAAC,EACpEiB,WAAW,CACZ;IAEDxE,KAAK,CAAC,yBAAyB,EAAE8E,kBAAkB,CAAC;IAEpD,OAAO,IAAIC,gBAAW,CAACD,kBAAkB,EAAE,IAAI,CAACxE,MAAM,CAAC;EACzD;EAEO0E,KAAKA,CAAA,EAAS;IACnB,IAAI,CAACpE,KAAK,EAAE;EACd;EAEQmD,OAAOA,CAACF,IAAY,EAAEC,KAAW,EAAiB;IACxD,OAAOD,IAAI,GAAGA,IAAI,GAAGC,KAAK;EAC5B;EAEQjC,8BAA8BA,CAAA,EAAW;IAC/C,MAAMD,QAAQ,GAAG,CAAC,CAAC;;IAEnB;IACA,IAAI,IAAI,CAACvB,MAAM,CAACoC,OAAO,EAAE;MACvBb,QAAQ,CAAC,IAAI,CAACvB,MAAM,CAACoC,OAAO,CAAC,GAAG,IAAI;IACtC;IAEA,MAAM;MAAEwC;IAAS,CAAC,GAAG,IAAI,CAAC5E,MAAM;IAEhC,IAAI4E,QAAQ,EAAE;MACZ,MAAMC,gBAAgB,GAAG7F,MAAM,CAACiD,IAAI,CAAC2C,QAAQ,IAAI,CAAC,CAAC,CAAC;MAEpDC,gBAAgB,CAACC,GAAG,CAAEC,GAAG,IAAK;QAC5B,MAAM3C,OAAO,GAAGwC,QAAQ,CAACG,GAAG,CAAC,CAAC3C,OAAO;QACrC,IAAIA,OAAO,EAAE;UACXb,QAAQ,CAACa,OAAO,CAAC,GAAG,KAAK;QAC3B;MACF,CAAC,CAAC;IACJ;IAEA,OAAOb,QAAQ;EACjB;;EAEA;AACF;AACA;AACA;EACUhB,KAAKA,CAAA,EAAiB;IAC5BZ,KAAK,CAAC,uBAAuB,CAAC;IAE9B,IAAI,IAAI,CAACS,MAAM,EAAE;MACf,IAAI,CAACH,MAAM,CAAC4D,KAAK,CACf,2EAA2E,GACzE,oBAAoB,CACvB;MACD,OAAO,IAAImB,KAAK,CACd,8EAA8E,GAC5E,gCAAgC,CACnC;IACH;IACA;IACA,IAAI;MACF;MACA,MAAMC,UAAU,GAAGrD,aAAI,CAACC,OAAO,CAAC,IAAI,CAAC3B,IAAI,CAAC;MAC1CgF,eAAM,CAACC,IAAI,CAACF,UAAU,CAAC;MACvBtF,KAAK,CAAC,gCAAgC,EAAEsF,UAAU,CAAC;IACrD,CAAC,CAAC,OAAOtC,GAAG,EAAE;MACZhD,KAAK,CAAC,8CAA8C,EAAEgD,GAAG,CAAC;MAC1D,OAAO,IAAI;IACb;IAEA,IAAI;MACFF,WAAE,CAAC2C,aAAa,CAAC,IAAI,CAAClF,IAAI,EAAEuB,IAAI,CAACC,SAAS,CAAC,IAAI,CAACrB,IAAI,CAAC,CAAC;MACtDV,KAAK,CAAC,oBAAoB,CAAC;MAE3B,OAAO,IAAI;IACb,CAAC,CAAC,OAAOgD,GAAQ,EAAE;MACjBhD,KAAK,CAAC,gBAAgB,EAAEgD,GAAG,CAAC;MAE5B,OAAOA,GAAG;IACZ;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;EACU2B,oBAAoBA,CAAClC,OAAsB,EAAU;IAC3D,MAAMiD,mBAAmB,GAAG,IAAI,CAACrF,MAAM,GAAG,IAAI,CAACA,MAAM,CAACoC,OAAO,GAAGmC,SAAS;IACzE,IAAIlB,eAAC,CAACC,KAAK,CAAC+B,mBAAmB,CAAC,EAAE;MAChC,MAAM,IAAIL,KAAK,CAAC,4CAA4C,CAAC;IAC/D,CAAC,MAAM;MACL,IAAI3B,eAAC,CAACC,KAAK,CAAClB,OAAO,CAAC,KAAK,KAAK,IAAIiB,eAAC,CAACmB,QAAQ,CAACpC,OAAO,CAAC,EAAE;QACrD,OAAOR,aAAI,CAACW,IAAI,CAAC8C,mBAAmB,EAAYjD,OAAO,CAAW;MACpE;MAEA,OAAOiD,mBAAmB;IAC5B;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;EACUlF,iBAAiBA,CAACH,MAAc,EAAU;IAChD,MAAMsF,aAAqB,GAAG,IAAI,CAACC,UAAU,CAAC9F,kBAAkB,EAAEO,MAAM,CAAC;IACzE,IAAI;MACFyC,WAAE,CAAC+C,UAAU,CAACF,aAAa,EAAE7C,WAAE,CAACgD,SAAS,CAACC,IAAI,CAAC;MAC/C;MACAC,OAAO,CAACC,WAAW,CAAC,2BAA2B,EAAE;QAC/CC,IAAI,EAAE,WAAW;QACjBC,MAAM,EAAG,oCAAmCrG,kBAAmB,OAAMC,OAAQ;MAC/E,CAAC,CAAC;MACF,OAAO4F,aAAa;IACtB,CAAC,CAAC,OAAO3C,GAAQ,EAAE;MACjB,IAAIA,GAAG,CAACkD,IAAI,KAAKE,mBAAU,EAAE;QAC3B,OAAO,IAAI,CAACR,UAAU,CAAC7F,OAAO,EAAEM,MAAM,CAAC;MACzC;MAEA,MAAM2C,GAAG;IACX;EACF;;EAEA;AACF;AACA;AACA;AACA;EACUrC,mBAAmBA,CAAA,EAAiB;IAC1C,MAAMU,IAAiB,GAAG,EAAE;IAC5B,MAAMgF,aAAa,GAAG;MAAEhF,IAAI;MAAEL,MAAM,EAAE;IAAG,CAAC;IAE1C,IAAI;MACF,OAAO,IAAAsF,6BAAmB,EAAC,IAAI,CAAC/F,IAAI,EAAE,IAAI,CAACD,MAAM,CAAC;IACpD,CAAC,CAAC,OAAO0C,GAAQ,EAAE;MACjB;MACA;MACA,IAAIA,GAAG,CAACkD,IAAI,KAAKE,mBAAU,EAAE;QAC3B,IAAI,CAAC3F,MAAM,GAAG,IAAI;QAClB,IAAI,CAACH,MAAM,CAAC4D,KAAK,CACf,+EAA+E,EAC9E,cAAa,IAAI,CAAC3D,IAAK,QAAOyC,GAAG,CAACuD,OAAQ,EAAC,CAC7C;MACH;MAEA,OAAOF,aAAa;IACtB;EACF;AACF;AAAC,IAAAG,QAAA,GAEctG,aAAa;AAAAuG,OAAA,CAAA1H,OAAA,GAAAyH,QAAA"}
package/lib/local-fs.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  import { ReadTarball } from '@verdaccio/streams';
3
- import { Callback, Logger, Package, ILocalPackageManager, IUploadTarball } from '@verdaccio/types';
3
+ import { Callback, Logger, Package, ILocalPackageManager, IUploadTarball } from '@verdaccio/legacy-types';
4
4
  import { VerdaccioError } from '@verdaccio/commons-api';
5
5
  export declare const fileExist = "EEXISTS";
6
6
  export declare const noSuchFile = "ENOENT";