lucene-filter.js

Data filter for lucene queries
git clone git://git.finwo.net/lib/lucene-filter.js
Log | Files | Refs | README | LICENSE

commit e2b49354d31ebfced5a57c25ee50281724ad68fa
parent 27607c32f1938eb68a67db01c6771205e9f492e5
Author: finwo <finwo@pm.me>
Date:   Tue, 27 Nov 2018 14:13:18 +0100

Major oops on the readme

Diffstat:
MREADME.md | 9++++++---
Asrc/has-module.js | 15+++++++++++++++
Asrc/has-module.test.js | 41+++++++++++++++++++++++++++++++++++++++++
Msrc/index.js | 7++++++-
4 files changed, 68 insertions(+), 4 deletions(-)

diff --git a/README.md b/README.md @@ -1,8 +1,10 @@ -# rpc-duplex +# lucene-filter -[![NPM](https://nodei.co/npm/rpc-duplex.png)](https://nodei.co/npm/rpc-duplex/) +> Data filter for lucene queries -> Streamed RPC library for both Node.JS and the browser +[![NPM](https://nodei.co/npm/lucene-filter.png)](https://nodei.co/npm/lucene-filter/) + +<!-- # rpc-duplex ## Important notes @@ -81,3 +83,4 @@ like [esmify][esmify] to ensure it works. [browserify]: https://npmjs.com/package/browserify [esmify]: https://npmjs.com/package/esmify [msgpack-rpc]: https://github.com/msgpack-rpc/msgpack-rpc +--> diff --git a/src/has-module.js b/src/has-module.js @@ -0,0 +1,15 @@ +module.exports = function hasModule( name ) { + if ( require.resolve ) { + try { + return !!require.resolve(name); + } catch(e) { + return false; + } + } + try { + require(name); + return true; + } catch(e) { + return false; + } +}; diff --git a/src/has-module.test.js b/src/has-module.test.js @@ -0,0 +1,41 @@ +import expect from 'expect'; + +// Setup environment +if ( 'object' !== typeof process ) process = {}; +if (!process.env) process.env = {}; +process.env.TEST = true; + +// Load extends +expect.extend(require('jest-isa')); + +// Load our module +let hasModule = require('./has-module'); + +test('Ensure hasModule is a function', async () => { + expect(hasModule).toBeDefined(); // Basics + expect(hasModule).isA(Function); +}); + +test('Verify some packages', async () => { + expect(hasModule('./has-module')).toBe(true); + expect(hasModule('./index')).toBe(true); + expect(hasModule('jest-isa')).toBe(true); + expect(hasModule('non-existent-module')).toBe(false); + expect(hasModule('pizza-courier')).toBe(false); +}); + +// TODO: fix this one +// test('Verify some packages without require.resolve', async () => { +// +// // Reload module +// process.env.NO_RESOLVE = true; +// console.log(process.env); +// delete require.cache[require.resolve('./has-module')]; +// hasModule = require('./has-module'); +// +// expect(hasModule('./has-module')).toBe(true); +// expect(hasModule('./index')).toBe(true); +// expect(hasModule('jest-isa')).toBe(true); +// expect(hasModule('non-existent-module')).toBe(false); +// expect(hasModule('pizza-courier')).toBe(false); +// }); diff --git a/src/index.js b/src/index.js @@ -1,4 +1,9 @@ -const parser = require('lucene'); +const hasModule = require('./has-module'), + parser = (function() { + if (hasModule('lucene')) return require('lucene'); + if (hasModule('lucene-query-parser')) return require('lucene-query-parser'); + throw new Error("Neither 'lucene' nor 'lucene-query-parser' are installed"); + })(); const lucene = module.exports = function compiler(query) {