chore(flow): add flow for search class

This commit is contained in:
Juan Picado @jotadeveloper 2018-02-19 20:30:48 +01:00
parent d086073069
commit dfe8007f9b
No known key found for this signature in database
GPG Key ID: 18AC54485952D158
2 changed files with 446 additions and 10 deletions

431
flow-typed/npm/lunr_vx.x.x.js vendored Normal file
View File

@ -0,0 +1,431 @@
// flow-typed signature: e0027883db9b96a34c42414495ddfa2b
// flow-typed version: <<STUB>>/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'>;
}

View File

@ -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();
}