search-query-tester
TypeScript icon, indicating that this package has built-in type declarations

1.0.1 • Public • Published

search-query-tester Build Status

Test object with search query syntax.

Search query syntax

search-query-tester use following library:

Install

Install with npm:

npm install search-query-tester

Usage

API

export declare class SearchQueryTester<T extends object> {
    /**
     * Return true if the `searchQuery` with the `data`.
     */
    test(searchQuery: string, data: T): boolean;
}
 

Example

import { SearchQueryTester } from "search-query-tester";
const tester = new SearchQueryTester();
const data = {
    id: "idValue",
    title: "titleValue",
    author: "authorValue",
    body: "bodyValue"
};
// search all property by default
assert.ok(tester.test("idValue", data));
assert.ok(tester.test("titleValue", data));
assert.ok(tester.test("authorValue", data));
assert.ok(tester.test("bodyValue", data));
// "AND" operator
assert.ok(tester.test("idValue AND titleValue", data));
// "OR" operator
assert.ok(tester.test("idValue OR noMatchValue", data));
// "-" operator
assert.ok(tester.test("bodyValue -notMatchValue", data));

Supported Keywords

Currently, It is same syntax with Philtre.

Note that except for values before a colon in keywords using them (which must match the regex [A-z]*), anything may be quoted to preserve whitespace or otherwise special characters.

keyword effect
(default) non-special words check for a string match on every field of the object.
:has:[something] true if the object has a field named something
:is:[something] same as :has:
[key]:[value] true if value equals the key property
AND does nothing (it's the default)
OR logical OR of the conditions on either side
NOT negates the next keyword
-[something] negates the next keyword; unlike not doesn't need a space
( and ) allows grouping of terms
#[xxx] true if the .tags property contains xxx
:before:[xxx] true if the .date property is less than xxx
:after:[xxx] true if the .date property is greater than xxx
:sort:[field] sorts on field
:sortr:[field] sorts on field in the order opposite :sort:
:limit:[count] only shows up to count results

Changelog

See Releases page.

Running tests

Install devDependencies and Run npm test:

npm i -d && npm test

Contributing

Pull requests and stars are always welcome.

For bugs and feature requests, please create an issue.

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Author

License

MIT © azu

Package Sidebar

Install

npm i search-query-tester

Weekly Downloads

1

Version

1.0.1

License

MIT

Last publish

Collaborators

  • azu