match-sorter
Advanced tools
Comparing version 4.0.2 to 4.1.0
# CHANGELOG | ||
The changelog is automatically updated using [semantic-release](https://github.com/semantic-release/semantic-release). | ||
You can see it on the [releases page](../../releases). | ||
The changelog is automatically updated using | ||
[semantic-release](https://github.com/semantic-release/semantic-release). You | ||
can see it on the [releases page](../../releases). |
@@ -5,3 +5,3 @@ (function (global, factory) { | ||
(global = global || self, factory(global.matchSorter = {})); | ||
}(this, function (exports) { 'use strict'; | ||
}(this, (function (exports) { 'use strict'; | ||
@@ -955,3 +955,3 @@ function _extends() { | ||
})); | ||
}))); | ||
//# sourceMappingURL=match-sorter.umd.js.map |
{ | ||
"name": "match-sorter", | ||
"version": "4.0.2", | ||
"version": "4.1.0", | ||
"description": "Simple, expected, and deterministic best-match sorting of an array in JavaScript", | ||
@@ -10,7 +10,6 @@ "main": "dist/match-sorter.cjs.js", | ||
"lint": "kcd-scripts lint", | ||
"setup": "npm install && npm run validate -s", | ||
"test": "kcd-scripts test", | ||
"test:cover": "kcd-scripts test --coverage", | ||
"test:update": "npm run test:cover -s -- --updateSnapshot", | ||
"validate": "kcd-scripts validate", | ||
"setup": "npm install && npm run validate" | ||
"test:update": "npm test -- --updateSnapshot --coverage", | ||
"validate": "kcd-scripts validate" | ||
}, | ||
@@ -27,16 +26,11 @@ "files": [ | ||
], | ||
"author": "Kent C. Dodds <kent@doddsfamily.us> (http://kentcdodds.com/)", | ||
"author": "Kent C. Dodds <me@kentcdodds.com> (https://kentcdodds.com)", | ||
"license": "MIT", | ||
"dependencies": { | ||
"@babel/runtime": "^7.5.5", | ||
"@babel/runtime": "^7.9.2", | ||
"remove-accents": "0.4.2" | ||
}, | ||
"devDependencies": { | ||
"kcd-scripts": "^1.5.2" | ||
"kcd-scripts": "^5.6.0" | ||
}, | ||
"husky": { | ||
"hooks": { | ||
"pre-commit": "kcd-scripts pre-commit" | ||
} | ||
}, | ||
"eslintConfig": { | ||
@@ -54,3 +48,3 @@ "extends": [ | ||
"type": "git", | ||
"url": "https://github.com/kentcdodds/match-sorter.git" | ||
"url": "https://github.com/kentcdodds/match-sorter" | ||
}, | ||
@@ -57,0 +51,0 @@ "bugs": { |
227
README.md
<div align="center"> | ||
<a href="https://codefund.io/properties/446/visit-sponsor"> | ||
<img src="https://codefund.io/properties/446/sponsor" /> | ||
</a> | ||
</div> | ||
<div align="center"> | ||
<h1>match-sorter</h1> | ||
@@ -13,46 +7,64 @@ | ||
<hr /> | ||
--- | ||
**[Demo](https://codesandbox.io/s/wyk856yo48)** | ||
<!-- prettier-ignore-start --> | ||
[![Build Status][build-badge]][build] | ||
[![Code Coverage][coverage-badge]][coverage] | ||
[![version][version-badge]][package] | ||
[![downloads][downloads-badge]][npm-trends] | ||
[![downloads][downloads-badge]][npmtrends] | ||
[![MIT License][license-badge]][license] | ||
[![All Contributors](https://img.shields.io/badge/all_contributors-13-orange.svg?style=flat-square)](#contributors-) | ||
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --> | ||
[![All Contributors](https://img.shields.io/badge/all_contributors-17-orange.svg?style=flat-square)](#contributors-) | ||
<!-- ALL-CONTRIBUTORS-BADGE:END --> | ||
[![PRs Welcome][prs-badge]][prs] | ||
[![Code of Conduct][coc-badge]][coc] | ||
[![Examples][examples-badge]][examples] | ||
<!-- prettier-ignore-end --> | ||
[![gzip size][gzip-badge]][unpkg-dist] | ||
[![size][size-badge]][unpkg-dist] | ||
[![Watch on GitHub][github-watch-badge]][github-watch] | ||
[![Star on GitHub][github-star-badge]][github-star] | ||
[![Tweet][twitter-badge]][twitter] | ||
## The problem | ||
1. You have a list of dozens, hundreds, or thousands of items | ||
2. You want to filter and sort those items intelligently (maybe you have a filter input for the user) | ||
3. You want simple, expected, and deterministic sorting of the items (no fancy math algorithm that fancily changes the sorting as they type) | ||
2. You want to filter and sort those items intelligently (maybe you have a | ||
filter input for the user) | ||
3. You want simple, expected, and deterministic sorting of the items (no fancy | ||
math algorithm that fancily changes the sorting as they type) | ||
## This solution | ||
This follows a simple and sensible (user friendly) algorithm that makes it easy for you to filter and sort a list of items based on given input. Items are ranked based on sensible criteria that result in a better user experience. | ||
This follows a simple and sensible (user friendly) algorithm that makes it easy | ||
for you to filter and sort a list of items based on given input. Items are | ||
ranked based on sensible criteria that result in a better user experience. | ||
To explain the ranking system, I'll use countries as an example: | ||
1. **CASE SENSITIVE EQUALS**: Case-sensitive equality trumps all. These will be first. (ex. `France` would match `France`, but not `france`) | ||
1. **CASE SENSITIVE EQUALS**: Case-sensitive equality trumps all. These will be | ||
first. (ex. `France` would match `France`, but not `france`) | ||
2. **EQUALS**: Case-insensitive equality (ex. `France` would match `france`) | ||
3. **STARTS WITH**: If the item starts with the given value (ex. `Sou` would match `South Korea` or `South Africa`) | ||
4. **WORD STARTS WITH**: If the item has multiple words, then if one of those words starts with the given value (ex. `Repub` would match `Dominican Republic`) | ||
5. **CASE STARTS WITH**: If the item has a defined case (`camelCase`, `PascalCase`, `snake_case` or `kebab-case`), then if one of the parts starts with the given value (ex. `kingdom` would match `unitedKingdom` or `united_kingdom`) | ||
6. **CASE ACRONYM** If the item's case matches the synonym (ex. `uk` would match `united-kingdom` or `UnitedKingdom`) | ||
7. **CONTAINS**: If the item contains the given value (ex. `ham` would match `Bahamas`) | ||
8. **ACRONYM**: If the item's acronym is the given value (ex. `us` would match `United States`) | ||
9. **SIMPLE MATCH**: If the item has letters in the same order as the letters of the given value (ex. `iw` would match `Zimbabwe`, but not `Kuwait` because it must be in the same order). Furthermore, if the item is a closer match, it will rank higher (ex. `ua` matches `Uruguay` more closely than `United States of America`, therefore `Uruguay` will be ordered before `United States of America`) | ||
3. **STARTS WITH**: If the item starts with the given value (ex. `Sou` would | ||
match `South Korea` or `South Africa`) | ||
4. **WORD STARTS WITH**: If the item has multiple words, then if one of those | ||
words starts with the given value (ex. `Repub` would match | ||
`Dominican Republic`) | ||
5. **CASE STARTS WITH**: If the item has a defined case (`camelCase`, | ||
`PascalCase`, `snake_case` or `kebab-case`), then if one of the parts starts | ||
with the given value (ex. `kingdom` would match `unitedKingdom` or | ||
`united_kingdom`) | ||
6. **CASE ACRONYM** If the item's case matches the synonym (ex. `uk` would | ||
match `united-kingdom` or `UnitedKingdom`) | ||
7. **CONTAINS**: If the item contains the given value (ex. `ham` would match | ||
`Bahamas`) | ||
8. **ACRONYM**: If the item's acronym is the given value (ex. `us` would match | ||
`United States`) | ||
9. **SIMPLE MATCH**: If the item has letters in the same order as the letters | ||
of the given value (ex. `iw` would match `Zimbabwe`, but not `Kuwait` | ||
because it must be in the same order). Furthermore, if the item is a closer | ||
match, it will rank higher (ex. `ua` matches `Uruguay` more closely than | ||
`United States of America`, therefore `Uruguay` will be ordered before | ||
`United States of America`) | ||
This ranking seems to make sense in people's minds. At least it does in mine. Feedback welcome! | ||
This ranking seems to make sense in people's minds. At least it does in mine. | ||
Feedback welcome! | ||
@@ -62,5 +74,4 @@ <!-- START doctoc generated TOC please keep comment here to allow auto update --> | ||
- [Getting Started](#getting-started) | ||
- [Installation](#installation) | ||
- [Usage](#usage) | ||
- [Installation](#installation) | ||
- [Usage](#usage) | ||
- [Advanced options](#advanced-options) | ||
@@ -73,3 +84,6 @@ - [keys: `[string]`](#keys-string) | ||
- [Other Solutions](#other-solutions) | ||
- [Contributors](#contributors) | ||
- [Issues](#issues) | ||
- [🐛 Bugs](#-bugs) | ||
- [💡 Feature Requests](#-feature-requests) | ||
- [Contributors ✨](#contributors-) | ||
- [LICENSE](#license) | ||
@@ -79,14 +93,12 @@ | ||
## Getting Started | ||
## Installation | ||
### Installation | ||
This module is distributed via [npm][npm] which is bundled with [node][node] and | ||
should be installed as one of your project's `dependencies`: | ||
This module is distributed via [npm][npm] which is bundled with [node][node] and should | ||
be installed as one of your project's `dependencies`: | ||
``` | ||
npm install --save match-sorter | ||
npm install match-sorter | ||
``` | ||
### Usage | ||
## Usage | ||
@@ -109,3 +121,4 @@ ```javascript | ||
By default it just uses the value itself as above. Passing an array tells match-sorter which keys to use for the ranking. | ||
By default it just uses the value itself as above. Passing an array tells | ||
match-sorter which keys to use for the ranking. | ||
@@ -126,3 +139,4 @@ ```javascript | ||
**Array of values**: When the specified key matches an array of values, the best match from the values of in the array is going to be used for the ranking. | ||
**Array of values**: When the specified key matches an array of values, the best | ||
match from the values of in the array is going to be used for the ranking. | ||
@@ -162,3 +176,5 @@ ```javascript | ||
**Property Callbacks**: Alternatively, you may also pass in a callback function that resolves the value of the key(s) you wish to match on. This is especially useful when interfacing with libraries such as Immutable.js | ||
**Property Callbacks**: Alternatively, you may also pass in a callback function | ||
that resolves the value of the key(s) you wish to match on. This is especially | ||
useful when interfacing with libraries such as Immutable.js | ||
@@ -171,6 +187,39 @@ ```javascript | ||
**Threshold**: You may specify an individual threshold for specific keys. A key will only match if it meets the specified threshold. _For more information regarding thresholds [see below](#threshold-number)_ | ||
For more complex structures, expanding on the `nestedObjList` example above, you | ||
can use `map`: | ||
```javascript | ||
const list = [{name: 'Fred', color: 'Orange'}, {name: 'Jen', color: 'Red'}] | ||
const nestedObjList = [ | ||
{ | ||
name: [ | ||
{first: 'Janice', last: 'Smith'}, | ||
{first: 'Jon', last: 'Doe'}, | ||
], | ||
}, | ||
{ | ||
name: [ | ||
{first: 'Fred', last: 'Astaire'}, | ||
{first: 'Jenny', last: 'Doe'}, | ||
{first: 'Wilma', last: 'Flintstone'}, | ||
], | ||
}, | ||
] | ||
matchSorter(nestedObjList, 'doe', { | ||
keys: [ | ||
item => item.name.map(i => i.first), | ||
item => item.name.map(i => i.last), | ||
], | ||
}) | ||
// [name: [{ first: 'Janice', last: 'Smith' },{ first: 'Jon', last: 'Doe' }], name: [{ first: 'Fred', last: 'Astaire' },{ first: 'Jenny', last: 'Doe' },{ first: 'Wilma', last: 'Flintstone' }]] | ||
``` | ||
**Threshold**: You may specify an individual threshold for specific keys. A key | ||
will only match if it meets the specified threshold. _For more information | ||
regarding thresholds [see below](#threshold-number)_ | ||
```javascript | ||
const list = [ | ||
{name: 'Fred', color: 'Orange'}, | ||
{name: 'Jen', color: 'Red'}, | ||
] | ||
matchSorter(list, 'ed', { | ||
@@ -182,3 +231,5 @@ keys: [{threshold: rankings.STARTS_WITH, key: 'name'}, 'color'], | ||
**Min and Max Ranking**: You may restrict specific keys to a minimum or maximum ranking by passing in an object. A key with a minimum rank will only get promoted if there is at least a simple match. | ||
**Min and Max Ranking**: You may restrict specific keys to a minimum or maximum | ||
ranking by passing in an object. A key with a minimum rank will only get | ||
promoted if there is at least a simple match. | ||
@@ -275,3 +326,4 @@ ```javascript | ||
In the examples above, we're using CommonJS. If you're using ES6 modules, then you can do: | ||
In the examples above, we're using CommonJS. If you're using ES6 modules, then | ||
you can do: | ||
@@ -282,41 +334,68 @@ `import matchSorter, {rankings, caseRankings} from 'match-sorter'` | ||
Actually, most of this code was extracted from the _very first_ library I ever wrote: [genie][genie]! | ||
Actually, most of this code was extracted from the _very first_ library I ever | ||
wrote: [genie][genie]! | ||
## Other Solutions | ||
You might try [Fuse.js](https://github.com/krisk/Fuse). It uses advanced math fanciness to get the closest match. Unfortunately what's "closest" doesn't always really make sense. So I extracted this from [genie][genie]. | ||
You might try [Fuse.js](https://github.com/krisk/Fuse). It uses advanced math | ||
fanciness to get the closest match. Unfortunately what's "closest" doesn't | ||
always really make sense. So I extracted this from [genie][genie]. | ||
## Contributors | ||
## Issues | ||
_Looking to contribute? Look for the [Good First Issue][good-first-issue] | ||
label._ | ||
### 🐛 Bugs | ||
Please file an issue for bugs, missing documentation, or unexpected behavior. | ||
[**See Bugs**][bugs] | ||
### 💡 Feature Requests | ||
Please file an issue to suggest new features. Vote on feature requests by adding | ||
a 👍. This helps maintainers prioritize what to work on. | ||
[**See Feature Requests**][requests] | ||
## Contributors ✨ | ||
Thanks goes to these people ([emoji key][emojis]): | ||
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> | ||
<!-- prettier-ignore --> | ||
<!-- prettier-ignore-start --> | ||
<!-- markdownlint-disable --> | ||
<table> | ||
<tr> | ||
<td align="center"><a href="https://kentcdodds.com"><img src="https://avatars.githubusercontent.com/u/1500684?v=3" width="100px;" alt="Kent C. Dodds"/><br /><sub><b>Kent C. Dodds</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/commits?author=kentcdodds" title="Code">💻</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=kentcdodds" title="Documentation">📖</a> <a href="#infra-kentcdodds" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=kentcdodds" title="Tests">⚠️</a> <a href="#review-kentcdodds" title="Reviewed Pull Requests">👀</a></td> | ||
<td align="center"><a href="http://conorhastings.com"><img src="https://avatars.githubusercontent.com/u/8263298?v=3" width="100px;" alt="Conor Hastings"/><br /><sub><b>Conor Hastings</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/commits?author=conorhastings" title="Code">💻</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=conorhastings" title="Documentation">📖</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=conorhastings" title="Tests">⚠️</a> <a href="#review-conorhastings" title="Reviewed Pull Requests">👀</a></td> | ||
<td align="center"><a href="https://github.com/rogeliog"><img src="https://avatars.githubusercontent.com/u/574806?v=3" width="100px;" alt="Rogelio Guzman"/><br /><sub><b>Rogelio Guzman</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/commits?author=rogeliog" title="Documentation">📖</a></td> | ||
<td align="center"><a href="http://ced.io"><img src="https://avatars.githubusercontent.com/u/1416436?v=3" width="100px;" alt="Claudéric Demers"/><br /><sub><b>Claudéric Demers</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/commits?author=clauderic" title="Code">💻</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=clauderic" title="Documentation">📖</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=clauderic" title="Tests">⚠️</a></td> | ||
<td align="center"><a href="kevindav.us"><img src="https://avatars3.githubusercontent.com/u/4150097?v=3" width="100px;" alt="Kevin Davis"/><br /><sub><b>Kevin Davis</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/commits?author=osfan501" title="Code">💻</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=osfan501" title="Tests">⚠️</a></td> | ||
<td align="center"><a href="https://github.com/nfdjps"><img src="https://avatars1.githubusercontent.com/u/19157735?v=3" width="100px;" alt="Denver Chen"/><br /><sub><b>Denver Chen</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/commits?author=nfdjps" title="Code">💻</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=nfdjps" title="Documentation">📖</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=nfdjps" title="Tests">⚠️</a></td> | ||
<td align="center"><a href="http://ruigrok.info"><img src="https://avatars0.githubusercontent.com/u/12719057?v=4" width="100px;" alt="Christian Ruigrok"/><br /><sub><b>Christian Ruigrok</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/issues?q=author%3AChrisRu" title="Bug reports">🐛</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=ChrisRu" title="Code">💻</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=ChrisRu" title="Documentation">📖</a></td> | ||
<td align="center"><a href="https://kentcdodds.com"><img src="https://avatars.githubusercontent.com/u/1500684?v=3" width="100px;" alt=""/><br /><sub><b>Kent C. Dodds</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/commits?author=kentcdodds" title="Code">💻</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=kentcdodds" title="Documentation">📖</a> <a href="#infra-kentcdodds" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=kentcdodds" title="Tests">⚠️</a> <a href="https://github.com/kentcdodds/match-sorter/pulls?q=is%3Apr+reviewed-by%3Akentcdodds" title="Reviewed Pull Requests">👀</a></td> | ||
<td align="center"><a href="http://conorhastings.com"><img src="https://avatars.githubusercontent.com/u/8263298?v=3" width="100px;" alt=""/><br /><sub><b>Conor Hastings</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/commits?author=conorhastings" title="Code">💻</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=conorhastings" title="Documentation">📖</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=conorhastings" title="Tests">⚠️</a> <a href="https://github.com/kentcdodds/match-sorter/pulls?q=is%3Apr+reviewed-by%3Aconorhastings" title="Reviewed Pull Requests">👀</a></td> | ||
<td align="center"><a href="https://github.com/rogeliog"><img src="https://avatars.githubusercontent.com/u/574806?v=3" width="100px;" alt=""/><br /><sub><b>Rogelio Guzman</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/commits?author=rogeliog" title="Documentation">📖</a></td> | ||
<td align="center"><a href="http://ced.io"><img src="https://avatars.githubusercontent.com/u/1416436?v=3" width="100px;" alt=""/><br /><sub><b>Claudéric Demers</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/commits?author=clauderic" title="Code">💻</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=clauderic" title="Documentation">📖</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=clauderic" title="Tests">⚠️</a></td> | ||
<td align="center"><a href="kevindav.us"><img src="https://avatars3.githubusercontent.com/u/4150097?v=3" width="100px;" alt=""/><br /><sub><b>Kevin Davis</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/commits?author=osfan501" title="Code">💻</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=osfan501" title="Tests">⚠️</a></td> | ||
<td align="center"><a href="https://github.com/nfdjps"><img src="https://avatars1.githubusercontent.com/u/19157735?v=3" width="100px;" alt=""/><br /><sub><b>Denver Chen</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/commits?author=nfdjps" title="Code">💻</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=nfdjps" title="Documentation">📖</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=nfdjps" title="Tests">⚠️</a></td> | ||
<td align="center"><a href="http://ruigrok.info"><img src="https://avatars0.githubusercontent.com/u/12719057?v=4" width="100px;" alt=""/><br /><sub><b>Christian Ruigrok</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/issues?q=author%3AChrisRu" title="Bug reports">🐛</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=ChrisRu" title="Code">💻</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=ChrisRu" title="Documentation">📖</a></td> | ||
</tr> | ||
<tr> | ||
<td align="center"><a href="https://github.com/hozefaj"><img src="https://avatars1.githubusercontent.com/u/2084833?v=4" width="100px;" alt="Hozefa"/><br /><sub><b>Hozefa</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/issues?q=author%3Ahozefaj" title="Bug reports">🐛</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=hozefaj" title="Code">💻</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=hozefaj" title="Tests">⚠️</a> <a href="#ideas-hozefaj" title="Ideas, Planning, & Feedback">🤔</a></td> | ||
<td align="center"><a href="https://github.com/pushpinder107"><img src="https://avatars3.githubusercontent.com/u/9403361?v=4" width="100px;" alt="pushpinder107"/><br /><sub><b>pushpinder107</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/commits?author=pushpinder107" title="Code">💻</a></td> | ||
<td align="center"><a href="https://github.com/tikotzky"><img src="https://avatars3.githubusercontent.com/u/200528?v=4" width="100px;" alt="Mordy Tikotzky"/><br /><sub><b>Mordy Tikotzky</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/commits?author=tikotzky" title="Code">💻</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=tikotzky" title="Documentation">📖</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=tikotzky" title="Tests">⚠️</a></td> | ||
<td align="center"><a href="https://github.com/sdbrannum"><img src="https://avatars1.githubusercontent.com/u/11765845?v=4" width="100px;" alt="Steven Brannum"/><br /><sub><b>Steven Brannum</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/commits?author=sdbrannum" title="Code">💻</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=sdbrannum" title="Tests">⚠️</a></td> | ||
<td align="center"><a href="https://github.com/cmeeren"><img src="https://avatars0.githubusercontent.com/u/7766733?v=4" width="100px;" alt="Christer van der Meeren"/><br /><sub><b>Christer van der Meeren</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/issues?q=author%3Acmeeren" title="Bug reports">🐛</a></td> | ||
<td align="center"><a href="http://securitynull.net/"><img src="https://avatars0.githubusercontent.com/u/3801362?v=4" width="100px;" alt="Samuel Petrosyan"/><br /><sub><b>Samuel Petrosyan</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/commits?author=samyan" title="Code">💻</a> <a href="https://github.com/kentcdodds/match-sorter/issues?q=author%3Asamyan" title="Bug reports">🐛</a></td> | ||
<td align="center"><a href="https://brandonkalinowski.com"><img src="https://avatars3.githubusercontent.com/u/4714862?v=4" width="100px;" alt="Brandon Kalinowski"/><br /><sub><b>Brandon Kalinowski</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/issues?q=author%3Abrandonkal" title="Bug reports">🐛</a></td> | ||
<td align="center"><a href="https://github.com/hozefaj"><img src="https://avatars1.githubusercontent.com/u/2084833?v=4" width="100px;" alt=""/><br /><sub><b>Hozefa</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/issues?q=author%3Ahozefaj" title="Bug reports">🐛</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=hozefaj" title="Code">💻</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=hozefaj" title="Tests">⚠️</a> <a href="#ideas-hozefaj" title="Ideas, Planning, & Feedback">🤔</a></td> | ||
<td align="center"><a href="https://github.com/pushpinder107"><img src="https://avatars3.githubusercontent.com/u/9403361?v=4" width="100px;" alt=""/><br /><sub><b>pushpinder107</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/commits?author=pushpinder107" title="Code">💻</a></td> | ||
<td align="center"><a href="https://github.com/tikotzky"><img src="https://avatars3.githubusercontent.com/u/200528?v=4" width="100px;" alt=""/><br /><sub><b>Mordy Tikotzky</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/commits?author=tikotzky" title="Code">💻</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=tikotzky" title="Documentation">📖</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=tikotzky" title="Tests">⚠️</a></td> | ||
<td align="center"><a href="https://github.com/sdbrannum"><img src="https://avatars1.githubusercontent.com/u/11765845?v=4" width="100px;" alt=""/><br /><sub><b>Steven Brannum</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/commits?author=sdbrannum" title="Code">💻</a> <a href="https://github.com/kentcdodds/match-sorter/commits?author=sdbrannum" title="Tests">⚠️</a></td> | ||
<td align="center"><a href="https://github.com/cmeeren"><img src="https://avatars0.githubusercontent.com/u/7766733?v=4" width="100px;" alt=""/><br /><sub><b>Christer van der Meeren</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/issues?q=author%3Acmeeren" title="Bug reports">🐛</a></td> | ||
<td align="center"><a href="http://securitynull.net/"><img src="https://avatars0.githubusercontent.com/u/3801362?v=4" width="100px;" alt=""/><br /><sub><b>Samuel Petrosyan</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/commits?author=samyan" title="Code">💻</a> <a href="https://github.com/kentcdodds/match-sorter/issues?q=author%3Asamyan" title="Bug reports">🐛</a></td> | ||
<td align="center"><a href="https://brandonkalinowski.com"><img src="https://avatars3.githubusercontent.com/u/4714862?v=4" width="100px;" alt=""/><br /><sub><b>Brandon Kalinowski</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/issues?q=author%3Abrandonkal" title="Bug reports">🐛</a></td> | ||
</tr> | ||
<tr> | ||
<td align="center"><a href="https://codefund.io"><img src="https://avatars2.githubusercontent.com/u/12481?v=4" width="100px;" alt="Eric Berry"/><br /><sub><b>Eric Berry</b></sub></a><br /><a href="#fundingFinding-coderberry" title="Funding Finding">🔍</a></td> | ||
<td align="center"><a href="https://codefund.io"><img src="https://avatars2.githubusercontent.com/u/12481?v=4" width="100px;" alt=""/><br /><sub><b>Eric Berry</b></sub></a><br /><a href="#fundingFinding-coderberry" title="Funding Finding">🔍</a></td> | ||
<td align="center"><a href="https://github.com/skube"><img src="https://avatars3.githubusercontent.com/u/146396?v=4" width="100px;" alt=""/><br /><sub><b>Skubie Doo</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/commits?author=skube" title="Documentation">📖</a></td> | ||
<td align="center"><a href="https://michaeldeboey.be"><img src="https://avatars3.githubusercontent.com/u/6643991?v=4" width="100px;" alt=""/><br /><sub><b>Michaël De Boey</b></sub></a><br /><a href="https://github.com/kentcdodds/match-sorter/commits?author=MichaelDeBoey" title="Code">💻</a></td> | ||
</tr> | ||
</table> | ||
<!-- markdownlint-enable --> | ||
<!-- prettier-ignore-end --> | ||
<!-- ALL-CONTRIBUTORS-LIST:END --> | ||
This project follows the [all-contributors][all-contributors] specification. Contributions of any kind welcome! | ||
This project follows the [all-contributors][all-contributors] specification. | ||
Contributions of any kind welcome! | ||
@@ -327,3 +406,4 @@ ## LICENSE | ||
[npm]: https://www.npmjs.com/ | ||
<!-- prettier-ignore-start --> | ||
[npm]: https://www.npmjs.com | ||
[node]: https://nodejs.org | ||
@@ -346,13 +426,6 @@ [build-badge]: https://img.shields.io/travis/kentcdodds/match-sorter.svg?style=flat-square | ||
[examples]: https://github.com/kentcdodds/match-sorter/blob/master/other/EXAMPLES.md | ||
[github-watch-badge]: https://img.shields.io/github/watchers/kentcdodds/match-sorter.svg?style=social | ||
[github-watch]: https://github.com/kentcdodds/match-sorter/watchers | ||
[github-star-badge]: https://img.shields.io/github/stars/kentcdodds/match-sorter.svg?style=social | ||
[github-star]: https://github.com/kentcdodds/match-sorter/stargazers | ||
[twitter]: https://twitter.com/intent/tweet?text=Check%20out%20match-sorter!%20https://github.com/kentcdodds/match-sorter%20%F0%9F%91%8D | ||
[twitter-badge]: https://img.shields.io/twitter/url/https/github.com/kentcdodds/match-sorter.svg?style=social | ||
[emojis]: https://github.com/kentcdodds/all-contributors#emoji-key | ||
[all-contributors]: https://github.com/kentcdodds/all-contributors | ||
[emojis]: https://github.com/all-contributors/all-contributors#emoji-key | ||
[all-contributors]: https://github.com/all-contributors/all-contributors | ||
[genie]: https://github.com/kentcdodds/genie | ||
[gzip-badge]: http://img.badgesize.io/https://unpkg.com/match-sorter/dist/match-sorter.umd.min.js?compression=gzip&label=gzip%20size&style=flat-square | ||
[size-badge]: http://img.badgesize.io/https://unpkg.com/match-sorter/dist/match-sorter.umd.min.js?label=size&style=flat-square | ||
[unpkg-dist]: https://unpkg.com/match-sorter/dist/ | ||
<!-- prettier-ignore-end --> |
159500
419
Updated@babel/runtime@^7.9.2