verdaccio
Version:
A lightweight private npm proxy registry
136 lines (107 loc) • 9.43 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _lunrMutableIndexes = _interopRequireDefault(require("lunr-mutable-indexes"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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; }
/**
* Handle the search Indexer.
*/
class Search {
// @ts-ignore
/**
* Constructor.
*/
constructor() {
_defineProperty(this, "index", void 0);
_defineProperty(this, "storage", void 0);
this.index = (0, _lunrMutableIndexes.default)(function () {
// FIXME: there is no types for this library
/* eslint no-invalid-this:off */
// @ts-ignore
this.field('name', {
boost: 10
}); // @ts-ignore
this.field('description', {
boost: 4
}); // @ts-ignore
this.field('author', {
boost: 6
}); // @ts-ignore
this.field('keywords', {
boost: 7
}); // @ts-ignore
this.field('version'); // @ts-ignore
this.field('readme');
});
}
/**
* Performs a query to the indexer.
* If the keyword is a * it returns all local elements
* otherwise performs a search
* @param {*} q the keyword
* @return {Array} list of results.
*/
query(query) {
const localStorage = this.storage.localStorage;
return query === '*' ? localStorage.storagePlugin.get(items => {
items.map(function (pkg) {
return {
ref: pkg,
score: 1
};
});
}) : this.index.search(`*${query}*`);
}
/**
* Add a new element to index
* @param {*} pkg the package
*/
add(pkg) {
this.index.add({
id: pkg.name,
name: pkg.name,
description: pkg.description,
version: `v${pkg.version}`,
keywords: pkg.keywords,
author: pkg._npmUser ? pkg._npmUser.name : '???'
});
}
/**
* Remove an element from the index.
* @param {*} name the id element
*/
remove(name) {
this.index.remove({
id: name
});
}
/**
* Force a re-index.
*/
reindex() {
this.storage.getLocalDatabase((error, packages) => {
if (error) {
// that function shouldn't produce any
throw error;
}
let i = packages.length;
while (i--) {
this.add(packages[i]);
}
});
}
/**
* Set up the {Storage}
* @param {*} storage An storage reference.
*/
configureStorage(storage) {
this.storage = storage;
this.reindex();
}
}
var _default = new Search();
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvc2VhcmNoLnRzIl0sIm5hbWVzIjpbIlNlYXJjaCIsImNvbnN0cnVjdG9yIiwiaW5kZXgiLCJmaWVsZCIsImJvb3N0IiwicXVlcnkiLCJsb2NhbFN0b3JhZ2UiLCJzdG9yYWdlIiwic3RvcmFnZVBsdWdpbiIsImdldCIsIml0ZW1zIiwibWFwIiwicGtnIiwicmVmIiwic2NvcmUiLCJzZWFyY2giLCJhZGQiLCJpZCIsIm5hbWUiLCJkZXNjcmlwdGlvbiIsInZlcnNpb24iLCJrZXl3b3JkcyIsImF1dGhvciIsIl9ucG1Vc2VyIiwicmVtb3ZlIiwicmVpbmRleCIsImdldExvY2FsRGF0YWJhc2UiLCJlcnJvciIsInBhY2thZ2VzIiwiaSIsImxlbmd0aCIsImNvbmZpZ3VyZVN0b3JhZ2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFFQTs7Ozs7O0FBR0E7QUFDQTtBQUNBO0FBQ0EsTUFBTUEsTUFBTixDQUFtQztBQUVqQzs7QUFHQTtBQUNGO0FBQ0E7QUFDU0MsRUFBQUEsV0FBVyxHQUFHO0FBQUE7O0FBQUE7O0FBQ25CLFNBQUtDLEtBQUwsR0FBYSxpQ0FBWSxZQUFrQjtBQUN6Qzs7QUFDQTtBQUNBO0FBQ0EsV0FBS0MsS0FBTCxDQUFXLE1BQVgsRUFBbUI7QUFBRUMsUUFBQUEsS0FBSyxFQUFFO0FBQVQsT0FBbkIsRUFKeUMsQ0FLekM7O0FBQ0EsV0FBS0QsS0FBTCxDQUFXLGFBQVgsRUFBMEI7QUFBRUMsUUFBQUEsS0FBSyxFQUFFO0FBQVQsT0FBMUIsRUFOeUMsQ0FPekM7O0FBQ0EsV0FBS0QsS0FBTCxDQUFXLFFBQVgsRUFBcUI7QUFBRUMsUUFBQUEsS0FBSyxFQUFFO0FBQVQsT0FBckIsRUFSeUMsQ0FTekM7O0FBQ0EsV0FBS0QsS0FBTCxDQUFXLFVBQVgsRUFBdUI7QUFBRUMsUUFBQUEsS0FBSyxFQUFFO0FBQVQsT0FBdkIsRUFWeUMsQ0FXekM7O0FBQ0EsV0FBS0QsS0FBTCxDQUFXLFNBQVgsRUFaeUMsQ0FhekM7O0FBQ0EsV0FBS0EsS0FBTCxDQUFXLFFBQVg7QUFDRCxLQWZZLENBQWI7QUFnQkQ7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ1NFLEVBQUFBLEtBQUssQ0FBQ0EsS0FBRCxFQUF1QjtBQUNqQyxVQUFNQyxZQUFZLEdBQUcsS0FBS0MsT0FBTCxDQUFhRCxZQUFsQztBQUVBLFdBQU9ELEtBQUssS0FBSyxHQUFWLEdBQ0hDLFlBQVksQ0FBQ0UsYUFBYixDQUEyQkMsR0FBM0IsQ0FBZ0NDLEtBQUQsSUFBZ0I7QUFDN0NBLE1BQUFBLEtBQUssQ0FBQ0MsR0FBTixDQUFVLFVBQVVDLEdBQVYsRUFBb0I7QUFDNUIsZUFBTztBQUFFQyxVQUFBQSxHQUFHLEVBQUVELEdBQVA7QUFBWUUsVUFBQUEsS0FBSyxFQUFFO0FBQW5CLFNBQVA7QUFDRCxPQUZEO0FBR0QsS0FKRCxDQURHLEdBTUgsS0FBS1osS0FBTCxDQUFXYSxNQUFYLENBQW1CLElBQUdWLEtBQU0sR0FBNUIsQ0FOSjtBQU9EO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7OztBQUNTVyxFQUFBQSxHQUFHLENBQUNKLEdBQUQsRUFBcUI7QUFDN0IsU0FBS1YsS0FBTCxDQUFXYyxHQUFYLENBQWU7QUFDYkMsTUFBQUEsRUFBRSxFQUFFTCxHQUFHLENBQUNNLElBREs7QUFFYkEsTUFBQUEsSUFBSSxFQUFFTixHQUFHLENBQUNNLElBRkc7QUFHYkMsTUFBQUEsV0FBVyxFQUFFUCxHQUFHLENBQUNPLFdBSEo7QUFJYkMsTUFBQUEsT0FBTyxFQUFHLElBQUdSLEdBQUcsQ0FBQ1EsT0FBUSxFQUpaO0FBS2JDLE1BQUFBLFFBQVEsRUFBRVQsR0FBRyxDQUFDUyxRQUxEO0FBTWJDLE1BQUFBLE1BQU0sRUFBRVYsR0FBRyxDQUFDVyxRQUFKLEdBQWVYLEdBQUcsQ0FBQ1csUUFBSixDQUFhTCxJQUE1QixHQUFtQztBQU45QixLQUFmO0FBUUQ7QUFFRDtBQUNGO0FBQ0E7QUFDQTs7O0FBQ1NNLEVBQUFBLE1BQU0sQ0FBQ04sSUFBRCxFQUFxQjtBQUNoQyxTQUFLaEIsS0FBTCxDQUFXc0IsTUFBWCxDQUFrQjtBQUFFUCxNQUFBQSxFQUFFLEVBQUVDO0FBQU4sS0FBbEI7QUFDRDtBQUVEO0FBQ0Y7QUFDQTs7O0FBQ1NPLEVBQUFBLE9BQU8sR0FBUztBQUNyQixTQUFLbEIsT0FBTCxDQUFhbUIsZ0JBQWIsQ0FBOEIsQ0FBQ0MsS0FBRCxFQUFRQyxRQUFSLEtBQTJCO0FBQ3ZELFVBQUlELEtBQUosRUFBVztBQUNUO0FBQ0EsY0FBTUEsS0FBTjtBQUNEOztBQUNELFVBQUlFLENBQUMsR0FBR0QsUUFBUSxDQUFDRSxNQUFqQjs7QUFDQSxhQUFPRCxDQUFDLEVBQVIsRUFBWTtBQUNWLGFBQUtiLEdBQUwsQ0FBU1ksUUFBUSxDQUFDQyxDQUFELENBQWpCO0FBQ0Q7QUFDRixLQVREO0FBVUQ7QUFFRDtBQUNGO0FBQ0E7QUFDQTs7O0FBQ1NFLEVBQUFBLGdCQUFnQixDQUFDeEIsT0FBRCxFQUFpQztBQUN0RCxTQUFLQSxPQUFMLEdBQWVBLE9BQWY7QUFDQSxTQUFLa0IsT0FBTDtBQUNEOztBQTVGZ0M7O2VBK0ZwQixJQUFJekIsTUFBSixFIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZXNsaW50LWRpc2FibGUgbm8taW52YWxpZC10aGlzXG5cbmltcG9ydCBsdW5yTXV0YWJsZSBmcm9tICdsdW5yLW11dGFibGUtaW5kZXhlcyc7XG5pbXBvcnQgeyBWZXJzaW9uIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5pbXBvcnQgeyBJU3RvcmFnZUhhbmRsZXIsIElXZWJTZWFyY2gsIElTdG9yYWdlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuLyoqXG4gKiBIYW5kbGUgdGhlIHNlYXJjaCBJbmRleGVyLlxuICovXG5jbGFzcyBTZWFyY2ggaW1wbGVtZW50cyBJV2ViU2VhcmNoIHtcbiAgcHVibGljIGluZGV4OiBsdW5yTXV0YWJsZS5pbmRleDtcbiAgLy8gQHRzLWlnbm9yZVxuICBwdWJsaWMgc3RvcmFnZTogSVN0b3JhZ2VIYW5kbGVyO1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3Rvci5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmluZGV4ID0gbHVuck11dGFibGUoZnVuY3Rpb24gKCk6IHZvaWQge1xuICAgICAgLy8gRklYTUU6IHRoZXJlIGlzIG5vIHR5cGVzIGZvciB0aGlzIGxpYnJhcnlcbiAgICAgIC8qIGVzbGludCBuby1pbnZhbGlkLXRoaXM6b2ZmICovXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aGlzLmZpZWxkKCduYW1lJywgeyBib29zdDogMTAgfSk7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aGlzLmZpZWxkKCdkZXNjcmlwdGlvbicsIHsgYm9vc3Q6IDQgfSk7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aGlzLmZpZWxkKCdhdXRob3InLCB7IGJvb3N0OiA2IH0pO1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5maWVsZCgna2V5d29yZHMnLCB7IGJvb3N0OiA3IH0pO1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5maWVsZCgndmVyc2lvbicpO1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5maWVsZCgncmVhZG1lJyk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybXMgYSBxdWVyeSB0byB0aGUgaW5kZXhlci5cbiAgICogSWYgdGhlIGtleXdvcmQgaXMgYSAqIGl0IHJldHVybnMgYWxsIGxvY2FsIGVsZW1lbnRzXG4gICAqIG90aGVyd2lzZSBwZXJmb3JtcyBhIHNlYXJjaFxuICAgKiBAcGFyYW0geyp9IHEgdGhlIGtleXdvcmRcbiAgICogQHJldHVybiB7QXJyYXl9IGxpc3Qgb2YgcmVzdWx0cy5cbiAgICovXG4gIHB1YmxpYyBxdWVyeShxdWVyeTogc3RyaW5nKTogYW55W10ge1xuICAgIGNvbnN0IGxvY2FsU3RvcmFnZSA9IHRoaXMuc3RvcmFnZS5sb2NhbFN0b3JhZ2UgYXMgSVN0b3JhZ2U7XG5cbiAgICByZXR1cm4gcXVlcnkgPT09ICcqJ1xuICAgICAgPyBsb2NhbFN0b3JhZ2Uuc3RvcmFnZVBsdWdpbi5nZXQoKGl0ZW1zKTogYW55ID0+IHtcbiAgICAgICAgICBpdGVtcy5tYXAoZnVuY3Rpb24gKHBrZyk6IGFueSB7XG4gICAgICAgICAgICByZXR1cm4geyByZWY6IHBrZywgc2NvcmU6IDEgfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgIDogdGhpcy5pbmRleC5zZWFyY2goYCoke3F1ZXJ5fSpgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgZWxlbWVudCB0byBpbmRleFxuICAgKiBAcGFyYW0geyp9IHBrZyB0aGUgcGFja2FnZVxuICAgKi9cbiAgcHVibGljIGFkZChwa2c6IFZlcnNpb24pOiB2b2lkIHtcbiAgICB0aGlzLmluZGV4LmFkZCh7XG4gICAgICBpZDogcGtnLm5hbWUsXG4gICAgICBuYW1lOiBwa2cubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwa2cuZGVzY3JpcHRpb24sXG4gICAgICB2ZXJzaW9uOiBgdiR7cGtnLnZlcnNpb259YCxcbiAgICAgIGtleXdvcmRzOiBwa2cua2V5d29yZHMsXG4gICAgICBhdXRob3I6IHBrZy5fbnBtVXNlciA/IHBrZy5fbnBtVXNlci5uYW1lIDogJz8/PydcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYW4gZWxlbWVudCBmcm9tIHRoZSBpbmRleC5cbiAgICogQHBhcmFtIHsqfSBuYW1lIHRoZSBpZCBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaW5kZXgucmVtb3ZlKHsgaWQ6IG5hbWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogRm9yY2UgYSByZS1pbmRleC5cbiAgICovXG4gIHB1YmxpYyByZWluZGV4KCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcmFnZS5nZXRMb2NhbERhdGFiYXNlKChlcnJvciwgcGFja2FnZXMpOiB2b2lkID0+IHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAvLyB0aGF0IGZ1bmN0aW9uIHNob3VsZG4ndCBwcm9kdWNlIGFueVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICAgIGxldCBpID0gcGFja2FnZXMubGVuZ3RoO1xuICAgICAgd2hpbGUgKGktLSkge1xuICAgICAgICB0aGlzLmFkZChwYWNrYWdlc1tpXSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHVwIHRoZSB7U3RvcmFnZX1cbiAgICogQHBhcmFtIHsqfSBzdG9yYWdlIEFuIHN0b3JhZ2UgcmVmZXJlbmNlLlxuICAgKi9cbiAgcHVibGljIGNvbmZpZ3VyZVN0b3JhZ2Uoc3RvcmFnZTogSVN0b3JhZ2VIYW5kbGVyKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yYWdlID0gc3RvcmFnZTtcbiAgICB0aGlzLnJlaW5kZXgoKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBuZXcgU2VhcmNoKCk7XG4iXX0=
;