UNPKG

verdaccio

Version:

A lightweight private npm proxy registry

136 lines (107 loc) 9.43 kB
"use strict"; 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=