0
Fork 0
mirror of https://github.com/verdaccio/verdaccio.git synced 2024-12-16 21:56:25 -05:00

refactor: resolve local storage path on the plugin it self

This commit is contained in:
Juan Picado @jotadeveloper 2018-01-13 16:49:39 +01:00
parent d145224b70
commit 7b1728a404
No known key found for this signature in database
GPG key ID: 18AC54485952D158
4 changed files with 24 additions and 40 deletions

View file

@ -16,9 +16,8 @@
},
"dependencies": {
"@verdaccio/file-locking": "0.0.5",
"@verdaccio/local-storage": "0.1.0",
"@verdaccio/local-storage": "0.1.2",
"@verdaccio/streams": "0.0.2",
"@verdaccio/types": "0.1.0",
"JSONStream": "^1.1.1",
"apache-md5": "^1.1.2",
"async": "^2.6.0",
@ -49,6 +48,7 @@
"unix-crypt-td-js": "^1.0.0"
},
"devDependencies": {
"@verdaccio/types": "0.1.1",
"axios": "0.17.1",
"babel-cli": "6.26.0",
"babel-core": "6.26.0",
@ -84,8 +84,8 @@
"eslint-plugin-babel": "4.1.2",
"eslint-plugin-flowtype": "2.39.1",
"eslint-plugin-import": "2.8.0",
"eslint-plugin-react": "7.5.1",
"eslint-plugin-jest": "^21.2.0",
"eslint-plugin-react": "7.5.1",
"extract-text-webpack-plugin": "3.0.2",
"file-loader": "1.1.5",
"flow-bin": "0.52.0",
@ -138,6 +138,7 @@
"pretest": "npm run code:build",
"test": "cross-env NODE_ENV=test BABEL_ENV=test jest --maxWorkers 2",
"test:unit": "cross-env NODE_ENV=test BABEL_ENV=test jest '(/test/unit.*\\.spec|/test/webui/.*\\.spec)\\.js' --maxWorkers 2",
"test:func": "cross-env NODE_ENV=test BABEL_ENV=test jest '(/test/functional.*\\.func)\\.js' --maxWorkers 2",
"pre:ci": "npm run lint && npm run build:webui",
"coverage:publish": "codecov",
"lint": "npm run flow && eslint .",

View file

@ -71,13 +71,13 @@ class LocalStorage implements IStorage {
}
addPackage(name: string, pkg: Package, callback: Callback) {
const storage: IPackageStorage = this._getLocalStorage(name);
const storage: any = this._getLocalStorage(name);
if (_.isNil(storage)) {
return callback( Utils.ErrorCode.get404('this package cannot be added'));
}
storage.createPackage(pkgFileName, generatePackageTemplate(name), (err) => {
storage.createPackage(name, generatePackageTemplate(name), (err) => {
if (_.isNull(err) === false && err.code === fileExist) {
return callback( Utils.ErrorCode.get409());
}
@ -98,13 +98,13 @@ class LocalStorage implements IStorage {
* @return {Function}
*/
removePackage(name: string, callback: Callback) {
let storage: IPackageStorage = this._getLocalStorage(name);
let storage: any = this._getLocalStorage(name);
if (_.isNil(storage)) {
return callback( Utils.ErrorCode.get404());
}
storage.readPackage(pkgFileName, (err, data) => {
storage.readPackage(name, (err, data) => {
if (_.isNil(err) === false) {
if (err.code === noSuchFile) {
return callback( Utils.ErrorCode.get404());
@ -121,7 +121,6 @@ class LocalStorage implements IStorage {
// This will happen when database is locked
return callback(Utils.ErrorCode.get422(removeFailed.message));
}
storage.deletePackage(pkgFileName, (err) => {
if (err) {
return callback(err);
@ -407,6 +406,7 @@ class LocalStorage implements IStorage {
const uploadStream = new UploadTarball();
const _transform = uploadStream._transform;
const storage = this._getLocalStorage(name);
uploadStream.abort = function() {};
uploadStream.done = function() {};
@ -527,7 +527,7 @@ class LocalStorage implements IStorage {
* @private
* @return {ReadTarball}
*/
_streamSuccessReadTarBall(storage: IPackageStorage, filename: string) {
_streamSuccessReadTarBall(storage: any, filename: string) {
const stream = new ReadTarball();
const readTarballStream = storage.readTarball(filename);
const e404 = Utils.ErrorCode.get404;
@ -572,7 +572,7 @@ class LocalStorage implements IStorage {
return callback( Utils.ErrorCode.get404() );
}
this._readPackage(storage, callback);
this._readPackage(name, storage, callback);
}
/**
@ -645,14 +645,7 @@ class LocalStorage implements IStorage {
* @return {Object}
*/
_getLocalStorage(packageInfo: string): IPackageStorage {
const path: string = this._getLocalStoragePath(this.config.getMatchedPackagesSpec(packageInfo).storage);
if (_.isString(path) === false) {
this.logger.debug( {name: packageInfo}, 'this package has no storage defined: @{name}' );
return;
}
return this.localData.getPackageStorage(packageInfo, path);
return this.localData.getPackageStorage(packageInfo);
}
/**
@ -660,8 +653,8 @@ class LocalStorage implements IStorage {
* @param {Object} storage
* @param {Function} callback
*/
_readPackage(storage: IPackageStorage, callback: Callback) {
storage.readPackage(pkgFileName, (err, result) => {
_readPackage(name: string, storage: any, callback: Callback) {
storage.readPackage(name, (err, result) => {
if (err) {
if (err.code === noSuchFile) {
return callback( Utils.ErrorCode.get404() );
@ -674,20 +667,6 @@ class LocalStorage implements IStorage {
});
}
/**
* Verify the right local storage location.
* @param {String} path
* @return {String}
* @private
*/
_getLocalStoragePath(path: string): string {
if (_.isNil(path) === false) {
return path;
}
return this.config.storage;
}
/**
* Walks through each package and calls `on_package` on them.
* @param {*} onPackage
@ -751,12 +730,12 @@ class LocalStorage implements IStorage {
* @return {Function}
*/
_readCreatePackage(name: string, callback: Callback) {
const storage: IPackageStorage = this._getLocalStorage(name);
const storage: any = this._getLocalStorage(name);
if (_.isNil(storage)) {
return this._createNewPackage(name, callback);
}
storage.readPackage(pkgFileName, (err, data) => {
storage.readPackage(name, (err, data) => {
// TODO: race condition
if (_.isNil(err) === false) {
if (err.code === noSuchFile) {
@ -812,11 +791,11 @@ class LocalStorage implements IStorage {
* @return {Function}
*/
_writePackage(name: string, json: Package, callback: Callback) {
const storage: IPackageStorage = this._getLocalStorage(name);
const storage: any = this._getLocalStorage(name);
if (_.isNil(storage)) {
return callback();
}
storage.savePackage(pkgFileName, this._setDefaultRevision(json), callback);
storage.savePackage(name, this._setDefaultRevision(json), callback);
}
_setDefaultRevision(json: Package) {
@ -830,7 +809,7 @@ class LocalStorage implements IStorage {
return json;
}
_deleteAttachments(storage: IPackageStorage, attachments: string[], callback: Callback): void {
_deleteAttachments(storage: any, attachments: string[], callback: Callback): void {
const unlinkNext = function(cb) {
if (_.isEmpty(attachments)) {
return cb();

View file

@ -27,6 +27,10 @@ function isES6(plugin) {
return Object.keys(plugin).includes('default');
}
function mergeConfig(appConfig, pluginConfig) {
return _.merge(appConfig, pluginConfig);
}
/**
* Load a plugin following the rules
* - First try to load from the internal directory plugins (which will disappear soon or later).
@ -74,7 +78,7 @@ function loadPlugin(config, plugin_configs, params, sanity_check) {
}
/* eslint new-cap:off */
plugin = isES6(plugin) ? new plugin.default(plugin_configs[p], params) : plugin(plugin_configs[p], params);
plugin = isES6(plugin) ? new plugin.default(mergeConfig(config, plugin_configs[p]), params) : plugin(plugin_configs[p], params);
/* eslint new-cap:off */
if (plugin === null || !sanity_check(plugin)) {

BIN
yarn.lock

Binary file not shown.