@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 +0 -3
- package/lib/index.js.map +1 -1
- package/lib/local-database.d.ts +1 -1
- package/lib/local-database.js +13 -101
- package/lib/local-database.js.map +1 -1
- package/lib/local-fs.d.ts +1 -1
- package/lib/local-fs.js +11 -89
- package/lib/local-fs.js.map +1 -1
- package/lib/pkg-utils.d.ts +1 -1
- package/lib/pkg-utils.js +2 -11
- package/lib/pkg-utils.js.map +1 -1
- package/lib/token.d.ts +1 -1
- package/lib/token.js +2 -32
- package/lib/token.js.map +1 -1
- package/lib/utils.js +3 -20
- package/lib/utils.js.map +1 -1
- package/package.json +5 -7
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":"
|
|
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"}
|
package/lib/local-database.d.ts
CHANGED
|
@@ -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;
|
package/lib/local-database.js
CHANGED
|
@@ -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
|
-
},
|
|
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 = {};
|
|
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
|
-
}
|
|
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);
|
|
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":"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"}
|
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";
|