diff --git a/flow-typed/npm/lunr_vx.x.x.js b/flow-typed/npm/lunr_vx.x.x.js new file mode 100644 index 000000000..5bab109ed --- /dev/null +++ b/flow-typed/npm/lunr_vx.x.x.js @@ -0,0 +1,431 @@ +// flow-typed signature: e0027883db9b96a34c42414495ddfa2b +// flow-typed version: <>/lunr_v0.7.2/flow_v0.64.0 + +/** + * This is an autogenerated libdef stub for: + * + * 'lunr' + * + * Fill this stub out by replacing all the `any` types. + * + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: + * https://github.com/flowtype/flow-typed + */ + +declare module 'lunr' { + declare module.exports: any; +} + +/** + * We include stubs for each file inside this npm package in case you need to + * require those files directly. Feel free to delete any files that aren't + * needed. + */ +declare module 'lunr/app' { + declare module.exports: any; +} + +declare module 'lunr/example/app' { + declare module.exports: any; +} + +declare module 'lunr/example/index_builder' { + declare module.exports: any; +} + +declare module 'lunr/example/jquery' { + declare module.exports: any; +} + +declare module 'lunr/example/mustache' { + declare module.exports: any; +} + +declare module 'lunr/example/require' { + declare module.exports: any; +} + +declare module 'lunr/example/text' { + declare module.exports: any; +} + +declare module 'lunr/lib/document_store' { + declare module.exports: any; +} + +declare module 'lunr/lib/event_emitter' { + declare module.exports: any; +} + +declare module 'lunr/lib/index' { + declare module.exports: any; +} + +declare module 'lunr/lib/lunr' { + declare module.exports: any; +} + +declare module 'lunr/lib/pipeline' { + declare module.exports: any; +} + +declare module 'lunr/lib/sorted_set' { + declare module.exports: any; +} + +declare module 'lunr/lib/stemmer' { + declare module.exports: any; +} + +declare module 'lunr/lib/stop_word_filter' { + declare module.exports: any; +} + +declare module 'lunr/lib/token_store' { + declare module.exports: any; +} + +declare module 'lunr/lib/tokenizer' { + declare module.exports: any; +} + +declare module 'lunr/lib/trimmer' { + declare module.exports: any; +} + +declare module 'lunr/lib/utils' { + declare module.exports: any; +} + +declare module 'lunr/lib/vector' { + declare module.exports: any; +} + +declare module 'lunr/lunr' { + declare module.exports: any; +} + +declare module 'lunr/lunr.min' { + declare module.exports: any; +} + +declare module 'lunr/perf/document_store_test' { + declare module.exports: any; +} + +declare module 'lunr/perf/env/bench' { + declare module.exports: any; +} + +declare module 'lunr/perf/env/benchmark' { + declare module.exports: any; +} + +declare module 'lunr/perf/env/jquery' { + declare module.exports: any; +} + +declare module 'lunr/perf/env/mustache' { + declare module.exports: any; +} + +declare module 'lunr/perf/fixtures/questions' { + declare module.exports: any; +} + +declare module 'lunr/perf/foo_test' { + declare module.exports: any; +} + +declare module 'lunr/perf/index_test' { + declare module.exports: any; +} + +declare module 'lunr/perf/pipeline_test' { + declare module.exports: any; +} + +declare module 'lunr/perf/set_index_of_test' { + declare module.exports: any; +} + +declare module 'lunr/perf/sorted_set_test' { + declare module.exports: any; +} + +declare module 'lunr/perf/stemmer_test' { + declare module.exports: any; +} + +declare module 'lunr/perf/token_store_test' { + declare module.exports: any; +} + +declare module 'lunr/perf/tokenizer_test' { + declare module.exports: any; +} + +declare module 'lunr/perf/vector_test' { + declare module.exports: any; +} + +declare module 'lunr/server' { + declare module.exports: any; +} + +declare module 'lunr/test/env/augment.min' { + declare module.exports: any; +} + +declare module 'lunr/test/env/jquery' { + declare module.exports: any; +} + +declare module 'lunr/test/env/qunit' { + declare module.exports: any; +} + +declare module 'lunr/test/env/runner' { + declare module.exports: any; +} + +declare module 'lunr/test/event_emitter_test' { + declare module.exports: any; +} + +declare module 'lunr/test/index_test' { + declare module.exports: any; +} + +declare module 'lunr/test/lunr_test' { + declare module.exports: any; +} + +declare module 'lunr/test/pipeline_test' { + declare module.exports: any; +} + +declare module 'lunr/test/search_test' { + declare module.exports: any; +} + +declare module 'lunr/test/serialisation_test' { + declare module.exports: any; +} + +declare module 'lunr/test/sorted_set_test' { + declare module.exports: any; +} + +declare module 'lunr/test/stemmer_test' { + declare module.exports: any; +} + +declare module 'lunr/test/stop_word_filter_test' { + declare module.exports: any; +} + +declare module 'lunr/test/store_node_test' { + declare module.exports: any; +} + +declare module 'lunr/test/store_test' { + declare module.exports: any; +} + +declare module 'lunr/test/test_helper' { + declare module.exports: any; +} + +declare module 'lunr/test/token_store_test' { + declare module.exports: any; +} + +declare module 'lunr/test/tokenizer_test' { + declare module.exports: any; +} + +declare module 'lunr/test/trimmer_test' { + declare module.exports: any; +} + +declare module 'lunr/test/vector_test' { + declare module.exports: any; +} + +// Filename aliases +declare module 'lunr/app.js' { + declare module.exports: $Exports<'lunr/app'>; +} +declare module 'lunr/example/app.js' { + declare module.exports: $Exports<'lunr/example/app'>; +} +declare module 'lunr/example/index_builder.js' { + declare module.exports: $Exports<'lunr/example/index_builder'>; +} +declare module 'lunr/example/jquery.js' { + declare module.exports: $Exports<'lunr/example/jquery'>; +} +declare module 'lunr/example/mustache.js' { + declare module.exports: $Exports<'lunr/example/mustache'>; +} +declare module 'lunr/example/require.js' { + declare module.exports: $Exports<'lunr/example/require'>; +} +declare module 'lunr/example/text.js' { + declare module.exports: $Exports<'lunr/example/text'>; +} +declare module 'lunr/lib/document_store.js' { + declare module.exports: $Exports<'lunr/lib/document_store'>; +} +declare module 'lunr/lib/event_emitter.js' { + declare module.exports: $Exports<'lunr/lib/event_emitter'>; +} +declare module 'lunr/lib/index.js' { + declare module.exports: $Exports<'lunr/lib/index'>; +} +declare module 'lunr/lib/lunr.js' { + declare module.exports: $Exports<'lunr/lib/lunr'>; +} +declare module 'lunr/lib/pipeline.js' { + declare module.exports: $Exports<'lunr/lib/pipeline'>; +} +declare module 'lunr/lib/sorted_set.js' { + declare module.exports: $Exports<'lunr/lib/sorted_set'>; +} +declare module 'lunr/lib/stemmer.js' { + declare module.exports: $Exports<'lunr/lib/stemmer'>; +} +declare module 'lunr/lib/stop_word_filter.js' { + declare module.exports: $Exports<'lunr/lib/stop_word_filter'>; +} +declare module 'lunr/lib/token_store.js' { + declare module.exports: $Exports<'lunr/lib/token_store'>; +} +declare module 'lunr/lib/tokenizer.js' { + declare module.exports: $Exports<'lunr/lib/tokenizer'>; +} +declare module 'lunr/lib/trimmer.js' { + declare module.exports: $Exports<'lunr/lib/trimmer'>; +} +declare module 'lunr/lib/utils.js' { + declare module.exports: $Exports<'lunr/lib/utils'>; +} +declare module 'lunr/lib/vector.js' { + declare module.exports: $Exports<'lunr/lib/vector'>; +} +declare module 'lunr/lunr.js' { + declare module.exports: $Exports<'lunr/lunr'>; +} +declare module 'lunr/lunr.min.js' { + declare module.exports: $Exports<'lunr/lunr.min'>; +} +declare module 'lunr/perf/document_store_test.js' { + declare module.exports: $Exports<'lunr/perf/document_store_test'>; +} +declare module 'lunr/perf/env/bench.js' { + declare module.exports: $Exports<'lunr/perf/env/bench'>; +} +declare module 'lunr/perf/env/benchmark.js' { + declare module.exports: $Exports<'lunr/perf/env/benchmark'>; +} +declare module 'lunr/perf/env/jquery.js' { + declare module.exports: $Exports<'lunr/perf/env/jquery'>; +} +declare module 'lunr/perf/env/mustache.js' { + declare module.exports: $Exports<'lunr/perf/env/mustache'>; +} +declare module 'lunr/perf/fixtures/questions.js' { + declare module.exports: $Exports<'lunr/perf/fixtures/questions'>; +} +declare module 'lunr/perf/foo_test.js' { + declare module.exports: $Exports<'lunr/perf/foo_test'>; +} +declare module 'lunr/perf/index_test.js' { + declare module.exports: $Exports<'lunr/perf/index_test'>; +} +declare module 'lunr/perf/pipeline_test.js' { + declare module.exports: $Exports<'lunr/perf/pipeline_test'>; +} +declare module 'lunr/perf/set_index_of_test.js' { + declare module.exports: $Exports<'lunr/perf/set_index_of_test'>; +} +declare module 'lunr/perf/sorted_set_test.js' { + declare module.exports: $Exports<'lunr/perf/sorted_set_test'>; +} +declare module 'lunr/perf/stemmer_test.js' { + declare module.exports: $Exports<'lunr/perf/stemmer_test'>; +} +declare module 'lunr/perf/token_store_test.js' { + declare module.exports: $Exports<'lunr/perf/token_store_test'>; +} +declare module 'lunr/perf/tokenizer_test.js' { + declare module.exports: $Exports<'lunr/perf/tokenizer_test'>; +} +declare module 'lunr/perf/vector_test.js' { + declare module.exports: $Exports<'lunr/perf/vector_test'>; +} +declare module 'lunr/server.js' { + declare module.exports: $Exports<'lunr/server'>; +} +declare module 'lunr/test/env/augment.min.js' { + declare module.exports: $Exports<'lunr/test/env/augment.min'>; +} +declare module 'lunr/test/env/jquery.js' { + declare module.exports: $Exports<'lunr/test/env/jquery'>; +} +declare module 'lunr/test/env/qunit.js' { + declare module.exports: $Exports<'lunr/test/env/qunit'>; +} +declare module 'lunr/test/env/runner.js' { + declare module.exports: $Exports<'lunr/test/env/runner'>; +} +declare module 'lunr/test/event_emitter_test.js' { + declare module.exports: $Exports<'lunr/test/event_emitter_test'>; +} +declare module 'lunr/test/index_test.js' { + declare module.exports: $Exports<'lunr/test/index_test'>; +} +declare module 'lunr/test/lunr_test.js' { + declare module.exports: $Exports<'lunr/test/lunr_test'>; +} +declare module 'lunr/test/pipeline_test.js' { + declare module.exports: $Exports<'lunr/test/pipeline_test'>; +} +declare module 'lunr/test/search_test.js' { + declare module.exports: $Exports<'lunr/test/search_test'>; +} +declare module 'lunr/test/serialisation_test.js' { + declare module.exports: $Exports<'lunr/test/serialisation_test'>; +} +declare module 'lunr/test/sorted_set_test.js' { + declare module.exports: $Exports<'lunr/test/sorted_set_test'>; +} +declare module 'lunr/test/stemmer_test.js' { + declare module.exports: $Exports<'lunr/test/stemmer_test'>; +} +declare module 'lunr/test/stop_word_filter_test.js' { + declare module.exports: $Exports<'lunr/test/stop_word_filter_test'>; +} +declare module 'lunr/test/store_node_test.js' { + declare module.exports: $Exports<'lunr/test/store_node_test'>; +} +declare module 'lunr/test/store_test.js' { + declare module.exports: $Exports<'lunr/test/store_test'>; +} +declare module 'lunr/test/test_helper.js' { + declare module.exports: $Exports<'lunr/test/test_helper'>; +} +declare module 'lunr/test/token_store_test.js' { + declare module.exports: $Exports<'lunr/test/token_store_test'>; +} +declare module 'lunr/test/tokenizer_test.js' { + declare module.exports: $Exports<'lunr/test/tokenizer_test'>; +} +declare module 'lunr/test/trimmer_test.js' { + declare module.exports: $Exports<'lunr/test/trimmer_test'>; +} +declare module 'lunr/test/vector_test.js' { + declare module.exports: $Exports<'lunr/test/vector_test'>; +} diff --git a/src/lib/search.js b/src/lib/search.js index 4164be3d6..5e45a331e 100644 --- a/src/lib/search.js +++ b/src/lib/search.js @@ -1,16 +1,21 @@ -/* eslint no-invalid-this: "off" */ +// @flow -const lunr = require('lunr'); +import lunr from 'lunr'; +import type {IStorageHandler, Version, IWebSearch} from '@verdaccio/types'; /** * Handle the search Indexer. */ -class Search { +class Search implements IWebSearch { + + index: any; + storage: IStorageHandler; /** * Constructor. */ constructor() { + /* eslint no-invalid-this: "off" */ this.index = lunr(function() { this.field('name', {boost: 10}); this.field('description', {boost: 4}); @@ -26,18 +31,18 @@ class Search { * @param {*} q the keyword * @return {Array} list of results. */ - query(q) { - return q === '*' - ? this.storage.localStorage.localList.get().map( function( pkg ) { + query(query: string) { + return query === '*' + ? this.storage.localStorage.localData.get().map( function( pkg ) { return {ref: pkg, score: 1}; - }) : this.index.search(q); + }) : this.index.search(query); } /** * Add a new element to index * @param {*} pkg the package */ - add(pkg) { + add(pkg: Version) { this.index.add({ id: pkg.name, name: pkg.name, @@ -50,7 +55,7 @@ class Search { * Remove an element from the index. * @param {*} name the id element */ - remove(name) { + remove(name: string) { this.index.remove({id: name}); } @@ -72,7 +77,7 @@ class Search { * Set up the {Storage} * @param {*} storage An storage reference. */ - configureStorage(storage) { + configureStorage(storage: IStorageHandler) { this.storage = storage; this.reindex(); }