npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@flourish/search

v2.0.0

Published

Search for matching strings in arrays of data

Downloads

232

Readme

Flourish search

Search for matching strings in arrays of data.

How to install

npm install -s @flourish/search

Then import it with:

import createSearch from "@flourish/search";

Usage

Create a new search function by calling createSearch with an array of items and an optional accessor function:

let search = createSearch(array, accessorFunction);

The accessorFunction instructs the createFunction on how to create a one-to-one mapping from each element of array to a string or array of strings that can be searched over. The default value of accessorFunction is x => x. (If the value returned when calling the accessorFunction is an array it will be sliced).

search(value)

Filter array based on whether it's accessor-mapped values match the search string. For the default accessor this just means return all values of array that match (see below) value.

Types of matching

Matching is, by default, case-insensitive but this can be changed throught the normalizer method. The match can be searched for "anywhere" (the default) in the mapped string, at the "start" of that string or it can be a "whole"-string match.

search.normalizer([value])

If value is undefined then this function returns the current normalizer function (by default x => x). Otherwise, the normalizer function is set to value. The normalizer function determines how mapped items and search terms should be manipulated before being compared. For example, you can do case-insensitive searching by passing in the function x => x.toLowercase.

When value is defined the search function is returned to allow for method chaining.

search.mode([value])

If value is undefined then this function returns a string describing the search mode being used. The three options are:

  • "anywhere": search for the specified string anywhere in the mapped string;
  • "start": search for the specified string at the start of the mapped string;
  • "whole": search for the exact specified string (after case (in)sensitivity has been accounted for).

The default mode is "anywhere".

If value is defined and is one of these three specified strings then the mode is set to that value. If value is any other value (excluding undefined) then an error is thrown.

When value is defined the search function is returned to allow for method chaining.

search.arrayMode([value])

If value is undefined then this function returns a string describing the array mode being used. The two options are:

  • "some": only one string in an array of mapped strings needs to match the search string for a match;
  • "every": every string in an array of mapped strings needs to match the search string for a match;

The default mode is "some".

If value is defined and is one of the two specified strings then the mode is set to that value. If value is any other value (excluding undefined) then an error is thrown.

When value is defined the search function is returned to allow for method chaining.