bit-bin
Version:
<a href="https://opensource.org/licenses/Apache-2.0"><img alt="apache" src="https://img.shields.io/badge/License-Apache%202.0-blue.svg"></a> <a href="https://github.com/teambit/bit/blob/master/CONTRIBUTING.md"><img alt="prs" src="https://img.shields.io/b
112 lines (96 loc) • 2.88 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
function _serverlessIndex() {
const data = _interopRequireDefault(require("./serverless-index"));
_serverlessIndex = function () {
return data;
};
return data;
}
function _queryBuilder() {
const data = _interopRequireDefault(require("./query-builder"));
_queryBuilder = function () {
return data;
};
return data;
}
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
const numOfResultsPerPage = 15; // function totalHits(index: Promise<any>, query: string) {
// return new Promise((resolve, reject) => {
// return index.then((indexInstance) => {
// indexInstance.totalHits({
// query: buildQuery(query)
// }, (err, count) => {
// if (err) reject(err);
// resolve(JSON.stringify(count));
// });
// });
// });
// }
// function countDocs(index: Promise<any>) {
// return new Promise((resolve, reject) => {
// return index.then((indexInstance) => {
// indexInstance.countDocs((err, info) => {
// if (err) reject(err);
// resolve(info);
// });
// });
// });
// }
// function getDoc(index: Promise<any>, docIds: string[]) {
// return new Promise((resolve, reject) => {
// return index.then((indexInstance) => {
// indexInstance.get(docIds).on('data', function (doc) {
// // console.log(doc);
// });
// });
// });
// }
/**
* Sort by the score. If the score is equal, sort by the length of the name.
* @param {Array<any>} results
* @return {Array<any>}
*/
function sortSearchResults(results) {
return results.sort((a, b) => {
if (a.score !== b.score) return a.score - b.score;
return a.document.name.length - b.document.name.length;
});
}
function formatter(doc) {
if (doc.owner && typeof doc.owner === 'string' && typeof doc.scope === 'string') {
// from web search
return `> ${doc.owner}.${doc.scope}/${doc.name}`;
}
return `> ${doc.name}`;
}
/**
* Search in a local LevelUp index.
*
* @param {string} queryStr
* @param {string} path
* @return {Promise}
*/
function search(queryStr, path) {
return new Promise(resolve => {
const index = _serverlessIndex().default.initializeIndex(path);
const searchResults = [];
const query = (0, _queryBuilder().default)(queryStr);
return index.then(indexInstance => {
indexInstance.search({
query,
pageSize: numOfResultsPerPage
}).on('data', function (data) {
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
searchResults.push(data);
}).on('end', function () {
const searchResultsSorted = sortSearchResults(searchResults);
return resolve(searchResultsSorted.map(result => result.document));
});
});
});
}
module.exports = {
search,
formatter
};
;