1
0
mirror of https://github.com/verdaccio/verdaccio.git synced 2024-11-13 03:35:52 +01:00
verdaccio/lib/search.js
2017-04-23 21:24:30 +02:00

62 lines
1.3 KiB
JavaScript

"use strict";
const lunr = require('lunr')
class Search {
constructor() {
this.index = lunr(function() {
this.field('name' , { boost: 10 })
this.field('description' , { boost: 4 })
this.field('author' , { boost: 6 })
this.field('readme')
})
}
query(q) {
return q === '*'
? this.storage.config.localList.get().map( function( pkg ) {
return { ref: pkg, score: 1 };
}) : this.index.search(q);
}
add(pkg) {
this.index.add({
id: pkg.name,
name: pkg.name,
description: pkg.description,
author: pkg._npmUser ? pkg._npmUser.name : '???',
})
}
add(pkg) {
this.index.add({
id: pkg.name,
name: pkg.name,
description: pkg.description,
author: pkg._npmUser ? pkg._npmUser.name : '???',
})
}
remove(name) {
this.index.remove({ id: name })
}
reindex() {
var self = this
this.storage.get_local(function(err, packages) {
if (err) throw err // that function shouldn't produce any
var i = packages.length
while (i--) {
self.add(packages[i])
}
})
}
configureStorage(storage) {
this.storage = storage
this.reindex()
}
}
module.exports = new Search();